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

STM32电机TB6612驱动

[复制链接]
STMCU小助手 发布时间:2022-8-21 17:00
一. TB6612驱动! A3 K+ q) M" ~4 @% @7 M( D' A
下图就是TB6612模块的详细原理图,这里只对如何使用进行讲解,不讲解其内部原理
" w( h  p3 X) R$ s2 ]' e8 J! M! G# x& ^. K4 }$ @* ^1 M" |
0a685e904e7d4316a72fb58925994d9f.png 1 e8 C5 R; ]; E* z

, N! Z' @- c5 F  r) ^0 m  T9 U1.可以同时驱动两个电机AB.2.PWMA/PWMB为两个电机提供pwm脉冲。
6 Y' T1 n( _0 w  f5 m3.AIN1/AIN2,BIN1/BIN2.控制电机的正反转和停止。8 L" m+ P$ c, E' K3 Y
ZT_9J]}TXU2BWW3JD3FXU)R.png " }/ c3 Q, M2 @( N

6 s( D; [9 D" p
6 Z7 u6 e, \& k) D8 f7 H7 A& j8 B4.STBY可以理解为一个使能端口,高电平有效。
# U/ Q2 r3 J) U  d. _使用方法为 : STBY高电平,提供pwm脉冲,设置A/BIN控制正反转。
3 w( K- Q. x8 U  q0 g; ~( H/ u/ K3 t! U8 E5 w
二. stm32代码实现
( p/ _8 U. ?& U. d1. 产生pwm脉冲
: b% m2 g( o% w可以通过定时器产生,通过定时器可以产生四路pwm信号,然后通过设置CCR的值来控制占空比以控制速度的大小(和呼吸灯差不多)。. G3 |. ^2 \: ~

- e6 M+ U; f8 e* [: D; {& i1 K
  1. GPIO_InitTypeDef        GPIO_initStructure; //输出pwm端口的GPIO初始化& }  E; O' F- G0 G
  2. TIM_TimeBaseInitTypeDef        TIM_TimeBase_InitStructure; //设置TIM定时器的相关参数,进行初始化, b. X  D" N* @8 z+ K9 S
  3. TIM_OCInitTypeDef        TIM_OCInitStructure; //但是定时器通道信息
复制代码

7 p, i& r4 Z7 l1 _* d" d1 S2. 初始化其他端口$ F3 O7 K7 z6 C6 J% V
剩下的端口就是普通的GPIO端口了,只需要对其进行初始化就可以了。
" {: t% Q0 X" C* Z2 W' S然后对TIM->CCR进行赋值就可以控制电机的速度了。
( {4 L5 ^# l) V5 F# X9 R
" Y% N$ t, S; L7 b, F5 \: f复用,JTAG失能等等这些根据具体的原理图来添加。
4 v9 s5 A( L( B* M* I. c4 k9 o0 K" N) p3 o& K
完整代码
% \+ N4 ^& V4 u, w% U, `* L1 v% ]& I2 L$ f6 S
  1. void pwm_init(void)
    ( g. p1 q# l- b' M
  2. {  @1 m8 @3 [. Z" N* E1 c
  3.         GPIO_InitTypeDef        GPIO_initStructure;4 L1 ?: G7 L" ?
  4.         TIM_TimeBaseInitTypeDef        TIM_TimeBase_InitStructure;
    7 t# k  M' A# c# o9 @: |8 a7 }
  5.         TIM_OCInitTypeDef        TIM_OCInitStructure;
    1 o; m; t# |8 B' j/ j7 y, f
  6.         $ f/ E0 J6 V7 Q6 V# `+ ]+ G
  7.         
    1 w" g# r; p' o$ j! G
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);" ], H# R* J3 }3 e# r! g9 o- U# ^0 R) f
  9.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
    + d) |' [) Z7 p$ @* r
  10.         : u/ \3 p) G7 o% k6 j2 K1 j
  11.         2 ~& v8 C6 m' {% o! C
  12.         GPIO_initStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
    + q1 C1 Y6 Y% u5 z
  13.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_AF_PP;2 U2 G; s0 j, r. \. |
  14.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
    9 ~* T  r& i3 o2 k
  15.         2 ~8 t2 Z4 O* r) t
  16.         GPIO_Init(GPIOA,&GPIO_initStructure);" e, D# d4 S7 I* V  r4 I0 v
  17.         
    ) S1 j* n9 M2 C) S9 u8 G
  18.         
    # w) f2 u) ]9 `  t2 m$ N/ m1 t
  19.         TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    ; l* I- {& i0 J- ~) d/ q! D
  20.         TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    # D& k4 f. I8 ?4 g, M3 j, V
  21.         TIM_TimeBase_InitStructure.TIM_Period = 7200-1;! W2 `- l$ u' P# G9 m
  22.         TIM_TimeBase_InitStructure.TIM_Prescaler = 0;9 ~+ s8 m+ N: j
  23.         
      U0 Q5 r# F; a% [
  24.         TIM_TimeBaseInit(TIM2,&TIM_TimeBase_InitStructure);
    ; |( P: e9 e( J0 S% Z6 w; W& J
  25.         
      i  s5 F8 y7 F8 r7 A! [3 w2 J
  26.         ; i; V, \1 c: }! H5 ]/ \3 x  _5 p
  27.         TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;! c0 P; r! ]. X) D: b0 U5 ~2 g5 @
  28.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;8 s2 |; s8 u: z& v/ a
  29.         TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
    1 r2 Y! B  F% `* v
  30.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    8 _# b# r2 x5 v- w1 B
  31.         TIM_OCInitStructure.TIM_Pulse = 0;
    2 [' ?3 S1 `! W! I: a. I8 M* B
  32.         ! Y) c! y; D. G
  33.         TIM_OC1Init(TIM2,&TIM_OCInitStructure);1 C, ?5 E1 p' {" H
  34.         TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);/ H! \7 J( N1 z5 n1 Q6 W
  35.         
    " F" T9 d6 E  R6 ~$ r
  36.         TIM_OC2Init(TIM2,&TIM_OCInitStructure);
    4 |& ~# N0 a! u
  37.         TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);
    7 l4 k' W& j7 d0 ]2 [* n6 m6 H
  38.         
    % F  P4 ^1 n' M! ?
  39.         TIM_ARRPreloadConfig(TIM2,ENABLE);
    ! p6 p: e' R# q
  40.         TIM_Cmd(TIM2,ENABLE);- r' e/ Z! C) p, [5 l3 l' ^
  41.         
    # X& H0 y6 ]& A4 e. [
  42.         1 |& G$ k6 X5 l! h
  43.         TIM2->CCR1 = 0;
    & X( t! R3 s6 B
  44.         TIM2->CCR2 = 0;
      T2 U: W4 `% T* Q, g! E
  45.         ! a- T. z4 u) p. P# ~, F0 Z
  46. }$ w( Y) R" C/ @) b
  47. % z- {) o1 u* v" L, X% U' Q4 K
  48. 2 l& f8 G/ C4 z" I* x8 C, @/ C

  49. # x) T% o- s! t" N4 [. N
  50. void driver_pin_init(void). W& |0 ^6 k% w0 L1 c# {8 p( B! I
  51. {
    2 f+ `1 l9 h6 A8 r
  52.         GPIO_InitTypeDef        GPIO_initStructure;4 {+ H( u0 m7 p, |/ T' F
  53.         $ w' }7 l6 h  R9 ]
  54.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);" G* v9 b+ h2 A
  55.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);; Q. ]/ a6 O9 _4 v; S% o+ S/ o
  56.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);. }, E9 H8 O, c/ N* D
  57.         
    # h# Q6 `3 y* d. _- K" v: N8 w
  58.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_Out_PP;8 ~2 I5 j# d2 M! \
  59.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;. e7 L1 ?2 v: Z
  60.         GPIO_initStructure.GPIO_Pin = AIN1_pin | AIN2_pin;4 g1 q& c- n, q' |# c4 Y, C1 S
  61.         
    ' b/ ]3 C. d( R4 l
  62.         GPIO_Init(GPIOA,&GPIO_initStructure);
    # {% ]& o" T, f& \) M1 p' C
  63.         ' ~' g( a- l/ N/ F
  64.                
    , E7 C, k7 J# ?6 `' ]
  65.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_Out_PP;8 J( }9 K4 `" Q- z/ I  J8 r% e3 B
  66.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
    0 u# N4 M/ W% {
  67.         GPIO_initStructure.GPIO_Pin = BIN1_pin | BIN2_pin;( i9 \  a- j* K$ J5 h7 k* g' p
  68.         1 R6 ?3 K8 ^+ N5 d! P2 N& M* d
  69.         GPIO_Init(GPIOB,&GPIO_initStructure);
    7 G) R* }) B* z' @6 Y& y* s
  70.         ! i) L, N# e9 E& M
  71.         
    8 l! k1 Z6 A# v4 H% Z: _
  72.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    7 A; M- C5 M& |
  73.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
    / M2 z" {3 c, H( r0 G$ e$ I8 @
  74.         GPIO_initStructure.GPIO_Pin = STBY_pin;
    % |8 y: X5 r6 }" Y* A
  75.         
    & |8 o  \7 B# O0 d! {! |% L0 i
  76.         GPIO_Init(STBY_port,&GPIO_initStructure);
    ! L( n) B9 ^+ Q- x
  77. / g1 ]# J% e5 E9 j" C4 C
  78.         
    ( C  u8 A( R6 Q
  79.         STBY_HIGH;
    4 o, Y3 l+ D/ P  t9 z2 o, N
  80.         " n1 \- D" L+ ~3 l1 o
  81.         AIN1_HIGH;
    * d% y7 g2 N: @: e( R
  82.         AIN2_Low;
    $ e3 ]9 \- k% M" Q' G
  83.         
    9 ?/ c0 K" ?0 X3 {; _
  84.         1 j: X+ J# c( M6 U. N
  85.         BIN1_HIGH;
    7 T- o7 t1 d3 k4 F6 k# b, w
  86.         BIN2_Low;6 N3 m2 x* C5 H$ ]: I
  87.           G, Q$ X3 M" o/ v6 i! r
  88. }
    ( h' G- Z& P% Z  |9 |7 B% p6 c
复制代码
9 U" |! B  D1 w' k$ ~3 V0 a
8 L: Y! w6 [& o  C
' Q( ?8 Q# u9 c) J

3 k5 p2 y6 f; G. [4 \" E
! d3 \' t/ H9 Z% e
收藏 评论0 发布时间:2022-8-21 17:00

举报

0个回答

所属标签

相似分享

官网相关资源

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