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

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

[复制链接]
STMCU小助手 发布时间:2022-5-21 19:00
前言5 j8 @2 J8 P5 R/ ]& t3 U% N4 ^$ z2 W) h
本文将带大家学习如何驱动舵机转向以及控制转向的角度值。
& l; n/ @$ g$ `6 ]1 O6 ]
; W6 }1 Z. ~! k2 y一、舵机简单介绍及接线方式' \( b; @1 j2 [* W& z
信号线(黄线)红线(电源线)棕色(地线)
4 Y* F, g$ r, L" ^0 i舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的:
- Y; U* J; H* A' }6 E5 f5 w0.5ms--------------0度;
$ s8 U3 L8 ]1 [. N- D/ U9 @1.0ms------------45度;  a8 f/ w9 [. p9 h/ q; V
1.5ms------------90度;; S! k6 x& n- F% q7 \
2.0ms-----------135度;
) K9 G; c) H( w. Q2.5ms-----------180度;* L. D: q( q$ M; B  J+ j
* r3 C1 N* p: c: N
HR5~%RCO84IXG94_$DZLTMP.png 4 S0 @+ k; N- H; V" {$ S

6 g: _$ f5 T0 Y* j2 U0 Z3 j二、cubeMX配置
  s1 a8 u7 b7 b" N0 v% V+ n前面我们说过舵机的控制一般需要一个20ms左右的时基脉冲,所以我们要将舵机的PWM的频率设置为50HZ。7 A% ^! v* A" j8 b: s5 H3 O
电机的驱动引角接到了PA8所以将cuebMX配置如下:0 e. }) G4 {" \' Q" J  C
1 l  K# a+ Q7 R9 k6 F
Q~W@~AL(L]DG(ZLQG`U`N(L.png , b3 A! l; ^6 E  ~& L7 e4 ]5 r7 c
" @0 L1 y2 N. J* m4 S
三、代码解析# I) T1 E& G2 \; y/ o  u
SG90.c
8 U& X0 [8 U3 h$ z$ k+ j7 R7 f" h1 W* g: \& B. }: x& J2 H
  1. #include "SG90.h"
    : F6 G/ A$ A! X5 F4 N

  2. 3 [. @/ B! Y; {/ h1 i
  3. extern TIM_HandleTypeDef htim1;
    $ f5 \& h" z+ E+ X
  4. - B8 O# s, y: d# r( {5 T1 ]2 {
  5. /*
    & S9 V. q( g* F( w7 t' n
  6. 函数功能:舵机初始化
    * }7 I8 m+ M  r7 p% S. r! P: _
  7. */- k8 D( t& J# |; V4 ^; X
  8. void SG90_Iint(void)/ k" ]$ y9 V5 q  h( O. W
  9. {
    $ W/ u( e0 N! }/ T  ?7 P3 z& H' P
  10.   HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
      V' {5 s: h5 E1 I. a& q8 p0 S
  11.   __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,50);0 B8 R1 I- j$ |5 _
  12. }- W# Z) I9 l9 t0 W5 l
  13. SG90.h! e6 }9 n8 S  w* _* I  x
  14. /*/ w' g7 ~$ I/ {* e2 U* m: f
  15. 函数功能:舵机角度设置
    ! p. Z: ?% w8 g& v, \! \$ m
  16. angle:角度值 范围(0°~180°)
    4 C/ g4 @9 ^# b( y, ]1 l# w. X
  17. */4 F: |5 p8 @( i+ \) F2 {: l
  18. void SG90_Set(int angle)
    , c7 _( o% c& m( G7 l( L' w
  19. {, X/ y3 q. w( x' n$ ^: ], t8 U+ \5 _
  20.   int PWM=10*angle/9+50;
    4 e! k, d8 |* `
  21.   __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1,PWM);
    % S: N7 T, [" _
  22. }
复制代码
  1. #ifndef _SG90_H_
    + t  F1 Q+ Y! a0 k: v6 h
  2. #define _SG90_H_1 n+ S- q: ~* K0 V: R0 F
  3. : D3 S, }- e4 r* c' H
  4. #include "main.h"+ n! n* Y( T3 X

  5. ! S. R  d0 @& k& B$ n6 ]& N
  6. #define u8 unsigned char
    ) c# n, D* r' }2 G1 `% U
  7. #define u16 unsigned short1 ^; A$ B) j$ l, d
  8. #define u32 unsigned int
    0 F  h+ l) `! }0 Q' H4 l

  9. 1 |0 |; {2 A$ {4 ]8 m/ {
  10. void SG90_Iint(void);
    2 H1 g7 T- L" a% Y9 t7 t  Y; N
  11. void SG90_Set(int angle);
    0 t. Y  W3 H5 R4 O' ?$ d! `5 A4 I
  12. 1 o4 I7 W5 `7 U

  13. $ B8 v- ^" h0 j# I$ c
  14. #endif
复制代码

/ C9 j. u: g6 B9 K总结
2 Q* ]; |. r; Y本文简单介绍了舵机的使用方法,希望大家下去好好理解消化。4 f4 Q6 ~/ Q  O2 |# y
% r' z$ P) N1 K/ J' ~! |; |# T' ^
3 ^* D. m! s# m8 F& t
收藏 评论0 发布时间:2022-5-21 19:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版