基于STM32仿生六足机器人毕业设计.docx
- 文档编号:7039892
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:70
- 大小:2.78MB
基于STM32仿生六足机器人毕业设计.docx
《基于STM32仿生六足机器人毕业设计.docx》由会员分享,可在线阅读,更多相关《基于STM32仿生六足机器人毕业设计.docx(70页珍藏版)》请在冰豆网上搜索。
基于STM32仿生六足机器人毕业设计
基于STM32仿生六足机器人_毕业设计
毕业设计(论文)
基于STM32仿生六足机器人
学院:
电子与信息工程学院
专业:
XXXXXXXXXXXXXXXX
学号:
XXXXXXXXXXX
作者:
XXX
指导老师:
XXX
基于STM32仿生六足机器人
电子与信息工程学院XXXXXXXXXXXX专业
作者XXX指导教师XXX
【摘要】在科技高速发展的信息社会,机器人在工业,军事,探测等各个领域起着越来越重要和不可替代的位置,机器人研究成为目前世界各国研究的热点。
仿生六足机器人涉及仿生学、机械学、信息技术和传感技术等众多学科,是机器人研究的一大分支。
仿生六足机器人模仿生物界爬行动物的肢体结构,具有良好的机动性和自适应能力,在军事运输、矿山开采、星球探测等众多领域具有广阔前景。
本设计采用ARM内核结构(Cortex-M3)的STM32F103RBT6为主控芯片,通过内部定时器产生脉宽调制信号,以及使用74HC138进行分时复用来控制六足机器人的关节,即18个MG955舵机。
通过BMX-02蓝牙转串口模块连接手机和机器人,实现手机蓝牙遥控。
采用UN2003A电机驱动芯片驱动步进电机,并配合红外传感器使机器人实现智能避障。
由于该机器人拥有18自由度,肢体灵活,还可实现各种类似舞蹈的特殊动作。
【关键词】仿生六足机器人;STM32F103RBT6;舵机控制
2.2步态规划3
1.绪论
1.1课题研究背景意义
机器人是集合了电子技术、机械技术、传感器技术、智能控制技术等于一体的高科技产品。
各国现今大力的对它研究,研究机器人的水平在一定程度上反应了该国科技的水平。
随着科技的发展,人们对机器人的需求也越来越高,人们希望机器人能在复杂环境中既具有高移动能力,又具有高可靠性。
过去的机器人结构多为轮式结构,这种机器人只局限于二维平面的运动,对于那些崎岖不平以及有高度差的路面将失去灵活性,因此外形类似人类或昆虫的两足甚至多足机器人诞生了。
仿生六足机器人是基于仿生学原理与电子技术相结合的足式机器人。
和轮式或着履带式的机器人相比较,六足机器人自由度比较多、相对灵活、但结构复杂、控制繁琐[1]。
由于六足机器人的腿部是离散结构,具有较好的机动性,它可以选择最优的立足点来实现自身的平衡,从而实现一些轮式或履带式机器人无法实现的工作,例如攀爬阶梯,横跨沟,坎等,即使在不平的路面,也能通过控制腿的伸缩使机身保持水平。
由于以上的诸多特点,足式的机器人成为当今的科技研究热点。
1.2仿生六足机器人的现状
最近在国外科技会展上出现了一款基于仿生学的六足机器人。
这款命名为“蟑螂”的机器能够模仿昆虫行走,有较强通过性。
“MANTIS(蟑螂)”行走机器人是由名为micromagicsystems的公司制造,驾驶舱内能够容纳一名驾驶员。
MANTIS机器人模仿了六足行进模式的昆虫,六足机器人行走的时候腿分为两组,不断的重复脚抬高、前进、落下动作,抬起的三条腿正好连成三角形形状,这样就能够确保行走时的稳定性,这种行走方法速度比较慢,但是很适合在复杂的地形行走。
图1-1MANTIS模仿昆虫行走模式
由上海交通大学设计研发出的“六爪章鱼”救援机器人进行了载人试验。
“六爪章鱼”由18个直流电机作为驱动,高度为1米,伸展时的大小能达到4米。
它是通过远程控制,能够非常灵敏的向各个方向行走,速度最高能达1.2千米/小时,能载重200kg的物体。
“六爪章鱼”吸引人的地方不只是它的外表,它的用途主要是用来救援和环境的探测,能够在核电站等具有高辐射的恶劣环境下工作,并且带着检测工具进入危险环境作业。
同时该机器人还可在火灾、水下、地震灾区进行搜索救援任务。
图1-12013年5月上海科技图1-22012年上海工博会,美
节上,小朋友体验六足机器人女与机器人大跳“江南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-M3CPU。
该芯片Flash大小是容量128K。
芯片集成了USB,CAN,有4个定时器,每个定时器都可以产生出4路PWM脉冲,2个ADC,SPI,I2C,USB,UART等[3]。
内核:
ARM的32位Cortex-M3CPU;最高的工作频率为72MHZ。
内存:
闪存程序存储器128K字节。
低功耗:
睡眠,关机和待机模式,VBAT为RTC和后备寄存器。
ADC:
两个12位ADC,1微秒转换时间(多达16个输入通道);转换范围为0〜3.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.2STM32F103RBT6最小系统电路
最小系统电路由主芯片、晶振电路、复位电路、电源电路、下载电路、外部引脚外扩电路组成,各部分介绍如下:
3.2.1主芯片原理图
STM32F103RBT6有64个引脚,有PA、PB、PC、PD四组I/O口,其中定时器各个通道所对应的引脚为:
TIME1_CH1:
PA8TIME1_CH2:
PA9
TIME1_CH3:
PA10TIME1_CH4:
PA11
TIME2_CH1:
PA0TIME2_CH2:
PA1
TIME2_CH3:
PA2TIME2_CH4:
PA3
TIME3_CH1:
PA6TIME3_CH2:
PA7
TIME3_CH3:
PB0TIME3_CH4:
PB1
TIME4_CH1:
PB6TIME4_CH2:
PB7
TIME4_CH3:
PB8TIME4_CH4:
PB9
STM32F103RBT6管脚排列如下:
图3-1STM32F103RBT6芯片原理图
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-4ISP下载电路图3-5JTAG下载电路
3.3舵机原理与控制
3.3.1舵机内部结构
舵机内部包括小型直流电动机,齿轮组,一个可调反馈电位器,电路控制板。
直流电动机的高速旋转,以提供原始动力并带动减速齿轮组,从而产生一个高输出扭矩,变速传动比大的舵机的输出转矩也越大,意味着越能承受较大的重量,但是转速也较低[5]。
图3-6舵机的内部结构图
3.3.2舵机的工作原理
舵机是一个闭环的反馈系统,其原理可由图3-7表示:
图3-7舵机的工作原理图
减速齿轮组是由电机驱动的,它的输出端有一个线性的比例电位器作为位置的检测,这个电位器会把转角所对应的坐标转换为成相应比例的电压并反馈给控制线路板,控制线路板将收到的电压信号同输入的控制脉冲信号进行对比,就会产生纠正脉冲,同时驱动直流电机正向或反向地转动,使齿轮组的输出位置与所期望的数值相同,让纠正脉冲逐渐的趋于零,通过这种方法使舵机达到精确定位的目的。
[6]
3.3.3舵机控制方法
MG955舵机有3条引出的导线,分别是电源线、地线、和信号控制线,其中红色的为电源线,棕色的为地线,橙色的为控制信号线,电源线接5V电压[7]。
图3-8标准舵机
电源线和地线给舵机内部的直流电机和控制电路供电。
电压范围为3—7V,本设计采用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对舵机进行选择,当为高电平时选择右端舵机,当为低电平时选择左端舵机。
以下是74HC138[9]复用电路及光耦隔离电路部分原理图。
图3-1074HC138复用电路部分原理图图3-11光耦隔离电路部分原理图
3.5步进电机驱动电路
在避障过程中由于需要红外传感器不断的扫描外部环境,所以需要步进电机不断旋转,步进电机采用ULN2003A驱动,其中IN1接PC3,IN2接PC1,IN3接PC0,IN4接PC2。
以下为驱动电路原理图:
图3-12步进电机驱动电路
3.6蓝牙接收电路
蓝牙模块采用英国CSR公司blueCore4-Ext芯片,遵循V2.1+EDR蓝牙规范,支持主从一体,支持SPI编程接口,内置8MbitFlash,本模块为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),是“PulseWidthModulation”缩写,简称为脉宽调制,它是利用微处理器数字输出对模拟电路进行控制的一种有效的技术[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-2TIMx_CCMR1寄存器各位的描述
该寄存器在不同模式下有些位的功能会不同,因此上图就把寄存器分成上下2层,第一层对应输出而第二层则对应输入。
模式设置位OCxM是由3位组成的,一共能设置成7种模式,本设计是PWM模式,因此这3位要设置成为110/111。
这两种模式的不同之处就是输出高低电平不同,一个是输出高,另一个是输出低。
接下来,介绍捕获/比较使能寄存器(TIMx_CCER),这个寄存器是用来控制输入输出通道开关的[11]。
该寄存器的各位描述如下:
图4-3捕获/比较使能寄存器各位描述
最后是捕获/比较寄存器(TIMx_CCR1~4),这个寄存器一共有4个,对应的分别是通道1到通道4。
这4个寄存器都差不多,这里只介绍TIMx_CCR1,该寄存器的各个位描述如下:
图4-4捕获/比较寄存器(TIMx_CCR1~4)各位描述
输出的模式下,该寄存器和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输出初始化部分程序:
//PWM输出初始化
//arr:
自动重装值
//psc:
时钟预分频数
voidPWM_Init(u16arr,u16psc)
{
RCC->APB1ENR|=1<<1;
GPIOA->CRL&=0X00FFFFFF;
GPIOA->CRL|=0XBB000000;
GPIOA->ODR|=1<<7;
GPIOA->ODR|=1<<6;
GPIOB->CRL&=0XFFFFFF00;
GPIOB->CRL|=0X000000BB;
GPIOB->ODR|=1<<0;
GPIOB->ODR|=1<<1;
TIM3->ARR=arr;
TIM3->PSC=psc;
TIM3->CCMR1|=7<<12;
TIM3->CCMR1|=1<<11;
TIM3->CCMR1|=7<<4;
TIM3->CCMR1|=1<<3;
TIM3->CCMR2|=7<<12;
TIM3->CCMR2|=1<<11;
TIM3->CCMR2|=7<<4;
TIM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 STM32 仿生 机器人 毕业设计