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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
有刷电机驱动电路
$ E: d1 A# t/ G$ D7 }有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。& y% q7 S+ b' \- n
8 ?) J% o8 P# s! G# s5 V. J
在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。7 S  F2 h1 A. D

6 |  A/ N" }& g4 O5 V7 O7 K
20201229152425486.png

& @/ K$ N4 C" s& ^* _( ?
, D+ y/ p& g+ j, h# ~下面是两种 MOS 的典型用法。P 沟道的 MOS 一般 S 接电源正极,然后 Vgs 需要一个负电压来打开电流通道,而 N 沟道的 S 极一般接电源的负极,Vgs 需要一个正电压来打开电流通道。& ]$ b9 `6 m6 E! D6 C( c% d
7 C, B) L) @) p2 `3 I
20201229152425562.png
0 ~+ _8 x( J4 f3 x, V
, x, U0 b; e  s

, j/ Y, B3 ]; V8 y$ U
20201229152425807.png
8 C- u% K' b% Z$ b! p( Q

+ T2 d* L. _/ S. b
' r8 k: n8 b- Q) d& H资料来源于 IOR 公司数据手册
1 x% H- @# ]5 p  I( f* J
* U4 _% F( D+ [1 W" C8 l我们先从一个最简单的驱动电路开始。单片机控制 MOS 管栅极为高时,电流从电源经过电机和 MOS 管到地。当栅极为低时,MOS 管断开,此时电机线圈内的电流继续通过续流二极管回流电机的正极。我们通过调节栅极控制端的PWM占空比,就可以控制电机的转速。
4 a( t" ?" g" @. a, K# ]& f* L# ^4 G! V
20201229152425648.png
, p$ c/ M& g% ?2 O

; _' f6 v# R" T1 t0 E1.TIM模块5 m7 g8 I& g) Z# k  @
TIM 模块最重要的三个寄存器是:# ^0 K1 A' J/ k+ h8 }8 q
. s+ A. N8 d  K# K+ ^, S# u0 S
Counter Register (TIMx_CNT) 计数寄存器
& \. [7 P& V# \! [) @' d* T- |! O
6 s8 \. u9 L/ X( ]1 \Auto-Reload Register (TIMx_ARR) 重置寄存器
5 R) g5 k, j# D3 C0 Y. s
5 w* d2 X6 ]; f# yCapture/compare mode register 1 (TIMx_CCMRx) 输入捕获/输出比较寄存器2 [9 m# A; Q7 f
) k: K% v0 J/ f
20201229152425708.png
0 F; H" X, z) s% v" B

! A) X1 o& M- K/ `Counter 在时钟的驱动下计数
& P: x: H; T; G
+ z5 ]+ ]2 k. [" J' C' G+ b& p4 pAuto-Reload 设定计数的最大限制值& f& a9 K: ]9 S' j8 S9 O
3 G# f. u1 ?; s$ t; X+ ^
Capture/Compare 锁存一个事件发生时的计数值到Capture/计数达到 Compare 值后触发一个事件- T4 D% f+ k: A# i# o

' Q& |$ a" C) M" M  A8 L6 A" E在 PWM 模式下,Auto-Reload 寄存器设定PWM的周期,Compare 设定占空比。+ L+ l+ m, u" `, x5 z3 C

7 c% H& ]- w" E+ Z有一点需要注意的是一个 TIM 模块只有一个计数器和一个重置寄存器,而有多个输入捕获/输出比较寄存器。所以一个 TIM 模块的多个通道可以设置不同的占空比,但周期都是相同的。
/ R" a* e* `2 O2 ^6 v2 c
2 }/ L! F0 |; K4 {# E' `) [所以我们在选用 MCU 的时候,如果需要产生多种周期的 PWM,不仅要看它的定时器模块一共有多少通道数,还要看是否有足够的独立 TIM 模块。/ g% i$ W4 m% [! ^- u

; A1 Q/ |* I  W& j5 p2.代码! n, R& u( M; q3 G8 L5 `
5 \7 {. k8 L. z  g! O
我们在下面这个工程的基础上修改来实现用一个可调电阻控制PWM占空比,来控制电机的转速。% ~& b* ~# p8 m. D4 D0 [. a
; z: x) L- u- b. Y
STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\TIM\TIM_PWMOutput\MDK-ARM\Project.uvprojx' f4 h. o" ^; ~4 G. v1 o
/ i6 o/ A% a2 X# p& n/ r9 {
这个工程默认使用TIM3模块输出4路PWM,我们可以只保留其中一路。& `# O- Q6 Q9 B1 t

" C. x9 u+ y* I2 R# R然后把ADC采样的代码添加进来:
4 F3 [2 B# G( d( l) C. G1 T. r6 ], }1 y  o0 [$ U4 o3 ?
Step 1:9 D: x! F" B$ J# ?6 j

; ~$ v& M8 r7 \. A6 ^; ~+ }stm32f0xx_hal_conf.h
* ]% D) w# Z  \1 h
  ]& b1 B. B, i  e& I, l#define HAL_ADC_MODULE_ENABLED& r/ \8 B$ ]  }2 v
7 O  r5 J, T/ v" t
Step 2:
. p0 U5 ?" P  [! }" m. |
- l) }' R" F4 e1 q8 P1 kmain.h8 n3 E* R4 o: L4 I8 L. g) D
2 w: K; s4 g3 k$ J& U, Y
添加ADC相关宏定义! E1 J1 L2 L! [* S1 Q5 n7 o
( V+ ^3 j. c- t
20201229152425927.png

* J0 A1 b9 o) P( x8 d) `. M! l% v+ B( m+ i5 {. I9 x# h
Step 3:
1 `- ]7 x+ K' _+ v: y/ S& r$ g' i' G8 X. d9 |9 t. ^2 b: _
stm32f0xx_hal_msp.c
& d$ V, U: a/ L$ u: y/ X" J  a9 e: R4 ~% D
添加ADC使用的引脚的初始化代码
" J$ A5 d# H3 g7 c$ r
. w  x5 f6 X8 m2 [. d/ M( {
20201229152425911.png

. T+ q' O, n; G! o
4 S$ Y+ W5 w+ l. {% |' w6 `Step 4:1 p4 r8 ]3 K" @( ?' a; X7 g8 X

  C- U. O) D4 ~' q0 ^2 L2 n  X把ADC的驱动文件添加进工程,在主程序初始化ADC。% ]/ P& a8 u7 M4 _3 ]- p
& I# E) [% _& }/ ~  R
20201229152426192.png

% r& T& L( T4 [5 y, Y; b, ^( T- B( e: s9 B/ K& a$ y# D
Step 5:
9 V: ?' y7 _% d$ ^) j+ d6 i
  _, ?4 o' T) ~# M读取 ADC 的值,写入 TIM 的 CCR 寄存器,观察 PWM 占空比的变化。根据电机的特性,还可能需要改变 PWM 的周期。; c  P8 {6 c! f8 {; ^

  `1 u3 T  Q9 x7 S6 |0 O
20201229152426108.png
  Y( `8 k* V$ J5 @* T
2 l5 @6 u3 q- `# {$ H

* R! J+ V- D  F- {: U% ]: M! a) F
* H3 t0 W- @1 s, [$ Z如果需要参考代码,可以在 Github 搜索 TopSemic 找到。( U4 t$ H5 Q  I( O% Q  Z; g
$ A( N" O* ~; i/ }7 M
. r, y  t/ P4 ^( |8 I! R: F
收藏 评论0 发布时间:2021-11-25 15:00

举报

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