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

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

目录

产品概述

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

规格参数

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 ,也会亮起。

超声波测试例程

  • 程序链接:https://pan.baidu.com/s/1J0E_D-IX_9lCVu8IHDVEjQ 密码:cslj

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

  • 使用 Putty 登录到 Raspberry Pi 方法可以参考:Raspberry Pi 基础教程汇总
  • 注意程序中6165金沙总站 登录平台使用了一个库文件"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工具配置树莓派
树莓派新手教程二---如何安装和启动你的树莓派!
6165金沙总站 登录平台技术论坛树莓派控制器版块