




已阅读5页,还剩94页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
说明文档一、 机械部分:参考目前市面上的六脚仿真机器人,本课题选用5052铝合金作为机器人身架的主要材料,这样机器人既能满足强度要求,也能满足轻便性要求。同时,对外表进行烤漆处理,显得厚实而稳重,富有质感。如图为机械结构的总三维图:机器人整体上采用对称式结构,由六只脚和底架(身体)组成。每只脚有三个关节,每个关节处采用舵机连接,所用舵机型号为:HS-645MG,可在固定平面内旋转180。其中舵机1控制机器人脚前后摆动;舵机2控制机器人上下摆动;舵机3控制机器人内外伸缩。三个舵机配合即可实现机器人腿部在三位平面内的摆动。机器人身体、腿部均布满各种镂空图案,主要有三点作用:一、减轻机器人重量;二、增加机器人的美观度;三、作为安装和定位孔。机器人采用对称式结构,其主要尺寸大致为: 机器人全长:500.0mm; 底架(身体宽):228.0mm; 舵机1(Leg1)距底架最前方距离:60.0mm; Leg1与Leg2距离:195.0mm; Leg1与Leg3距离:390.0mm;每只脚上舵机2与舵机3距离:120.0mm; 舵机3与脚底距离:150.0mm。机械人详细尺寸,三维图和工程图详见打包文件 “三维图及二维尺寸图”,用户首先应该安装solidworks(2009及以上版本)三维制图软件。二、 舵机及其驱动控制:2.1舵机原理介绍舵机是一个通过输出轴的转动来控制物体转动的装置。它在特定编码的驱使下可以转动到工作范围内的任意给定位置。因为它的轻便,位置控制简易且精确,在机器人中使用尤多。多舵机的协调工作可满足机器人的多自由度要求。舵机可以实现0180的旋转,当轴处于正确位置时,舵机将停止运动;当所在位置不对时,电路则驱动电机运转到需求位置。舵机是采用比例调节方式控制速度。当舵机转动的距离大时,则加载在舵机上的能量就大,反之亦然。而舵机的转动角度控制是由加载在控制线上的脉冲周期完成的,即所谓的脉冲编码调制。舵机设定为每隔20ms接受一个脉冲,这样的话,实际脉冲长度就可用来控制舵机转动的角度。如图3.1,例如1.5ms的脉冲可使舵机转动90。2.2舵机控制由上述机械结构介绍可知,本六脚机器人是通过控制18个舵机来实现机器人的运动的。但如何协调好各舵机的动作,让其满足功能需求?这就需要用到舵机控制板。舵机控制板按控制舵机数目(接口数)的多少,可分为8路舵机控制器,16路舵机控制器,32路舵机控制器等等。考虑到成本以及控制舵机的数量,本课题采用两块16路舵机控制器串联的方式来控制舵机。选用型号为PARALLAX公司提供的Propeller Servo Controller USB(#28830,简称PSCU)。如图3.2所示:图3.2 舵机控制板PSCU具有下述多项特点:可串联两块控制板实现32路舵机控制; 独立的螺旋式接线柱为控制板供电,舵机则可通过开关控制关停; 其所用固件开放源代码; 可通过USB接口或者串行通信接口编程; 舵机速度可控。 PSCU规格及性能: 电源要求:逻辑电平5VDC60mA,4.87.5VDC控制舵机; 通信:异步串行通信2400bps或者38.4kbps(TTL或USB); 工作温度:32158F(070C); 尺寸:2.26x1.80x0.65in(57.3x45.7x16.5mm);2.3如何使用舵机控制板在使用控制板前,需通过螺旋式接线柱给控制板提供4.87.5V的直流电,同时为使舵机运动,还需给舵机提供5V的直流电。此项可通过USB接口(如图3.3)或者通过舵机控制板左上方的Serial In 处的杜邦针供电(TTL电平,如图3.4)。图3.3 PSCU-USB供电电路连接图图3.4 PSCU-主控制板供电电路连接图USB调试:安装FTDI VCP驱动(下载地址:/usbdrivers);安装PSCI软件(访问网址,并搜索28823)。双击软件图标,即可获得图3.5所示,连接好USB线,在界面上选择COM口,获取PSC版本,即可使用。图3.5 PSCI控制界面图中每个channel的进度条,可发现对应舵机会向相应方向发生一定度数的旋转。这可用来进行舵机控制调试,从而获取舵机位置值,来书写步态。注意:图中数据在编入ARM程序中时,应先除以2倍,才是实际数据,即图中的中心处1500对应实际的750。更多功能可参照PARALLAX公司提供的Propeller Servo Controller USB说明文档。当使用双块板时,其连接方式为:首先将主板的Serial In(两排,选上排)引出按高低电平信号线要求插在主控制板(STM32板)上,其中红色线接5V电源,黑色线接地,白色线接信号线,即PA9。然后将副板的Serial In(上排)引出插在主板的Serial In处(下排)。最后通上电源即可。了解了PSCI的基本功能,并按要求连接好电路后,首要做的就是将舵机位置的初始值找出。通过拖动进度条,并观察机器人各腿的位置,从而确定舵机初值。笔者提供的舵机初始值均为六脚与身体垂直时的值,且2、3关节夹角近似为90。对于要求的机器人的每一个动作值都可以事先用这个界面调试,观察机器人的位置并记下相应的舵机脉冲值以备编程时使用。另外,可以通过算法运算来标定各个舵机的角度值,详细请参考附录。2.4控制板程序编写 基本工作准备与注意事项:前述工作准备停当,即可开始程序的编写。PARALLAX公司提供的说明文档中提供了BS2程序,需要通过C语言转译,才可供ARM板识别。首先注意的是PSCU板的默认波特率为2400bps,所以在编写串行通信程序时,应将串行通信的波特率设置为2400bps(具体见4.4节关于USART设置的介绍)。当然本控制板亦可通过程序设置,将波特率改为38.4kbps,具体内容下面会介绍到。此外,控制板接收的异步通信数据格式要求还有,正相,8个数据位,无奇偶校验位,1个或2个停止位。其次控制板分为主副板,则对应的舵机控制通道号即为031;即副板的通道号再原号基础上加16即可。如果按序连接舵机,可使编程变得较为简单,通过简单的数学关系进行数据处理,但线路凌乱,看起来不是很美观;本课题采用的是对称连线,即选用通道号08,2331;当然,这样编程相对就复杂一些。最后关于主副板的界定还需提醒一句,由于硬件可能出现bug,实际上控制板可能通道号等没有按照说明书的来,在调试过程中,可多试几次,按照实际结果编程。本课题在调试过程中即出现了问题,实际的主副板是颠倒的,且必须将副板与主控制板(STM32)连接才可使用。通信协议规则:PSCU为用户提供了多种控制功能,但每种控制字符串均是以!SC开始,以0x0D结束,中间有间隔4个主控制字符,下面将一一介绍:位置命令设置舵机的位置控制字符串为:“!SC” 其中channel为通道号,即前述的031;ramp speed为一字节值,用于舵机转速控制,其变化范围为063,且数值越大,转速越小;lowbyte为舵机位置的低字节,highbyte为舵机位置的高字节。通过改变lowbyte与highbyte值即可改变舵机位置,其值变化范围为2501250。位置命令控制板最基本的命令,往往也是唯一用到的功能。通过此命令,可以实现舵机按要求的转动,从而满足行走等多功能要求。SBR设置波特率控制字符串为:“!SCSBR” 其中mode是用来设置波特率的,0代表2400bps,1代表38.4kbps。控制板的默认波特率为2400bps,无需设置,但如果需要使用38.4bps的波特率进行通信时,可使用该程序对波特率进行更改。RSP返回位置值控制字符串为:“!SCRSP” 其中channel为通道号。与VER?一样,需要进行输入输出的设置,方能返回位置值,这对编程很有用处,可以通过读取位置值,判断其是否到位来实现延迟,精确性较高。本课题未使用。读者可拓展功能。PSS设置软件口控制字符串为: “!SCPSS” 其中mode为0代表015;1代表1631。可能由于板子的问题,实际过程中并未起作用,当控制板没问题时,可以根据个人喜好设置控制板的端口号,为编程提供便利。PSD使端口无效控制字符串为: “!SCPSD” 其中channel为通道号。此功能与PSE功能配合使用,在适当时候可能才生意想不到的效果。PSE使端口恢复有效控制字符串为: “!SCPSE” 其中channel为通道号。此功能用于PSD后,用来恢复端口的正常使用。其余的功能控制命令此处便不再赘述,因为一般情况下无法用到。C语言程序编写简介:由于说明书中只提供了BS2程序,较难普及,需使用应用较广的C语言编写。从控制命令的格式可以看出,无论哪种方式,都是8字节的字符串,于是,可定义一个联合体(结构体亦可),来储存这一串字节:typedef union _SERVO_PACKET char stream8; struct char CR : 8; char B3 : 8; char B2 : 8; char B1 : 8; char B0 : 8; unsigned SC : 24; packet; SERVO_PACKET; SERVO_PACKET pac;并将三字节的SC初始化为0x215343或”!SC”,将CR初始化为0x0D。这样在编写各种控制命令函数时,只要改变B0B3的值即可。例,位置命令函数:void SendPacket(char RS, char Channel, int Position) int i = 0; pac.packet.B0 = Channel; pac.packet.B1 = RS; pac.packet.B2 = LOWBYTE(Position); pac.packet.B3 = HIGHBYTE(Position); for(i = 7 ; i = 0 ; i-) ser_putbyte(pac.streami); /该函数4.4节介绍,作用为发送单个字节 其中LOWBYTE()、HIGHBYTE()函数的定义为:#define LOWBYTE(v) (unsigned char) (v) #define HIGHBYTE(v) (unsigned char) (unsigned int) (v) 8)其功能为获取数值(位置值)的低八位与高八位。这即可为编程提供很大方便。以此类推,其它命令的函数可以根据需要只要参考上述的位置命令函数编写即可。在此基础上以及之前用PSCI软件调试出的舵机初始值,即可编写舵机初始化程序了。void Initservo(void) int i=0; for(i=0;iCRL=(GPIOD-CRL&(0x0000000F04)|0x00000003CRL=(GPIOD-CRL&(0x0000000F04)|0x0000000404其中第一行将PD1设置为推挽输出模式,第二行将PD1设置为浮空输入模式。在使用时,只需在程序前,加入一行DAT_OUT;或者DAT_IN来切换PD1输入输出。当书写其它I/O口的程序时,只需将GPIOD换成相应I/O口,如果端口号为07,则只需将右边的04改成端口号*4的积,例如PA0则为00,如果端口号为815,则需将CRL换成CRH,同时DR = (data & 0xFF); return (data); 函数二:int SendChar (int ch) USART_SendData(USART1, (unsigned char) ch); while (!(USART1-SR & USART_FLAG_TXE); return (ch); 上述两个函数的功能等同,在写程序时可以随意调用,例如3.4节提到的SendPacket()函数便调用了上述的函数一。接收一个字节u8 RByte(void) u8 out=0;while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) = RESET) /等待接收完毕 out = (USART_ReceiveData(USART1); /接收一个字节return out; 该函数用于接收单个字节,在无线通信时可用到。发送一个字符串void Print_String(u8 *p)/发送一串数据 while(*p) USART_SendData(USART1, *p+); while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) = RESET) 当连续发送的字符很多时,可以选用该函数以字符串形式发送。接收一个字符串void SerialIn(u8 *buf,u8 len) unsigned char i;for (i = 0; i CTRL &= 0xfffffffb; fac_us = SYSCLK / 8; fac_ms = (int)fac_us * 1000; fac_s = (int)fac_ms * 1000; 根据STK控制寄存器知,将02位设置成3,16位设置为1,则意味着:开启Systick功能、开启Systick中断、使用HCLK/8作为Systick时钟、上次读取本寄存器后,Systick已经数到了0;根据选用的时钟书写,调用时应写作delay_init(72);、可根据需要书写。然后书写延迟程序,以毫秒延迟为例:void delay_ms(int nms) /毫秒级延迟 u32 temp; SysTick-LOAD = (u32)nms * fac_ms; /load the time SysTick-VAL = 0x00; /clear the counter SysTick-CTRL = 0x01 ; /start the counter do temp = SysTick-CTRL; while(temp & 0x01 & !(temp & (1CTRL = 0x00; /close the counter SysTick-VAL = 0X00; /clear the counter 该程序即是指当计数到设定值后,Systick的第16位控制位会自动清零,从而使函数结束,停止计数,达到精确延时的目的。在实际应用中,当配置了延迟秒级的函数时,同样会出现问题,可能是计数器溢出,无法延迟到设定值,此时不妨将原先的函数分多段书写,例如如果需要延迟10s,可以写两行delay_s(5);STM32F10x处理器内部有4个定时器,其中TIM1为高级控制定时器,TIM2、TIM3和TIM4为3个独立的通用定时器。通用定时器是一个可编程预分频器驱动的16位自动装载计数器,适用于多种场合。通用定时器是完全独立地,它们可以一起同步工作。以配置TIM2为例,其程序如下:void TIM2_Configuration(void) TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_TimeBaseStructure.TIM_Period = 0xffff; TIM_TimeBaseStructure.TIM_Prescaler = 71; TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_Co
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 强筋健骨丸与钙片协同效应-洞察及研究
- 2023年公办幼儿园招聘合同制工作人员报名登记表
- 土木专业招聘试题模板及答案
- 专业眼科测试题及答案解析
- 基础俄语考研真题及答案
- 2025至2030中国零点夹紧系统行业项目调研及市场前景预测评估报告
- 销售基本礼仪培训
- 应急基础知识培训
- 党员生日活动策划
- 行政人事部年度工作总结计划
- 非财务人员财务基础知识培训
- 2025年一级建造师《通信与广电工程管理与实务》案例背诵本
- 2025年新版《煤矿安全规程》
- 2025年青少年法律知识竞赛试题库(试题及答案)
- DB42∕T 2130-2023 《林业生态产品清单》
- 分类管理理念下国有企业股权投资后评价体系的构建与实践
- 2025年合规专业面试题及答案
- 西畴殡葬管理办法
- 新生儿支气管肺炎护理查房
- 小学生意外伤害课件
- 银行外包人员管理办法
评论
0/150
提交评论