arduino仓库搬运机器人教材.docx
《arduino仓库搬运机器人教材.docx》由会员分享,可在线阅读,更多相关《arduino仓库搬运机器人教材.docx(58页珍藏版)》请在冰豆网上搜索。
arduino仓库搬运机器人教材
仓库搬运机器人教材
———基于Arduino开发平台V1.0
注意事项
请认真阅读该手册并注意产品功能和用途说明。
本手册在CD光盘上以PDF格式提供,如有需要可以进行复制或打印。
该手册内容可能因产品升级或其他原因而改变,本公司不另行通知客户。
安全防备
根据严重程度,安全防备分两种:
警告和注意。
在动手安装之前请先通篇阅读警告和注意事项。
安装和操作注意
本段包含防止机械损伤方面的内容。
危险!
当操作机器人的时候要注意安全。
如果没有正确组装,机器人将不能正常工作甚至会损坏。
组装方法详见第一章机器人组装说明。
在一个足够大的地方进行调试工作
警告!
远离小孩。
尽管该产品看起来像个玩具,在无人照看的情况下,它可能会对小孩造成伤害。
故障发生时,请立即关闭电源。
如果电池被弄破,暴露在液体,火或其他热源面前,可能会导致电击。
不要拆开或修改充电器和其电缆。
当不充电时,请把充电器从电源上拔下。
不要拆卸或修改电机里面的电路板。
不要在热,潮湿或寒冷的环境下使用,因为该产品包含精密的元件。
如果处在一个极端的条件下,错误可能发生。
充电时请确认充电器插座是牢固的。
请仔细阅读本手册,在调试时注意机器人各关节的方向,尽量避免关节相撞。
注意!
机器人的电机需要定期维护以获得和维持恰当的性能。
在一个较大,平整的地方操作时机器人的表现效果会更好。
如果工作空间很小又不平的话,机器人可能会摔倒甚至损坏。
在启动了机器人或操作的时候请不要把住机器人。
在程序的下载过程中不要关闭机器人电源,否则程序会丢失或损坏。
电池!
套件里面包含锂离子(Li-Ion)电池做电源。
该锂离子(Li-Ion)电池是高能量可充电的电池,必须妥善保管,充电和使用。
把充电器接入交流电源并把他连到电池的充电接口上。
当充电器接到交流电源后,它上面的电源灯会亮起来并呈红色。
状态指示灯会呈绿色,当电池充电完成,绿色指示灯熄灭。
警告!
电池管理:
该锂电池在使用时不要把电能全部用光才充电,要保留一点点电量。
如果电池充足电后放置很长一段时间,电池性能会降低。
当不使用时,必须把电池与电路板或充电器断开,把电池存储在阴凉,干燥的环境中。
充电时间。
给电池充分充电需要大约40分钟。
这个时间与充电前电池里原有电量有关。
充电时要注意照看,当电池异常的发烫时应立即停止充电。
过度充电可导致电池损坏。
注意!
电池处理:
不要拆开或修改电池的连接或更改导线。
不要让物体进入电池的连接头,也不要让导体裸露在外。
不要在高温和极端的环境下使用。
把电池存储在阴凉,干燥的环境中。
在运输或存储时,让电池远离其他导体。
当电池的导线变破旧或磨损时,请更换这个电池。
紧急处理:
如果电池造破坏导致电解材料溅到皮肤上,立即用大量水冲洗皮肤。
如果电解材料溅到眼睛里面,请尽快就医。
电池里的电解材料是有毒物质,能对人和家庭环境、家具等造成污染和危害。
如果电池不能再被充电,请按照垃圾的处理方法或本国家的规则妥善处理。
不要通过焚烧来处理报废的电池。
一、机器人的组装
1.1.组装工具
工具:
尖嘴钳、十字螺丝刀等。
1.2.机器人零件表
1.侧板
2.电机
3前板
4.轮毂
5.轮胎
6.上板
7.底板
8.M3螺钉
9.M3螺母
10.M3X20螺钉
11.花舵盘
12.M3X25mm六棱铜柱
13.M3X35mm六棱铜柱
14.M3X11mm六棱铜柱
15.尼龙垫片
16.圆柱型螺母
17.齿轮盘
18.带丝舵盘
19.U型件
20.大舵机
21.L型固定件
22.手指
23.手指支架
24.小底盘
25.小舵机
26.长垫片
1.3.装配步骤
在上一步了解完仓库搬运机器人所需要的零件之后,这一步就要开始进行装配了,在组装仓库搬运机器人的过程中由于零件较多机构环节较多,为了能够安全、准备、方便的装配,我们先进行预装,就是说把各个环节先组装起来,然后再进行总装。
具体装配步骤如下。
1)根据仓库搬运机器人的机构因素和装配的排列顺序,首先我们要装配搬运机器人的车体部分。
这里我们第一步是要组装仓库搬运机器人的侧板,在这一步我们先准备好所需要的零件。
2)安装侧板的两个电机。
3)安装前板。
4)安装后板。
5)安装另一个侧板。
6)安装侧板上的两个电机。
7)安装下板。
8)安装上板。
9)安装四个车轮。
10)完成上盖的安装。
11)安装完车体后我们安装机械手部分。
首先安装小舵机。
12)安装齿轮盘。
13)安装从动齿轮盘。
14)安装手指。
15)安装手指架。
16)安装L型连接件。
17)安装U型件。
18)安装两舵机固定板。
19)把两舵机安装在机械手U型件上。
20)安装U型件和L型件。
21)把仓库搬运和机械手组装在一起。
22)最后完成组装任务。
如图。
到这里我们所有组装工作已经完成。
二、系统概述
2.1.arduino介绍
要了解arduino就先要了解什么是单片机,arduino平台的基础就是AVR指令集的单片机。
1、什么是单片机?
它与个人计算机有什么不同?
一台能够工作的计算机要有这样几个部份构成:
中央处理单元CPU(进行运算、控制)、随机存储器RAM(数据存储)、存储器ROM(程序存储)、输入/输出设备I/O(串行口、并行输出口等)。
在个人计算机(PC)上这些部份被分成若干块芯片,安装在一个被称之为主板的印刷线路板上。
而在单片机中,这些部份全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如模拟量/数字量转换(A/D)和数字量/模拟量转换(D/A)等。
2、单片机有什么用?
实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用酷睿处理器吗?
应用的关键是看是否够用,是否有很好的性能价格比。
如果一台冰箱都需要用酷睿处理起来进行温度控制,那价格就是天价了。
单片机通常用于工业生产的控制、生活中与程序和控制有关(如:
电子琴、冰箱、智能空调等)的场合。
下图就是一个Atmega328P-PU单片机,基于AVR指令集的8位处理器,频率20MHz,存储器空间32KB。
3、什么是Arduino?
Arduino是一个能够用来感应和控制现实物理世界的一套工具。
它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。
Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。
Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:
Flash,Processing,MaxMSP)进行通讯。
Arduino板你可以选择自己去手动组装或是购买已经组装好的;Arduino开源的IDE可以免费下载得到。
Arduino的编程语言就像似在对一个类似于物理的计算平台进行相应的连线,它基于处理多媒体的编程环境。
4、为什么要使用Arduino?
有很多的单片机和单片机平台都适合用做交互式系统的设计。
例如:
ParallaxBasicStamp,Netmedia’sBX-24,Phidgets,MIT’sHandyboard和其它等等提供类似功能的。
所有这些工具,你都不需要去关心单片机编程繁琐的细节,提供给你的是一套容易使用的工具包。
Arduino同样也简化了同单片机工作的流程,但同其它系统相比Arduino在很多地方更具有优越性,特别适合老师,学生和一些业余爱好者们使用:
∙便宜-和其它平台相比,Arduino板算是相当便宜了。
最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格也不会超过200元。
∙跨平台-ArduinoIDE可以运行在Windows,MacintoshOSX,和Linux操作系统。
大部分其它的单片机编译软件都只能运行在Windows上。
∙简易的编程环境-初学者很容易就能学会使用Arduino编程环境,同时它又能为高级用户提供足够多的高级应用。
对于老师们来说,一般都能很方便的使用Processing编程环境,所以如果学生学习过使用Processing编程环境的话,那他们在使用Arduino开发环境的时候就会觉得很相似很熟悉。
∙软件开源并可扩展-Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。
Arduino编程语言可以通过C++库进行扩展,如果有人想去了解技术上的细节,可以跳过Arduino语言而直接使用AVRC编程语言(因为Arduino语言实际上是基于AVRC的)。
类似的,如果你需要的话,你也可以直接往你的Arduino程序中添加AVR-C代码。
∙硬件开源并可扩展-Arduino板基于Atmel的ATMEGA8和ATMEGA168/328单片机。
Arduino基于CreativeCommons许可协议,所以有经验的电路设计师能够根据需求设计自己的模块,可以对其扩展或改进。
甚至是对于一些相对没有什么经验的用户,也可以通过制作试验板来理解Arduino是怎么工作的,省钱又省事。
Arduino基于AVR平台,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。
大大降低了软件开发难度,适宜非专业爱好者使用。
优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。
性能:
DigitalI/O数字输入/输出端口0—13。
AnalogI/O模拟输入/输出端口0-5。
支持ICSP下载,支持TX/RX。
输入电压:
USB接口供电或者5V-12V外部电源供电。
输出电压:
支持3.3V级5VDC输出。
处理器:
使用AtmelAtmega168328处理器,因其支持者众多,已有公司开发出来32位的MCU平台支持arduino。
arduino板子上基本端口如描述,对几个比较特殊的端口下面详细说明下:
VIN端口:
VIN是inputvoltage的缩写,表示有外部电源时的输入端口。
如果不使用USB供电时,外接电源可以通过此引脚提供电压。
(如电池供电,电池正极接VIN端口,负极接GND端口)
AREF:
Referencevoltagefortheanaloginputs(模拟输入的基准电压)。
使用analogReference()命令调用。
ICSP:
也有称为ISP(InSystemProgrammer),就是一种线上即时烧录,目前比较新的芯片都支持这种烧录模式,包括大家常听说的8051系列的芯片,也都慢慢采用这种简便的烧录方式。
我们都知道传统的烧录方式,都是将被烧录的芯片,从线路板上拔起,有的焊死在线路板上的芯片,还得先把芯片焊接下来才能烧录。
为了解决这种问题,发明了ICSP线上即时烧录方式。
只需要准备一条R232线(连接烧录器),以及一条连接烧录器与烧录芯片针脚的连接线就可以。
电源的+5V,GND,两条负责传输烧录信息的针脚,再加上一个烧录电压针脚,这样就可以烧录了。
2.2.Arduino驱动安装
首先在电脑上面打开光盘,找到Arduino项目开发文件夹,拷贝到你的电脑上你想放到的盘符上,例如D盘(建议不要放到桌面上),然后打开,可以看到如下:
光盘中所带arduinoIDE为1.0.3版本,是目前最新版本,IDE就是arduino的软件程序开发环境,里面已经集成了项目中所需要的很多外设库,还有一些其他设置,比如添加中文注释,为用户省去了很多麻烦。
IDE中所带库文件均经过调试,和光盘代码完全匹配。
arduino资料相关文件夹中是一些入门资料以及我们提供的arduino电路板原理图。
(注:
光盘中所带软件仅支持Windows系统。
其他系统请去官网下载。
)
Arduino控制板到手后,首先需要在电脑上把驱动装上,这样才可以进行各种实验。
首先打开包装,找到蓝色USB数据线,一端连接ARDUINO控制板另一端连接电脑USB端口。
本文以win732位为例,会出现识别到新硬件显示。
然后会开始查找系统内驱动。
如果没有找到驱动,会显示这个画面。
这时,需要在开始菜单,“计算机”上面点右键,点“属性”。
然后点击设备管理
会看到打了感叹号的未识别硬件
在未识别硬件上点右键,点击“属性”,选择更新驱动程序软件。
选择浏览计算机以查找驱动程序软件
然后目录选择你的arduino1.0所在目录的drivers目录
注意,如果您的计算机提示无法找到驱动,需要将目录进一步定位到\drivers\FTDIUSBDrivers即可
点击下一步,就可以安装好驱动了。
安装好驱动后,就可以显示是COM几端口,我这里显示的是COM14端口。
2.3.ArduinoIDE菜单介绍
接着我们介绍下Arduino的IDE界面,首先进入软件目录。
然后就可以看到arduino.exe文件,双击打开IDE,可以生成桌面快捷方式,方便以后使用。
首先映入眼帘的是下图的界面,工具栏按钮功能依次为“编译”--“上传”--“新建程序”--“打开程序”--“保存程序”--“串口监视器”
菜单栏上,首先看File菜单~介绍如下:
接下来看Edit菜单~介绍如下:
Sketch菜单介绍
Tools菜单介绍
Arduino也支持中文界面,如果英文界面看着不爽的话,,只要打开File-preferences,如下图中选择简体中文,点击OK,关闭后重新打开软件即可。
在正常使用之前我们还需要对arduino软件做如下设置:
1)打开ArduinoIDE,选择文件-参数设置,按如下设置。
2)选择工具-板卡,点选如图所示。
因为我们用的是328的芯片,如果为其他型号相应选择即可。
串口就选择电脑-设备管理器里面显示的串口号即可。
至此ArduinoIDE的设置基本完成。
可以编写编译代码进行开发了。
2.4.舵机介绍
我们都知道,机器人有许多个关节,每一个关节我们称为一个自由度。
一般的机体,都有十几个自由度,这样才能够保证动作的灵活性。
在机器人机体上,我们通常使用舵机作为每一个关节的连接部分。
它可以完成每个关节的定位和运动。
舵机的控制信号相对简单,控制精度高,反应速度快,而且比伺服电机省电。
这些优点是非常突出的。
在下面的论述中,许多地方都会涉及到舵机相关的知识,读者应反复详细阅读。
1、舵机的基本认识
舵机(英文叫Servo):
它由直流电机、减速齿轮组、传感器和控制电路组成的一套自动控制系统。
通过发送信号,指定输出轴旋转角度。
舵机一般而言都有最大旋转角度(比如180度。
)与普通直流电机的区别主要在,直流电机是一圈圈转动的,舵机只能在一定角度内转动,不能一圈圈转(数字舵机可以在舵机模式和电机模式中切换,没有这个问题)。
普通直流电机无法反馈转动的角度信息,而舵机可以。
用途也不同,普通直流电机一般是整圈转动做动力用,舵机是控制某物体转动一定角度用(比如机器人的关节)。
舵机的外观入下图所示:
图2-1
下图是一个普通模拟舵机的分解图,其组成部分主要有齿轮组、电机、电位器、电机控制板、壳体这几大部分。
图2-2
电机控制板主要是用来驱动电机和接受电位器反馈回来的信息。
电机嘛,动力的来源了,这个不用太多解释。
电位器这里的作用主要是通过其旋转后产生的电阻的变化,把信号发送回电机控制板,使其判断输出轴角度是否输出正确。
齿轮组的作用主要是力量的放大,使小功率电机产生大扭矩。
图2-3
舵机底壳拆开后就可以看到,主要是电机与控制板
图2-4
控制板拿起来后下方是与控制板连接的电位器
图2-5
从顶部来看电机与电位器,与电机齿轮直接相连的为第一级放大齿轮。
图2-6
经过一级齿轮放大后,再经过二、三、四级放大齿轮,最后再通过输出轴输出。
图2-7
通过上面两图可以很清晰的看到,本舵机是4级齿轮放大机构,就是通过这么一层层的把小的力量放大,使得这么一个小小的电机能有15KG的扭力。
看完了舵机的构造后咱们对舵机的控制系统进行详解。
舵机的伺服系统由可变宽度的脉冲来进行控制,控制线是用来传送脉冲的。
脉冲的参数有最小值,最大值,和频率。
一般而言,舵机的基准信号都是周期为20ms,宽度为1.5ms。
这个基准信号定义的位置为中间位置。
舵机有最大转动角度,中间位置的定义就是从这个位置到最大角度与最小角度的量完全一样。
最重要的一点是,不同舵机的最大转动角度可能不相同,但是其中间位置的脉冲宽度是一定的,那就是1.5ms。
如下图:
图2-8
角度是由来自控制线的持续的脉冲所产生。
这种控制方法叫做脉冲调制。
脉冲的长短决定舵机转动多大角度。
例如:
1.5毫秒脉冲会到转动到中间位置(对于180°舵机来说,就是90°位置)。
当控制系统发出指令,让舵机移动到某一位置,并让他保持这个角度,这时外力的影响不会让他角度产生变化,但是这个是由上限的,上限就是他的最大扭力。
除非控制系统不停的发出脉冲稳定舵机的角度,舵机的角度不会一直不变。
当舵机接收到一个小于1.5ms的脉冲,输出轴会以中间位置为标准,逆时针旋转一定角度。
接收到的脉冲大于1.5ms情况相反。
不同品牌,甚至同一品牌的不同舵机,都会有不同的最大值和最小值。
一般而言,最小脉冲为1ms,最大脉冲为2ms。
如下图:
图2-9
虽然舵机看起来很复杂,但是arduinoIDE已经集成了舵机控制库,我们只需要在程序开头调用库Servo.h就可以了,省去了繁琐的信号控制,时序等问题,只要给舵机配置好端口,初始位置,然后给出目标角度,舵机就会转过去了。
2.5.电机驱动扩展板L293D介绍
电机驱动扩展板L293D可驱动4路直流电机或者2路步进电机的同时还能驱动2路舵机。
arduinoIDE已经集成了直流控制库,在程序开头调用库AFMotor.h就可以,使用电机库文件时,定义电机端口,写电机状态可以控制电机。
实物图
2.6.电机驱动扩展板L293D参数
*2个5V伺服电机(舵机)端口联接到Arduino的高解析高精度的定时器-无抖动!
*多达4个双向直流电机及4路PWM调速(大约0.5%的解析度)
*多达2个步进电机正反转控制,单/双步控制,交错或微步及旋转角度控制。
*4路H-桥:
L293D芯片每路桥提供.0.6A(峰值1.2A)电流并且带有热断电保护,4.5Vto36V。
*下拉电阻保证在上电时电机保持停止状态。
*大终端接线端子使接线更容易(10-22AWG)和电源。
*带有Arduino复位按钮。
*2个大终端外部电源接线端子保证逻辑和电机驱动电源分离。
三、使用说明
3.1.红外寻线传感器
3.1.1红外寻线传感器介绍
红外寻迹模块是利用红外线反射的原理,根据反射的强度来判定颜色。
本寻迹模块是用来识别黑白线,黑线输出高电平,白线输出低电平。
由于使用的是红外线,所以抗干扰能力很强。
这样做更加确保了机器人的稳定性。
寻迹模块调节
1、将可调电阻W102(控制红外发射管),大概调至150欧~250欧;可调电阻W105(控制红外接收管),大概调至5K~15K。
2、把红外管放置距黑白平面1cm(根据你安装后的距离)左右,在黑白线间移动,观察是否输出一个变化的电压(如果没有,继续第一步)。
3、将红外管放置黑线上,调节W105(顺时针输出电压下降,逆时针输出电压上升)使输出电压在4V左右或大到不再变化时为止(不要达到最大值输出,否则不好调)。
4、将红外管放置白线上,调节W102(顺时针输出电压上升,逆时针输出电压下降,尽量不要低于100欧,功耗太大),使输出电压接近0V或小到不再变化时为止。
5、再回到黑线上,看输出有没有达到要求值,没有则再微调一些(重复3、4步骤),有就不用调了,直接可以使用了。
3.1.2红外寻线传感器实验操作
利用串口软件,查看红外寻线传感器返回的模拟量。
接线图:
红外寻线传感器接A0。
例程:
#include
intPin=A0;//左寻线传感器输入
intValue;
voidsetup()
{
pinMode(Pin,INPUT);
Serial.begin(9600);//波特率9600
}
voidloop()
{
Value=analogRead(Pin);
Serial.print("Value=");
Serial.println(Value);
delay(1000);
}
知识点:
analogRead()
描述:
从指定的逻辑采样管脚读取值.Arduino包含一个6通道(Mini和Nano有8个通道,而Mega有16个),10位的模数转换器(ADC),这意味着输入电压0~5V对应着数字0~1023(2的十次方).也就是5v/1024单位或者.0049v(4.9mV)每单位.输入的范围和比例解析可以通过analogReference()来修改.
读取一次模拟量输入大概需要100微秒也就是0.0001秒,所以最大的读取速率为10,000次/秒.
语法
analogRead(pin)
参数
pin:
读取模拟数据的针脚号(大多数arduino板上是0到5,Mini和Nano板上是0到7,Mega板上是0到15).
返回值
int(0to1023)
Note
如果模拟针脚什么都没连,analogRead()函数的返回值会由多种因素引起变动(比如你的手靠近电路板,analogRead()的返回值会发生变化,等等).
Serial
begin()
说明
将串行数据传输速率设置为位/秒(波特)。
与计算机进行通信时,可以使用这些波特率:
300,1200,2400,4800,9600,14400,19200,28800,38400,57600或115200。
当然,您也可以指定其他波特率-例如,引脚0和1和一个元件进行通信,它需要一个特定的波特率。
语法
Serial.begin(speed)仅适用于ArduinoMega:
Serial1.begin(speed)Serial2.begin(speed)Serial3.begin(speed)
参数
speed:
位/秒(波特)-long
返回
无
print()
说明
以人们可读的ASCII文本形式打印数据到串口输出。
此命令可以采取多种形式。
每个数字的打印输出使用的是ASCII字符。
浮点型同样打印输出的是ASCII字符,保留到小数点后两位。
Bytes型则打印输出单个字符。
字符和字符串原样打印输出。
Serial.print()打印输出数据不换行,Serial.println()打印输出数据自动换行处理。
例如
Seria