




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1 引言1.1新型六足机器人研究目的和意义11.2新型六足机器人研究概况及发展趋势11.3课题研究内容22 机械结构与芯片简介2.1机器人机械结构32.2机器人运动原理32.3驱动装置选择52.4机器人实物图62.5硬件结构介绍72.6单片机芯片介绍82.7编码解码芯片介绍133 控制系统结构设计3.1上位机控制163.1.1 程序语言及串口通讯163.1.2 人机交互界面173.2 基于无线的智能控制193.2.1 无线发射模块193.2.2 无线接收模块234 结论29参考文献30致 谢31新型六足机器人1 引言1.1新型六足机器人研究目的和意义本文六足机器人是一种基于仿生学原理研制开发的新型足式机器人。新型机器人比传统的轮式机器人有更好的移动性,它采用类拟生物的爬行机构进行运动,自动化程度高,具有丰富的动力学特性。此外,足式机器人相比其它机器人具有更多的优点:它可以较易地跨过比较大的障碍(如沟、坎等),并且机器人足所具有的大量的自由度可以使机器人的运动更加灵活,对凹凸不平的地形的适应能力更强;足式机器人的立足点是离散的,跟地面的接触面积较小,因而可以在可达到的地面上选择最优支撑点,即使在表面极度不规则的情况下,通过严格选择足的支撑点,也能够行走自如。 因此,足式步行机器人的研究已成为机器人学中一个引人注目的研究领域,由于六足机器人强大的运动能力,可以提供给运动学、仿生学和机械构造原理研究有力的工具1。在研究昆虫运动方式、关节承力、稳定姿态调整的过程中,可以运用本机器人对设想的虫体姿态、运动过程进行模拟,最大程度地接近真实,将理论和实践联系起来,从而更好地观察昆虫运动模式的优点,以及探究哪些现象能够运用到机械设计的实践中去。这对于以上学科的研究和探索都是十分有意义的。当然,我们还可以作为教学器械,通过研究昆虫爬行时各脚的运动情况,用机械形式表达出来,也可以作为仿生玩具及探险、搜救设备,还可以进入细小管道、地洞中勘察。 在研究了昆虫步态的基础上,运用仿生原理,本文借鉴相关资料,使用一种六足机器人机械结构设计的新思路,制作了基于这种设计思路的机器人。相信该机器人可以实现直线运动与转向运动的合理、有效结合,转向角度、角速度可控,直线行进步距、速度可调,行动灵活可靠。1.2新型六足机器人研究概况及发展趋势近年来为实现生产过程自动化,已有不少操作机器人广泛应用于生产过程,尤其是那些人力所限和人所不及的环境或危险场所,将是机器人进一步发展的应用领域。日前,美军的蜂鸣机器人(Mini-Drohne)在巴基斯坦击毙了一名恐怖分子嫌疑人。在未来,这种昆虫型机器人有望成为战场上的主角。在美国,军事科技研究一般拥有数亿美元的巨资作为后盾。美国国防部高级研究计划局(DARPA)常为各个大学和自由经济体的科研项目慷慨解囊。军方亦拥有独立的大型研究实验室,然而其大部分研究成果从未公之于众。尽管如此,目前披露的成果也足以令人惊叹不已,智能型战斗机器人、自动汽车、植入电脑芯片的动物等等令人联想起扣人心弦的科幻电影这一切都有可能在未来的高科技战场上大显身手。目前,多足仿生机器人的研究基本上是基于模仿自然界中昆虫的运动步态(如蚂蚁)来设计的,通常都会选择周期规则步态作为仿生多足机器人的步态规划依据。虽然该类多足仿生机器人的脚具有较大的自由度,但是其控制起来较为烦琐,并且不能精确的定位。1.3课题研究内容上海交通大学测控技术与仪器系的张涛、颜国正等学者在2006年提出一种微型的六足机器人新结构2,其结构设计如图1.1。 图1.1 机器人结构示意图机器人模仿昆虫爬行的脚的运动方式,将6只足分为两组,每组3个等边分布在外接圆半径为R的正三角形3个顶点上,机器人在行走过程中,两组足交替支撑。两组足中的任一组三足可独立支撑起整个机器人身体,机器人重心始终落在A组或B组三足的三角形区域内,因此在平面爬行中没有倾覆的危险。机器人具有独立的直行和转弯机制,二者可在各自的允许范围内以任意方式结合,这就使得机器人的爬行十分灵活。本文在此基础上独立设计和加工微型机器人的结构:部件A、B组足由特殊的驱动器接成机器人主体,并且以单片机为核心设计机器人的控制电路,实现了机器人的无限遥控、智能行走3。2 机械结构与芯片简介2.1机器人机械结构图2.1是本文设计和加工的微型六足爬行机器人的三维结构示意图。 其中2、4、6分别为转动、竖直、水平驱动舵机,只要控制这三个舵机就可以控制上板和下板相对上下、前后、水平面转动。1上板2转动舵机3竖直移动排齿4竖直移动舵机和齿轮5水平移动排齿 6水平移动舵机和齿轮7下板8上板足9下板足10水平定位齿轮 图2.1 机器人机构图2.2机器人运动原理机器人6只足分别均分布在两个等边三角形的顶点上4。机器人在行走过程中,两组足交替支撑。两组足中的任一组三足可独立支撑起整个机器人身体,机器人重心始终落在A组或B组三足的三角形区域内,因此在平面爬行中没有倾覆的危险。 图2.2 机器人组合图如图1.3所示,通过上下两组脚的相互运动就可以满足机器人多方位移动的需要:即上下板前后相互交替着地实现前后运动;上下板以三角形中点为轴相互转动交替着地实现转弯运动。运动如图2.3及2.4所示。 图2.3 机器人水平移动示意图 图2.4 机器人转动运动示意图2.3驱动装置选择本文设计的微型六足爬行机器人采用了三个个舵机分别对直线驱动器、转角驱动器以及垂直驱动器来进行精确控制。舵机是一种位置伺服的驱动器5。它接收一定的控制信号,输出一定的角度,适用于那些需要角度不断变化并可以保持的控制系统。舵机定位精确、输出力矩较大、尺寸满足要求,作为本设计的力驱动部件十分理想。以日本FUTABA-S3003型舵机为例,图2.5是FUTABA-S3003 型舵机的内部电路。 图2.5 FUTABA-S3003 型舵机的内部电路舵机的工作原理是:PWM信号由接收通道进入信号解调电路BA6688L的12脚进行解调,获得一个直流偏置电压。该直流偏置电压与电位器的电压比较,获得电压差由BA6688的3脚输出。该输出送入电机驱动集成电路BAL6686,以驱动电机正反转。当电机转速一定时,通过级联减速齿轮带动电位器Rw1旋转,直到电压差为0,电机停止转动.舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。标准的舵机有3条导线,分别是:电源线、地线、控制线,如图2.6所示。电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源,电压通常介于46 V ,一般取5 V,以便给舵机供电的电源应能提供足够的功率6。控制线的输入是一个宽度可调的周期性方波脉冲信号,方波脉冲信号的周期为20ms(即频率为50Hz)。当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。某型舵机的输出轴转角与输入信号的脉冲宽度之间的关系如图2.7所示。 图2.6 标准舵机示意图 图2.7 舵机的输出轴转角与输入信号的脉冲宽度之间的关系综合各方面考虑,选用的舵机为TOWERPRO,型号为SG90。其主要技术参数如下:外形尺寸:22*11.5*27mm重 量:9g参 数:无负载速度0.12/60度(4.8V)堵转扭矩:1.6Kg/厘米(4.8V)使用温度: -30摄氏度+60摄氏度使用电压:4-6V死区电压: 3.0V-5.0V2.4机器人实物图 图2.8 机器人实物图 2.5硬件结构介绍本文为实现机器人的无线控制,分别设计了无线发射模块和无线接收模块。无线发射模块采用了串口通讯来传递上位机到机器人的信号,并经过单片机识别把信号通过编码芯片PT2262编码后进行无线发射,无线接收模块接受后通过解码芯片PT2272解码并把控制信号传输到单片机,识别后控制三个舵机实现机器人的移动和转向。串口无线发射模块无线通讯无线接收模块89S51单片机编码解码89S51单片机驱动转动移动舵机竖直移动舵机水平移动舵机 图2.9 硬件系统结构图2.6单片机芯片介绍AT89S51是美国ATMEL公司生产的低功耗,高效能CMOS 8位单片机,片内含有4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚7。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片机芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可以提供许多高性价比的应用场合,可灵活应用于各种控制领域。AT89S51的主要性能参数如下:u 与MCS51产品指令系统完全兼容u 4K字节在系统编程(ISP)Flash闪速存储器u 1000次檫写周期u 4.05.5V的工作电压范围u 全静态工作模式:0Hz33MHzu 三级程序加密锁u 1288字节内部RAMu 32个可编程I/O口u 2个16位定时/计数器u 6个中断源u 全双工串行UART通道u 低功耗空闲喝掉电模式u 中断可从空闲模式唤醒系统u 看门狗(WDT)及双数据指针u 掉电标识和快速编程特性 图2.10 AT89S51单片机u 灵活的在系统编程(ISP字节或页写模式) 图2.11 方框图引脚功能说明:l Vcc:电源电压l GND:地l P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。l P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉倒高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 图2.12 P1口特殊功能l P2口:P2是一个带内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口线上的内容在整个访问期间不改变。l P3口:P3口是一组带内部上拉电阻的8位双向I/O口,P3的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。 图2.13 P3口特殊功能l RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平讲师单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。l EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器,EA端必须保持低电平。若EA端为高电平,CPU则执行内部程序存储器中的指令。l XTAL1:振荡器反相放大器及内部时钟发生器的输入端。l XTAL2:振荡器反相放大器的输出端。51系列单片机的集成了两个可编程的定时器/计数器,即定时/计数器0和1,简称T0和T1,有4种工作方式可供选择。单片机内部通过专用寄存器TMOD、TCON来设置定时/计数器工作的参数,例如方式选择、定时计数选择、运行控制、溢出标志、触发方式等控制字。定时器/计数器结构如图2.14所示,其核心是一个16位的加1计数器。其中,16位的定时器/计数器T0由2个8位计数器TH0和TL0构成,16位的定时器/计数器T1由2个8位计数器TH1和TL1构成。另外,寄存器TMOD主要用于指定各定时器/计数器的功能和工作模式;寄存器TCON用于控制定时器/计数器的启动和停止计数,同时也设置定时器/计数器的状态。 图2.14 定时器/计数器结构示意图TMOD寄存器用于定义T0和T1的工作方式和4种工作模式,其单元地址为89H。定时器/计数器0和1的方式控制寄存器TMOD,如图2.15所示。其中,低4位用于控制T0,高4位用于控制T1,两部分操作和含义完全相同。 图2.15 方式控制寄存器TMOD寄存器TCON的功能是在定时器溢出时设定标志位,并控制定时器的运行、停止和中断请求。寄存器TCON的单元地址为88H。中断控制寄存器TCON的组成,如图2.16所示。其包含3个部分,TF1和TR1位用于控制T1,TF0和TR0位用于控制T0,其它的为中断控制。 图2.16 控制寄存器TCON单片机内部的定时器/计数器是加法计数,其在计数溢出时才申请中断。为了实现自定义的计数值或定时值,需要从计数最大值计算得出需要设置的初值。在不同的工作模式中,计数最大值不同,可以为213、216和218。假设计数最大值为MAX,则初值X计算方法如下:在计数方式下,X=MAX-计数值。在定时方式下,X=MAX-定时值/T。式中T为单片机的计数周期,也就是单片机的机器周期。例如,当单片机的机器周期T=0.5s时,如果定时器/计数器工作于模式0,MAX=213x0.5s=4.096ms;如果定时器/计数器工作于模式1,则最大定时值为MAX=216x0.5s=32.768ms。单片机的定时器/计数器是可编程控制的,在使用之前需要先通过如下步骤进行初始化:(一) 指定定时器/计数器的工作模式,通过赋值TMOD寄存器来实现。(二) 装入定时器/计数器的初值,通过赋值TH0、TL0或TH1、TL1来实现。(三) 启动定时器/计数器中断,通过赋值IE来实现。如果程序中不使用中断,则可以省略此步骤。(四) 启动定时器/计数器,通过置位TR0、TR1来实现。置位后,定时器/计数器将按规定的工作模式和初值进行计数或开始定时。单片机与上位机(电脑)可以通过串口进行通讯,使用MAX232进行电平转换,MAX232芯片如图2.18所示。 图2.18 MAX232芯片2.7编码解码芯片介绍PT2262/2272是台湾普城公司生产的一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441种地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路8】。如图2.19所示,编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。当发射机没有按键按下时,PT2262不接通电源,其17脚为低电平,所以315MHz的高频发射电路不工作,当有按键按下时,PT2262得电工作,其第17脚输出经调制的串行数据信号,当17脚为高电平期间315MHz的高频发射电路起振并发射等幅高频信号,当17脚为低平期间315MHz的高频发射电路停止振荡,所以高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100的调幅。 图2.19 PT2262示意图表2.1 PT2262引脚功能名称管脚说 明A0-A111-8、10-13地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空),D0-D57-8、10-13数据输入端,有一个为“1”即有编码发出,内部下拉Vcc18电源正端()Vss9电源负端()TE14编码启动端,用于多数据的编码发射,低电平有效;OSC116振荡电阻输入端,与OSC2所接电阻决定振荡频率;OSC215振荡电阻振荡器输出端;Dout17编码输出端(正常时为低电平)在具体的应用中,外接振荡电阻可根据需要进行适当的调节,阻值越大振荡频率越慢,编码的宽度越大,发码一帧的时间越长。 图2.20 PT2272示意图表2.2 PT2272引脚功能名称管脚说 明A0-A111-8、10-13地址管脚,用于进行地址编码,可置为“0”,“1”,“f”(悬空),必须与2262一致,否则不解码D0-D57-8、10-13地址或数据管脚,当做为数据管脚时 Vcc18电源正端()Vss9电源负端()DIN14数据信号输入端,来自接收模块输出端OSC116振荡电阻输入端,与OSC2所接电阻决定振荡频率;OSC215振荡电阻振荡器输出端;VT17解码有效确认 输出端(常低)解码有效变成高电平3 控制系统结构设计3.1上位机控制3.1.1 程序语言及串口通讯本文在上位机(即计算机)上使用VB语言编写控制程序与人际交互界面,该语言是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发 Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与 Windows 专业开发工具SDK相媲美9。在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows环境下功能强大、图形界面丰富的应用软件系统。本文通过串口实现上位机与控制器的信号传递,串口即串行通信是指外设和计算机间使用一根数据信号线,数据在一根数据信号线上按位进行传输,每一位数据都占据一个固定的时间长度。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。相比之下,由于高速率的要求,处于计算机内部的CPU与串口之间的通讯仍然采用并行的通讯方式,所以串行口的本质就是实现CPU与外围数据设备的数据格式转换(或者称为串并转换器),即当数据从外围设备输入计算机时,数据格式由位(bit)转化为字节数据;反之,当计算机发送下行数据到外围设备时,串口又将字节数据转化为位数据。VB语言中为设计者封装了一种控件以方便用户进行串口操作,该控件即为mscomm.vbx。mscomm.vbx通信控件可直接从vb的toolbox中加入窗体form,即可用其进行通信10。使用MSCOMM控件主要是通过事件来处理串行口的交互,即当数据到达时,控件的OnComm的事件就会来捕获或处理这些通讯事件。而OnComm事件也可以用来捕获和处理通讯错误。在实际应用中,一个MSCOMM控件就对应一个串行口,所以如果要处理多个串行口的话,必须有相应数量的控件与之对应。此控件的主要属性: CommPort:设置或者返回串行端口号 Settings:用来设置和返回波特率,奇偶校验,数据位和结束位 PortOpen:设置或者返回通讯端口的状态,也可以打开和关闭一个端口 Input:从接受缓冲区里获取或删除数据 Output:给发送缓冲区里写数据3.1.2 人机交互界面上位机在整个系统中起着统筹发号施令的作用,它实现的功能为:根据操作员发出的直接命令或间接命令计算编译出传送给机器人运动的控制信号。图3.1是本设计的控制软件界面: 图3.1 控制界面对窗体各控件进行初始化:sub form-load () mport=1 选用com1串行口 mscomm1.settings=2400,n8,1 波特率2400, 8位数据位1位停止位 mscomm1.inputlen=0 input将读取接收缓冲区的全部内容 mscomm1.inbuffersize=1024 设置接收缓冲区的字节长度 mscomm1.portopen=true 打开通信口 mscomm1.inbuffercount=0 清除发送缓冲区数据 mscomm1.outbuffercount=0 清除接收缓冲区数据 eval=100 设置ls定时间隔,使遥测命令每隔ls发送1次 command-pressed=false 命令按钮为未激活状态 during- periodic=false 周期性命令数据传输尚未开始 during- nonperiodic=false 非周期性命令数据传输尚未开始 end sub通过点击每个按钮实现对机器人的不同控制只需编写触发命令按钮的单击事件即可,下面以自动演示控制为例:Private Sub 自动演示_Click()MSComm1.Output = 串口输出的ASC编码state = 机器人自动动作! 赋值机器人当前状态变量stateTimer2.Enabled = True 激活定时器2Text1.Text = 传送指令中 更新最新发送指令指示Form1.Enabled = False 窗体无效,防止指令过于密集End Sub定时器控件计时到点事件:Private Sub Timer1_Timer() Text1.Text = state 更新最新发送指令指示Form1.Enabled = True 激活窗体有效Timer1.Enabled = False 关闭计时器End Sub 3.2 基于无线的智能控制系统结构框如图3.2所示:上位机驱动垂直舵机89S51单片机水平舵机转动舵机PT2262编码PT2272解码串口通讯无线通讯 图3.2 系统结构框图3.2.1 无线发射模块无线发射模块主要由三部分组成:电平转换、89S51单片机、编码芯片及其无线电发射,如图3.3:89S51单片机串口信号经MAX232电平转换PT2262I/O端口I/O端口 图3.3 无线发射模块示意图由于计算机串口信号的高低电平与单片机识别的高低电平是不相同的,所以本设计使用了芯片MAX232进行电平转化,以便单片机接收到来自计算机的8位(即一字节)信号。 图3.4 无线发射模块电路图表3.1 单片机I/O口分配单片机I/O口分配P2.0编码芯片PT2262的引脚D0P2.1编码芯片PT2262的引脚D1P2.2编码芯片PT2262的引脚D2P2.3编码芯片PT2262的引脚D3P2.7编码芯片PT2262使能端TEP3.0串口通讯接收RXDP3.1串口通讯发送TXD 串口通讯使用的波特率为2400,而单片机是通过定时器来同步接收串口通讯的。因此对单片机程序初始化如下:ORG00HSTART:MOVSP,#60H ;初始化堆栈指针 MOVSCON,#50H ;设置UART属性:MODE1 SM1=1 REN=1 MOVTMOD,#20H ;设置第一个定时器模式:MODE2 MOVTH1,#0F4H ;设置串口通讯波特率为2400 SETBTR1 ;激活第一个定时器89S51单片机有专门用于存放串口数据的寄存器以及指示串口接收完成与否的状态字,编程如图3.5。Y开始接收计算机串口数据已接收完一字节数据?接收字节=?指令1#指令2#指令14#指令15#发送指令N 图3.5 发射模块程序流程图WRITE: JBC RI,READ ;判断单片机是否已经接收完一字节数据 JMP WRITE ;未接受完一字节数据向上跳转继续接收READ: CLR TI ;清除T1 MOV A,SBUF ;将缓存中串口接收的数据转移到A MOV R7,A ;将数据转移到寄存器R7 CALL DELAY ;延迟单片机接收的数据是来自计算机的一字节信号(即ASCII编码),因此单片机需要把计算机的信号转变成下一个模块识别的指令以便先一个模块识别。程序如下:SCAN: MOV A,R7 ;数据转移 CLR C SUBB A,#49 ;接收的信号 (ASCII码)减去49 JZ CHAN1 ;判断跳转CHAN1MOV A,R7 CLR C SUBB A,#50 JZ CHAN2 ;判断跳转CHAN2 MOV A,R7 CLR CRESET: CALL DELAY ;延迟 JMP WRITE ;跳转WRITECHAN1: SETB P2.0 CLR P2.1CLR P2.2CLR P2.3 ;重置4位指令CPL P2.7 ;使能编码芯片PT2262CALL DELAY CPL P2.7 ;关闭编码JMP RESET ;跳转至RESETCHAN2: SETB P2.0 CLR P2.1CLR P2.2SETB P2.3 ;重置4位指令CPL P2.7 ;使能编码芯片PT2262CALL DELAY CPL P2.7 ;关闭编码JMP RESET ;跳转至RESETEND3.2.2 无线接收模块无线接收模块也主要由三部分组成:解码芯片及其无线电接收、 信号运放、89S51单片机,如图3.6。PT2272运放89S51单片机垂直、水平和转动舵机 图3.6 无线接收模块示意图鉴于使单片机信号接收更加稳定,特别在解码后对信号进行放大,以便信号能够正常被识别。电路如图3.7所示。 图3.7 无线接收模块电路图表3.2 单片机I/O口分配单片机I/O口分配P1.0经放大的解码芯片PT2272信号通道D0P1.1经放大的解码芯片PT2272信号通道D1P1.2经放大的解码芯片PT2272信号通道D2P1.3经放大的解码芯片PT2272信号通道D3P2.2转动舵机控制线P2.6竖直舵机控制线P2.7水平舵机控制线 为了方便对机器人进行控制,在无线接收模块中使用C51语言进行编程,程序头文件如下: #include#define uchar unsigned char#define uint unsigned intuint a,b,c,d,order;/*a,b,c,d为中间变量,order指示中断顺序*/*以下定义输出管脚*/sbit P10=P10; sbit P11=P11; sbit P12=P12; sbit P13=P13; /4位指令sbit P22=P22; /转动舵机控制线sbit P26=P26; /竖直舵机控制线sbit P27=P27; /水平舵机控制线因为舵机的控制信号是PWM波,89S51有16位内部计数器,本设计就用它来产生周期20ms的脉冲信号,并且根据需要改变输出脉宽。程序如下:void timer0(void) interrupt 1 using 1 P26=!P26; /*输出取反*/ c=20000-c; /*20000代表20 ms,为一个周期的时间*/ TH0=-(c/256); TL0=-(c%256); /*重新定义计数初值*/*定时器1,控制转动舵机控制线,输出引脚为P22 */void timer1(void) interrupt 3 using 1 switch(order) /*判断是控制竖直舵机或是控制水平舵机*/ case(0): P27=!P27; break; case(1): P22=!P22;break; d=20000-d; TH1=-(d/256); TL1=-(d%256);单片机的晶振频率为12M,一个时钟周期为12个晶振周期,正好是1/1000 ms,计数器每隔1/1000 ms计一次数。以计数器1为例,先设定脉宽的初始值,程序中初始为1.5ms,设定计数器计数初始值为c,并置输出p22为高位。当计数结束时,触发计数器溢出中断函数,就是void timer0(void) interrupt 1 using1 ,在子函数中,改变输出p22为反相(此时跳为低位),在用20000(代表20ms周期)减去高位用的时间c,就是本周期中低位的时间,c=20000-c,直到定时器再次产生溢出中断,重复上一过程。程序流程图如图3.8所示。程序初始化P2口接收无线模块指令指令=?动作1#单片机输出响应PWM控制舵机动作2#动作14#动作15# 图3.8 无线接收模块流程图把机器人的每个动作,即前进,后退,左转和右转封装成一个子函数,以便在主程序中进行调用。下面以前进子函数为例:void forward(int a0,int a1,int b0,int b1) /形参传递机器人前进距离 P26=1; /置竖直控制信号为高电平 a=a0; c=a; TH0=-(a/256);TL0=-(a%256); TR0=1; /启动定时器1 delay50ms(25); /延时,通过定时器不断提供控制信号 TR0=0; /关闭定时器1 P27=1; /置水平控制信号为高电平 order=0; /置控制信号顺序 b=b0; d=b; TH1=-(b/256);TL1=-(b%256); TR1=1; /启动定时器2 delay50ms(25); TR1=0; /关闭定时器2 P26=1; a=a1; c=a; TH0=-(a/256);TL0=-(a%256); TR0=1; delay50ms(25); TR0=0; P27=1; order=0; b=b1; d=b; TH1=-(b/256);TL1=-(b%256); TR1=1; delay50ms(25); TR1=0;主程序即识别由无线发射模块传送过来的指令:main() EA=1; ET0=1;ET
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业安全培训之粉尘防爆课件
- 国家管网集团油气调控中心高校毕业生招聘笔试真题2024
- 2025年吴忠市事业单位考试真题
- 2025年广安市事业单位考试真题
- 平衡火罐治疗
- 农发行抚顺市清原满族自治县2025秋招无领导小组面试案例库
- 工业园安全生产培训内容课件
- 2025年新能源汽车自动驾驶技术演进与保险市场竞争格局报告
- 2025年新能源汽车电池热失控预警技术研究与应用报告
- 农发行吉安市吉水县2025秋招笔试价值观测评题专练及答案
- 强信念 转作风 提能力 促发展 学习心得体会
- 朋友的古诗句
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)宣传海报
- 道路工程交通安全设施施工方案及保障措施
- 征信数据纠正服务合同
- 肝癌超声课件教学课件
- 合规岗位季度工作计划
- 制造业生产管理:Excel2024版高效培训教程
- 漫展嘉宾合同模板
- 药物分析考试题及答案(新版)
- 第一单元 单元检测试卷(一)(解析版)高中思想政治 统编版 必修四
评论
0/150
提交评论