【外设移植】Ai-WB2+四路电机驱动

[复制链接]
查看35 | 回复1 | 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 King6688 于 2024-9-16 09:16 编辑

  这几天一直比较忙,没空发,看了下时间今天就要截止了啊,于是赶紧写了起来~~


简介:
  AI-WB2-32S直接用GPIO驱动电机,可能造成电流不足的问题,本次采用了ULN2003来驱动。


  ULN2003 是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由 7 对 NPN 达林顿管组成的,它的高电压输出特性和阴极二极管可以转换感应负载。单个达林顿对的集电极电流是 500mA。其内部相当于非门电路,即输入高输出为低,输入为低输出是高。



移植过程:
  代码基本跟前几天写的SG90驱动舵机类似,只是接线方式稍有点差异,普通直流电机仅需2根线,分别为正极和负极,正极外接供电,与ULN2003 COMMON端连接。
引脚对应关系:
AI-WB2-32S开发板
ULN2003
电机
GPIO4 1IN 电机1负极接2003的1OUT,正极接5V
GPIO3 2IN 电机2负极接2003的2OUT,正极接5V
GPIO17 3IN 电机3负极接2003的3OUT,正极接5V
GPIO14 4IN 电机4负极接2003的4OUT,正极接5V
接线图:
ULN2003接线.jpg
另外,AI-WB2-32S有PWM0~4,其中,2、4都有2个GPIO引脚,需要注意。



主要代码:

  1.   #define PWM_IO5 0

  2.   #define PWM_IO16 1

  3.   #define PWM_IO17 2

  4.   #define PWM_IO3 3

  5.   #define PWM_IO4 4

  6.   #define PWM_IO14 4

  7. ...

  8.     while(1) {

  9.         PWM_Smart_Configure2(PWM_IO4, 80, 20000, 5000);

  10.         PWM_Channel_Enable(PWM_IO4);

  11.         vTaskDelay(pdMS_TO_TICKS(2000));

  12.         PWM_Channel_Disable(PWM_IO4);

  13.         vTaskDelay(pdMS_TO_TICKS(1000));


  14.         PWM_Smart_Configure2(PWM_IO3, 80, 20000, 10000);

  15.         PWM_Channel_Enable(PWM_IO3);

  16.         vTaskDelay(pdMS_TO_TICKS(2000));

  17.         PWM_Channel_Disable(PWM_IO3);

  18.         vTaskDelay(pdMS_TO_TICKS(1000));


  19.         PWM_Smart_Configure2(PWM_IO17, 80, 20000, 15000);

  20.         PWM_Channel_Enable(PWM_IO17);

  21.         vTaskDelay(pdMS_TO_TICKS(2000));

  22.         PWM_Channel_Disable(PWM_IO17);



  23.         PWM_Smart_Configure2(PWM_IO14, 80, 20000, 10000);

  24.         PWM_Channel_Enable(PWM_IO14);

  25.         vTaskDelay(pdMS_TO_TICKS(2000));

  26.         PWM_Channel_Disable(PWM_IO14);
  27.     }
复制代码
因为代码和之前发的SG90移植的都差不多,这次就不重复发了,可以尝试更改频率和占空比来控制电机的转速。




回复

使用道具 举报

iiv | 3 天前 | 显示全部楼层
很棒棒
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则