超级有用.docx
- 文档编号:10767804
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:27
- 大小:356.49KB
超级有用.docx
《超级有用.docx》由会员分享,可在线阅读,更多相关《超级有用.docx(27页珍藏版)》请在冰豆网上搜索。
超级有用
数理与信息工程学院
《单片机原理及应用》期末课程设计
题目:
运水机器人系统
专业:
计算机科学与技术(非师范)
班级:
计算机072班
姓名:
余晓燕
学号:
07220215
指导老师:
余水宝
成绩:
(2009.12)
目录
第1节引言……………………………………………………………………………3
1.1运水机器人系统概述…………………………………………………………3
1.2本设计任务和主要内容………………………………………………………4
第2节系统主要硬件电路设计………………………………………………………5
2.1方案比较与选择………………………………………………………………5
2.1.1运水车选择……………………………………………………………5
2.1.2单片机选择……………………………………………………………5
2.1.3引导线检测模块………………………………………………………6
2.1.4液晶显示模块…………………………………………………………7
2.1.5电机驱动模块…………………………………………………………7
2.1.6卸水模块………………………………………………………………8
2.1.7无线发射接收模块……………………………………………………8
2.2组成框图………………………………………………………………………8
2.3PWM模块……………………………………………………………………9
2.3.1PWM模块的功能描述…………………………………………………9
2.3.2PWM模块的寄存器设置………………………………………………9
2.4理论分析与计算………………………………………………………………10
2.4.1自动寻迹理论分析与计算……………………………………………10
2.4.2自动取水理论分析与计算……………………………………………12
2.4.3自动卸水理论分析与计算……………………………………………13
第3节系统软件设计…………………………………………………………………14
3.1主控制台软件设计………………………………………………………………14
3.2重要子程序设计……………………………………………………………………16
第4节结束语…………………………………………………………………………21
参考文献………………………………………………………………22
附录………………………………………………………………………………………23
基于单片机的运水机器人系统
数理与信息工程学院计算机科学与技术余晓燕
指导教师:
余水宝
第1节引言
运水车选用竞赛车模改装,以单片机MC9S12DG128为核心的控制系统,实现黑线检测、无线数据收发、指定地点取水与卸水、运行参数与取水量实时显示等功能。
本系统主要分两大模块,主控台和运水模块,主控台通过无线模块远程控制运水模块。
主控台由两块STC89c52单片机进行串口通信,运水模块由STC89c52和MC9s12DG128B进行通信,核心单片机主控运水车的行进、后退、取水卸水动作。
该系统实现无线控制,灵活性强,便于操作,可以应用于不同行业,例如医药系统,运输行业等。
1.1运水机器人系统概述
形形色色的机器人在各种工作场合和家庭生活环境中担任具体且十分重要的工作的情形,目前人们还只是在各种科幻大片里面看到。
然而,随着科学技术的不断发展,机器人在人们的生活中将会起到不可忽视的作用。
有专家预言,若干年后,实用型机器人的技术将会得到很大的提升,它们将如同现在人们手中的个人PC机一样普遍。
人们可以用它们来打扫卫生,解决很多繁重,琐碎而又重复性很高的工作,例如,擦玻璃窗等工作。
随着21世纪的到来,我们国家通过几十年的不断努力已经步入世界大国的行列,然而要想迈入世界强国的行列还需要不断提升和发展。
其中,现代化科学技术是一项不可忽视的关键因素。
而人工智能又是先进技术中的重要组成部分。
对于中国而言,她是最需要也是最不需要机器人的国家。
由于国家人口众多,劳动力资源丰富且廉价。
对于雇主而言,花钱雇一个劳动力比购买一个相对昂贵而又笨重的机器人更有利。
但是,若从长远的发展利益考虑,用最少的资源做最多的事情对我们国家而言更有利。
雇主应该也必须尽可能地采用高新技术提高生产力以及市场竞争力,虽然有人会因此而失业,但是相信会得到更多的就业机会和社会利益。
如果机器人产业可以成为中国的经济支柱产业,就如同汽车产业是美国的支柱一样,中国可以成为“站在机器人肩膀上的国家”
总体来说,我国的机器人产业的发展是落后于世界先进国家的。
国外机器人领域发展近几年来有如下趋势:
1)工业机器人性能不断提高,高精度、高速度、高可靠性、便于操作及维修,且单机价格也不断下降。
2)机械结构向模块化、可重构化发展。
国外已经有模块化装配机器人产品问世。
3)工业机器人控制系统向基于PC机的开放型控制器方向发展,便于标准化、网络化。
器件集成度提高,控制柜越来越小,且采用模块化结构;大大提高了系统的可靠性、易操作性和可维修性。
4)虚拟现实技术在机器人中的作用已从仿真、预演发展到用于过程控制,如使遥控机器人操作者产生置于远端作业环境中的感觉来操纵机器人。
随着计算机技术迅猛发展,用信息技术帮助甚至提高人们的工作效率以及生活质量不仅是可能的而且是必要的。
本文旨在设计一套能自动根据设定的路线,在一定区域内来回运水的机器人系统,若它被运用于工业生产中,可以降低劳动力的损耗,提高生产效率。
1.2本设计任务和主要内容
本论文主要研究单片机控制的运水机器人系统,分别及系统设备的软、硬件各个部分进行了研究。
主要内容如下:
设计一套自动运水机器人系统,由运水机器人(以下简称小车)将水从A区通过B区运至C区。
该系统包括A区的自动(或手动)给水装置;往返于A、C区之间的小车(小车及安放的运水容器总垂直高度不得超过300mm,小车上的储水装置容量不超过600ml,口径不大于100mm,小车上任一部分不得超出小车边缘50mm);C区存水装置;固定底板。
参考图以及线路图分别如图1-1和图1-2所示。
图1-1参考图(mm)图1-2线路图(mm)
第2节系统主要硬件电路设计
2.1方案比较与选择
2.1.1运水车选择
方案一:
普通玩具车动力较弱,过载能力较差,调速性能较差,无法满足运水车运水、取水、卸水等功能。
方案二:
竞赛车模配套的直流电机动力强劲,在大转矩,低惯量的系统中应用广泛,同时具有优良的调速特性,调整范围广,过载能力强。
该车模控制精度足以控制电机正转,反转,停止等动作,速度均匀性好。
鉴于参数的要求和部分扩展功能的实现,本系统采用改装后的竞赛车模。
2.1.2单片机选择
方案一:
采用MCSE-51系列单片机,具有超低功耗、超高抗干扰等优点,片内含2kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
传统的52单片机具有价格低廉,使用简单等特点,但存在运行速度低,功能单一,RAM,ROM空间小等缺点。
方案二:
采用MC9S12GD128单片机,是一款S12系列微控制器中的增强型16位微控制器。
此微控制器既可工作在总线扩充方式,也可工作在单片方式,增加功能,提高可靠性,减少体积。
片内总线时钟频率最高可达25MHz;其集成度高,片内资源丰富,包括8KBRAM,128KBFLASH,SCI,SPI串行接口模块,PWM模块;PWM模块可以设置成4路8位或2路16位,可宽范围选择逻辑时钟频率。
这些特点极大的提高了开发效率。
鉴于MC9S12D12的以上特点,PWM模块控制直流电机正反转,舵机转角,SCI模块进行串口通信,核心控制模块选择方案二,由于STC89C52具有价格低廉使用简单,内部资源足以满足主控台的控制,选择方案一。
图2-1单片机主机系统图
2.1.3引导线检测模块
方案一:
采用多路阵列式光敏电阻组成的光电探测器。
光敏电阻探测到黑线时,黑线上方的电阻值会发生变化,再经过电压比较器,将信号送给单片机处理,从而控制小车的运动。
方案二:
采用红外传感器检测。
用已调试的红外对管发射红外光垂直射到板面。
若射到的板面颜色呈白色,则大部分的红外光会被反射回来;若射到的板面颜色呈黑色,则大部分的红外光会被板面吸收。
根据这一特性红外接收管会在黑白交界处产生跳变信号,该信号通过滞回比较(见图2-2)电路进行电压比较,再将比较后的信号送给单片机处理,从而实现响应的控制功能。
考虑到光敏电阻对光有较高的要求,增加了系统的复杂性,而红外对管则相比较而言稳定性较好,故选择方案二。
图2-2滞回比较器
2.1.4液晶显示模块
方案一:
采用LCD1602液晶显示。
1602结构简单,编程也较简单,但是一般只用于显示有限的数字和符号,显示能力有限,不能满足题目复杂的显示要求。
方案二:
采用SMG12864ZK液晶显示。
128×64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置国标GB2312码简体中文字库(16X16点阵)、128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
可与CPU直接接口,提供两种界面来连接微处理机:
8-位并行及串行两种连接方式。
具有多种功能:
光标显示、画面移位、睡眠模式等。
由于题目要求实时显示小车运动状态、运动时间、运水量及设定给水量等复杂显示,故选择方案二。
2.1.5电机驱动模块
方案一:
采用继电器对电机的开关进行控制,可以完成电机的正转、反转、调速,但继电器的响应时间慢,使小车运动的灵敏度降低。
方案二:
采用集成的驱动芯片L298,该芯片具有体积小,可靠性安全性高,抗干扰能力强等优点,适合小车的运动。
方案三:
采用集成的驱动电路芯片MC33886,该芯片的内部结构为MOS管构成的H桥式电路,并加入了逻辑控制电路和过流过热保护电路。
经过比较,集成的驱动电路芯片相对于继电器有较大的电流驱动能力,连接方便,简单。
而相对于MC33886驱动芯片,此芯片比L298芯片的稳定性能好,集成度更高,电路结构更简单,驱动电流更大,总的电流可达10A,可以实现电机的转速控制、制动以及舵机的方向转动角控制。
综合比较上述方案,此模块选择MC33886驱动直流电机。
2.1.6卸水模块
方案一:
采用水泵将小车上的水直接抽到储水装置中。
水泵控制简单,而且速度较快,效率较高,但是采用水泵时,由于水泵安装位置的限制,必定不可能将小车上的水完全抽干,从而造成小车上都会滞留一定量的水,会对运水总量引起误差。
方案二:
采用舵机控制的简单机械臂结构。
舵机带动机械臂运动,将处于水平位置的水杯抬高,并使水杯在上抬的过程中呈竖直状态保证水不溢出杯口,抬至最高点后,利用舵机控制水杯转向,使水注入储水装置中。
该方案的卸水速度更加迅速,电路也比较简单。
经过比较,结合选择的单片机有直接的PWM输出通道资源,所以方案二的控制更加简单,而且卸水的速度更加快,故选择方案二。
2.1.7无线发射接收模块
选用NRF24L01无线收发模块实现小车与给水区之间的数据传输。
用一块单独的STC89C52控制此收发模块,STC89C52再与作为主控制器的MC9S12D128进行串行通信。
利用NRF24L01与单片机的巧妙结合既可以减轻小车的负重,又可对小车实现远程控制。
2.2组成框图
图2-3运水机器人系统整体框图
2.3PWM模块
在该系统中,运用到MC9S12GD128单片机的PWM模块。
MC9S12GD128单片机(80pin)只有7个PWM通道,分别是PWM0-PWM7.PWM模块的所有通道都是可以软件编程的,包括PWM波的周期和占空比,另外PWM模块还有一个专用的计数器,计数器可以有4个计数器输入源。
PWM的每个通道都是独立的,都可以产生不同占空比的PWM波形,占空比可以从0%到100%。
输出的波形可以是左对齐或者中间对齐的格式。
2.3.1PWM模块的功能描述
●7个周期和占空比可编程的独立PWM通道
●每个通道有独立的计数器
●每个通道有独立的允许寄存器
●每个通道可编程的占空比和脉冲极性
●周期和占空比是双缓冲的
●每个通道输出波形独立的格式设置
●可配置为8个8位通道或4个16位通道
●可选择4个时钟源
●可编程的时钟选择逻辑
●紧急关闭操作
2.3.2PWM模块的寄存器设置
PWM模块寄存器在内存中的映射地址是采用相对地址来表示的,寄存器地址等于基地址加相对地址,其中PWM模块的基地址位$00A0,这是一个MCU级地址,相对地址是模块级地址。
根据相对地址就可以计算出各个寄存器在单片机里的物理地址(相对地址表详见附录1)。
2.4理论分析与计算
2.4.1自动寻迹理论分析与计算
这里的自动寻迹是指小车在白色纸上按照黑线的轨迹行走,通常采用红外探测法。
考虑到轨迹是白纸上的一条黑线,我们采用红外发射接收对管辨认路面的黑白两种状态。
由于红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断的向地面发射红外光,当红外光遇到白色板面时发生漫反射,反射光被装在小车上的接收管接收,再通过一系列滤波和放大电路,将光信号转变成电信号如图2-5所示;如果遇到黑线则红外光被黑线吸收,小车上的接收管接收微弱的红外光,甚至接受不到红外光。
单片机根据是否接收到反射回来的红外光为依据来确定黑线的位置,以此确定小车的行走路线。
而且红外发射接收对管所受外界影响比较小,抗干扰性能好,其成本较低,灵活可调,可靠性高。
红外传感器排布图如图2-4所示:
图2-4传感器排布图
图2-5黑线整流
根据黑线的宽度来确定传感器的排布位置,3、4两路间距为20毫米,是为了运输车夹着黑线运行,试验证明:
小车能更好地在直道上运行。
其他几路传感器的间距为25毫米,防止小车拐大弯时,能即时的将舵机摆过来。
传感器控制方法为:
1)当小车在直道区行驶时,由车前排2、3、4、5四个传感器来检测控制。
当3、4两个传感器同时检测到时,才使小车直走,否则纠正电动车方向。
2)当小车在前往卸水区过程中检测到第二个十字或者在返回取水区过程中第一次检测到十字时需要停止,当车前排6个传感器同时检测到黑线,小车停止。
在此过程中传感器与小车的运动状态关系如表1所示。
表2-1传感器与小车运动状态关系表
小车状态
传感器位置
第一路
第二路
第三路
第四路
第五路
第六路
直走
0
0
1
1
0
0
直走
0
1
1
1
1
0
向左走
1
0
0
0
0
0
向左走
1
1
0
0
0
0
向左走
1
1
1
0
0
0
向右走
0
0
0
0
0
1
向右走
0
0
0
0
1
1
向右走
0
0
0
1
1
1
停止
1
1
1
1
1
1
2.4.2自动取水理论分析与计算
这里的自动注水是指在取水区把水自动注入放在小车上面的杯子里,此控制中采用了电磁阀和流量传感器两种元器件。
单片机通过发送高低电平控制其继电器的工作状态,再由继电器控制电磁阀的开关,从而实现自动注水的功能。
其控制方法为:
当单片机给继电器一个低电平时,此时把继电器的常闭开关打开,即把电磁阀的开关打开,取水区的水开始注入水杯,流量传感器开始工作,当水杯中的水注到设定值时(注水量可以通过按键自行设定),单片机就会给继电器一个高电平使电磁阀的开关闭合,停止注水(电路图如图2-6所示)。
流量传感器会将所得到的数据在液晶模块上显示出来。
图2-6电磁阀驱动电路
2.4.3自动卸水理论分析与计算
这里的自动卸水是指当小车到达卸水区后自动把水杯中的水卸到指定的容器中,卸完水后自动返回到取水区,开始下一次的运水。
此控制中采用了舵机控制下的简单机械臂结构。
分别在水杯及机械臂的两侧均匀安装两个舵机。
控制方法:
当传感器偶数次检测到十字在储水区停止后,装在机械臂两侧的舵机开始把水杯往上抬举,当达到设定的最高点时,机械臂两侧的舵机停止运动,此时装在水杯两侧的舵机按照设定的舵机角度开始把水杯翻转一定的角度将水注入到卸水区,当水杯中的水全部注入到卸水区时,再利用机械臂上的两个舵机将水杯收回,回到舵机的初始状态,最后返回给水区,准备下一次的运水。
第3节系统的软件设计
系统软件程序设计主要包括:
主控台软件设计,取水程序设计,卸水程序设计等。
3.1主控台软件设计
主控台负责给小车灌水,第一种情况:
注水按键下,开始给运水车注水;第二种情况:
小车第二次回到取水区时,通过无线发出信号,主控台接受到取水信号后,打开电磁阀进行注水。
N
N
图3-1主控台程序流程图
程序清单:
//-----------------------------------------------------------------------//==========================中断后前台处理===============================
//-----------------------------------------------------------------------
voidINT0_deal(void)
{
uchartemp;
if(EX0_flag==1)//有外部中断
{
SPI_Read_onebyte(R_REGISTER|STATUS);//读寄存器status
sta=Reg_val;
if(MAX_RT==1)//发送失败处理
{
temp=sta;
SPI_Write(0x27,&temp,1);//MAX_RT中断
//SPI_Write(FLUSH_TX,NULL,0);//清除TX_FIFO
SPI_Write(REUSE_TX_PL,NULL,0);
SPI_Read_onebyte(R_REGISTER|STATUS);
sta=Reg_val;
MAX_RT=0;
}
if(RX_RD==1)//发送成功处理程序
{
temp=sta;
SPI_Write(W_REGISTER|STATUS,&temp,1);//清除RX_RD
SPI_Read_onebyte(R_REGISTER|FIFO_STATUS);
while((Reg_val&0x01)==0)//RX_P_NO=111,RX_FIFOisEmpty
{
SPI_Read_onebyte(R_RX_PL_WID);//读取数据包长度
SPI_Read(R_RX_PAYLOAD,10);//按照之前读出的数据包长度读取数据包
SPI_Read_onebyte(R_REGISTER|FIFO_STATUS);//读取status查看是否还有数据在RX_FIFO
}
SPI_Write(FLUSH_RX,NULL,0);
RX_RD=0;
//TI=1;
}
if(TX_DS==1)//发送成功处理程序
{
temp=sta;
SPI_Write(W_REGISTER|STATUS,&temp,1);
SPI_Write(FLUSH_TX,NULL,0);
TX_DS=0;
set_mode(RX_M);//发送陈功后设置为接受模式,等待接受数据
}
EX0_flag=0;
EX0=1;//清除中断标志位
}
}
3.2重要子程序设计
当主控台给完设定的水量后,启动小车前往卸水区,当前排传感器检测到第二条横线时,小车到达卸水区;返回取水区时,转换传感器,当前排传感器检测到横线(第三条),同时行驶一段车身的距离后,后排传感器也检测到横线(第四条),说明小车到达取水区,一个来回行程完成。
图3-2子程序流程序
程序清单:
//----------------------------------------------------------------
//倒水控制
/*倒水控制
杯子从初始位置上抬到竖直位置分成12等分(PWM波占空比),每等分间隔相同的时间一份一份加上去;
从竖直位置到倒水状态,只有PWM4和PWM5通道进行动作,PWM2和PWM3通道进行动作;
从倒水姿态到初始位置,杯子不经过细分直接给个初始状态的占空比值回到初始状态
只有PWM2和PWM3通道进行作用
*/
//----------------------------------------------------------------
voidwater_control(void)
{
if(shangtai_flag==1)
{
if(++shangtai_count1>=30)
{
shangtai_count1=0;
if(++shangtai_count2<=shangtai_top)
{
if(shangtai_count2>=shangtai_top)
{
shangtai_count2=0;
daoshui_flag=1;
shangtai_flag=0;
PWMDTY2=22;
PWMDTY3=21;
PWMDTY4=19;
PWMDTY5=23;
}
else
{
PWMDTY2=PWMDTY2-1;
PWMDTY3=PWMDTY3+1;
PWMDTY4=PWMDTY4-1;
PWMDTY5=PWMDTY5+1;
}
}
}
}
if(daoshui_flag==1)
{
if(++daoshui_count1>=30)
{
daoshui_count1=0;
if(++daoshui_count2<=daoshui_top)
{
if(daoshui_count2==daoshui_top)
{
daoshui_count2=0;
PWMDTY4=31;
PWMDTY5=11;
daoshui_flag=0;
shangtai_flag=0;
huibei_flag=1;
backward=1;
}else
{
PWMDTY4++;
PWMDTY5--;
}
}
}
}
if(huibei_flag==1)
if(++shangtai_count1>=30)
{
shangtai_count1=0;
if(++shangtai_count2<=shangtai_top)
{
if(shangtai_count2>=shangtai_top)
{
s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超级 有用