多功能机器人设计.docx
《多功能机器人设计.docx》由会员分享,可在线阅读,更多相关《多功能机器人设计.docx(19页珍藏版)》请在冰豆网上搜索。
![多功能机器人设计.docx](https://file1.bdocx.com/fileroot1/2023-2/7/b55d58bd-7391-4aab-97d8-57b578026d41/b55d58bd-7391-4aab-97d8-57b578026d411.gif)
多功能机器人设计
多功能机器人设计
摘要:
单片机的应用十分广泛,在工业领域、家电产品、智能化仪表、计算机外部设备,特别是机电一体化的产品中,都有重要的用途。
近年来,由于技术的发展,单片机的价格越来越便宜。
由于单片机具有很高的性价比,又适用于任何并不需要计算机具有很高的性能的场合,因此单片机我们身边已经越来越常见。
单片机驱动智能车更是在电子设计大赛上被普及。
机械臂和小车结合是我们第一次挑战,能参加比赛我们都很兴奋。
车体和机械臂全是用铝合金构成;机械臂用到了舵机,主要通过舵机产生PWM信号进行机械臂的控制;小车用减速电机加l298n驱动,可通过切换快慢速轮改变速度;可以循迹,PC机串口下载路径到外部RAM,即可循迹功能。
多功能机器人具有很广阔的应用前景,适用于一些危险操作或者环境很恶劣的操作。
例如高辐射、强污染、炸弹拆除等民生国防领域,这样就能起到保护到人的安全,避免一些不必要的危险。
关键字:
单片机、PWM、舵机、机器人、串口通信、铝合金。
引言:
由于各工业强国对机器人十分重视,近些年来机器人的发展越来越迅速。
现在机器人已经在科学技术、生产和教育方面形成了一个新的领域,各国还纷纷建立了许多的机器人的研究机构,建立了机器人学科和教育体系,成立了机器人协会,形成了许多的机器人产业。
目前,国际上的工业机器人公司主要分为日系和欧系。
日系中主要有安川、OTC、松下、FANUC、不二越、川崎等公司的产品。
欧系中主要有德国的KUKA、CLOOS、瑞典的ABB、意大利的COMAU及奥地利的IGM公司。
我国工业机器人是从20世纪80年代开始起步,经过二十年余年的努力,已经形成了一些具有竞争力的工业机器人研究机构和企业。
近几年,我国机器人自动化生产线相关产品的年产销额已突破十亿元。
目前国内市场年需求量在3000台左右,年销售额在20亿元以上。
由此可见,机器人产业是比较新兴的产业,具有很高的商业价值和前景。
未来的社会将需要更多的机器人来为我们人类服务,来完成一些人类无法完成的或者是对人身体有害的工作,们设计这个多功能机器人的目的就是为了解决这样的问题。
我们的设计如图1,主要有机械臂部分和小车部分,机械臂部分做成机器人手的形状,可以用来抓取东西,小车主要控制整体的移动。
图1
1总体设计
本设计主要包括以下几个模块:
红外模块,主要用来控制小车的前进,转弯,以及机械臂的弯曲,抓取和低速高速轮的切换;串口数据传输模块,用来使单片机和PC通讯,控制小车路线;和PWM信号控制舵机转角模块,控制舵机转角。
模块及其结构原理图如下:
图2总体模块图
图3结构原理图
2详细设计
2.1单片机红外模块
2.1.1设计思路
该小制作所需要的元件很少:
单片机TA89C2051一只,RS232接口电平与TTL电平转换心片MAX232CPE一只,红外接收管一只,晶振11.0592MHz,电解电容10uF4只,10uF一只,电阻1K1个,300欧姆左右1个,瓷片电容30P2个。
发光二极管8个。
价钱不足20元。
主控制单元是单片机AT89C2051,中断口INT0跟红外接受管U1相连,接收红外信号的脉冲,8个发光二极管作为显示解码输出(也可以用来扩展接其他控制电路),U3是跟电脑串行口RS232相连时的电平转换心片,9、10脚分别与单片机的1、2脚相连,(1脚为串行接收,2脚为串行发送),MAX232CPE的7、8脚分别接电脑串行口的2(接收)脚、3(发送脚)。
晶振采用11.0592MHz,这样才能使得通讯的波特率达到9600b/s,电脑一般默认值是9600b/s、8位数据位、1位停止位、无校验位。
电路就这么简单了,现在分析具体的编程过程。
2.1.2脉冲信号的获得
脉冲信号
开始位是以3.6ms低电平然后是3.6ms高电平,然后数据表示形式是0.9ms低电平0.9ms高电平周期为1.8ms表示“0”,0.9ms低电平2.4ms高电平周期为3.3ms表示“1”,编写程序时,以大于3.4ms小于3.8ms高电平为起始位,以大于2.2ms小于2.7ms高电平表示“1”,大于0.84ms小于1.11ms高电平表示“0”。
因此,我们主要用单片机测量高电平的长短来确定是“1”还是“0”即可。
定时器0的工作方式设置为方式1:
movtmod,#09h,这样设置定时器0即是把GATE置1,16位计数器,最大计数值为2的16次方个机器周期,此方式由外中断INT1控制,即INT1为高时才允许计数器计数。
2.1.3光电传感器
光电传感器是应用非常广泛的一种器件,有各种各样的形式,如透射式、等,基本的原理就是当发射管光照射到接收管时,接收管导通,反之关断。
以反射式SPI-335为例,如图3所示,当不透光的物体挡住发射与接收之间的间隙时,开关管关断,否则打开。
为此,可以制作一个遮光叶片如图3所示,安装在转轴上,并在转轴等距的地方贴上白色的纸或画上白线的宽线或其它的可以强反光的物质(如图4所示),当白纸或白线经过时,产生脉冲信号。
当白纸或白线数较多时,旋转一周可以获得多个脉冲信号。
图4光电传感器的原理图
图5小车测速实物图
2.1.4硬件连接
测速的方法决定了测速信号的硬件连接,测速实际上就是测频,因此,频率测量的一些原则同样适用于测速。
通常,可以用计数法、测脉宽法和等精度法来进行测试。
所谓计数法,就是给定一个闸门时间,在闸门时间内计数输入的脉冲个数;测脉宽法是利用待测信号的脉宽来控制计数门,对一个高精度的高频计数信号进行计数。
由于闸门与被测信号不能同步,因此,这两种方法都存在±1误差的问题,第一种方法适用于信号频率高时使用,第二种方法则在信号频率低时使用。
等精度法则对高、低频信号都有很好的适应性。
采集速度数据对精度要求不高,此处采用计数法测得脉冲数。
图6所示是测速器的电路图,由测速接口组成。
图6测速计电路原理图
2.1.5程序设计
主程序在对定时器、计数器、数据等进行初始化后,然后进入数据显示程序,每个轮子上有8个隔片用作测速。
串口发送数据包括方向和距离信息。
在函数中先判断在执行。
快慢轮的测速原理相同。
8k外部ram空间,数据的单位是厘米。
2.2串口数据传输模块
串口通信及片外RAM扩展:
图7RS232串口通信及片外RAM扩展原理图
2.2.1功能描述:
使用visualstudio6.0编写一个绘图程序,绘制出一条逻辑路径。
点击鼠标可以获取用户自己想走的路径直观逻辑路径。
其中所点击的逻辑点显示在绘图面板旁相应的显示区域里;可直观观察点的逻辑坐标;也可使用鼠标拖动调整路径改变坐标点。
通过软件计算得出该路径的参数,得到以上参数后通过串口发送数据给下位机,通过下位机识别并执行自动寻迹功能,最后实现小车循迹功能。
2.2.2功能实现:
点击绘图按钮,双击鼠标启动绘图程序开始绘图,根据用户点击的坐标自动生成逻辑路径,双击鼠标停止绘制;根据实际绘制路径用户可以动态的调整路径最后确定所需路径。
点击路径分析可以得到路径参数(包括点与点之间的距离,逻辑路径的角度),并显示在用户桌面上,使用户达到最佳的可视化效果。
还可以通过点击更改和清零按钮来实现重绘和修改坐标。
线路分析完成后,可以点击打开串口来实现串口通信,等提示串口打开之后就可以执行串口通信,点击发送即可以将路径参数发送给下位机,由下位机来执行程序最后串口通信结束,小车实现循迹功能。
2.2.3软件设计:
图8软件流程图
编写绘图程序,调用函数实现计算两点之间距离及与规定正方向的角度差;
编写串口程序实现打开,发送,关闭串口程序,设置串口参数(打开几号串口,设置波特率,串口发送数据形式,有无奇偶校验及停止位等参数)。
2.2.4基本原理:
在VC6.0下建一个MFC基于对话框的工程,调用MFC库函数来实现绘图,获取坐标的功能;调用MFC库中库函数编写计算两点之间距离及角度;使用数组和指针来实现动态改变路径功能。
利用串口通信协议,使用RS-232C接口串行口通信协议实现串行通信。
RS-232C下位机串口通信:
单片机的串行口是一个全双工串行接口,可同时进行发送和接收,微机上几乎都配有RS-232C接口,因此通过RS-232C串行接口与PC机通信极为方便。
发送器由一个发送缓冲器和并-串转换移位寄存器组成。
CPU将待发送的数据以并行方式送入并暂存在发送缓冲器中。
在发送时钟的控制下,移位寄存器中的内容将逐位被送到通信线路上,并传送到对方。
如果发送完毕,移位寄存器变空,由发送控制脉冲将缓冲寄存器中的内容并行送入移位寄存器中,准备重新发送。
发送缓冲器变空以后,准备接收下一次要发送的数据。
接收部分的结构与发送器相似,只是数据的传送方向和变换过程相反。
从线路上送来的数据,在接收时钟的控制下,被逐位移入串-并变换移位寄存器。
当全部串行数据位移入后,接收控制脉冲就把这些数据位并行地移入接收缓冲器。
这时串行数据已还原成并行数据,可由CPU读取。
下图为RS232串口实物图。
RS-232C总线标准定义了25条信号线,在一般应用中不一定用到RS-232C标准的全部信号线,所以在实际应用中常常使用9针连线器代替25针连线器。
单片机与PC机之间的近距离传输,只用TXD(串行输出)和RXD(串行输入)即可。
除信号定义外,RS-232C标准还有其他标准:
RS-232C采用电压型总线标准,以不同极性的电压表示逻辑值。
单片机的串行口经MAX232电平转换后转换后,与PC机串行口相连。
标准数据传输速率有50、75、110、150、300、600、1200、2400、4800、9600、19200b/s等,这里采用1200b/s。
2.2.5功能实现:
我们用查询方法接收和发送数据,上位机发来的数据按顺序存储在外部扩展RAM中,供其他程序调用,实现循迹功能。
以下为程序流程图:
Y
N
2.3外部RAM扩展
2.3.1基本原理:
MCS-52系列单片机芯片内只有256B的RAM存储器,它们可以作为工作寄存器,堆栈,软件标志和数据缓冲区。
CPU对其内部RAM有丰富的操作指令,因此这个RAM存储器是十分珍贵的资源,应合理利用片内RAM存储器,但是实时数据采集和处理应用系统中,仅靠内部RAM是远远不够的,例如,在本系统中,由于要控制小车的前进,后退,左转,右转,机械臂的提起,放下,车轮的换速,自动寻迹等功能,光靠内部RAM肯定是不够的,所以我们扩展了外部数据存储器,用于存储小车的寻迹路线,并通过PC机控制小车的运动轨迹。
外部数据存储器芯片很多,我们选择了62256芯片,它存储容量大,足以存储小车的运动轨迹。
62256是32K的低功耗静态RAM存储器.采用CMOS工艺制作,单一5V电源。
62256引脚功能:
引脚
功能
A0—A10
地址总线(Address)
D0—D7
8位数据线,作输入/输出口(nput/output)
CE
片选信号(Chipselect),低电平有效
WE
输入始能(Writeenable)在片选信号有效时,WE为低电平期间,把数据线上输入的数据写到A0-A1所指的单元
OE
输出始能(Outputenable)在片选信号有效时,WE为低电平期间,把A0—A10所指定的单元的内容从数据线输出。
VCC
电源始能(Powersupply)
VSS
接地(Ground)
MCS-52单片机系统扩展时,一般使用P0口作为地址低8位(与数据口分时复用),而P2口作为地址高8位,它共有16根地址总线,寻址空间为64KB。
在本系统中,用P0和P2来扩展外部RAM(就是用P0和P2与62256对应的管脚相连接),如上图所示:
P3.6接WE,P3.7接OE,为了保持输出的通常,我们选用了8D锁存器573,对输出的地址进行所存。
其三态控制端OE和62256的片选一起接地,使两个芯片始终处于选中状态。
这样就可以确定外部RAM的一个地址,若想往外部RAM的一个地址写一个字节时,地址可以定为XDATAXBYTE[0x8000],其中WE,CE为低,OE为高(也就是P3.6输出了低电平,而P3.7输出了高电平),0X8000为起始地址,其它位的可以根据情况自己定,关键就是控制WE,CE,OE的选通,例如我们向62256中写个26进去就可以使用这条语句:
XBYTE[0x8000]=26。
在小车的自动寻迹模块中,下位机不停的接受上位机传来的数据:
距离和角度,然后把它存入扩展的存储器中,当想让小车自动寻迹时,只需把存储器首地址作为实参传递给相应函数即可。
由此可以看出,存储器相当于一个中转站的作用,没有它小车就无法完成自动寻迹的功能。
2.4利用单片机产生PWM信号进行舵机的转角控制模块
2.4.1舵机控制原理
舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。
舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为-90—90度,呈线性变化。
如图1(此图片来自互联网)所示。
也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上,这样我们就可以利用舵机具有的这一特性使机械臂改变角度。
舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。
由此可见,舵机是一种位置伺服的驱动器,转动范围不能超过180度,适用于那些需要角度不断变化并可以保持的驱动当中。
比方说机器人的关节、飞机的舵面等。
图9
2.4.2用单片机来控制
正是舵机的控制信号是一个脉宽调制信号,所以很方便和数字系统进行接口。
只要能产生标准的控制信号的数字设备都可以用来控制舵机,比方PLC、单片机或者是FPGA等。
由于单片机系统是一个数字系统,其控制信号的变化完全依靠硬件计数,所以受外界干扰较小,整个系统工作可靠。
因此我们这里就是利用51系列单片机产生舵机的控制信号来进行控制的方法,编程语言为C51,编程环境为KeiluVision3版本。
具体编程思想:
利用单片机的定时中断产生一个100us基准中断,定义一个unsignedchardatatpeaks[5]的数组来控制五个输出引脚的脉冲宽度来控制五个舵机。
定义unsignedintdatatws[5]来产生20ms的时钟周期。
然后初始化tws[i]=200,也就是利用它来产生20ms的周期信号,每次定时器中断执行一次就会使tws[i]减一,如果减到0电平翻转。
这时候开始对tpeaks[i]同样每定时中断一次减一,到0翻转。
产生的波形如图10所示。
图10
部分代码如下:
voidTimer0Interrupt(void)interrupt1
{
--tws[0];
--tws[1];
--tws[2];
--tws[3];
EA=0;////关中断
TR0=0;
TH0=0x0FF;
TL0=0xBD;///产生100us的基准中断信号
EA=1;
TR0=1;
TF0=0;
/////////舵机1
if(tws[0]==0&&tpeaks[0]<25)
{
p2_7=1;
tws[0]=200;
tpeaks[0]=temp+1;
}
if(p2_7==1)tpeaks[0]--;
if(tpeaks[0]==0){p2_7=0;}
/////////舵机2
if(tws[1]==0&&tpeaks[1]<25)
{
p2_6=1;
tws[1]=200;
tpeaks[1]=temp+6;
}
if(p2_6==1)tpeaks[1]--;
if(tpeaks[1]==0){p2_6=0;}}
2.4.3信号的调节
在采用红外控制舵机的时候一定要注意不能连续调节信号过快。
因为在脉冲信号的输出是靠定时器的溢出中断函数来处理,时间很短,因此在精度要求不高的场合可以忽略。
因此如果忽略中断时间,从另一个角度来讲就是主程序和脉冲输出是并行的,因此,只需要在主程序中按你的要求改变temp值,就可以让舵机从-90度变化到90度。
另外要记住一点,舵机的转动需要时间的,因此,程序中temp值的变化不能太快,不然舵机跟不上程序。
根据需要,选择合适的延时,用一个temp递增循环,可以让舵机很流畅的转动,而不会产生像步进电机一样的脉动。
2.5主程序部分函数代码:
#include
#include
#includesbithwx=P3^3;
sbitDJ5=P3^0;
sbitDJ4=P3^7;
sbitDJ3=P3^6;
sbitDJ2=P3^5;
sbitDJ1=P3^4;
sbitcatch1=P3^1;//左
sbitcatch2=P3^2;//右
sbitmlA1=P1^0;
sbitmlA2=P1^1;
sbitmlB1=P1^2;
sbitmlB2=P1^3;
sbitklA1=P1^4;
sbitklA2=P1^5;
sbitklB1=P1^6;
sbitklB2=P1^7;
bitspeed=0;
charmodel=0;
uintcount;
ucharflag=0x00;
ucharvable=0x00;
chardj1=0;
chardj2=0;
chardj3=0;
chardj4=0;
chardj5=0;
ucharKEY=2;
unsignedcharl_tmpdate[2];
unsignedcharl_lhj[66];
bitmoveCAR(ucharxxx);
bitDJ(ucharttt);
voiddelay();
voidmain(void){}
3设计最终实现
将上面实现的三个模块整合在一起,最终实现下位机的数据采集,串口通信的数据传输,上位机器实时数据处理,完成设计要求。
图15设计实物图
图16界面显示
用户可以根据场景,在跑步的同时按照按键提示做出左右等方向转换等。
经测试,效果特别的真实,而且运行起来特别流畅,操作也比较简便。
相信这样的跑步机一定会你一种全新的视觉享受和不一样的全新体验。
4.结束语
本设计包含了传感器技术、单片机技术、上下位机通信技术、三维图形等多种技术,是虚拟现实技术的一个典型应用,这项设计可以把传统单调的跑步机变成一个集健身、娱乐为一体虚拟现实系统,设计新颖,针对设计需求,最终实现了预期的基本功能。
但是由于本设计时间短,预期的功能实现起来有一定难度,一些功能和设计有待于进一步改进。
尤其是在三维场景显示部分,现在只有一个简单的室外场景,没有加入阴影等特殊效果,真实感不强。
以后再场景真实感上加大研发力度,可以通过添加多种场景,故事情节及背景音乐和声效等,既满足了锻炼身体的目的,又有娱乐效果,达到真正的“绿色锻炼”。
同时本设计有较大的商业价值。
适合一些公司进行批量生产和推广,有广阔的前景和经济效益。
5.参考文献
李群芳,张士军,黄健.单片微型计算机与几口技术(第三版).北京:
电子工业出版社,2008
龚建伟,熊光明编著,VisualC++/TurboC串口通信编程实践.北京:
电子工业出版社
DaveShreiner,MasonWooJackie,Neider,TomDavis著,徐波等译.OpenGL编程指南北京:
机械工业出版社
RichardS.Wright,Jr.BenjaminLipchak著,徐波等译OpenGL超级宝典(第三版)北京邮电出版社,2005年9月