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