目录
1.电机为什么需要驱动板呢?为什么不能用控制器直接控制电机呢?
2.H桥电路介绍
3.L298N原理介绍
4.实物接线图
5.CUBEMX配置
6.代码
7. 演示视频
L298N是常用来驱动小型直流有刷电机(两个)和步进电机(一个)的电机驱动板,其电路原理就是两个H桥电路,控制原理是使用PWM来实现对直流电机的调速,因此需要先补充一下对PWM的知识,可以跳转到以下链接。
【STM32】PWM输出功能详细介绍
【STM32】HAL库PWM实现呼吸灯实验
1.电机为什么需要驱动板呢?为什么不能用控制器直接控制电机呢?
原因是控制器本身提供的电压不足以让电机运动,因此需要外接一个驱动板来驱动电机运动。
用STM32作为控制器,L298N作为驱动器来驱动小马达(直流有刷电机)的原理图如下:
2.H桥电路介绍
对于需要驱动直流电机这种电流较大负载的控制电路,H桥是最经典的,因其电路形状像字母“H”,故称其为“H桥”。H桥一般由四个MOS管(Q1、Q2、Q3、Q4)作为独立控制的开关元器件组成,不同的开关状态对应的电机状态如下表所示:
电机状态 |
开关状态 |
正转 |
Q1、Q4开,Q2、Q3关 |
反转 |
Q1、Q4关,Q2、Q3开 |
停止 |
Q1、Q3关,Q2、Q4开 |
通常对H桥的控制最常用的是脉冲宽度调制(PWM)。
3.L298N原理介绍
L298N内部电路图如下图所示:
不难看出,其内部电路是由两个H桥组成。ENA和ENB为使能信号,In1和In2为一组逻辑信号,控制OUT1和OUT2这一组输出信号;In3和In4为一组逻辑信号,控制OUT3和OUT4这一组输出信号。通过控制逻辑信号来实现对输出信号的控制,比如电机速度和正反转。
(1)输出A和输出B用来接两个直流有刷电机,对于逻辑输入,应当接在控制板上。In1和In2控制输出A,In3和In4控制输出B。通道使能的跳线帽默认插在上面,保持不动。如果拔掉,认为不使能。
(2)对于板载5V使能处的跳线帽,若插在上面,则5V供电可以用来给控制板供电;如果拔掉,才能用来对驱动板实现5V供电。
(3)供电问题:输入电源为7~12V时,5V供电处可以接控制板,用来给控制板供电,也可以不接;输入电源为大于12V时,需要拔掉电源旁的跳线帽(板载5V使能),5V供电处需要接入5V的电压。
4.实物接线图
通过对L298N原理分析,不难得出逻辑信号接控制板,输出信号接电机。注意:控制板和驱动板要实现共地,目的是使电压有参考电平。
使用两节3.7V电池来供电,电池正极接在+12V供电,负极接GND。使用的控制板是正点原子的探索者,主控芯片是STM32F407ZGT6。因为使用一个马达,故只需要一组控制信号控制一路输出即可。因此,In1和In2接在控制板的PA0和PA6引脚,OUT1接马达的两根线。因为,控制板自带供电,所以不需要控制板提供5V供电,所以只需要将控制板和驱动板的GND连接在一起,给其一个参考电平。
控制问题:
电机状态 |
IN1 |
IN2 |
|
正转 |
1 |
0 |
|
反转 |
0 |
1 |
|
停止 |
等待 |
0 |
0 |
刹车 |
1 |
1 |
5.CUBEMX配置
(1)使能外部高速时钟
(2)完成时钟树配置
(3)设置PWM(也可以在TIM2中开启两个通道)
(4)生成代码(GENERATE CODE)
文章来源:https://www.toymoban.com/news/detail-597308.html
6.代码
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM2_Init();
MX_TIM3_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,5000);
HAL_Delay(2000);
__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,0);
HAL_Delay(1000);//慢速正转2秒,等待1秒
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,20000);
HAL_Delay(2000);
__HAL_TIM_SET_COMPARE(&htim3,TIM_CHANNEL_1,0);
HAL_Delay(1000);//快速反转2秒,等待1秒
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
7. 演示视频
STM32控制L298N驱动小马达文章来源地址https://www.toymoban.com/news/detail-597308.html
到了这里,关于【STM32】cubeMX配置HAL库驱动L298N控制直流有刷电机的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!