《7人形街舞机器人_多个舵机不同速率转动.docx》由会员分享,可在线阅读,更多相关《7人形街舞机器人_多个舵机不同速率转动.docx(11页珍藏版)》请在第一文库网上搜索。
1、多自由度人形双足舞蹈机器人多个舵机不同速率转动疯荒机器人开发系瓦T官网地址:https:/www.fengke.c1ub/GeekMart/su_fQ5NUtngs.jsp配套资料:https:/www.fengke.c1ub/GeekMart/su_fV1WzKsGQ.jsp配套视频:https:/www.fengke.c1ub/GeekMart/su_fBdB1yTUO.jsp购买地址:https:/www.fengke.c1ub/GeekMart/su_fQ5NUtngs.jspQQ群:457586268多个舵机不同速率转动1相关简介本章将介绍两个舵机的不同速率转动原理以及代码实现,多个
2、舵机不同速率的转动跟两个舵机的不同速率转动的原理基本一致。首先要知道的一点就是我们的舵机速率是一定的,不可控制。我们要完成两个舵机不同速率的转动,是采用了一个积分算法。其实就是延时,从而降低一个或者多个舵机的转动速率。我们先举个例子。假设1号舵机要从0转到180。,同时2号舵机要从0转到90。如果不做任何处理,那么当1号、2号舵机同时转到90时,2号舵机不转,1号舵机继续转动到180。这样就会导致机器人难以完成许多动作。假设舵机直接从0转到180的时间是t,那么2号舵机实际转动时间就是t2,暂停时间是t2o如果我们将整个时间t分成n份,每次先让舵机转动t2n,然后再暂停t/2n。当n足够大时,
3、我们的舵机就可以按照以原来二分之一的角速度匀速转动,从而达到控制舵机的转速。2硬件设计本次将要控制机器人的两条腿,也就是2、16号舵机,对应的IAP15W4K61S4单片机管脚是P15和P44,通过这两个IO口连接74HC244间接控制两个腿部舵疯壳-开发套件系列版权所有,盗版必究机。IY11V)181624;IA1IYIIY)1816M21I11V1146;IA1IV114IY3IV412X;1A4IY412IY497A1-592TI137225M2315:I53,A49Y434IG2G74HC244U2GXD图13软件设计软件方面,关于舵机的控制可以参考上一章节,这里只讲解积分算法。按照前
4、面所提及的例子,我们的时间份数n应该尽可能大,这样才会使舵机转动得更加均匀。但由于实际情况下,舵机的控制时间是2.5ms,那么分成的最小时间块的长度就不能小于2.5mso在本次代码中,我们设置一个动作完成时间(舵机从目前角度转到目标角度的时间,时间可以自己设置)是1s,那么时间份数,也就是积分次数就是NeedCount=1000*2/5(1000除以2.5)。每一次装载的PWM对应的角度为当前角度加上动作角度差的NeedCOUnt分之一,从而实现舵机的近似匀速转动。本次积分代码如下。voidDwmHandIeVaIue1oad(Void)(staticunsignedchardghNum=O;
5、用于加载新动作值intj;if(1sActionF1ishF1ag=1)完成目前动作计算下轮的NeedNum和Dpwm*/NeedCount=IC)OO*2/5;计算出下轮需要的积分次数for(j=0;jdghDataj)(Dp=dghNextDataj-dghDataj;Dpwmj=Dp/NeedCount;)if(dghNetDataONeedCount)(HaveCount=0;)if(NeedCount-HaVeCOUnt)17)判断一个动作是否趋近结束(switch(dghNum)动作结束加载新动作(case0:dghNum+;dghNetData1=2400;dghNetData2
6、=1500;break;case1:dghNum+;dghNextData1=600;dghNextData2=2400;break;dghNum+;dghNetData1=2400;dghNetData2=1500;break;dghNum=0;dghNetData1=600;dghNetData2=600;break;)for(j=0;j2;j+)(dghTimej=dghNextDataj;并且直接过度到目标位置IsActionFIishFIag=1;HaveCount=0;e1se(for(j=O;j2;j+)加载当前动作的下一组数据(dghTimej=dghDataj+HaveCou
7、nt*Dpwmj;)RunOverFIag=0;)代码14实验现象首先打开下载软件STC-ISPo*STC-ISP(V6.85D)(M*%0513-55012928)官网WWWSTCMCU.com(K*QQ8OO3751)-STC:M58.向WRMgitfiSMMF9Q大.30,材gwIgIh手I-,】仿山设片3,用闱小品颜搬序工作电图,.“ftWGfsu政小,1(*皿号com,1ftRHX200倒高麦特拿I“saw0OOOOJH即代科缓卑口打开程序文件&E却,U-M0维4乏JEFFE*r硬件选吻tww:4*加艺后任*ibi,暹*碗褊凉嬴欣鬲而丁S人用M1覃运行时的易率0592WiJ蹲*3赫大
8、辑=(121以上It议选择)Jf1WTft3t根,麻网,F3233刈/0才可Ftt悭序J上电宣位使用较长有J复位型用作“0口J九注*Bi复位辞幽中ftms2r一-6J最压8?挚止IIMCMft作蚪NYr给高工1tH218V上电亶位时由W付自幼的暂门狗gH2EXMnHB*I11111t源STCscsc5TCSTCscscsc3rIffff0050SBAIUTKMUOsm55-38ex2048531426528I6K20485K42655-38MKZMBJTK4?*55-332X204829K4255-3e皿204021K426SS-34K204B13K42*55-38SX2048SK425”38
9、ox2046IK42655-366112048IAr426cCrq0.CVAA*gITWI迎TZItwwwi1t/ammm6E5jJ号欠下凭曾麻斯条式目标文件H惮文件要化时自动东长并左送不低的2发布埃目步发命园9现电取本机盘号JHtB0OhfAA9图2(1)点击Kei1仿真设置,添加STC相关的头文件。STC的相关头文件路径是我们之前安装Kei1C51的路径,如果之前采用的默认路径,那么选择C盘Kei1文件夹。渝STC-ISP(V6.86函第笠电话:0013-55012928)官网:WwW.STCMCUDATACom东支持QQ:8000.10.回rf单片机型号1AP15W4K61S4|引蹴海/
10、瘫室/教材/招聘|串口助手KeiI仿真苫盍选星甚坦串口号C口9TM1最低波特率1400最高波特率1152起始地址,OxOOOO,清除代码缓冲区I打开程序文件面面清除EEPROM籍冲区打开三:可Fi:硬件选项脱机下载/U8/K:程序加密后传输ID4-|因选择使用内部IRC时钟环选为外部时钟)-*1输入用户程序运行时的IRC频率M333MHz.J振荡龄放大出益(12M以上建议选择)/使用快速下戮模式!J下次泠启动时,P3.2/P3.3为0/0才可下载程序回上电复位使用较长延时!/复位脚用作I/O口H允许低压复位黑止低压中断)文件到Kei1中I仿真器使扁印保区动到Kei1中J0一褊唯片设置单片机型号
11、:STC8A8K64S4A123TC6CTei将所选目标单片机设置为仿真芯片电脑RXDTXDP3.0TXDGND5时心尸行连接单CPURS232仿真目标CPUP3.1嚏双点击此页面中的“添I下载/编程停止I重复辘二I富I1i翳翻器制PWM波形发生器I检测MCU选项II注意/帮助重复延时返国每次下载前都重新装载目标文件日当目标文件变化时自动装载并发送下载命令发布项目程序;发布项目帮助I读取本机硬盘号|区1提示音成功(2)添加完STC相关的头文件,点击弹窗中的确定。粉STC-ISP(V6.86G)(销告电话:0513-55012928)官据:WwW.STCMCUDATAxom(技术支QQ6000一
12、。一回汉单片机型号IAP15ffK61S串口号M93弓喇Auto。赛/实验妄/教材/招聘I串口助到KeiI仿真设置逊国比3(最低波特率(!画起始地址0x0000最高波特率115200仿真器使用说明STC8/STC15系歹I仿真芯片设置,清除代码缓冲区0xbc清除EEPRo俯阿冲区硬件选项脱机下载u8r程序加,选择使用内部IRC时钟小选为外i输入用户程序运行时的IRC频率M/振荡器放大增益(12M以上建议选:,使用快速下载模式下次泠启动时,P3.2/P3.3为0/0N回上电复位使用较长延时M复位脚用作I/O口国允许低压复位震止低压中断)单片机型号:STC8A8K64S4A12j打开程序文件一P3.0可迪视点击此页面中的储4、仿真目标CPUP3.1TXDRXDGNDI下载iJ重复编程I检测MCU选项11注意/帮助重复延时史0每次下载前都重新装载目标文件当目标文件变化时自动装载并发送下载命令饕疆慰蜃暑期白制P礴形发生器发布项目程序发布项目群助I读取本机硬盘号也提示音成功(3)设置单片机的型号、最低波特率、最高波特率如下图所