stm32智能避障小车(三)之L298N

这一篇呢是介绍L298N电机驱动的,包括实物讲解,模块原理,代码讲解

1、实物讲解
首先看看模块的样子
stm32智能避障小车(三)之L298N_第1张图片然后依次介绍每个部分:从左至右,由上到下,
1、输出A:可以看到输出A和B都有两个螺丝接线,每个正好接马达的正负,如何判断是哪个是正呢?正对输出口的YOU边是正。
2、板载5v使能:这是个跳线帽,可选项,接上表示不用5v供电,如果拔掉的话就需要5v供电了;
3、12v供电:这个供电是必须的,我用的是两节18650充电电池。
4、供电GND:这个不用说,就是电池的负极,注意这里,单片机的GND也需要连接这个,否则马达不会转动。
5、5v供电:这个也可以作为输出口,为我们的单片机来供电。
6、通道A使能:这个是使能输出A的,也要跳线帽连接,否则A侧马达不转,个人觉得没有什么用。
7、通道B使能:同A
8、逻辑输入:这里的逻辑输入有4个引脚:IN1,IN2.IN3,IN4,由这些引脚的电平状态来控制两个马达的正转,反转,停止。详细的介绍见下表。
9、输出B:同输出A。

IN1 IN2 电机A状态 IN3 IN4 电机B状态 小车状态
正转 正转 前进
正转 反转 右转
正转 停止 右转
反转 正转 左转
反转 反转 后退
反转 停止 左转
停止 正转 右转
停止 反转 左转
停止 停止 停止

注意:我的l298n黑色部分靠近车头,得出的表格。
2、模块原理
我们想让小车前进,转向,后退,那么就需要单片机控制这四个IN引脚的高低实现我们想要的功能。
3、代码讲解
配置单片机的IO引脚均为推挽输出模式:

void L298N_IN_Init ( void )
{		
	/*定义一个GPIO_InitTypeDef类型的结构体*/
	GPIO_InitTypeDef GPIO_InitStructure;
	/* 配置 LED1 引脚 */
	RCC_APB2PeriphClockCmd ( IN1_GPIO_CLK, ENABLE ); 															   
	GPIO_InitStructure.GPIO_Pin = IN1_GPIO_PIN;	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
	GPIO_Init ( IN1_GPIO_PORT, & GPIO_InitStructure );	

	/* 配置 LED2 引脚 */
	RCC_APB2PeriphClockCmd ( IN1_GPIO_CLK, ENABLE ); 														   
	GPIO_InitStructure.GPIO_Pin = IN2_GPIO_PIN;	
	GPIO_Init ( IN2_GPIO_PORT, & GPIO_InitStructure );	

	/* 配置 LED3 引脚 */
	RCC_APB2PeriphClockCmd ( IN1_GPIO_CLK, ENABLE ); 															   
	GPIO_InitStructure.GPIO_Pin = IN3_GPIO_PIN;	
	GPIO_Init ( IN3_GPIO_PORT, & GPIO_InitStructure );		
	  
     RCC_APB2PeriphClockCmd ( IN1_GPIO_CLK, ENABLE ); 	
	GPIO_InitStructure.GPIO_Pin = IN4_GPIO_PIN;	
	GPIO_Init ( IN4_GPIO_PORT, & GPIO_InitStructure );
}

再就是方向的控制:这里与表格相反,是因为马达的正负极我给接反了,请大家忽略。

void carAdvanced()
{
	//前进状态
	 IN1_OFF();
	 IN2_ON();
	 IN3_OFF();
	 IN4_ON();
}
void carLeft()
{
//	//左转状态  
//	 IN1_ON();
//	 IN2_OFF();
//	 IN3_OFF();
//	 IN4_OFF();
	
	
	 IN1_ON();
	 IN2_OFF();
	 IN3_OFF();
	 IN4_ON();
	
}
void carRight()
{
	//右转状态
	 IN1_OFF();
	 IN2_ON();
	 IN3_ON();
	 IN4_OFF();
}
void carBack()
{
	//后退状态
	IN1_ON();
	IN2_OFF();
	IN3_ON();
	IN4_OFF();
}
void carStop()
{
	//后退状态
	 IN1_OFF();
	 IN2_OFF();
	 IN3_OFF();
	 IN4_OFF();
}

附上避障小车的全部源码https://download.csdn.net/download/singular_man/10957543
打完收工。。。。。。

你可能感兴趣的:(stm32小项目)