arduino仿生六足机器人教材Word格式.docx
- 文档编号:8315918
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:35
- 大小:5.16MB
arduino仿生六足机器人教材Word格式.docx
《arduino仿生六足机器人教材Word格式.docx》由会员分享,可在线阅读,更多相关《arduino仿生六足机器人教材Word格式.docx(35页珍藏版)》请在冰点文库上搜索。
6)这一步是两个十字舵盘的安装,这里用到两个M3X6mm的螺丝
7)
8)组装M3X20mm、M3X25mm的六棱铜柱,这里中间部位是两个M3X20mm六棱铜柱,两侧是M3X25mm的六棱铜柱,用到M3X8mm的螺丝
9)
10)中间脚的组装,M3X20螺丝、M3螺母、钢纸垫片
11)
组装连接杆
12)另一个连杆组装
13)
两侧脚组装,这里用到M3X8螺丝、M3螺母、钢纸垫片
14)固定完成
15)
中间脚上部螺丝的固定,这里用到M3X8螺丝、钢纸垫片
二、系统概述
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是怎么工作的,省钱又省事。
6组PWM端口
TX、RX指示灯
数字端口0~13
USB
插孔
ICSP
模拟端口0~5
外部电源
供电插孔
稳
压芯片
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的设置基本完成。
可以编写编译代码进行开发了。
三、实验操作
3.1红外避障实验
3.1.1红外避障原理
红外线反射传感器是利用红外线反射的原理,根据反射的强度来判定前方障碍的有无。
在距离适中的时候测量精度很高。
由于使用的是红外线,所以抗干扰能力很强。
这样做更加确保了机器人的稳定性。
红线
电源(+)
黑线(或绿线)
电源(-)
蓝线(或黄线)
控制线
管脚线定义:
手动调节如图所示:
可调电阻用于手动调节传感器的测量范围(顺时针旋转距离增大,逆时针旋转距离减小)。
3.1.2红外避障实验操作
利用红外避障传感器控制LED灯。
接线图:
红外传感器
例程:
intsensor=3;
//把红外避障传感器接到3脚上
intval=0;
//保存红外传感器状态值
intLED=13;
//定义LED灯
voidsetup()
{
pinMode(sensor,INPUT);
//设置传感器引脚为输入模式
pinMode(LED,OUTPUT);
}
voidloop()
val=digitalRead(sensor);
//采集传感器状态值0或1
if(val==0)//红外传感器检测到信号
digitalWrite(LED,HIGH);
//打开LED
if(val==1)//红外传感器没有检测到信号
digitalWrite(LED,LOW);
//关闭LED
知识点:
pinMode()
描述
将指定的引脚配置成输出或输入。
语法
pinMode(pin,mode)
参数
pin:
要设置模式的引脚
mode:
INPUT或OUTPUT
逻辑:
红外传感器检测到信号,打开LED。
红外传感器没有检测到信号,关闭LED。
实验现象:
红外传感器前有障碍时,打开LED灯。
红外传感器前没有障碍时,关闭LED灯。
3.2舵机实验
3.2.1舵机的介绍
舵机,顾名思义,大海航行靠舵手,舵机早期是应用在航模中控制方向的,在航空模型中,飞行器的飞行姿态是通过调整发动机和各个控制多面来实现的,后来有人发现这种机器的体积小、重量轻、扭矩大、精度高,由于具备了这样的优点,很适合应用在机器人身上作为机器人的驱动。
按照舵机的转动角度分有180度舵机和360度舵机。
180度舵机只能在0度到180度之间运动,超过这个范围,舵机就会出现超量程的故障,轻则齿轮打坏,重则烧坏舵机电路或者舵机里面的电机。
360度舵机转动的方式和普通的电机类似,可以连续的转动,不过我们可以控制它转动的方向和速度。
按照舵机的信号处理分为模拟舵机和数字舵机,它们的区别在于,模拟舵机需要给它不停的发送PWM信号,才能让它保持在规定的位置或者让它按照某个速度转动,数字舵机则只需要发送一次PWM信号就能保持在规定的某个位置。
关于PWM信号在以后章节将会介绍。
3.2.2舵机的内部结构
一般来说,我们用的舵机有以下几个部分组成:
直流电动机、减速器(减速齿轮组)、位置反馈电位计、控制电路板(比较器)。
舵机的输入线共有三根,红色在中间,为电源正极线,黑色线是电源负极(地线)线,黄色或者白色线为信号线。
其中电源线为舵机提供6V到7V左右电压的电源。
舵机上盖
位置反馈电位计
红、黑、白线
固定螺丝
舵机后盖
控制电路板(比较器)
直流电机
舵机的内部结构图
3.2.3模拟舵机的控制协议
360度舵机是怎样控制的呢?
360度舵机使用的场合基本上是在轮式机器人身上,所以对应的上升沿和下降沿代表的意义也很不相同,图3-4给出了360度舵机PWM控制信号的波形图。
下图中,T1表示上升沿,T2表示下降沿,T表示方波的周期。
下面具体解释一下这种舵机的控制协议。
我们是通过PWM信号的高电平占空比来控制360度舵机的,通过实验我们发现PWM信号的周期为20ms时控制效果是最好的。
在周期为20ms情况下,当1.3ms<
T1<
1.5ms时,舵机反转,当1.5ms<
1.7ms时舵机正转,两种情况下当T1越接近1.5ms时,舵机转动速度越慢,当T1=1.5ms时,舵机停止转动,也就是说占空比为1.5/20=7.5%时舵机停止,这里的7.5是允许有一定误差的,这就允许我们不改变T1的情况下,可以稍微的改变周期,实验表明周期T可以再19ms到21ms之间。
另外,这类360舵机身上有个微调电阻(见图),它的作用类似校零,当我们给舵机一个占空比为7.5%的PWM信号时,如果发现舵机没有停止转动,可以通过调整这个微调电阻来让它停止。
1.3ms<
1.7ms
T=20ms
3.2.4舵机实验操作
控制一个360度舵机正反转,接线图如下。
舵机
Arduino有舵机应用库<
Servo.h>
,把360度舵机接在第6接口,舵机控制程序如下。
例程1:
#include<
Servoservo;
//定义舵机
{
servo.attach(6);
//定义舵机接口6
servo.writeMicroseconds(1500);
//高电平1500微秒此时舵机停止
}
servo.writeMicroseconds(1500);
//高电平1500微秒此时舵机停止
把舵机接到第6口,烧录例程1,调整微调电阻使舵机停止。
例程2:
servo.writeMicroseconds(1300);
//高电平1300微秒此时舵机正转
delay(10000);
//延时10秒
servo.writeMicroseconds(1700);
//高电平1700微秒此时舵机反转
//延时10秒
烧录例程2,舵机正转,延时10秒,舵机反转延时10秒。
<
将指定的引脚控制脉冲控制舵机。
attach(接口)——设定舵机的接口。
write(角度)——用于设定舵机旋转角度的语句,可设定的角度范围是0°
到180°
。
read()——用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。
attached()——判断舵机参数是否已发送到舵机所在接口。
detach()——使舵机与其接口分离,该接口(9或10)可继续被用作PWM接口。
writeMicroseconds(uS)——写一个值在微秒(uS)到伺服舵机,控制相应的轴。
在一个标准的伺服系统,这将为角度的轴。
在标准的伺服系统参数值1000完全是逆时针方向的,2000是完全顺时针,1500是在中间。
注:
以上语句的书写格式均为“舵机变量名.具体语句()”例如:
myservo.attach(9)
舵机正转,延时10秒,舵机反转,延时10秒。
下载例程1,微调电阻使舵机停止。
下载例程2,舵机正转,延时10秒,舵机反转,延时10秒。
四、使用说明
右侧红外传感器
左侧舵机
右侧舵机
4.1.接线端口介绍
左侧红外传感器
4.2.操作说明
仿生六足机器人采用两路360度舵机,利用舵机的正反转,实现前进、后退、左右转等动作,利用两路红外传感器实现避障等功能。
程序开始处一定要包含舵机库,否则是编译不过的,舵机也无法使用。
可以点击程序—导入库,选择想要的库文件。
机器人上电之后自行行走,当左侧有障碍物时向右转,右侧有障碍物时向左转,前方有障碍物是向后退。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- arduino 仿生 机器人 教材