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

STM32电机TB6612驱动

[复制链接]
STMCU小助手 发布时间:2022-8-21 17:00
一. TB6612驱动' b- w9 ^, k3 h4 C7 u8 K% Z% \
下图就是TB6612模块的详细原理图,这里只对如何使用进行讲解,不讲解其内部原理5 Y# J* W3 x2 u. j- R0 \
* u, o  E! c8 n% Z6 @' A
0a685e904e7d4316a72fb58925994d9f.png 1 M4 N9 I+ d7 R  m

" r  V+ t; s7 I$ A' I8 N1.可以同时驱动两个电机AB.2.PWMA/PWMB为两个电机提供pwm脉冲。
' Y& k( u& L: g" ?( _9 B) D( L3.AIN1/AIN2,BIN1/BIN2.控制电机的正反转和停止。9 `) t# u2 J- \( N
ZT_9J]}TXU2BWW3JD3FXU)R.png 7 F  q% c7 M" N; d8 ?6 g! O
0 d/ c0 i8 ^0 u) k: z
: o& a) s+ B6 r! b5 P9 t3 n. [
4.STBY可以理解为一个使能端口,高电平有效。+ D3 l& a2 ]9 X9 }9 a- d
使用方法为 : STBY高电平,提供pwm脉冲,设置A/BIN控制正反转。
! ]) L" ?" z6 Y$ @( }3 J: _% f, r0 j  J; N7 L# C* u- ~: `! Y
二. stm32代码实现: H! D- ]. \+ C, [$ g6 N
1. 产生pwm脉冲) b3 I! {& B1 f) A4 ~6 z
可以通过定时器产生,通过定时器可以产生四路pwm信号,然后通过设置CCR的值来控制占空比以控制速度的大小(和呼吸灯差不多)。( s6 l# L( u9 x, S

, f& Q' |5 Q5 O* _9 B" B
  1. GPIO_InitTypeDef        GPIO_initStructure; //输出pwm端口的GPIO初始化7 p* c- J) ~$ W' V' `
  2. TIM_TimeBaseInitTypeDef        TIM_TimeBase_InitStructure; //设置TIM定时器的相关参数,进行初始化1 x# W$ j# x2 r7 A( n
  3. TIM_OCInitTypeDef        TIM_OCInitStructure; //但是定时器通道信息
复制代码
# `! K0 i& z. F# M9 p! _
2. 初始化其他端口
% ]& c8 l+ @5 T1 D4 d剩下的端口就是普通的GPIO端口了,只需要对其进行初始化就可以了。
7 d  F1 [: z- n% e* O然后对TIM->CCR进行赋值就可以控制电机的速度了。7 V6 e( S$ m6 f# f, I& F# m
8 R8 v" Y5 {3 I# A% T( Q: Z
复用,JTAG失能等等这些根据具体的原理图来添加。8 ^9 N# L5 H% X& U5 v
* K4 i& q7 {* i
完整代码
% ]6 X3 F. r) L5 j$ y7 a
) a# h4 s+ P$ Z* k7 C8 {
  1. void pwm_init(void)
    8 X- ~4 R7 M- ]1 j
  2. {
    + r! j! X; |" Q, R, n* J# ]+ C, r
  3.         GPIO_InitTypeDef        GPIO_initStructure;4 s0 w3 C: K* a' X3 R
  4.         TIM_TimeBaseInitTypeDef        TIM_TimeBase_InitStructure;- T7 f! ?2 n: U! o3 n
  5.         TIM_OCInitTypeDef        TIM_OCInitStructure;7 i) T7 H% t2 m4 ?
  6.         
    5 D6 S3 O/ g9 A! L( Y/ q* R0 D/ m
  7.         4 N' y, y+ w% b2 d) S2 P4 S2 L/ [
  8.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);
    & Y/ U* ^5 E/ [9 v0 P
  9.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);; {/ d: ^/ u1 z7 D* {' A! V) Z+ l) ?
  10.         
    8 f8 |2 _8 C* E3 u
  11.         0 H/ ]* N% F" @3 {5 ^5 n
  12.         GPIO_initStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
    4 u! g& n6 y- O
  13.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    ( {5 w( \, j, O
  14.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;& o" n7 l! ~3 A- K" @
  15.         , [8 J% ]7 ~( O8 s- q2 U: I
  16.         GPIO_Init(GPIOA,&GPIO_initStructure);# F; r; ?& Q+ P5 I! A4 N9 m
  17.         5 l$ S* h0 X1 Y, k: I
  18.         
    , i  J4 _' q% E* d1 Q* b9 W
  19.         TIM_TimeBase_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    ( [" G: \- m# ]+ N8 {; h5 W+ _! l
  20.         TIM_TimeBase_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;' @% P# m8 |! L" S+ n3 k+ e' s  {
  21.         TIM_TimeBase_InitStructure.TIM_Period = 7200-1;
    / i- A. _* w) S4 d" M% O; i8 W* |2 }8 m/ H
  22.         TIM_TimeBase_InitStructure.TIM_Prescaler = 0;
    - l6 N" ]5 U4 \' `4 R; f4 [
  23.         % u2 z7 H! M' u# d
  24.         TIM_TimeBaseInit(TIM2,&TIM_TimeBase_InitStructure);4 F9 E7 n7 k3 ~) e8 Y, y
  25.         " e3 t5 w+ Q6 V  j/ I/ w7 d
  26.         
    ! y4 s0 u# Y, c- F% y+ {+ L0 B. N+ g
  27.         TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset;9 V% F/ x9 k1 @$ z# K4 n  h# F
  28.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
    ' x  k$ G) m7 t8 i$ G
  29.         TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;5 _  \( o$ ~0 Z9 i# @4 b& {8 B
  30.         TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
    & {* g( N0 {% P. I" g4 \
  31.         TIM_OCInitStructure.TIM_Pulse = 0;
    " O0 ^; i& |; C+ v
  32.         
    . v7 a) H/ T; L$ E1 r9 u, I
  33.         TIM_OC1Init(TIM2,&TIM_OCInitStructure);$ c4 ^8 R# R5 P7 C7 Q' T* T
  34.         TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);
    " N, W7 f3 Y' x( t, x
  35.         & a, g0 y& S! p: G3 x
  36.         TIM_OC2Init(TIM2,&TIM_OCInitStructure);" w3 }* D7 N; b5 [) y
  37.         TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);
    4 ?6 u; I( [" V2 A  B
  38.         : O! B* r1 b  H* w& f& l. i! }! N
  39.         TIM_ARRPreloadConfig(TIM2,ENABLE);
    1 i1 ^+ g) c, _' u+ B, ^% K, ]
  40.         TIM_Cmd(TIM2,ENABLE);" y( q6 B8 d9 f( t  C1 U1 \: J
  41.         2 o0 E4 X8 j/ w% Z) d9 r) P+ G
  42.         ) b* d3 @1 ]0 w2 N6 B: @+ d
  43.         TIM2->CCR1 = 0;; P* F1 i( c  W9 L- ~1 g
  44.         TIM2->CCR2 = 0;8 U/ s: w1 m" e2 [+ y4 ~# M0 E
  45.         
    / H, ~1 Z1 f4 P3 s
  46. }+ |1 |9 r! J4 Y! z+ Y: H0 ]7 B

  47. 4 t, Y* D- m+ t1 Y$ V
  48. 1 m1 Q7 V' Y) S4 n5 Z
  49. 4 a- B4 g% y. G1 B6 R3 i
  50. void driver_pin_init(void), h" b5 o8 s) N: j
  51. {
    ! l! f2 ~3 ^) D: ]7 [( X, p
  52.         GPIO_InitTypeDef        GPIO_initStructure;
    2 |" k4 O* [0 q5 h2 Q: d
  53.         
    ! {% Q9 W5 j' J$ ]1 K# T/ U
  54.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB,ENABLE);% w0 C9 r$ \" G9 x) E! i
  55.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    ; |9 F$ Z! [- T/ w
  56.         GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
    # q0 j" i$ M( e) D. R$ x
  57.         4 a2 D+ f2 k# F2 V" @1 j8 F8 Y
  58.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_Out_PP;9 f. {+ t9 J8 q. l3 P
  59.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;3 A4 \7 z" [5 s
  60.         GPIO_initStructure.GPIO_Pin = AIN1_pin | AIN2_pin;
    ! b. i( C2 p3 g( x' i! W% v9 }
  61.         
    7 h9 b  s1 Y/ l* ?
  62.         GPIO_Init(GPIOA,&GPIO_initStructure);5 x  n0 L4 ^1 w( ~& E
  63.         - A3 M- h5 @9 X9 V, z/ D+ w
  64.                
    0 c1 Y% `5 g1 }  v# i
  65.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_Out_PP;$ i4 q7 w3 o, s, f
  66.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;, X8 D4 ~4 A3 [: e/ Q
  67.         GPIO_initStructure.GPIO_Pin = BIN1_pin | BIN2_pin;
    : L+ Z, v3 T8 I0 c: t
  68.         ; ^7 F* b' ^& M7 t
  69.         GPIO_Init(GPIOB,&GPIO_initStructure);" \5 W% ^' P( K" g9 j
  70.         
    $ i1 b; G7 G% J  v/ `& `5 O- ?
  71.         
    6 f$ {% p8 S$ e! T. P  V' d% q
  72.         GPIO_initStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    + |- p+ `5 g3 Z
  73.         GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;
    " _+ y7 [" H9 b7 O
  74.         GPIO_initStructure.GPIO_Pin = STBY_pin;: r+ H7 R# h4 N, v' f
  75.         3 x, F5 I, a+ ~: w: F1 _
  76.         GPIO_Init(STBY_port,&GPIO_initStructure);9 F2 Z  h$ [& L
  77. - Q2 t4 U: t# E  H! M
  78.         0 I* @5 ~* |7 U9 Q. D5 b" z
  79.         STBY_HIGH;
    & \8 [! [; l4 P# w3 S
  80.         
    ' W. k, }0 V0 @& T
  81.         AIN1_HIGH;' }2 G7 H1 U. [  L# T& i
  82.         AIN2_Low;
    - G) j0 I* a0 u# ?! v. i
  83.         9 D; c7 b6 ]% h% }. w# m
  84.         
    8 m: M7 ~% F+ J4 ~
  85.         BIN1_HIGH;
    ' _' f! l0 t+ s( R) Z: u, h. r
  86.         BIN2_Low;. q, d0 }" Y3 c# r1 l
  87.         
    9 H* ~4 D, U) J# Z- q& J
  88. }
    * g  O& w* A  L2 y' u; Z
复制代码
# L" ], c" b: E, a/ S
3 ~- a8 }  C6 C
/ O* _4 J# ]( i3 `

. m8 d) L! d* E$ Y6 {' W9 c- V2 U; r  ~, E: r8 O
收藏 评论0 发布时间:2022-8-21 17:00

举报

0个回答

所属标签

相似分享

官网相关资源

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