你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 HAL库控制数字舵机

[复制链接]
STMCU小助手 发布时间:2022-4-12 10:00
介绍
+ E7 ?$ a- v6 y5 Q数字舵机一般比较贵,数字舵机与模拟舵机的区别是前者在得到相应的脉冲后,会很清脆的到达固定的角度,不会产生异响;而模拟舵机则会在到达固定角度后抖动。# e0 k- E. Q) s2 r* [, i1 {! N

" Y/ b: O* B$ u. m2 T控制方法
5 Y" y9 y1 |  o( Z, J6 h/ Q数字舵机大多是是依靠PWM进行控制,舵机一个周期是20ms,给定固定占空比,则会转到相应的角度;例如让舵机转到90度的位置,那么20ms的周期内就是让低电平占1.5ms,这样就控制了舵机转到90度。对应如下表:# Q; |5 H4 P2 j$ W# f! s# L

3 o* Z4 b: u2 D1 G4 K6 l 20191109153738713.png + U! [3 S6 ~% F* ~, Z* w
4 q" H' V0 l$ l% k
所以我们的方法就是使用STM32单片机的定时器输出周期为20ms的PWM波,通过更改占空比值实现舵机的角度控制。通过上表可以得到一个公式:一度的占空比 = 1 / 90 * 角度 + 0.53 j. L* l; {+ s+ H( K. v
9 s$ _$ ]. L. A; j; H! _
STM32配置; g; Y( A  U1 `
这里我使用STM32F407VE,配置定时器3和PWM通道1,配置如下:0 _2 n/ P6 f6 @7 L4 v
4 K$ t% c; }# q) }, q) w
20191109154236469.png + b& G% t6 {( k; ~, J( `1 ]5 J# K
) x3 }% }. K$ o' E7 B9 J
定时器3的时钟主频是84M,这里我分8400频(8399+1),计数值200(199+1),3 F3 I3 v; ]1 O  M
所得到的定时周期时间就是:200 * 8400 / 84000000 = 0.02s = 20ms
+ I* V4 M  y$ jPWM的频率就是:84000000 / (200 * 8400) = 50HZ( s& \  u% H& U$ r. i
按照以上配置计算,那么上面的公式就要扩大十倍,变为:一度的占空比 = 1 / 90 * 角度 + 5" _! A" E$ A; W  e& p1 ?
转为代码就是:% C+ `, @& G( x. E0 u
  1. // angle:角度值,0~1806 r" _" U8 D( z, Z5 Z$ R" q) G
  2. void Servo_Control(uint16_t angle)
    1 o2 ~6 i4 g( R+ I2 P) ~
  3. {
    4 z' X2 X" i) o! |" f( [2 |
  4.    float temp;
    : o- g! T0 s6 T- m: H, ~, l
  5.    temp =(1.0 / 9.0) * angle + 5.0;//占空比值 = 1/9 * 角度 + 5
    - p4 W) k. F' J
  6.    __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, (uint16_t )temp);
    1 C/ P$ O% a6 F
  7. }
复制代码
6 z2 T/ F$ S+ q; |' _6 r$ h; b. r
通过该函数,就可以很方便的控制数字舵机转动了!
& J9 H0 p: T  r6 `/ i' d+ S( D1 Q- W2 p% K
注意:
" f% X4 R2 Q: ^5 _STM32CUBEMX生成的代码不是使能定时器,所以需要你手动添加下面一行代码使能定时器:
2 }- b$ }2 e' B: A- q! k+ T
1 f7 j1 k" _7 d
  1. HAL_TIM_Base_Start(&htim3);
复制代码
1 \' W6 }4 [1 [' v' ^+ A0 O) M
L]0W9O@0FFP8O(GDZX2Q~IP.png
$ V$ P5 n# l2 |) ^. a; {
/ ]1 l4 ^5 B4 u3 _' P8 y9 y  S+ G! ?4 D9 R5 }( N  w

% ]5 T% H# u  j; `3 Y1 l9 d+ v  m
7 |% {$ d6 r0 X( G2 r9 ?0 o5 d
赞 收藏 评论0 发布时间:2022-4-12 10:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版