简介
这是一款树莓派直流电机驱动板,板载编码器接口,能同时驱动2路直流电机或带编码器的直流电机,通过I2C与树莓派通信,可以对各个电机接口进行配置和驱动。此款树莓派电机驱动板,采用STM32作为电机驱动微处理器,负责解析由上位机发送的指令,通过计算后转换成电机驱动信号。采用TB6612FNG高性能电机驱动芯片,单通道持续电流1.2A,峰值电流高达2A,电机驱动支持7~12V宽电压(电机驱动供电)输入。
技术规格
- 驱动主控:STM32
- 控制电路工作电压:5V
- 电机驱动芯片:TB6612FNG
- 电机驱动电压:7-12V
- 通信接口:I2C接口
- 设备地址:0x10
- 1.2A持续驱动能力
- 峰值电流:2A
- 工作模式:2路直流电机或2路带编码器直流电机
- 2个指示灯
- 电源指示灯
- 通信状态指示灯
- 外形尺寸:65x30mm
接口说明
标号 | 名称 | 功能描述 |
---|---|---|
1 | + | 外接电源输入正极(7-12V) |
2 | - | 外接电源输入负极 |
3 | E1+ | 编码器E1正极 |
4 | E1- | 编码器E1负极 |
5 | E1A | 编码器E1 A相输出 |
6 | E1B | 编码器E1 B相输出 |
7 | M1+ | 电机M1正极 |
8 | M1- | 电机M1负极 |
9 | M2- | 电机M2正极 |
10 | M2+ | 电机M2负极 |
11 | E2B | 编码器E2 B相输出 |
12 | E2A | 编码器E2 A相输出 |
13 | E2- | 编码器E2负极 |
14 | E2+ | 编码器E2正极 |
尺寸图
功能配置
- 控制方式: I2C命令控制。
- 驱动信号:100Hz~12750Hz的PWM信号
- 编码器电机功能(仅限带编码器直流电机使用):
- 编码器使能/失能
- 减速比配置
- 获取编码器电机的转速
- 基本功能
- 设置驱动信号频率
- 设置占空比
- 设置电机正反转
- 调速
- PWM调速(频率一定,改变占空比大小,越大转速越快)
- 调频(改变驱动信号频率)
树莓派使用教程&rock 4se使用教程
硬件
注:额定工作电压在7~12V,电流不超过2A的直流电机均可!
软件
接线图
树莓派准备步骤
step1:将DC Motor Driver HAT直插到树莓派主板上,连接电机板和电机,上电.
step2:检测I2C接口是否使能。输入命令i2cdetect -y 1,若未使能,会显示如下图所示提示:
step3:使能I2C接口。(若已开启可忽略此步)键入命令sudo raspi-config,进入配置界面,操作流程如下所示:
配置完成后,键入命令sudo reboot重启树莓派。
step4:检测I2C地址。键入命令i2cdetect -y 1检查设备I2C地址,如下图所示:
step5:下载DFRobot_RaspberryPi_Motor库。键入命令*'sudo git clone https://github.com/DFRobot/DFRobot_RaspberryPi_Motor ,输入ls*'查看命令,如下图所示:
rock 4se准备步骤
step1:将DC Motor Driver HAT直插到rock 4se上,连接电机板和电机,上电
step2:开启ROCK PI的i2c
打开文件/boot/hw_intfc.conf
将i2c7=off修改为i2c7=on
# Hardware Interface Config
# For more details, check https://wiki.radxa.com/Rockpi4/hardware/devtree_overlays.
# Set "on" to enable the optional hardware interfaces while set "off" to disable.
intfc:pwm0=off
intfc:pwm1=off
intfc:uart2=off
intfc:uart4=off
intfc:spi1=off
intfc:spi2=off
intfc:i2c2=off
intfc:i2c6=off
intfc:i2c7=off
# Devicetree Overlay Enable, uncomment to enable .dtbo under /boot/overlays/.
#intfc:dtoverlay=at24c02
#intfc:dtoverlay=two-color-led
#intfc:dtoverlay=console-on-ttyS2
#intfc:dtoverlay=console-on-ttyS4
#intfc:dtoverlay=devspi1
#intfc:dtoverlay=devspi2
step3:安装smbus
pip install smbus
注:rockpi运行python文件时,尽量使用python3。操作系统选择Ubuntu。
样例程序
进入DFRobot_RaspberryPi_Motor库python所在目录
cd /DFRobot_RaspberryPi_Motor/raspberry
如何驱动一个带编码器直流电机?
id参数可用使用变量M1,M2,ALL,分别表示电机M1,电机M2,M1和M2
- step1.使能编码器;
set_encoder_enable(self, id)`
`例:`
`board = Board(1,0x10)`
`set_encoder_enable([board.M1])#使能编码器电机M1`
`set_encoder_enable([board.M2])#使能编码器电机M2`
`set_encoder_enable([board.M1,board.M2])#使能编码器电机M1和M2`
`set_encoder_enable(board.ALL)#使能编码器电机M1和M2
- step2.设置电机减速比(demo默认43:1) 跟电机的减速比有关
set_encoder_reduction_ratio(self, id, reduction_ratio)
- step3.设置PWM信号的频率(demo默认为1000Hz)
set_moter_pwm_frequency(self, frequency)
- step4.指定M1,M2或M1和M2的转向(正转或反转),和速度(占空比0~100)
motor_movement(self, id, orientation, speed)
- step5.获取编码器电机的速度
get_encoder_speed(self, id)
注:使用不同电机,其减速比参数不同,在运行demo之前,需修改所用电机的减速比!
运行DC_Motor_Demo.py示例(所用电机减速比为120:1,已修改为120),打印编码器电机的占空比和转速。
python DC_Motor_Demo.py
程序功能:电机驱动板产生一个频率为1KHz,占空比在5%~95%范围内变化的信号,以驱动编码器电机M1顺时针先加速后减速,电机M2逆时针先加速后减速,再停止,并串口打印编码器电机的转速,如此循环。
如何驱动一个直流电机?
只需将直流电机连接到M1+、M1-或M2+、M2-接口上,按照上述demo屏蔽编码器相关的功能,设置好频率、占空比、运转方向即可。
注:不带编码器的直流电机无法获取速度,只能通过PWM调速!
兼容性测试
MCU | 测试通过 | 测试失败 | 未测试 | 特别标注 |
---|---|---|---|---|
树莓派4B | √ | |||
树莓派3B | √ | |||
树莓派3B+ | √ | |||
树莓派Zero W | √ | |||
树莓派2B+ | v |