找回密码
 注册
关于网站域名变更的通知
查看: 180|回复: 0
打印 上一主题 下一主题

【疯壳·机器人教程8】人形街舞机器人-多个舵机不同速率转动

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-8-25 13:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
多自由度人形双足舞蹈机器人
——疯壳·机器人开发系列
多个舵机不同速率转动
# l& F; L# C2 I: G. X
8 v7 e- i/ `7 n  l9 F

" s- h/ o5 X1 e8 y
7 x' v0 K  {/ G' G; K    1相关简介$ p, ^' i/ P0 s: V0 P( Z, Y  ^& l' Z
  U3 N+ {( J( H5 n5 c
    本章将介绍两个舵机的不同速率转动原理以及代码实现,多个舵机不同速率的转动跟两个舵机的不同速率转动的原理基本一致。( }9 a$ v+ N0 L. C3 l
    首先要知道的一点就是我们的舵机速率是一定的,不可控制。我们要完成两个舵机不同速率的转动,是采用了一个积分算法。其实就是延时,从而降低一个或者多个舵机的转动速率。
9 G( e6 w, L' ^. M2 p" o    我们先举个例子。假设 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 足够大时,我们的舵机就可以按照以原来二分之一的角速度匀速转动,从而达到控制舵机的转速。5 z: D0 R( T, I( E) i% N5 K
    2硬件设计
2 ]: k0 M0 U* f* x    本次将要控制机器人的两条腿,也就是 2、16 号舵机,对应的 IAP15W4K61S4 单片机管脚是 P15 和 P44,通过这两个 IO 口连接 74HC244 间接控制两个腿部舵机。% D' O3 C" c7 Q* j' P

2 i& x( I) K/ V) ]0 e+ t0 R$ I* g     3 w9 @% k# ]1 C; Z, t, {6 Z# E9 p
    图 1% b' T2 P7 K( [* L5 a& ?; w
    3软件设计/ j' ~4 I- r5 {6 o$ }2 v
6 ^* Z8 P- J$ z# I/ q2 C+ X- O
    软件方面,关于舵机的控制可以参考上一章节,这里只讲解积分算法。按照前面所提及的例子,我们的时间份数 n 应该尽可能大,这样才会使舵机转动得更加均匀。但由于实际情况下,舵机的控制时间是 2.5ms,那么分成的最小时间块的长度就不能小于 2.5ms。
/ m6 G1 p& E# o# X8 l: g: n    在本次代码中,我们设置一个动作完成时间(舵机从目前角度转到目标角度的时间,时间可以自己设置)是 1s,那么时间份数,也就是积分次数就是NeedCount = 1000*2/5(1000 除以 2.5)。每一次装载的 PWM 对应的角度为当前角度加上动作角度差的 NeedCount 分之一,从而实现舵机的近似匀速转动。6 {9 k4 P# F6 z
    本次积分代码如下。$ Q( X. N  M/ H4 @- p% e. e

2 ?; Y1 s7 z1 l5 c; f $ X, o4 `" Y# q
4 b, Z9 A0 ^7 n! O0 y" i" G: Q1 T
   
8 [( m# {7 U& r3 J  O    代码1) {3 d$ P: b0 f6 x7 r
    4实验现象
; G. K0 o2 H! ]1 i
% {& Q( C6 f1 t7 ~$ S    首先打开下载软件 STC-ISP。
* r2 J3 _4 p; s" {; _5 N: R. e+ O9 i" W& O! j% Q
   6 F7 O% V9 \1 D6 E0 I! s; n
    图 2& _9 K  y0 w$ W( Z; [
    (1)点击 Keil 仿真设置,添加 STC 相关的头文件。STC 的相关头文件路径是我们之前安装 Keil C51 的路径,如果之前采用的默认路径,那么选择 C 盘 Keil 文件夹。
% [2 D9 X& H+ k% Q6 W7 y
0 {9 D4 g# x* \" {! c    
! m) ?4 `+ a, W3 `* h! _$ G3 X1 g    图 3: R6 K2 I0 e/ j9 `9 n) v
    (2)添加完 STC 相关的头文件,点击弹窗中的确定。  d) I0 w0 w4 l8 }

5 `' \9 f1 @, B+ `- r; L7 e4 ^: d            
6 q$ K5 C# `' V2 C. X    图 44 T/ a5 `6 f0 ^( ], L- L" d% N
    (3)设置单片机的型号、最低波特率、最高波特率如下图所示,硬件选项等选项默认即可。串口号根据实际情况选择。9 @( ^0 y$ |; \& |) a

7 |  B( Q+ R+ f, o6 a    6 n) m9 `+ R8 v. {5 W3 B& {
    图 5
* E/ l( S4 M6 f8 i' `  k# x    (4)点击打开程序文件,选择我们例程中的.hex 文件。
& k* A# G7 L/ l  v8 L4 A9 L! y6 M6 h8 n2 `
    4 a& t, Q# P! Y, G, I
    图 6
& D* Y" j- V: k6 H    (5)点击下载/编程,下载代码。
$ L8 L1 _3 a6 q! l* A" F: s- S, w+ P: d& R) `+ G0 i& w1 `$ K$ W" M
          
/ A8 F+ y* Q, U) g+ R    图 7
6 k, P' _  G6 t2 U; a9 |& m4 j# E
    (6)按一下电路板上面的 RST 按键,完成下载。, X3 f" o; R+ G% g4 M1 g* M9 }/ `
2 l8 u) G2 p4 o, Q, k0 h
   
, |% w3 x5 c8 f9 |    图 8
  x$ [5 Q& d4 V; F1 r: T& ^# {8 F$ K  f
    代码下载完成之后,打开机器人的电源开关,运行代码,就能看到我们的机器人的两条腿以不同的速率上下摆动。
1 |+ G2 H& Y9 d; i* ^& ]3 W6 O( Z8 M
% l$ U$ g: b+ F5 l# m' w- J5 ^. W9 t# M' o: K0 a1 Q* f" x

7 o4 b+ n6 g) I& |& _6 Z* b
! z' d! g9 {0 K5 S    文件下载请点击: 7_多个舵机不同速率转动.pdf (1.02 MB, 下载次数: 0) / u* O" d/ ]" F$ O. u1 l/ `
$ ]! p! t( R2 C7 y) k$ m1 S
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-13 00:01 , Processed in 0.171875 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表