直流电机驱动
1. 硬件连接
电源接口
电源有个跳冒可以选择,如果使用5v的电压的话,直接短接5V 和POWER 这两个PIN就好
1.1 板子上的DRV8837接线图
PA6,PA7/PB0,PB1 两两为一对进行控制输出
1.2 独立半桥控制
原理图如下,它将电机一端接电源,一端接芯片,这样就可以让芯片同时控制两个电机 下图是这个状态下GPIO的状态和输出的关系
1.3 常规接法
这个将电机的两端分别接上了两个输出,享有完整的电机控制功能 下图是这个状态下GPIO的状态和输出的关系
2. CubeMX生成代码
配置cubeMX的信息如下图所示
- 配置了4个GPIO
- 配置debug口
- 配置外部时钟
3. 编写代码
先编写使用GPIO的方式来驱动芯片,根据芯片控制的真值表 如下就实现了正转和反转的功能。
C
while (1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);
HAL_Delay(5000);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_6,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
HAL_Delay(5000);
}
4. 后记
板子上的电路做好适配后可以驱动其他电机,可以根据情况来实现操控。
课后思考: 将本节课程的内容,和之前PWM控制LED灯的课程内容结合。将两个控制电机的PIN一个固定,另外一个输出PWM波,实现电机转速的调节。