← 목록으로

龙芯2k0300 - 走马观碑组PWM驱动移植 - 大奥特曼打小怪兽

龙芯2k0300 - 走马观碑组PWM驱动移植 - 大奥特曼打小怪兽

요약

在《龙芯2k0300 - 走马观碑组第21届智能汽车竞赛软硬件设计》中我们使用了DRV8701双路电机驱动,DRV8701双路电机驱动采用门极驱动芯片DRV8701E + N-MOS管TPH1R403NL方案,输入电源5.9V ~ 28V均可使用,带过流保护功能。 一、DRV8701双路电机驱动 其

본문

在《龙芯2k0300 - 走马观碑组第21届智能汽车竞赛软硬件设计》中我们使用了DRV8701双路电机驱动,DRV8701双路电机驱动采用门极驱动芯片DRV8701E + N-MOSTPH1R403NL方案,输入电源5.9V ~ 28V均可使用,带过流保护功能。

一、DRV8701双路电机驱动

其中

  • PH-6P接口用来隔离供电以及信号输入;
  • 红色端子同来提供直流电压输入,输入电压5.9-28V,一般大小为电机可承受的最大电压;
  • 蓝色端子是直流电压输出,输出电压与输入PWM值正相关,连接到电机上。

1.1 电路原理图

电路原理图如下:

1.1.1 DRV8701E

DRV8701E是德州仪器 (TI) 的一款单H桥栅极驱动器,专门用来控制外部的4N沟道MOSFET,关键特性;

  • 控制接口:它采用PH/EN (相位/使能)逻辑接口。这意味着你只需要两个GPIO信号就能控制电机的正转、反转、刹车和滑行,逻辑非常清晰。
  • 自举供电:它内置了一个电荷泵 (Charge Pump),可以产生驱动高侧N-MOS管所需的高于电源电压的栅极驱动电压(通常为 9.5V),这使得它可以高效地驱动高侧开关。
  • 可调驱动强度:它有一个 IDRIVE 引脚,可以通过一个电阻来调节栅极的驱动电流(从6mA150mA)。在龙邱方案中(5.9V-28V 输入),这个功能非常有用,可以根据电源电压调整开关速度,平衡开关损耗和电磁干扰 (EMI)。
  • 电流检测与保护:它内置了电流检测放大器,配合外部采样电阻,可以实现 PWM电流斩波(限制启动或堵转电流)。同时具备欠压锁定 (UVLO)、过流保护 (OCP) 和热关断 (TSD) 功能。
1.1.2 TPH1R403NL

这是一款ToshibaN沟道MOSFET,这里会用到4颗(H桥结构),关键特性;

  • 超低导通电阻:它的\(R_{DS(ON)}\)典型值仅为1.7 mΩ (在\(V_{GS}=4.5V\)时)。这是一个非常惊人的低数值,意味着导通损耗极低,发热小,效率极高;
  • 大电流能力:单颗芯片的漏极电流可达60A-150A(取决于测试条件),配合DRV8701E的强驱能力,足以应对大扭矩电机的启动电流。
  • 低门槛电压:它支持4.5V的低电压逻辑驱动。这与DRV8701E在电池供电(如5.9V-12V)时的输出电压完美匹配,确保在电池电压下降时MOS管依然能完全导通,避免烧管。
1.1.3 74HC125PW

74HC125PW是一款非常经典的数字逻辑芯片,它的核心身份是“四路缓冲器/线路驱动器”,并且带有三态输出功能。

可以把它想象成4个独立的电子开关;

  • 缓冲/驱动(增强信号):当开关“打开”时,它会将输入的信号(01)原样输出,但输出能力更强。比如,单片机的引脚电流很小,带不动大功率负载,通过74HC125后,就能驱动更重的负载(比如长导线或更多的逻辑门);
  • 三态输出(关键功能): 这是它最特别的地方。普通的芯片输出只有“高电平(1)”和“低电平(0)”。而74HC125有第三种状态高阻态,高阻态相当于开关断开,这根线就像悬空一样,既不输出高也不输出低,对电路没有任何影响。

它还可以用来隔离信号,防止不同模块之间的信号干扰。

1.2 控制原理

DRV8701有两种控制模式:PH/EN模式以及PWM模式,DRV8701芯片表面印的字,最后会有一个字母,决定了它的工作逻辑:

  • DRV8701E(后缀是 E)芯片内部电路被设计为PH/EN模式,此时,15号引脚被定义为PH(方向),14号引脚被定义为EN(使能);
  • DRV8701P(后缀是 P):芯片内部电路被设计为 PWM (IN1/IN2) 模式。此时,15号引脚被定义为IN114 号引脚被定义为 IN2
1.2.1 PH/EN模式

这种模式使用PH(Phase/相位)和EN(Enable/使能)两个信号来控制电机。逻辑非常直观,适合单片机控制。

1.2.2 PWM模式

这种模式使用IN1IN2两个信号直接控制H桥的上下臂,通常用于直接输入PWM波的场景。

1.2.3 H桥工作原理

更多H桥工作原理内容可以参考《H桥工作原理》。

1.3 电机控制

1.3.1 控制逻辑

经过前面的分析,不难得出左电机控制逻辑;

nSLEEP PWM1(EN/IN2) GPIO1(PH/IN1) 电机状态
0 X X 电机停止
1 0 X 刹车(续流)
1 1 0 反转
1 1 1 正转

所以:

  • 给引脚GPIO1为高电平,然后引脚PWM1输入PWM就可以进行左电机正转调速控制;
  • 给引脚GPIO1为低电平,然后引脚PWM1输入PWM就可以进行左电机反转调速控制;

同理,右电机控制逻辑:

  • 给引脚GPIO2为高电平,然后引脚PWM2输入PWM就可以进行右电机正转调速控制。
  • 给引脚GPIO2为低电平,然后引脚PWM2输入PWM就可以进行右电机反转调速控制。

PWM波的占空比越大时,蓝色端子输出的电压值与红色端子的电压值越接近,反之则与0V越接近。

PWM波的频率不可以随意设置,频率太低会导致电机运转不畅,振动大,噪音大;频率太高会导致驱动器开关损耗较大,甚至有电机会啸叫而不转的情况。一般1k~30kPWM频率较为普遍,几百Hz的也有,实际上需要根据电机功率在测试时确定合适的PWM频率范围为宜。

1.3.2 硬件接线

久久派底版控制口原理图如下:

img

DRV8701双路电机驱动板与龙芯2K0300开发板的连接关系需严格对应,连接表如下:

电机驱动板 底版引脚 连接的龙芯GPIO 说明
3.3V 3.3V 3.3V 接3.3V
PWM1 MT1_P GPIO65(SPI2_MISO) 左电机PWM控制
GPIO1 MT1_N GPIO75(CAN3_TX) 左电机方向引脚
PWM2 MT2_P GPIO66(SPI2_MOSI) 右电机PWM控制
GPIO2 MT2_N GPIO74(CAN3_RX) 右电机方向引脚
GND GND GND 必须可靠接地,否则可能出现显示异常

在《龙芯2k0300 - 久久派开发环境搭建及内核升级(上)》中我们介绍到龙芯2K0300集成4PWM控制器,支持输入/输出,根据《龙芯2K0300处理器用户手册》手册查询到芯片功能引脚复用关系表;

芯片引脚 GPIO 复用 主功能复用 第一复用 第二复用
SPI2_CLK GPIO64 spi2_clk PWM0 uart0_dcd
SPI2_MISO GPIO65 spi2_miso PWM1 uart0_ri
SPI2_MOSI GPIO66 spi2_mosi PWM2 uart1_rts
SPI2_CS GPIO67 spi2_cs PWM3 uart1_cts

注:除芯片启动相关的引脚(SPI0SDIO0/eMMC0在相应启动模式下对应引脚为主功能) 外,以上复用引脚上电默认状态都复用为GPIO 功能,其中GPIO0~63默认为输入状态,GPIO64~105默认为输出低电平状态。

因此我们可以知道GPIO65GPIO66引脚是可以服用为PWM功能的。

PWM设备驱动

PWM相关可参考《Rockchip RK3399 - GPIO&PWM风扇调试》,龙芯提供的内核源码已支持。

2.1 内核配置

2.2 PWM驱动

2.3 新增设备节点

三、应用程序

3.1 main

3.2 Makefile

3.3 编译应用程序

四、测试

4.1 烧录设备树

4.2 应用程序测试

参考文章:

[1] 基于直流有刷电机的速度闭环控制以及matlab仿真

[2] STM32F103直流有刷电机速度闭环控制

[3] Rockchip RK3399 - GPIO&PWM风扇调试

← 목록으로