基于STM32仿生六足机器人_毕业设计.doc

上传人:good****022 文档编号:116792322 上传时间:2022-07-06 格式:DOC 页数:44 大小:7.65MB
返回 下载 相关 举报
基于STM32仿生六足机器人_毕业设计.doc_第1页
第1页 / 共44页
基于STM32仿生六足机器人_毕业设计.doc_第2页
第2页 / 共44页
基于STM32仿生六足机器人_毕业设计.doc_第3页
第3页 / 共44页
点击查看更多>>
资源描述
毕业设计(论文)基于STM32仿生六足机器人学院: 电子与信息工程学院 专业: XXXXXXXXXXXXXXXX 学号: XXXXXXXXXXX 作者: XXX 指导老师: XXX 基于STM32仿生六足机器人电子与信息工程学院 XXXXXXXXXXXX专业作者 XXX 指导教师 XXX【摘 要】在科技高速发展的信息社会,机器人在工业,军事,探测等各个领域起着越来越重要和不可替代的位置,机器人研究成为目前世界各国研究的热点。仿生六足机器人涉及仿生学、机械学、信息技术和传感技术等众多学科,是机器人研究的一大分支。仿生六足机器人模仿生物界爬行动物的肢体结构,具有良好的机动性和自适应能力,在军事运输、矿山开采、星球探测等众多领域具有广阔前景。本设计采用ARM内核结构(Cortex-M3)的STM32F103RBT6为主控芯片,通过内部定时器产生脉宽调制信号,以及使用74HC138进行分时复用来控制六足机器人的关节,即18个MG955舵机。通过BMX-02蓝牙转串口模块连接手机和机器人,实现手机蓝牙遥控。采用UN2003A电机驱动芯片驱动步进电机,并配合红外传感器使机器人实现智能避障。由于该机器人拥有18自由度,肢体灵活,还可实现各种类似舞蹈的特殊动作。【关键词】 仿生六足机器人;STM32F103RBT6;舵机控制 目录1绪论1 1.1 课题研究背景意义 1 1.2 仿生六足机器人的现状1 1.3 本设计系统结构2 1.4 本论文的组织结构22肢体结构和步态规划3 2.1 肢体结构设计3 2.2 步态规划3 2.2.1 三角步态3 2.3 本章小结43硬件设计介绍与系统各部分工作原理5 3.1主控芯片STM32F103RBT6简介5 3.2 STM32F103RBT6最小系统电路5 3.2.1 主芯片原理图5 3.2.2 晶振电路6 3.2.3 复位电路6 3.2.4下载电路7 3.3 舵机原理与控制7 3.3.1 舵机内部结构7 3.3.2 舵机的工作原理7 3.3.3 舵机控制方法8 3.3.4 辉盛MG995舵机相关参数8 3.4 舵机驱动电路9 3.5 步进电机驱动电路9 3.6 蓝牙接收电路10 3.7 供电系统介绍10 3.7.1舵机供电10 3.7.2主芯片及其他电路供电10 3.8 本章小结104软件流程设计与开发工具介绍10 4.1 软件流程框图10 4.2 PWM脉冲信号的形成11 4.3 行走程序介绍13 4.4 蓝牙上位机设计14 4.5 蓝牙接收程序介绍15 4.6 舞蹈子程序介绍16 4.7 避障子程序介绍17 4.8 本章小结175设计制作与调试过程17 5.1 硬件电路设计17 5.1.1 原理图PCB电路与制作工艺设计18 5.1.2 PCB板的检测18 5.2 初步软件编程与调试18 5.3 调试过程中出现的问题186结束语187致谢19 参考文献20英文摘要21附录一:原理图22附录二:PCB图25附录三:实物图27附录四:器件清单28附录五:部分程序29基于STM32仿生六足机器人1.绪论1.1 课题研究背景意义机器人是集合了电子技术、机械技术、传感器技术、智能控制技术等于一体的高科技产品。各国现今大力的对它研究,研究机器人的水平在一定程度上反应了该国科技的水平。随着科技的发展,人们对机器人的需求也越来越高,人们希望机器人能在复杂环境中既具有高移动能力,又具有高可靠性。过去的机器人结构多为轮式结构,这种机器人只局限于二维平面的运动,对于那些崎岖不平以及有高度差的路面将失去灵活性,因此外形类似人类或昆虫的两足甚至多足机器人诞生了。仿生六足机器人是基于仿生学原理与电子技术相结合的足式机器人。和轮式或着履带式的机器人相比较,六足机器人自由度比较多、相对灵活、但结构复杂、控制繁琐1。由于六足机器人的腿部是离散结构,具有较好的机动性,它可以选择最优的立足点来实现自身的平衡,从而实现一些轮式或履带式机器人无法实现的工作,例如攀爬阶梯,横跨沟,坎等,即使在不平的路面,也能通过控制腿的伸缩使机身保持水平。由于以上的诸多特点,足式的机器人成为当今的科技研究热点。1.2 仿生六足机器人的现状 最近在国外科技会展上出现了一款基于仿生学的六足机器人。这款命名为“蟑螂”的机器能够模仿昆虫行走,有较强通过性。“MANTIS(蟑螂)”行走机器人是由名为micromagic systems的公司制造,驾驶舱内能够容纳一名驾驶员。MANTIS机器人模仿了六足行进模式的昆虫,六足机器人行走的时候腿分为两组,不断的重复脚抬高、前进、落下动作,抬起的三条腿正好连成三角形形状,这样就能够确保行走时的稳定性,这种行走方法速度比较慢,但是很适合在复杂的地形行走。图1-1MANTIS模仿昆虫行走模式由上海交通大学设计研发出的“六爪章鱼”救援机器人进行了载人试验。“六爪章鱼”由18个直流电机作为驱动,高度为1米,伸展时的大小能达到4米。它是通过远程控制,能够非常灵敏的向各个方向行走,速度最高能达1.2千米/小时,能载重200kg的物体。“六爪章鱼”吸引人的地方不只是它的外表,它的用途主要是用来救援和环境的探测,能够在核电站等具有高辐射的恶劣环境下工作,并且带着检测工具进入危险环境作业。同时该机器人还可在火灾、水下、地震灾区进行搜索救援任务。 图1-1 2013年5月上海科技 图1-2 2012年上海工博会,美 节上,小朋友体验六足机器人 女与机器人大跳“江南style” 1.3 本设计系统结构该机器人采用STM32为主控芯片,通过按键进行功能选择。当选择蓝牙控制功能时,机器人将通过蓝牙接收电路接收手机端发来的信号,主芯片对蓝牙信号进行处理,使机器人做出相应动作。当选择避障功能时,主芯片控制步进电机电路使步进电机带动红外传感器旋转,红外传感器对外部环境扫描并判断,反馈给主芯片,主芯片对红外传感器传来信息处理并控制舵机转动,使机器人产生相应动作。当选择舞蹈功能时,机器人将自动跳出有节奏的动作。手机蓝牙信号蓝牙串口接收功能选择按键 STM32F103RBT6 核心处理芯片光耦隔离驱动电路脉宽调制控制避障 红外传感器台式电脑电源供电18个MG955舵机方向控制根据红外检测、蓝牙遥控进行行走舞蹈等动作 步进电机图1-3 系统结构1.4本论文的组织结构第一章阐述课题的背景,课题的研究意义,国内外发展现状,并介绍了本课题的主要工作内容和系统框图。第二章介绍仿生六足机器人的步态规划,详细介绍三角步态的原理及机器人实现行走的动作控制,以及机器人的肢体结构。第三章详细的介绍了系统硬件的具体实现。把硬件部分一一的列举出来,并分析各个硬件的工作原理,引脚的连接。第四章介绍了软件开发工具和软件的具体实现方法。包括开发环境介绍,脉宽调制信号的生成,机器人行走的软件设计,蓝牙信号的接收设计等。第五章总结了系统的工作,以及对整个系统的展望。2.肢体结构设计及步态规划2.1肢体结构设计 一期方案:采用0.8mm铝板为肢体原料,通过铁皮剪刀裁剪出机器人肢体的各个部分形状,通过铁钉钻孔,螺丝固定,组装成肢体架构。此方案完全为自主设计,成本较低,但由于铝板较薄,硬度不够,负重能力较差,且铝板裁剪过程中难免存在误差,造成机器人灵活性下降。以下为采用方案一制作出的第一版机器人,仅能实现行走。 二期方案:在吸取方案一的经验教训后,对肢体结构进行改造,采用3mm的硬质支架,从而解决了由于支架造成的影响。 图2-1 方案一支架 图2-2 方案二支架2.2六足机器人步态规划2.2.1三角步态:为了实现六足机器人的平衡与运动,采用了三角步态的工作方式 。行走的时后将六条腿划分成两组,每组腿构成三角形,不断的重复着抬起、前进、放下动作,这样就可以保证行进过程的稳定性2。 六足机器人的舵机分布如图2-3所示,因为一足的运动需要3个舵机,根据六足的不同位置,将18个舵机进行命名,分别为头右1,头右2,头右3,中右1,中右2,中右3,尾右1,尾右2,尾右3,头左1,头左2,头左3,中左1,中左2,中左3,尾左1,尾左2,尾左3。 图2-3 舵机分布命名前进时每支腿的运动情况如下:第一步骤:头右2、尾右2、中左2抬起; 第二步骤:头右1、尾右1、中左1,前转,同时头左1、尾左1、中右1归位;第三步骤:头左2、尾右2、中右2放下;第四步骤:头左2、尾左2、中右2抬起;第五步骤:头左1、尾左1、中右1前移,同时头右1、尾右1、中左1,归位;第六步骤:头左2、尾左2、中右2放下;后退时每支腿的运动情况如下:第一步骤:头右2、尾右2、中左2抬起; 第二步骤:头右1、尾右1、中左1,后转,同时头左1、尾左1、中右1归位;第三步骤:头左2、尾右2、中右2放下;第四步骤:头左2、尾左2、中右2抬起;第五步骤:头左1、尾左1、中右1后转,同时头右1、尾右1、中左1,归位;第六步骤:头左2、尾左2、中右2放下;在需要左右移动时,没有选择螃蟹横移法,而是需要先转向,然后再前进或后退。左转时每支腿的运动情况如下:第一步骤:头右2、尾右2、中左2抬起; 第二步骤:头右1、尾右1、中左1,前转,同时头左1、尾左1、中右1归位;第三步骤:头左2、尾右2、中右2放下;第四步骤:头左2、尾左2、中右2抬起;第五步骤:头左1、尾左1、中右1后转,同时头右1、尾右1、中左1,归位;第六步骤:头左2、尾左2、中右2放下;右转时每支腿的运动情况如下:第一步骤:头右2、尾右2、中左2抬起; 第二步骤:头右1、尾右1、中左1后转,同时头左1、尾左1、中右1归位;第三步骤:头左2、尾右2、中右2放下;第四步骤:头左2、尾左2、中右2抬起;第五步骤:头左1、尾左1、中右1前转,同时头右1、尾右1、中左1,归位;第六步骤:头左2、尾左2、中右2放下;2.3本章小结 本章介绍两种方案的六足机器人肢体结构,经过实践后分析出两种方案的利弊,为后续研究提供可靠的硬件平台。其次分析了六足机器人的行走步态,采用模仿蜘蛛行走的三角步态,并针对基本的行走动作做了详细的分析。3. 硬件设计介绍与系统各部分工作原理4. 3.1主控芯片STM32F103RBT6简介STM32F103RBT6是一款中端32位ARM微控制器,该芯片是由意法半导体(ST)公司生产,其核心是ARM的32位Cortex - M3 CPU 。该芯片Flash大小是容量128K 。芯片集成了USB ,CAN ,有4个定时器,每个定时器都可以产生出4 路PWM脉冲,2个ADC ,SPI,I2C , USB , UART等3。内核:ARM的32位Cortex -M3 CPU ; 最高的工作频率为72MHZ。内存:闪存程序存储器128K字节。低功耗:睡眠,关机和待机模式,VBAT为RTC和后备寄存器。ADC:两个12位ADC ,1微秒转换时间(多达16个输入通道);转换范围为03.6V;具有保持和双采样的功能,含有内部的温度传感器。DMA :DMA通道有2个( 七个DMA1通道,5个DMA2通道),2 个DMA的控制器,51个I/O口,所有I / O端口映像到16个外部中断,几乎所有的端口可以容忍5V信号。支持外设定时器,ADC ,SPI,USB ,IIC和UART 。调试模式:串行线调试(SWD)和JTAG接口。计算单位:CRC计算单元,96个新一批的唯一代码。封装:ECOPACK封装。3.2 STM32F103RBT6最小系统电路最小系统电路由主芯片、晶振电路、复位电路、电源电路、下载电路、外部引脚外扩电路组成,各部分介绍如下:3.2.1主芯片原理图STM32F103RBT6有64个引脚,有PA、PB、PC、PD四组I/O口,其中定时器各个通道所对应的引脚为:TIME1_CH1:PA8 TIME1_CH2:PA9 TIME1_CH3:PA10 TIME1_CH4:PA11TIME2_CH1:PA0 TIME2_CH2:PA1 TIME2_CH3:PA2 TIME2_CH4:PA3TIME3_CH1:PA6 TIME3_CH2:PA7 TIME3_CH3:PB0 TIME3_CH4:PB1TIME4_CH1:PB6 TIME4_CH2:PB7 TIME4_CH3:PB8 TIME4_CH4:PB9STM32F103RBT6管脚排列如下: 图3-1 STM32F103RBT6芯片原理图3.2.2 晶振电路STM32共有5个时钟源,分别是:HSE时钟:高速外部时钟信号,本设计中采用8MHZ外部陶瓷晶振。HSI时钟:内部高速时钟信号,是由8MHz的内部RC振荡器产生的,能够作为系统时钟或2分频之后作为 PLL输入。PLL 时钟:内部PLL,能够倍频HSI、RC的时钟输出或着HSE晶体的时钟输出。LSE时钟:低速外部时钟信号,LSE的32.768kHz晶体是一种低速外部晶体或陶瓷谐振器4。它提供了 低功耗和精确的时钟源的实时时钟或其它定时功能。LSI时钟:低速内部时钟,LSI 的RC发挥低功耗时钟源的作用,它可以保持在关机和待机模式下运行。 LSI的时钟频率为40kHz左右(30kHz和60kHz的之间)。以下为HSE时钟和LSE时钟电路:图3-2 晶振电路3.2.3复位电路nRST 接主芯片第7脚,按动按键K1可使芯片复位,电路原理图如下所示: 图3-3 复位电路3.2.4下载电路STM32支持多种下载方式,本设计采用JTAG及串口下载两种方式,当使用串口下载时,PA10为RX,PA9为TX,需接RX232电平转换电路进行下载,下载软件采用mcuisp,下载方式选择DTR的低电平复位,RST高电平进BootLoader。当下载完成时应将BOOT0接地,此时程序才可执行。原理图如图3-4、图3-5所示: 图3-4 ISP下载电路 图3-5 JTAG下载电路3.3舵机原理与控制3.3.1舵机内部结构舵机内部包括小型直流电动机,齿轮组,一个可调反馈电位器,电路控制板。直流电动机的高速旋转,以提供原始动力并带动减速齿轮组,从而产生一个高输出扭矩,变速传动比大的舵机的输出转矩也越大,意味着越能承受较大的重量,但是转速也较低5。 图3-6 舵机的内部结构图3.3.2舵机的工作原理舵机是一个闭环的反馈系统,其原理可由图3-7表示:图3-7 舵机的工作原理图减速齿轮组是由电机驱动的,它的输出端有一个线性的比例电位器作为位置的检测,这个电位器会把转角所对应的坐标转换为成相应比例的电压并反馈给控制线路板,控制线路板将收到的电压信号同输入的控制脉冲信号进行对比,就会产生纠正脉冲,同时驱动直流电机正向或反向地转动,使齿轮组的输出位置与所期望的数值相同,让纠正脉冲逐渐的趋于零,通过这种方法使舵机达到精确定位的目的。63.3.3 舵机控制方法MG955舵机有3条引出的导线,分别是电源线、地线、和信号控制线,其中红色的为电源线,棕色的为地线,橙色的为控制信号线,电源线接5V电压7。 图3-8 标准舵机电源线和地线给舵机内部的直流电机和控制电路供电。电压范围为37V,本设计采用5V供电,由于该机器人共需舵机18个,每个舵机的驱动电流大约为200毫安到500毫安左右,18个舵机所需电流为2A到10A,因此给舵机供电电源应能提供足够的功率,本设计采用了台式电脑电源,保证了足够的功率。控制线要输入一个周期为20ms的方波脉冲信号8。 当方波脉冲的宽度发生变化的时候,舵机的角度就相应的发生改变,脉冲的宽度变化和角度的改变是成正比例的。MG955舵机的舵机信号控制图如图3-9表示。 图3-9 舵机信号控制图3.3.4辉盛MG995舵机相关参数结构材质:采用金属的铜齿 ,电机采用空心杯电机。连接线 :30CM,信号线(黄色)、电源线(红色)、地线(暗红色)。尺寸大小:40.7mm*19.7mm*42.9mm工作死区:4us重量 :55g转速和反应:无负载时速度为0.17秒/60度(4.8V时);0.13秒/60度(6V时)扭矩:13KG/cm工作电压:3.0V-7.2V温度范围:负30度到正60度。附件:、固定的螺钉、舵盘。3.4舵机驱动电路该机器人需要实现6条腿的运动,且各条腿能做出不同动作,每条腿需要3个舵机对其进行控制,因此要求舵机驱动电路能产生18路的pwm脉宽调制信号。由于我采用的主控芯片为STM32F103RBT6,该芯片有TIM1,TIM2,TIM3,TIM4四个定时器,每个定时器可产生4路pwm脉宽调制信号,这样一共可产生16路pwm。由于不足18路,所以我的控制方法是:腿部的12个舵机每个直接由一路pwm控制,而与机器人身体连接的6个舵机则采用74HC138分时复用方式,由一路pwm控制2个舵机。这样一共使用了15路的pwm,还剩1路未使用。为防止舵机对主控芯片的影响以及系统工作的稳定性,采用光耦对其进行隔离。每个舵机所对应的I/O口为: 头左1:PA8(PC8=0) 头右1:PA8(PC8=1) 中左1:PB6(PD2=0) 中右1:PB6 (PD2=1) 尾左1:PB7(PB5=0) 尾右1:PB7(PB5=1) 头左2:PB9 头右2:PA11 中左2:PB8 中右2:PA10 尾左2:PA2 尾右2:PA6 头左3:PA0 头右3:PB0 中左3:PA1 中右3:PB1 尾左3:PA3 尾右3:PA7其中PC8、PD2、PB5对舵机进行选择,当为高电平时选择右端舵机,当为低电平时选择左端舵机。以下是74HC1389复用电路及光耦隔离电路部分原理图。 图3-10 74HC138复用电路部分原理图 图3-11 光耦隔离电路部分原理图3.5步进电机驱动电路在避障过程中由于需要红外传感器不断的扫描外部环境,所以需要步进电机不断旋转,步进电机采用ULN2003A驱动,其中IN1接PC3,IN2接PC1,IN3接PC0,IN4接PC2。以下为驱动电路原理图:图3-12 步进电机驱动电路3.6蓝牙接收电路蓝牙模块采用英国CSR公司blueCore4-Ext芯片,遵循V2.1+EDR蓝牙规范,支持主从一体,支持SPI编程接口,内置8Mbit Flash,本模块为3.3V供电,其中使用的引脚为VCC、GND、RX、TX四个引脚。图3-13为蓝牙模块原理图。图3-13蓝牙模块原理图3.7供电系统介绍 本设计需要对18个舵机及步进电机供电,还有主芯片,蓝牙接收电路,红外传感等供电。需要有5V和3.3V电压。3.7.1舵机供电 由于18个舵机需要2-10A左右的电流,普通电池和7805稳压电路无法驱动,本设计采用废旧的台式电脑电源对机器人供电,台式电脑电源由市电220V经变压处理后得到5V电压,该开关电源最大负载电流18A,且电压平稳,非常适合给舵机供电。3.7.2主芯片及其他电路供电主芯片及其他电路需要3.3V供电,为了防止舵机对主芯片的影响,必须采用双电源供电,本设计采用7.4V航模锂电池,经AMS117稳压芯片降压为3.3V给主芯片及其他电路供电。3.8本章小结本章对硬件体系结构进行分解并逐一介绍,包括STM32F103RBT6芯片介绍,及最小系统原理图介绍,舵机的原理及舵机驱动电路介绍,步进电机驱动电路介绍,蓝牙接收电路介绍,供电系统的分析。4.软件流程设计与开发工具介绍4.1软件流程框图由于本设计中的机器人具有多种功能,因此采用按键进行模式选择,可选择的模式有蓝牙遥控模式、舞蹈模式、避障模式。以下通过流程图方式介绍软件的设计思路:开始 系统初始化否是否按键? 键值判断是Key3(PB13=0)Key1(PB12=0)Key2(PB14=0)蓝牙遥控功能 避障功能 舞蹈功能 图4-1 软件流程框图4.2PWM脉冲信号的形成脉冲宽度调制(PWM),是“Pulse Width Modulation”缩写,简称为脉宽调制,它是利用微处理器数字输出对模拟电路进行控制的一种有效的技术10。也就是对脉冲的宽度控制。STM32F103RBT6的定时器TIM1、TIM2、TIM3、TIM4都可以用来分别同时产生4路PWM,所以,STM32F103RBT6最多可以同时产生16路PWM输出。以下仅介绍TIM3的CH2产生一路PWM输出。其他路的PWM输出程序详见附件。要使STM32F103RBT6的定时器TIM3产生PWM输出,必须要设置3个寄存器来控制PWM。首先是捕获/比较模式寄存器(TIMx_CCMR1/2),该寄存器总共有2个,TIMx _CCMR1和TIMx _CCMR2。TIMx_CCMR1控制CH1和CH2,TIMx_CCMR1控制CH3和CH4。 图4-2 TIMx_CCMR1寄存器各位的描述该寄存器在不同模式下有些位的功能会不同,因此上图就把寄存器分成上下2层,第一层对应输出而第二层则对应输入。模式设置位OCxM是由3位组成的,一共能设置成7种模式,本设计是PWM模式,因此这3位要设置成为110/111。这两种模式的不同之处就是输出高低电平不同,一个是输出高,另一个是输出低。接下来,介绍捕获/比较使能寄存器(TIMx_CCER),这个寄存器是用来控制输入输出通道开关的11。该寄存器的各位描述如下: 图4-3 捕获/比较使能寄存器各位描述最后是捕获/比较寄存器(TIMx_CCR14),这个寄存器一共有4个,对应的分别是通道1到通道4。这4个寄存器都差不多,这里只介绍TIMx_CCR1,该寄存器的各个位描述如下:图4-4 捕获/比较寄存器(TIMx_CCR14)各位描述输出的模式下,该寄存器和CNT值相比,根据比较的结果产生相对应的动作。利用这点,我们只要设置该寄存器,就可能实现PWM的输出脉宽控制。到这里就把要用到的TIMx相关寄存器介绍完了,接下来就是如何达到设计的要求。要利用TIM3的CH2输出PWM来控制舵机,就要在软件上控制TIM3_CH2的PWM输出。以下介绍达到这个目的5个步骤:1)把PA7设置成为复用输出功能,打开TIM3的时钟。要使用TIM3,必须要把TIM3的时钟打开(通过设置APB1ENR),这里还要把PA7配置为复用输出,因为TIM3_CH2通道是以IO复用的形式连接到PA7上的,这里要使用复用输出的功能。2)设置TIM3的ARR和PSC。在打开TIM3的时钟后,要设置ARR和PSC这两个寄存器的值来控制输出PWM周期。这里要设置的PWM周期为20ms。3)设置TIM3_CH2的PWM模式。接下来,把TIM3_CH2设置为PMW模式(这里是默认冻结的),要通过设置TIM3_CCMR1相关的位来控制TIM3_CH2的模式。4)使能TIM3的CH2输出,使能TIM3。以上设置完成了以后,通过TIM3_CCER1设置来打开TIM3通道2的输出。通过设置TIM3_CR1来打开TIM3,是整个TIM3的总开关。配置好这两个寄存器后,就能在TIM3通道2上看到有PWM波的输出。5)修改TIM3_CCR2来控制占空比。经过了以上4步的设置,已经有PWM输出,但是其周期和占空比都是不变的,需要通过设置TIM3_CCR2来控制输出的占空比。其中高电平占空比时间为1ms到2ms才能使舵机转动。以下为PWM输出初始化部分程序:40/PWM输出初始化/arr:自动重装值/psc:时钟预分频数void PWM_Init(u16 arr,u16 psc) RCC-APB1ENR|=1CRL&=0X00FFFFFF;GPIOA-CRL|=0XBB000000; GPIOA-ODR|=1ODR|=1CRL&=0XFFFFFF00;GPIOB-CRL|=0X000000BB; GPIOB-ODR|=1ODR|=1ARR=arr;TIM3-PSC=psc;TIM3-CCMR1|=7CCMR1|=1CCMR1|=7CCMR1|=1CCMR2|=7CCMR2|=1CCMR2|=7CCMR2|=1CCER|=1CCER|=1CCER|=1CCER|=1CR1=0 x8000; TIM3-CR1|=0 x01; 设置好初始化程序后,只需在主程序里写入PWM_Init(14399,99);即设置了自动重装值和时钟预分频数,99是指预分频数为100,即PWM频率=72000/100=72Khz,周期为(14399+1)/72khz=20ms,以后只需令PA7=7201440即可实现舵机从0度到90度转动。4.3行走程序介绍通过4.2的介绍,我们知道只需要改变PWM脉宽就可以控制舵机。2.2已经介绍了前进时各个舵机的运动,本节通过软件设置各个舵机的PWM输出,以下截取前进子程序:其中720对应20ms脉冲周期内有1ms的高电平;1440对应20ms脉冲周期内有2ms的高电平,其他依次类推。/*前进子程序*void forword(void)while(1)/*头右2,尾右2,中左2抬起*PB9=1200; /头左2 /*头右2,尾右2,中左2放下* PB8=1440; /中左2PA2=1200; /尾左2PA11=720;/头右2PA10=960;/中右2PA6=720;/尾右2 delay_ms(250);/*头右1,尾右1,中左1前转,头左1,尾左1,中右1复位*PC8=1;PA8=920;/头右1PB5=1;PB7=920;/尾右1PD2=0;PB6=1240; /中左1delay_ms(100);PC8=0;PA8=1080;/头左1PD2=1;PB6=1080;/中右1PB5=0;PB7=1080;/尾左1delay_ms(250);/*头右2,尾右2,中左2放下*PB9=1200; /头左2 PB8=1200; /中左2PA2=1200; /尾左2PA11=960;/头右2PA10=960;/中右2PA6=960;/尾右2 delay_ms(250);/*头左,尾左2,中右2抬起* PB9=1440; /头左2 PB8=1200; /中左2PA2=1440; /尾左2 PA11=960;/头右2PA10=720;/中右2PA6=960;/尾右2 delay_ms(250);/*头左1,尾左1,中右1前转,头右1,尾右1,中左1复位*PC8=0;PA8=1240;/头左1PB5=0;PB7=1240;/尾左1PD2=1;PB6=920;/中右1delay_ms(250);PC8=1;PA8=1080;/头右1PB5=1;PB7=1080;/尾右1PD2=0;PB6=1080; /中左1 delay_ms(250);/*头左,尾左2,中右2放下*PB9=1200; /头左2 PB8=1200; /中左2PA2=1200; /尾左2PA11=960;/头右2PA10=960;/中右2PA6=960;/尾右2 delay_ms(250); 4.4蓝牙上位机设计机器人采用手机蓝牙遥控,上位机软件采用Google公司的一款Android程序云端开发工具: App Inventor。此款软件开发方式类似于VB,同样是在可视化界面添加控件,然后对控件进行编程。与VB不同的是此款软件的编程语言为Java,其编程特色就是采用搭积木方式组装程序,使编程变得简单易懂。以下是我设计的上位机控制界面:图4-5蓝牙上位机控制界面当按下select server按键后,手机将自动搜索附近可识别的蓝牙,并列表显示出来,我们选择机器人携带的蓝牙从机。然后按下Connect按键后将和机器人蓝牙从机建立连接,连接成功后将在中间的文本框中显示connect succeed。此时便和机器人建立连接,就可以对机器人进行控制了。以下为部分上位机程序:图4-6 上位机程序4.5蓝牙接收程序介绍蓝牙接收使用串口接收方式,由于STM32的RX和TX对应的I/O已用来产生PWM输出,不可再用作串口接收,本设计借用一片STC89C52芯片接收蓝牙信号,然后将接收到的信号转化为I/O口的电平变化,STM32通过读取52芯片I/O信号,从而执行相应程序。以下为52单片机蓝牙接收程序: #include #include #define uchar unsigned char12 #define uint unsigned int sfr T2MOD = 0 xC9; uchar tmp; sbit pA12=P15; sbit pB10=P26; sbit pB11=P27; sbit pC4=P14; sbit pC5=P25; sbit pC6=P33; sbit pC7=P34; sbit pC9=P35; /*程序初始化*/ void init() T2MOD=0 x00; T2CON=0 x00; TH2 = (65536-100)/256; TL2 = (65536-100)%256; RCAP2H =(65536-100)/256; /上面两个装满则系统会自动的重装 RCAP2L =(65536-100)%256; EA=1; /打开总中断 ET2=1; /打开外部中断方式2 TR2=1;/启动定时器2 void main() init();/*开启外部中断方式0*/ EX0=1;/开启外部中断方式0 IT0=1; EA=1; TMOD |= 0 x20;/ 定时器1工作在8位的自动重加载模式, 产生波特率 TH1 = 0 xFD;/ 波特率设置为9600 TL1 = 0 xFD; SCON = 0 x50; PCON &= 0 xef;/ 波特率不产生倍增 TR1 = 1;/ 开启定时器1 while(1) if(RI)/ 判断是否有数据来到 RI = 0; tmp = SBUF;/数据接收暂存 switch(tmp) case 0 x04: pC4=0;pC5=1;pC6=1;pC7=1;pC9=1; break; case 0 x05: pC4=1;pC5=0;pC6=1;pC7=1;pC9=1;break;case 0 x06: pC4=1;pC5=1;pC6=0;pC7=1;pC9=1;break; case 0 x07: pC4=1;pC5=1;pC6=1;pC7=0;pC9=1;break; case 0 x01: pC4=1;pC5=1;pC6=1;pC7=1;pC9=0;break; 13以下为蓝牙接收程序的流程框图:开始蓝牙遥控功能蓝牙接收初始化否是否收到蓝牙信号?是信号分析0X01停止0X05左转0X07后退0X04前进0X06右转 图4-7 蓝牙程序流程框图4.6舞蹈子程序介绍舞蹈功能是由多个动作组合完成,每个动作都有各自的程序,以下列举最经典的俯卧撑程序:void dunxia_qili(void)u16 pwmval1=1440;u16 pwmval2=720;u8 dir1=0;u8 dir2=0;while(1) delay_ms(10);if(dir1)pwmval1+;else pwmval1-; if(pwmval1=1440)dir1=0;if(pwmval1=1440)dir2=0;if(pwmval2=720)dir2=1;PA0=pwmval1;/头左3 PB1=pwmval2;/中右3 PA3=pwmval1; /尾左3 PB0=pwmval2;/头右3 PA1=pwmval1;/中左3PA7=pwmval2; /尾右3 PB9=pwmval1; /头左2 PA10=pwmval2; /中右2 PA2=pwmval1; /尾左2 PA11=pwmval2; /头右2 PB8=pwmval1; /中左2PA6=pwmval2; /尾右24.7避障子程序介绍以下为避障流程图:开始 避障初始化 前进否前方是否有障碍?是 步进电机右转90度机器人右转90度步进电机左转90度否是右方是否有障碍步进电机左转180度机器人左转90度步进电机右转90度否是左方是否有障碍 步进电机右转90度后退三步右转90度图4-8 避障程序流程框图4.8本章小结本章首先采用流程图方式对整个软件设计流程进行整体介绍,之后列举各个部分子程序中最具代表性的程序段进行介绍,包括对PWM实现所需寄存器设置的介绍,机器人实现行走的介绍,蓝牙上位机的介绍,蓝牙接收程序的介绍,避障程序的介绍,舞蹈程序的介绍等等。5.设计制作与调试过程本次毕业设计共分为三个阶段,首先是资料的收集与设计方案的确定,其次是硬件电路的设计制作,最后是软件的编写与系统的调试。5.1 硬件电路设计本设计包括最小系统板和扩展板,其中扩展板包括光耦隔离电路、74HC138复用电路、步进电机驱动电路、蓝牙接收电路、电源电路等。具体的设计步骤为:画原理图和PCB图、打印和热转印、腐蚀电路板、钻孔、焊接、硬件调试。5.1.1 原理图PCB电路与制作工艺设计原理图与PCB电路设计采用Altium Designer软件,由于原理图较复杂,引线较多,PCB电路都采用双层布线,线宽为信号线1mm,电源线和地线1.2mm,焊盘和过孔内径1mm,外径2.2mm14。其中STM32主控芯片,STC89C52芯片,电源芯片及部分最小系统元件都采用贴片形式,并且是双层板焊接,因此对焊接技术有很大的考验。5.1.2 PCB板的检测PCB电路板焊接后不能马上进行上电测试,如若马上上电测试则很容易由于焊接,或板的工艺使得电源与地之间短路,或是其他原因造成PCB电路板的烧毁。因此刚焊好的PCB板要经过较严格的检测。首先要对电源与地之间的检测,即用万用表检测电源与地之间是否短路。再者检测每个芯片的电源供电通路是否顺畅。在排除了这些问题之后,再给芯片烧录程序,检测每个模块的工作是否正常,如若不正常则还需对出问题部分的元器件进行一一排查直至PCB电路板正常工作。5.2 初步软件编程与调试软件编译环境为Keil uVision3.8,软件本身带有软件仿真功能,对设计带来很大的方便,在设计过程中,采用仿真来观察PWM脉冲信号,确保信号输出的准确性。在编译软件编译形成.HEX文件后,采用mcuisp烧录软件将程序烧录到STM32芯片中。蓝牙上位机软件开发环境为App Inventer,该软件是Google公司的一款Android云端程序开发工具。软件具有良好的开发界面,只需在开发界面上添加控件,并对控件编程即可下载至手机。5.3制作调试过程中出现的问题在一开始的设计思路中,为了提高每路pwm的利用率,采用了一路pwm分时复用控制一条腿上的三个舵机。此方案已经制成电路板并使用,但是在调试过程中舵机总是不断颤抖,机器人无法站立。后来分析其原因是:舵机分时复用时,当舵机没有信号输入,就没有反馈电压,此时舵机是不工作的,不工作的舵机就无法支撑起肢体。所以腿部的舵机不能采用分时复用。在吸收了此次经验后,我采用了腿部的12个舵机每个直接由一路pwm控制,而与机器人身体连接的6个舵机则采用74HC138分时复用方式,由一路pwm控制2个舵机。在一期方案的设计过程中,由于肢体过软,造成机器人行走缓慢,动作受到局限。为了制作出更完美的机器人,在吸取了一期方案的经验教训后,采用了二期方案。二期方案能很好的解决一期方案中的弊端。在机器人的供电问题上也是几经波折,首先选用航模电池经整流桥堆降压至6V后为舵机供电。此种方法只能为少数舵机供电,一旦18个舵机一起供电,就会电流不足使舵机无法精确可靠的工作。此时设计陷入了瓶颈,在一次偶然的机会看到了一个台式电脑电源,在研究后发现它可以输出5V电压,最大负载电流18A,正好能够满足18个舵机的供电要求。换上该电源后,各个舵机工作正常。由于成本的限制,只能采用精度较低的舵机,此舵机本身存在机械误差,即使给予精确的脉冲信号,都会与目标值存在误差,一旦舵机误差,进而造成肢体结构的误差,从而使每条腿负重不同,最终导致机器人失去平衡,这也是调试过程中存在的难点。由于这种误差是由舵机的精度问题导致,是无法避免的,因此在调试过程中只能尽量规避和减少误差。6. 结束语本次毕业设计历时3个月之久,虽说在大学四年里,有过不少的电子制作经验,也参加了不少的电子设计竞赛,但是本次毕业设计是我所有电子设计中难度最大,资料最匮乏,成本最高,研究时间最长的课题,可以说是对自我的挑战。深深的体会到要从一个机器人的门外汉到入门可不是一件简单的事情,光是肢体结构的方案一设计就耗费了近一个月的时间。为了实现本设计的控制,在此之前就自学了STM32,因为普通的51单片机无法担此重任。就是这么一个艰难的过程,导致最后的成果只实现了基本功能,但是机器人的研究是漫长而艰难的,短短的时间是无法达成理想效果。因此我会树立长久的研究目标,在以后的工作中,将继续深入研究机器人。7.致谢在此次毕业设计过程中,面临许多困难,也解决了不少问题,从中学会了不少新的知识。其中离不开老师与同学的支持和鼓励,是他们给予我信心,在我遇到问题沮丧的时候,是他们告诉我要坚持下去。在此不得不特别感谢我的指导老师XXX老师,从选题到制作过程都给予了我极大的帮助和建议,他是我见过非常富有责任心的老师,他思维独特,想法新异,非常富有创新精神,是他让我们的毕业设计有了新意。本次毕业设计已经接近尾声,由于自己知识水平有限,觉得作品完成得不是很完美,总感觉留有遗憾,也感觉愧对指导老师的关心指导。通过此次毕业设计,让我认知到自己那些方面不足,以后我会不断努力,争取做出更完美的六足机器人。这次毕业设计让我对电子设计的爱好有了进一步的提升,为以后工作留下了宝贵的经验和财富。参考文献:1 迟冬祥,颜国正.仿生机器人的研究状况及其未来发展J.机器人,2001,23(5).2 张秀丽,郑浩峻,陈恳.机器人仿生学研究综述J.机器人,2002,24(2).3 百度百科.STM32.http:/ 杨素行.模拟电子技术基础简明教程M.北京:高等教育出版社,2006,367.5 石爱平,杜玉杰.高校单片机实验教学系统的设计J.电气电子教学学报,2010,32(1):84-85.6 方龙,陈丹,肖献保.基于单片机的机械手臂控制系统设计J.广西轻工业,2008,第八期(总第117期):89-90.7 王永鼎,聂莉娜.基于模糊控制的智能竞速车舵机转向系统A.2010年中国人工智能学会智能检测 与运动控制技术会议论文集C.北京:中国人工智能学会,2010,8-20.8 吴华波,钱春来.基于AT89C2051的多路舵机控制器设计J.单片机及嵌入式系统应用,2008.9 余孟尝.数字电子技术基础简明教程M.北京:高等教育出版社,2006,177-178.10 刘军.例说STM32M.北京:北京航空航天大学出版社,2013,142-143.11 刘乾,孙志锋. 基于ARM的四旋翼无人飞行器控制系统J. 机电工程,2011,28(10):1237-1240.12 谭浩强.C程序设计M.北京:清华大学出版社,2005,204-217.13 唐颖.单片机原理与应用及C51程序设计M.北京:北京大学出版社,2008,146-153.14 江思敏,胡烨.Altium Designer(Protel)原理图与PCB设计教程M.北京:机械
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 医学现状


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!