SKU:RB-01C073A 树莓派电机驱动板

来自ALSROBOT WiKi
跳转至: 导航搜索
Rb01c07301.png

目录

产品概述

新版树莓派电机驱动板采用的电路和接口设计,版型符合树莓派2代的设计,与树莓派完美结合。供电电源采用LM2596开关稳压电源,具有更高效率,更大输出电流,更低的发热量等特点。电机驱动板新品采用L293D,更小的封装尺寸,更合理的电路设计。对外接口方面,采用了奥松新一代防插反接口,和奥松的系列传感器模块匹配,更可以直接安装URF02超声波传感器和蓝牙模块,制作树莓派小车更加方便、简洁。如果您想制作树莓派小车,无需东奔西走,奥松机器人配套全都有!

规格参数

1.电机驱动输出接口:双路双向直流电机驱动
2.电源输入接口:7~12V DC
3.OC输出接口:两路集电极开路输出(25mA,5V电平)
4.板载指示灯:两个可编程控制LED发光二极管
5.开关量接口:两路开关量输入/输出(3.3V电平)
6.UART接口:3.3V电平6Pin串行接口,可直接连接蓝牙模块
7.I2C接口:5V电平I2C接口,可驳接各类I2C接口模块
8.超声波模块接口:可直接连接URF02超声波模块
9.树莓派接口:支持树莓派、树莓派B+、树莓派2等
10.外形尺寸:56*40mm

使用方法

接口示意图

树莓派驱动板接口定义
树莓派驱动板GPIO接口

控制引脚说明

1.电源输入端接入7—12V直流电源,电机驱动板会给树莓派提供5V电源,所以树莓派插接电机驱动板后,只需给驱动板进行供电而树莓派无需额外的电源。
2.板载 LED1、LED2,对外接口 OC1、OC2 分别是树莓派的 GPIO7、8、22、27 经过 74HC14D 反相器的输出端,OC1、OC2 分别连接一个 LED 模块,使用树莓派的 IO 输出高低电平信号,通过74HC14D 驱动 LED 点亮与熄灭。
GPIO7 输出高电平,LED1 点亮,输出低电平,LED1 熄灭;
GPIO8 输出高电平,LED2 点亮,输出低电平,LED2 熄灭;
GPIO22 输出高电平,OC1 外接 LED 点亮,输出低电平,OC1 外接 LED 熄灭;
GPIO27 输出高电平,OC2 外接 LED 点亮,输出低电平,OC2 外接 LED 熄灭;
3.电机A口的使能接 GPIO10,方向控制接 GPIO25,电机B口的使能接 GPIO17,方向控制接 GPIO4,使用树莓派控制引脚可以进行控制电机的启动停止和调速,通过方向引脚控制电机转向。

  • A 口使能 GPIO10 输出高电平,A 口方向 GPIO25 输出高电平,A口电机顺时针旋转;
  • A 口使能 GPIO10 输出高电平,A 口方向 GPIO25 输出低电平,A口电机逆时针旋转;
  • A 口使能 GPIO10 输出低电平,A 口电机停止转动;
  • B 口使能 GPIO17 输出高电平,B 口方向 GPIO4 输出高电平,B口电机顺时针旋转;
  • B 口使能 GPIO17 输出高电平,B 口方向 GPIO4 输出低电平,B口电机逆时针旋转;
  • B 口使能 GPIO17 输出低电平,B 口电机停止转动;

4.SW1、SW2 接口经过限流电阻后直接连接在树莓派的 GPIO 11、9.在 SW1、GND 之间和 SWD、GND 之间,分别连接一个碰撞开关,GPIO11、9 设置为输入,默认电平为高电平(内部有上拉电阻),当开关闭合时,GPIO 的电平会被拉低。
5.I2C 接口直接连接到树莓派的I2C引脚(GPIO2 | SDA,GPIO3 | SCL),可以扩展I2C模块。
6.UART 接口直接连接到树莓派的UART引脚(GPIO14 | TX,GPIO15 | RX),可以扩展UART模块。
7.URF02(超声波接口)的OUTPUT经过分压直接连接到 GPIO18,INPUT 直接连接到 GPIO23,树莓派的 GPIO23 至高10us以上,然后置低,等待 GPIO18 接收到高电平信号时,高电平结束时停止,计算高电平时间,所测量的距离 = 高电平时间*声速/2。

插接方法

与树莓派控制器的完美配合

基本测试代码

  • 需要在树莓派中新建一个 python 程序文件,然后将代码复制到文件中,保存,但是一定要注意保存的目录是需要记住的。
  • 使用 Putty 登录到 Raspberry Pi 方法可以参考:Raspberry Pi 基础教程汇总
#!/usr/bin/env python
# encoding: utf-8

import RPi.GPIO
import time

SW1, SW2=11,9
OC1, OC2=22,27
LED1, LED2=7,8
EA = 10
EB = 17
directionA = 25
directionB = 4

RPi.GPIO.setmode(RPi.GPIO.BCM)

RPi.GPIO.setup(OC1, RPi.GPIO.OUT)
RPi.GPIO.setup(OC2, RPi.GPIO.OUT)
RPi.GPIO.setup(EA, RPi.GPIO.OUT)
RPi.GPIO.setup(EB, RPi.GPIO.OUT)
RPi.GPIO.setup(directionA, RPi.GPIO.OUT)
RPi.GPIO.setup(directionB, RPi.GPIO.OUT)
RPi.GPIO.setup(LED1, RPi.GPIO.OUT)
RPi.GPIO.setup(LED2, RPi.GPIO.OUT)

RPi.GPIO.setup(SW1, RPi.GPIO.IN)
RPi.GPIO.setup(SW2, RPi.GPIO.IN)

try:
	while True:
		time.sleep(0.01)	
		if (RPi.GPIO.input(SW2) == 1 or RPi.GPIO.input(SW1) == 1):
			RPi.GPIO.output(OC2, False)
			RPi.GPIO.output(LED2,True)
			RPi.GPIO.output(OC1, True)
			RPi.GPIO.output(LED1,False)
			
			RPi.GPIO.output(EA, True)
			RPi.GPIO.output(EB, True)
			RPi.GPIO.output(directionB, False)
			RPi.GPIO.output(directionA, False)
			time.sleep(1)
			RPi.GPIO.output(directionB, True)
			RPi.GPIO.output(directionA, True)
			time.sleep(1)
			
		else:
			RPi.GPIO.output(OC2, True)
			RPi.GPIO.output(LED2,False)
			RPi.GPIO.output(OC1, False)
			RPi.GPIO.output(LED1,True)
			
			RPi.GPIO.output(EA, False)
			RPi.GPIO.output(EB, False)
			
except KeyboardInterrupt:
	pass
	
RPi.GPIO.cleanup()

代码功能

此代码主要为了功能测试,在代码上传后 LED2 亮起,如果 OC2 外接一个 LED ,也会亮起,电机不会转动。
按下 SW1 外接的按键或者 SW2 外接的按键,LED2 熄灭,如果 OC2 外接一个 LED ,也会熄灭。LED1 亮起,如果 OC1 外接一个 LED ,也会亮起。

超声波测试例程

需要将下载的示例程序复制到树莓派的 pi 目录下,可以使用 putty 登录到 Raspberry Pi 控制器,输入命令"cd RB-01C073A Raspberry Pi Motor Driver URF02"进入程序目录,然后输入"sudo python URF02.py"命令来执行程序。

  • 使用 Putty 登录到 Raspberry Pi 方法可以参考:Raspberry Pi 基础教程汇总
  • 注意程序中我们使用了一个库文件"botbook_gpio",库文件可以直接从上面的例子程序下载中获取到,如果不使用库文件或者库文件和程序文件不是在同一个目录下,会造成程序执行失败。
import time
import botbook_gpio as gpio

def readDistanceCm():
	triggerPin = 23	
	echoPin = 18

	v=(331.5+0.6*20) # m/s

	gpio.mode(triggerPin, "out")

	gpio.mode(echoPin, "in")
	gpio.interruptMode(echoPin, "both")

	gpio.write(triggerPin, gpio.LOW)
	time.sleep(0.5)

	gpio.write(triggerPin, gpio.HIGH)
	time.sleep(1/1000.0/1000.0)
	gpio.write(triggerPin, gpio.LOW)

	t = gpio.pulseInHigh(echoPin) # s

	d = t*v
	d = d/2
	return d*100	# cm

def main():
	while True:
		d = readDistanceCm()
		print "Distance is %.2f cm" % d
		time.sleep(0.5)

if __name__ == "__main__":
	main()

程序效果

程序执行后,在 Putty 的登录窗口会持续显示出当前超声波检测的前方障碍物距离,单位"cm",如果要退出程序,可以使用“Ctrl + C”组合键。

产品相关推荐

Erweima.png

产品购买地址

树莓派电机驱动板

周边产品推荐

URF02超声波传感器
无线蓝牙模块
树莓派二代控制器

相关问题解答

新买的树莓派2,HDMI无信号,ACT灯常亮
Raspberry Pi 常见问题的解决方法

相关学习资料

玩转树莓派系列视频教程(一)
玩转树莓派系列视频教程(二)
玩转树莓派系列视频教程(三)
玩转树莓派系列视频教程(四)
玩转树莓派系列视频教程(五)
树莓派新手教程三---使用raspi-config工具配置树莓派
树莓派新手教程二---如何安装和启动你的树莓派!
奥松机器人技术论坛树莓派控制器版块