一、概述
该线路板是奇果派自研的一款电机驱动扩展解决方案,可以驱动4个直流电机或2个步进电机,并且额外提供8路全速PWM控制,可以控制8路舵机。
方案1:树莓派驱动板
点击查看树莓派驱动板文档:RaspberryPi HAT树莓派电机驱动板
方案2:Arduino电机驱动扩展板,配合驱动板扩展对多个电机和舵机的控制,本文将详细介绍该方案
点击查看驱动板文档:Arduino MotorShiled电机驱动器说明
二、接口说明

参数说明:
- 每路2.5A(3.6A峰值)输出,可运行4.5-13.5V直流电机;
- 可以驱动4个直流电机或2路步进电机;
- 额外提供8路PWM输出,可以控制8路舵机;
- 自带稳压电路,可提供稳定3V或5V电源;
- 可自定义I2C地址,支持多个驱动器叠加级联;
电源说明:
- 电源1:使用DC电源接口,输入电压范围为6至12V;
- 电源2:使用电源线链接驱动板,从驱动板供电;
三、案例展示


注意:驱动板和扩展板之间使用i2c方式通讯,可以使用4根杜邦线连接两块板子的i2c接口
四、代码示例
Mixly插件和示例代码下载: 图形编程插件V5.6
米思奇图形化编程我们已经封装好了arduino和esp32插件,可直接使用,代码截图如下

扩展板示例代码下载:Arduino扩展板示例代码
/**本示例简单实现开发板和扩展板对电机和舵机的控制*/#include <Wire.h>#include "PS2X_lib.h"#include "Adafruit_MS_PWMServoDriver.h"#include "QGPMaker_MotorShield.h"PS2X ps2x;QGPMaker_MotorShield AFMS = QGPMaker_MotorShield();//驱动板//扩展板的默认i2c地址是50QGPMaker_MotorShield AFMS50 = QGPMaker_MotorShield(0x50); QGPMaker_MotorShield AFMS51 = QGPMaker_MotorShield(0x51); //级联第二块扩展板QGPMaker_MotorShield AFMS52 = QGPMaker_MotorShield(0x52); QGPMaker_MotorShield AFMS53 = QGPMaker_MotorShield(0x53); //四个驱动板电机QGPMaker_DCMotor *DCMotor_1 = AFMS.getMotor(1);QGPMaker_DCMotor *DCMotor_2 = AFMS.getMotor(2);QGPMaker_DCMotor *DCMotor_3 = AFMS.getMotor(3);QGPMaker_DCMotor *DCMotor_4 = AFMS.getMotor(4);//4个扩展板电机QGPMaker_DCMotor *DCMotor50_1 = AFMS50.getMotor(1);QGPMaker_DCMotor *DCMotor50_2 = AFMS50.getMotor(2);QGPMaker_DCMotor *DCMotor50_3 = AFMS50.getMotor(3);QGPMaker_DCMotor *DCMotor50_4 = AFMS50.getMotor(4);QGPMaker_Servo *Servo0 = AFMS.getServo(0); //驱动板上第0号引脚舵机QGPMaker_Servo *Servo50_0 = AFMS.getServo(0); //扩展板上第0号引脚舵机
五、叠加级联
当驱动板+扩展板总共8个电机仍然不够用时,可以最多级联4个扩展板,总共可以控制20个电机40个舵机

多个驱动器级联需要为每个驱动器设置唯一的I2C地址,默认地址是0x50。地址范围从0x50~0x53总共4个地址。
如上图,焊接不同的跳线可以设置不同的地址。规则如下
Board 0: Address = 0x50 Offset = binary 0000 (默认全部为空)
Board 1: Address = 0x51 Offset = binary 0001 (只焊接A0)
Board 2: Address = 0x52 Offset = binary 0010 (只焊接A1)
Board 3: Address = 0x53 Offset = binary 0011 (同时焊接A0 & A1)
此时代码部分对i2c地址做出相应调整:
QGPMaker_MotorShield AFMS50 = QGPMaker_MotorShield(0x50); //(默认全部为空)
QGPMaker_MotorShield AFMS51 = QGPMaker_MotorShield(0x51); //(只焊接A0)
QGPMaker_MotorShield AFMS52 = QGPMaker_MotorShield(0x52); //(只焊接A1)
QGPMaker_MotorShield AFMS53 = QGPMaker_MotorShield(0x53); //(同时焊接A0 & A1)
六、原理图

原创文章,作者:奇果派,如若转载,请注明出处:https://www.7gp.cn/archives/1269