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

【经验分享】STM32智能小车控制舵机转向

[复制链接]
STMCU小助手 发布时间:2022-5-21 19:00
前言! r! Q. w: |" m8 X  ~# E
本文将带大家学习如何驱动舵机转向以及控制转向的角度值。8 B# r  R& U7 C

+ Q& _" [4 w$ A  B# m一、舵机简单介绍及接线方式* a- D2 X: d: }' M
信号线(黄线)红线(电源线)棕色(地线)
3 V. O/ K% ^- T4 p: U! r1 G1 w6 V舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
8 n# ]4 Z( o/ }, v  D0.5ms--------------0度;% d# a3 R2 b  H: t, u* d# l6 c* \
1.0ms------------45度;; |2 B( a; N* f8 M% Q
1.5ms------------90度;
/ r+ e( I- g0 F' T' C9 E/ Z2.0ms-----------135度;& y, @3 h- R* w; F
2.5ms-----------180度;
; ?$ C8 F7 {. g: Q; v$ e- v( u( o) C- p  `/ p* h' P' U3 i$ ]1 [
HR5~%RCO84IXG94_$DZLTMP.png
/ Z! `8 N6 |: N8 W$ [; T: Z) U* q) \: S; b5 }$ a# G
二、cubeMX配置9 N: g% K# B: c
前面我们说过舵机的控制一般需要一个20ms左右的时基脉冲,所以我们要将舵机的PWM的频率设置为50HZ。1 b. m8 ^( w4 y/ N$ z  K/ q! y
电机的驱动引角接到了PA8所以将cuebMX配置如下:
( t& T. }0 P  L- e
1 |& F1 h; }# k0 r' L  T Q~W@~AL(L]DG(ZLQG`U`N(L.png 3 u7 O' V; n* O, S% g/ y; v5 v0 a

) D! r  Z1 J2 D4 v6 M三、代码解析
3 k! ^8 H# r* b" p( i7 @SG90.c7 I, G# i- ^" _. |

  a, R3 Q! j- p  ~
  1. #include "SG90.h"
    ' w$ T2 F" e; `* t5 _2 `7 f

  2. ( t" C( C' ?, ^3 C
  3. extern TIM_HandleTypeDef htim1;# r  R. L6 k, L! d

  4. 2 ~  Y# d5 }8 Z4 a! Q6 `
  5. /*2 Z( f. U2 J# r- H) z7 r) P- i
  6. 函数功能:舵机初始化
    9 f/ o) L/ Y6 d8 V) e
  7. */
    - j- J% H2 r' i9 a
  8. void SG90_Iint(void)
    ; i! c5 ^  }- s2 c
  9. {8 B" u; g" }5 j  X: Y; J
  10.   HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);/ J: K" A" D; i4 w' Y  T
  11.   __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,50);
    % u3 V$ F, z, |5 E  d
  12. }6 E' t6 M4 m5 [7 f# h2 w2 _
  13. SG90.h( x( N& s) l: M& ]5 E- V- N
  14. /*1 D" j. \/ Z6 e9 X
  15. 函数功能:舵机角度设置$ n2 ~& I* @8 `5 Z
  16. angle:角度值 范围(0°~180°)" C4 s- n& P+ x# X. J& ^
  17. */. n( y( n# p" U* N/ j; r; Q
  18. void SG90_Set(int angle)7 ^* T- A' \8 b* W
  19. {
    + ]# n( q4 E& h( t# ?! n+ X
  20.   int PWM=10*angle/9+50;
    % o2 T  ~" @6 P  Q
  21.   __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,PWM);
    5 P; m! N: e* f, Z7 [- f' ?
  22. }
复制代码
  1. #ifndef _SG90_H_  S" J) D1 w% w
  2. #define _SG90_H_3 g) P7 c' G2 [" t! m
  3. ) I& ]& s/ L3 E* p- M# g- o5 F# _
  4. #include "main.h"
    # H3 H- W  {$ x3 n8 d: T

  5. 7 E, ?$ H& r& ^
  6. #define u8 unsigned char
    * w  w8 T* P: T0 P* v# W+ X7 V, J
  7. #define u16 unsigned short6 p! U& i! k3 h2 K2 p# T3 M" x
  8. #define u32 unsigned int
    ) g# X3 E. j. g) j$ q

  9. 0 n( n4 F0 q9 b6 f2 t, }
  10. void SG90_Iint(void);
    2 w, S" k; a' i& N" v* n
  11. void SG90_Set(int angle);
    3 p* F" f. S* b' q
  12. 4 S6 A6 V" Z3 |4 _5 [2 ?

  13. " h+ V: J' \, y$ ^( j! x) ]
  14. #endif
复制代码

$ K+ M, _4 r2 a7 ^总结
) P$ L) h- G) p* _本文简单介绍了舵机的使用方法,希望大家下去好好理解消化。0 R! F7 I1 Q1 c6 d0 o

% W$ K8 r( ?  m5 q, D5 x5 L
( Z% Z* h3 I$ |1 k/ O8 P2 s
赞 收藏 评论0 发布时间:2022-5-21 19:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

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