完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
多自由度人形双足舞蹈机器人 ——疯壳·机器人开发系列 多个舵机不同速率转动 1相关简介 本章将介绍两个舵机的不同速率转动原理以及代码实现,多个舵机不同速率的转动跟两个舵机的不同速率转动的原理基本一致。 首先要知道的一点就是我们的舵机速率是一定的,不可控制。我们要完成两个舵机不同速率的转动,是采用了一个积分算法。其实就是延时,从而降低一个或者多个舵机的转动速率。 我们先举个例子。假设 1 号舵机要从 0°转到 180°,同时 2 号舵机要从 0° 转到 90°。如果不做任何处理,那么当 1 号、2 号舵机同时转到 90°时,2 号舵机不转,1 号舵机继续转动到 180°。这样就会导致机器人难以完成许多动作。假设舵机直接从 0°转到 180°的时间是 t,那么 2 号舵机实际转动时间就是t/2,暂停时间是 t/2。如果我们将整个时间 t 分成 n 份,每次先让舵机转动 t/2n,然后再暂停 t/2n。当 n 足够大时,我们的舵机就可以按照以原来二分之一的角速度匀速转动,从而达到控制舵机的转速。 2硬件设计 本次将要控制机器人的两条腿,也就是 2、16 号舵机,对应的 IAP15W4K61S4 单片机管脚是 P15 和 P44,通过这两个 IO 口连接 74HC244 间接控制两个腿部舵机。 图 1 3软件设计 软件方面,关于舵机的控制可以参考上一章节,这里只讲解积分算法。按照前面所提及的例子,我们的时间份数 n 应该尽可能大,这样才会使舵机转动得更加均匀。但由于实际情况下,舵机的控制时间是 2.5ms,那么分成的最小时间块的长度就不能小于 2.5ms。 在本次代码中,我们设置一个动作完成时间(舵机从目前角度转到目标角度的时间,时间可以自己设置)是 1s,那么时间份数,也就是积分次数就是NeedCount = 1000*2/5(1000 除以 2.5)。每一次装载的 PWM 对应的角度为当前角度加上动作角度差的 NeedCount 分之一,从而实现舵机的近似匀速转动。 本次积分代码如下。 代码1 4实验现象 首先打开下载软件 STC-ISP。 图 2 (1)点击 Keil 仿真设置,添加 STC 相关的头文件。STC 的相关头文件路径是我们之前安装 Keil C51 的路径,如果之前采用的默认路径,那么选择 C 盘 Keil 文件夹。 图 3 (2)添加完 STC 相关的头文件,点击弹窗中的确定。 图 4 (3)设置单片机的型号、最低波特率、最高波特率如下图所示,硬件选项等选项默认即可。串口号根据实际情况选择。 图 5 (4)点击打开程序文件,选择我们例程中的.hex 文件。 图 6 (5)点击下载/编程,下载代码。 图 7 (6)按一下电路板上面的 RST 按键,完成下载。 图 8 代码下载完成之后,打开机器人的电源开关,运行代码,就能看到我们的机器人的两条腿以不同的速率上下摆动。 文件下载请点击:
7_多个舵机不同速率转动.pdf
(1.02 MB, 下载次数: 2
)
|
|
相关推荐
|
|
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
852 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
592 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
705 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
926 浏览 2 评论
657 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12005 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 23:35 , Processed in 0.545668 second(s), Total 63, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号