L298N驱动芯片简介
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。其引脚排列如下图所示。
OUT1、OUT2和OUT3、OUT4之间分别接2个电动机。IN1、IN2、IN3、IN4引脚从单片机接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。L298的逻辑功能表如下所示:
对于点击的调速,我们采用PWM调速的方法。其原理就是开关管在一个周期内的导通时间是t,周期为T,则电机两端的平均电压U=Vcc*(t/T)=a*Vcc。其中,a=t/T(占空比),Vcc是电源电压。电机的转速与电机两端的电压成比例,而电机两端的电压与控制波形的占空比成正比例,占空比越大,电机转的越快。在硬件电路的连接上如下图所示:
我们将控制器的PA2、PB9、PA1、PC9口分别连接到298的IN1~IN4上,将拥有PWM的PA0、PA3连接到298的ENA、ENB,通过改变PA2、PB9、PA1、PC9口上的高低电平变化以控制小车的前进方向,通过改变PA0、PA3口上的高低电平的占空比以控制电机的转速。
STM32CubeMX配置
将PA2、PB9、PA1、PC9口配置为Output,PA0、PA3配置为PWM输出。
Counter Settings:
• 预分频器,NUCLEOF072RB 的工作频率默认为 8MHz,经 800分频之后的工作频率为10Khz。
• 计数模式,向下还是向下计数
• 计数周期:0~999,这样一个计数周期下来,时间刚好是 100毫秒。
通过修改各通道的Pulse值修改各通道输出PWM占空比。
占空比修改
使用HAL库中的__HAL_TIM_SetCompare修改脉冲宽度来修改占空比,函数原型描述如下
/**
* @brief Sets the TIM Capture Compare Register value on runtime without
* calling another time ConfigChannel function.
* @param __HANDLE__: TIM handle.
* @param __CHANNEL__ : TIM Channels to be configured.
* This parameter can be one of the following values:
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
* @arg TIM_CHANNEL_3: TIM Channel 3 selected
* @arg TIM_CHANNEL_4: TIM Channel 4 selected
* @param __COMPARE__: specifies the Capture Compare register new value.
* @retval None
*/
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \(*(__IO uint32_t *)(&((__HANDLE__)->Instance->CCR1) + ((__CHANNEL__) >> 2))
= (__COMPARE__))