工业机器人课程设计Word文档格式.docx
《工业机器人课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《工业机器人课程设计Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
或是为了执行不同的任务而具有可改变和可编程动作的专门系统。
”
三、机器人发展史
1920年捷克斯洛伐克作家卡雷尔·
恰佩克在他的科幻小说《罗萨姆的机器人万能公司》中,根据Robota(捷克文,原意为“劳役、苦工”)和Robotnik(波兰文,原意为“工人”),创造出“机器人”这个词。
1939年美国纽约世博会上展出了西屋电气公司制造的家用机器人Elektro。
1948年诺伯特·
维纳出版《控制论》,阐述了机器中的通信和控制机能与人的神经、感觉机能的共同规律,率先提出以计算机为核心的自动化工厂。
1954年美国人乔治·
德沃尔制造出世界上第一台可编程的机器人,并注册了专利。
这种机械手能按照不同的程序从事不同的工作,因此具有通用性和灵活性。
1959年德沃尔与美国发明家约瑟夫·
英格伯格联手制造出第一台工业机器人。
随后,成立了世界上第一家机器人制造工厂——Unimation公司。
由于英格伯格对工业机器人的研发和宣传,他也被称为“工业机器人之父”。
1962年美国AMF公司生产出“VERSTRAN”(意思是万能搬运),与Unimation公司生产的Unimate一样成为真正商业化的工业机器人,并出口到世界各国,掀起了全世界对机器人和机器人研究的热潮。
1962年-1963年传感器的应用提高了机器人的可操作性。
1965年约翰·
霍普金斯大学应用物理实验室研制出Beast机器人。
Beast已经能通过声纳系统、光电管等装置,根据环境校正自己的位置。
1968年美国斯坦福研究所公布他们研发成功的机器人Shakey。
它带有视觉传感器,能根据人的指令发现并抓取积木,不过控制它的计算机有一个房间那么大。
Shakey可以算是世界第一台智能机器人,拉开了第三代机器人研发的序幕。
1969年日本早稻田大学加藤一郎实验室研发出第一台以双脚走路的机器人。
加藤一郎长期致力于研究仿人机器人,被誉为“仿人机器人之父”。
1973年世界上第一次机器人和小型计算机携手合作,就诞生了美国CincinnatiMilacron公司的机器人T3。
1978年美国Unimation公司推出通用工业机器人PUMA,这标志着工业机器人技术已经完全成熟。
1984年英格伯格再推机器人Helpmate,这种机器人能在医院里为病人送饭、送药、送邮件。
1999年日本索尼公司推出犬型机器人爱宝(AIBO),当即销售一空,从此娱乐机器人成为目前机器人迈进普通家庭的途径之一。
2002年美国iRobot公司推出了吸尘器机器人Roomba,它能避开障碍,自动设计行进路线,还能在电量不足时,自动驶向充电座。
四、机器人技术的新进展
(一)、国外机器人的最新进展
1.工业机器人
(1)机器人操作机:
通过有限元分析、模态分析及仿真设计等现代设计方法的运用,机器人操作机已实现了优化设计。
(2)并联机器人:
采用并联机构,利用机器人技术,实现高精度测量及加工,这是机器人技术向数控技术的拓展,为将来实现机器人和数控技术一体化奠定了基础。
意大利COMAU公司,日本FANUC等公司已开发出了此类产品。
(3)控制系统:
控制系统的性能进一步提高,已由过去控制标准的6轴机器人发展到现在能够控制21轴甚至27轴,并且实现了软件伺服和全数字控制。
(4)传感系统:
激光传感器、视觉传感器和力传感器在机器人系统中已得到成功应用,并实现了焊缝自动跟踪和自动化生产线上物体的自动定位以及精密装配作业等,大大提高了机器人的作业性能和对环境的适应性。
(5)网络通信功能:
日本YASKAWA和德国KUKA公司的最新机器人控制器已实现了与Canbus、Profibus总线及一些网络的联接,使机器人由过去的独立应用向网络化应用迈进了一大步,也使机器人由过去的专用设备向标准化设备发展。
(6)可靠性:
由于微电子技术的快速发展和大规模集成电路的应用,使机器人系统的可靠性有了很大提高。
2.先进机器人
近年来,人类的活动领域不断扩大,机器人应用也从制造领域向非制造领域发展。
像海洋开发、宇宙探测、采掘、建筑、医疗、农林业、服务、娱乐等行业都提出了自动化和机器人化的要求。
这些行业与制造业相比,其主要特点是工作环境的非结构化和不确定性,因而对机器人的要求更高,需要机器人具有行走功能,对外感知能力以及局部的自主规划能力等,是机器人技术的一个重要发展方向。
可以预见,在21世纪各种先进的机器人系统将会进入人类生活的各个领域,成为人类良好的助手和亲密的伙伴。
(二)、目前研究热点及发展趋势
目前国际机器人界都在加大科研力度,进行机器人共性技术的研究,并朝着智能化和多样化方向发展。
主要研究内容集中在以下10个方面:
1.工业机器人操作机结构的优化设计技术:
探索新的高强度轻质材料,进一步提高负/重比,同时机构向着模块化、可重构方向发展。
2.机器人控制技术:
重点研究开放式,模块化控制系统,人机界面更加友好,语言、图形编程界面正在研制之中。
机器人控制器的标准化和网络化,以及基于PC机网络式控制器已成为研究热点。
编程技术除进一步提高在线编程的可操作性之外,离线编程的实用化将成为研究重点。
3.多传感系统:
为进一步提高机器人的智能和适应性,多种传感器的使用是其问题解决的关键。
其研究热点在于有效可行的多传感器融合算法,特别是在非线性及非平稳、非正态分布的情形下的多传感器融合算法。
另一问题就是传感系统的实用化。
4.机器人的结构灵巧,控制系统愈来愈小,二者正朝着一体化方向发展。
5.机器人遥控及监控技术,机器人半自主和自主技术,多机器人和操作者之间的协调控制,通过网络建立大范围内的机器人遥控系统,在有时延的情况下,建立预先显示进行遥控等。
6.虚拟机器人技术:
基于多传感器、多媒体和虚拟现实以及临场感技术,实现机器人的虚拟遥操作和人机交互。
7.多智能体(multi-agent)调控制技术:
这是目前机器人研究的一个崭新领域。
主要对多智能体的群体体系结构、相互间的通信与磋商机理,感知与学习方法,建模和规划、群体行为控制等方面进行研究。
8.微型和微小机器人技术(micro/miniaturerobotics):
这是机器人研究的一个新的领域和重点发展方向。
9.软机器人技术(softrobotics):
主要用于医疗、护理、休闲和娱乐场合。
传统机器人设计未考虑与人紧密共处,因此其结构材料多为金属或硬性材料,软机器人技术要求其结构、控制方式和所用传感系统在机器人意外地与环境或人碰撞时是安全的,机器人对人是友好的。
10.仿人和仿生技术:
这是机器人技术发展的最高境界,目前仅在某些方面进行一些基础研究。
主要功能:
可以自行走动,具有吸尘和空气加湿功能
(一)、加湿器工作原理:
目前家用加湿器市场的产品主要分为超声波型加湿器、直接蒸发型加湿器和热蒸发型加湿器三类:
超声波技术是世界上一种比较成熟的技术,已被广泛应用在各种领域。
超声波加湿器采用超声波高频震荡,将水雾化为1-5微米的超微粒子,通过风动装置,将水雾扩散到空气中,使空气湿润并伴生丰富的负氧离子,能清新空气,增进健康,一改冬季暖气的燥热,营造舒适的生活环境。
据专家介绍,超声波加湿器的优点是,加湿强度大,加湿均匀,加湿效率高;
节能、省电,耗电仅为电热加湿器的1/10至1/15;
使用寿命长,湿度自动平衡,无水自动保护;
兼具医疗雾化、冷敷浴面、清洗首饰等功能。
缺点是对水质有一定的要求。
热蒸发型加湿器也叫电加热式加湿器。
其工作原理是将水在加热体中加热到100度,产生蒸气,用电机将蒸气送出。
所以电加热式加湿器是技术最简单的加湿方式,缺点是能耗较大,不能干烧,安全系数较低、加热器上容易结垢。
市场前景不容乐观。
(二)、吸尘器工作原理
吸尘器主要由起尘、吸尘、滤尘三部分组成,一般包括串激整流子电动机、离心式风机、滤尘器(袋)和吸尘附件。
吸尘器能除尘,主要在于它的“头部”装有一个电动抽风机。
抽风机的转轴上有风叶轮,通电后,抽风机会以每秒500圈的转速产生极强的吸力和压力,在吸力和压力的作用下,空气高速排出,而风机前端吸尘部分的空气不断地补充风机中的空气,致使吸尘器内部产生瞬时真空,和外界大气压形成负压差,在此压差的作用下,吸入含灰尘的空气。
灰尘等杂物依次通过地毯或地板刷、长接管、弯管、软管、软管接头进入滤尘袋,灰尘等杂物滞留在滤尘袋内,空气经过滤片净化后,由机体尾部排出。
因气体经过电机时被加热,所以吸尘器尾部排出的气体是热的。
(三)、机器人设计
1、整体设计
(1)、使用两轮转向机制的结构
(2)、电机可以选择直流伺服电机,也可以选择四驱车的130电机
(3)、驱动方式,采用两轮驱动方式,另一点我为此设计了一个使用8mm钢珠的球形支点,在摩擦小的时候是滑动,摩擦大时滚动,性能基本能满足要求,传动采用皮带传动,这样制作简单,容易选材
(4)、在底部加一吸尘器,如果方便可以采用静电式吸尘器,不然就采用普通吸尘器,自行运动,清除尘埃
(5)、在顶部装有空气加湿器,可以选择超声波型加湿器、直接蒸发型加湿器或热蒸发型加湿器,净化了空气而且保持空气湿度
(6)、整体设计图如下
(正面)
(背面)
(侧面)
(底面)
(车轮)
(大、小带)
(底座正面)
2、控制部分硬件设计
(1)、整体构思
电机驱动、逻辑控制部分均为独立的单片机系统,这样设计主要出于:
∙单片机已十分便宜,可以像普通IC那样使用;
∙电机驱动逻辑比较简单,但是实时性要求较高,所以独立出来,编程较为容易;
∙电机驱动部分通常会有较大的干扰,尤其是驱动普通的直流有刷电机,电刷的火花干扰很强,单独使用简单、但抗干扰能力强的单片机可使系统更加可靠;
∙电机驱动部分独立做成一个模块后可以在以后自己的其它项目上使用,增加投入的附加值,例如作为RCX(乐高的控制器,参考:
RCX的三个版本)的大功率电机驱动器;
∙对于走轨迹项目而言逻辑部分并不十分复杂,完全可以将电机控制部分融入其中,但是这样系统就不容易修改为其它用途,编程难度也增加了;
∙采用独立的逻辑控制便于学习者掌握构建复杂系统的能力,学会多模块协同工作时如何交换信息、如何协调。
目前在控制上利用单独的智能节点完成单一任务,采用通讯方式将这些独立节点组合实现复杂的功能是一个趋势。
(2)、单片机的选型依据
选用了51系列的单片机,因为51的架构十分典型,价格便宜,开发手段便宜,自己动手焊接相对容易。
51架构的单片机具有优异的特性和特点
∙TI的MSC系列具有一个24位AD,十分适合做高精度的仪器;
∙SiliconLAB公司的51F系列单片机速度极快、功耗低、体积小、资源丰富,有各种不同的规格,最快的达100MPS,引脚还可编程确定功能;
∙ST公司的uPSD3xxx系列,有较大的内存,可以内置汉字库,还集成了片内PLD;
∙Chipcon公司(现归属TI)的CC2430芯片将ZigBee无线通讯协议和51核集成,可构成ZigBee无线节点;
∙Nodic公司的nRF24E1芯片将2.4GHz的无线收发模块与51核集成,可方便的实现短距离无线通讯
(3)、电机驱动部分硬件设计
使用STC12C54XX系列51单片机控制,使用MOSFET管构成H桥驱动,并使用门电路实现互锁,避免造成MOSFET短路。
驱动管设计为可双管并联,以便于扩充驱动电流。
以STC12C54XX单片机为控制核心,该芯片具有4个通道的PCA,可以方便的实现转速脉冲测量和方向判断,同时也便于接受PWM控制信号。
同时此款单片机为1T的高速工作模式,可以使用定时中断控制MOSFET,因为需要实现4种电机工作模式,所以使用了4个IO独立控制H桥的4个MOSFET,不能使用简单的PWM输出控制。
因为用4个IO独立控制,所以必须避免MOSFET出现短路,使用2块4-2与非门构成互锁逻辑,保证不出现同侧上下MOSFET同时导通的情况。
借此也可以隔离电机的噪声对单片机的影响。
因为需要支持5–12V的电机工作电压,而且互锁逻辑输出还差一级反向,所以控制MOSFET使用双极性三极管9013,这样可使用普通的MOSFET,便于购买。
(如果不使用9013,则需要选用逻辑电平控制的MOSFET)
在线路及PCB的设计上,考虑MOSFET的双管并联工作,以便于日后需要提高驱动能力。
供给电机的电压直接接MOSFET,同时经稳压器SPX1117-3.3V稳压输出后供单片机和门电路,单片机选择3V的,门电路选用74HCxx,这样,电机的工作电压可以低到5V(4节充电电池)。
H桥电路如下:
3、控制部分软件设计
电机驱动模块软件设计
根据前面的硬件设计,电机驱动模块可以独立成为一个智能的功率驱动器使用,在硬件的设计中考虑了可以支持多种控制信号。
但在目前的项目中,拟使用串口控制方式,以下的软件设计是基于这个前提的。
(1)接收并解析控制命令;
(2)使电机有良好的驱动特性,可正、反转动,且转动平稳、有力;
(3)可靠的获取转速反馈信号;
(4)根据反馈信号使用有效的控制策略使电机达到所需的转速;
(5)利用码盘的反馈信号控制行走距离;
(6)可以根据命令实现电机的特殊运行状态:
刹车、惰行。
在上述功能中,真正影响驱动器性能的是第二项(驱动特性)和第四项(控制策略)。
虽然通常认为控制策略最重要,在自动控制中所着笔墨最多,但是在我们这个项目中,因为电机特性不是十分理想,驱动又是通过软件完成的,这两部分组成的执行机构如果没有良好的特性,那有再好的控制算法、策略也无法实现良好的电机驱动。
4、概要设计
根据要实现的功能,软件分为以下几个部分:
1.命令接收解析——完成命令接收,命令内容解析;
2.电机PWM驱动——根据电机控制参数产生驱动信号,使电机进入期望的运转状态;
3.速度反馈——读取码盘信号,计算出速度数据,兼完成计数功能,实现行走距离控制;
4.控制策略——根据命令给出的数据和反馈得到的数据计算出电机控制参数,实现速度控制;
电机驱动实际上构成了一个典型的自动控制系统:
其中的“PID调节器”由软件的控制策略部分实现,驱动器硬件只提供了电流的开关、放大功能,而主要的驱动特性实现是由软件中电机PWM驱动完成。
因为码盘的分辨率较低,所以采用测周期的方式来得到转速。
如果按照正常的脉冲测量方式,采集一个跳变沿,那这个码盘一圈只能得到10个数据,为了提高性能,利用了STC12C54XX单片机PCA模块的正、负跳变均能中断的特性,一周可获取20个数据。
为了避免脉冲的占空比不等带来的问题,采用正跳对正跳、负跳对负跳的测量方式。
程序的流程如下:
多个子程序流程图
主流程图
要实现控制主控工作指示,先看一下硬件是如何连接的:
#include<
STC12C5410AD.h>
/*STC12C5410AD的头文件,为MCU中各个硬件寄存器定个名称,以便C语言中使用*/
sbitWork_Display=P3^4;
//根据硬件设计用与“主控工作指示”接近的名称取代硬件名称,使程序减少与硬件的相关性
#defineLIGHT0
//亮逻辑值,用直观的符号化常数替换与硬件密切相关的逻辑值,增加程序的可读性、可移植性。
#defineDARK1
//暗逻辑值
#defineLIGHT_TIME1000//亮时间,使用符号化常数,便于修改,增加程序可读性
#defineDARK_TIME1000//暗时间
#defineP3MODE00x10//00010000,P3.4设置为开漏输出,其余均为标准51口;
#defineP3MODE10x10//00010000,
/***********主程序*****************/
voidDelayNms(unsignedintuiNms);
//因为子程序在后面,所以必须在此先声明。
voidmain(void)
{
//初始化硬件
P3M0=P3MODE0;
//因为只涉及P3口,所以此处只初始化P3
P3M1=P3MODE1;
while
(1)
Work_Display=LIGHT;
//点亮
DelayNms(LIGHT_TIME);
Work_Display=DARK;
//熄灭
DelayNms(DARK_TIME);
}//不断循环,在所有嵌入式应用的主程序中,都有这样一个无限循环.
}
//延时子程序,实现用软件循环方式延时Nms
voidDelayNms(unsignedintuiNms)
unsignedinti,uiCnt_ms;
for(uiCnt_ms=0;
uiCnt_ms<
uiNms;
uiCnt_ms++)
for(i=0;
i<
1400;
i++)//1ms延时循环,此数值由MCU的指令执行时间计算而来,与时钟和MCU有关
5、详细设计
考虑到这个小车要使用两个驱动电机,所有在串口的连接上采用并接方式,即将两个电机驱动器的接收端RXD、发送端TXD并联,RXD并联没有问题,而TXD端并联必须将口特性置为标准51口(有内部弱上拉电阻的准双向口),以保证口输出的正常,同时通过协议保证不同时发送。
并接后的串口相当于一个设备,接受逻辑控制部分的命令。
基于这样的设计,通讯协议设计如下:
帧格式:
帧头(2字节)帧长(1字节)命令字(1字节)数据区(N字节)校验和(1字节)
其中:
帧头——0x550xAA
帧长——命令字+数据区的长度
命令字——
∙0x01:
电机转动控制参数,开环模式,电机的PWM值、转动持续脉冲数;
∙0x02:
电机转动控制参数,闭环模式,电机的转速、转动持续脉冲数;
∙0x03:
电机工作参数,PWM频率、PID参数
数据区——
∙命令01:
电机1数据(2字节PWM值,2字节转动持续脉冲数)电机2数据(2字节PWM值,2字节转动持续脉冲数),共8字节;
∙命令02:
电机1数据(2字节转速值,2字节转动持续脉冲数)电机2数据(2字节转速值,2字节转动持续脉冲数),共8字节;
∙命令03:
2字节PWM频率,2字节比例系数,2字节积分系数,2字节微分系数,2字节PID系数的分母,共10字节,两个电机驱动器相同;
校验和——从命令字开始到数据区结束所有字节的算术和的反码,取低字节。
上述数据中,PWM值,速度值、PWM频率、PID系数等定义如下:
PWM值——2字节有符号数,正对应正转,负对应反转,数值为占空比的百分数,取值范围:
-1000——+1000,对应0.1%~100%;
1001为电机“惰行”,1002为“刹车”;
转动持续脉冲数——2字节无符号数,0表示连续转动;
转速值——2字节有符号数,正对应正转,负对应反转,单位为:
0.1转/每分钟;
取值范围:
-10000~+10000,10001为电机“惰行”,10002为“刹车”;
PWM频率——2字节整数,单位Hz,取值范围:
200–2000;
因为不同的电机所需的PWM频率不同,需要通过测试确定,所以考虑了此参数;
PID系数——均为2字节无符号数;
PID系数分母——2字节无符号数,为避免使用浮点数而增加了此参数,实际作用的PID系数为上述值除此值;
如:
比例系数为190,PID分母为200,实际比例系数为0.95。
以上所有2字节数据均为先低后高顺序发送。
暂时不设计应答帧,因为一帧命令包含了两个电机的驱动数据。
通讯数据格式为:
19200bps8N1。
此时,一帧数据约占7ms。
数据接收缓冲区采用环形结构,为了节省指针运算的时间,缓冲区长度设为32字节,对应指针变量的低5位。
设置2个数据指针处理,一个存数指针负责将接收到的字节填入缓冲,一个取数指针负责取出填入的数据。
初始化时两个指针相等,当收到数据时,在存数指针指向