Skip to content

直流电机驱动 ​

1. 硬件连接 ​

电源接口 ​

电源有个跳冒可以选择,如果使用5v的电压的话,直接短接5V 和POWER 这两个PIN就好

1.1 板子上的DRV8837接线图 ​

PA6,PA7/PB0,PB1 两两为一对进行控制输出 alt text

1.2 独立半桥控制 ​

原理图如下,它将电机一端接电源,一端接芯片,这样就可以让芯片同时控制两个电机 alt text 下图是这个状态下GPIO的状态和输出的关系 alt text

1.3 常规接法 ​

这个将电机的两端分别接上了两个输出,享有完整的电机控制功能 alt text 下图是这个状态下GPIO的状态和输出的关系

alt text

2. CubeMX生成代码 ​

配置cubeMX的信息如下图所示

  1. 配置了4个GPIO
  2. 配置debug口
  3. 配置外部时钟

alt text

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波,实现电机转速的调节。