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

【经验分享】STM32F0单片机 PWM + ADC 控制有刷电机

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
有刷电机驱动电路* ~" O  L5 D: L, b8 m
有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。
1 _! ]! f8 O: \' F
) w) h0 z8 W) f8 A& M7 [在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。
( K% y" q" ^$ U! D1 H8 {3 m
4 ?8 N* d2 w7 k6 C7 @
20201229152425486.png
/ G4 T" D/ e0 T# i# t6 R: ]6 w1 E

0 Q& D- V+ M# }& V) e下面是两种 MOS 的典型用法。P 沟道的 MOS 一般 S 接电源正极,然后 Vgs 需要一个负电压来打开电流通道,而 N 沟道的 S 极一般接电源的负极,Vgs 需要一个正电压来打开电流通道。
- k( J  V: \2 e9 D% t9 s3 i+ G! D3 |6 J2 O( x$ ?( a0 z
20201229152425562.png
3 w4 C" g/ p$ C+ Q, p( j
3 q) E) \' ~0 m% J, ^6 Q& r3 o

. x3 f0 [0 N8 {$ ~4 g0 v" q
20201229152425807.png

+ z% k% I3 E" @* E6 l/ q! r
  U# x! ]1 K) M9 ?. b3 v
/ n0 n& ]/ J6 ?/ X; |# z( Y资料来源于 IOR 公司数据手册
! {0 h  O, v2 G1 f4 P5 ?1 M
. n, y% ]% A% O2 ?/ Y我们先从一个最简单的驱动电路开始。单片机控制 MOS 管栅极为高时,电流从电源经过电机和 MOS 管到地。当栅极为低时,MOS 管断开,此时电机线圈内的电流继续通过续流二极管回流电机的正极。我们通过调节栅极控制端的PWM占空比,就可以控制电机的转速。
% U9 T* [9 N: ?1 g; u) A
" g! a) B7 d5 l9 }
20201229152425648.png
6 M8 }( [/ k9 U( @/ y

$ f5 r" {0 ?  A1.TIM模块6 P- T  w8 E5 w; u
TIM 模块最重要的三个寄存器是:
3 l: P; A# h: _1 n1 a: W" k1 _8 `8 J3 Z' V
Counter Register (TIMx_CNT) 计数寄存器3 j* a( k- [% M) Q- L' S. E' k( d
9 p# Q' T- C, c2 W0 K$ c/ H
Auto-Reload Register (TIMx_ARR) 重置寄存器
0 E! E/ u" m9 S; u+ {% L6 J" x6 Y0 {6 D* U0 o
Capture/compare mode register 1 (TIMx_CCMRx) 输入捕获/输出比较寄存器
& Q3 C. A, |+ t5 o# ~
4 Y7 g7 f5 Z9 ~
20201229152425708.png

( v+ d, g* u  R, B" p4 A$ h9 V- X
Counter 在时钟的驱动下计数. T% r8 g8 ~0 {6 W0 t1 n+ [# c; L" z
9 B' O2 @+ ^" R4 s; e
Auto-Reload 设定计数的最大限制值4 z3 M) G! H* j3 G& k* d
2 X  F3 F* P; B* p5 ^0 `+ `
Capture/Compare 锁存一个事件发生时的计数值到Capture/计数达到 Compare 值后触发一个事件8 s" k! R5 ?$ t6 |5 i" \) t

; A, H: z) U' C在 PWM 模式下,Auto-Reload 寄存器设定PWM的周期,Compare 设定占空比。/ H) }6 @4 L, f: ^

( w% l. ]8 b8 s% r6 z- x2 U有一点需要注意的是一个 TIM 模块只有一个计数器和一个重置寄存器,而有多个输入捕获/输出比较寄存器。所以一个 TIM 模块的多个通道可以设置不同的占空比,但周期都是相同的。9 n4 h6 d$ T2 Y& J

# e) H+ g3 l1 n5 Y所以我们在选用 MCU 的时候,如果需要产生多种周期的 PWM,不仅要看它的定时器模块一共有多少通道数,还要看是否有足够的独立 TIM 模块。1 H3 x. @7 ?! T  `

+ ?5 A3 `9 V/ x& j, L) L$ h* v' Z2.代码& \0 `8 D1 Z" u
. e/ c9 ]+ s  L" }0 s1 Z4 ?
我们在下面这个工程的基础上修改来实现用一个可调电阻控制PWM占空比,来控制电机的转速。8 Y3 d8 W5 T7 |. {" I% V
* {- N+ r, {8 x. ^
STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\TIM\TIM_PWMOutput\MDK-ARM\Project.uvprojx
- Q& f+ y8 S# o7 N: v+ `+ x4 B9 w2 l* \* }% y. D$ N- P
这个工程默认使用TIM3模块输出4路PWM,我们可以只保留其中一路。3 l$ [8 I" h- w

5 ~' P' b9 b" P- S然后把ADC采样的代码添加进来:% B3 O! F/ W5 |

% K. O4 X+ h/ N4 `% u4 p2 b1 ?7 v  EStep 1:( Z/ U, R2 ?3 v% G8 Q1 ^

/ Z1 t2 R9 v3 |+ p" `3 ?stm32f0xx_hal_conf.h
8 d+ s/ ~5 T- r7 U( t3 o4 o: U8 @! V
#define HAL_ADC_MODULE_ENABLED4 |7 ~3 w# V: V2 L0 n+ o: h  Y

8 D9 I* d7 R7 P5 D+ `1 _$ ^& p' ~Step 2:
! p8 E/ Z9 i/ S9 @& i6 U! Q3 m. L( b% o2 f- @
main.h
0 r5 w5 z% P" a% u8 _' r
$ i( I: W) b! ?! R1 F, g添加ADC相关宏定义
( F  J8 I. G: V; N/ \/ L1 l. {- u; ~. f; |* x7 [6 v
20201229152425927.png
% a3 C5 z( H& {5 G
# I- h/ A# K# K* l7 @+ j* N) K
Step 3:. S: {9 O3 Z0 i- D' p7 P
' C( O3 `& B6 \0 G9 t& p
stm32f0xx_hal_msp.c, g* k, [1 r4 P2 ]! Q( V
, V% |. D8 o1 i& C: ^' T0 v
添加ADC使用的引脚的初始化代码
$ H5 l; X* n! C$ F
4 v# M. f( ~/ d- j; N3 l
20201229152425911.png

# ], w1 b2 j: Y( A) {, W' a$ T7 L( ]) c/ P( h- m
Step 4:
1 {8 g0 U5 X, ?7 t& n6 Z) x# _- f! i8 |) n4 p* w9 D, s# o; ?
把ADC的驱动文件添加进工程,在主程序初始化ADC。* V  F$ g" |6 a" \
% t' \/ [/ u  o& W# |5 D
20201229152426192.png
- N4 n9 W8 E; {2 E

4 n1 z3 x' @, NStep 5:
- l; |4 W1 M; {5 p& e3 C1 _% D( j* L+ C
读取 ADC 的值,写入 TIM 的 CCR 寄存器,观察 PWM 占空比的变化。根据电机的特性,还可能需要改变 PWM 的周期。
# K+ ]; t" t% p0 I% D# Y
( V6 }. F, v$ U" _& g; C  k6 Y
20201229152426108.png
! N$ e( p. y+ R7 ]1 p

3 ?- G% e7 N: S7 v2 I  J  P9 J3 V& n  @
- `8 E: d! r$ A5 v1 n
如果需要参考代码,可以在 Github 搜索 TopSemic 找到。
/ u* W: u! O& L. w8 l1 b
2 i/ c5 s. `8 B' ^( _4 ^2 @) a, W3 o- L$ O' [
收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版