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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
有刷电机驱动电路
- {' j1 n3 u6 I- a6 M" G有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。
" [. ~% O3 d* {/ ^3 ]7 v$ C. [5 }/ f
在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。
6 K7 b, k, B+ q, F! m. S# P
/ V6 R/ f) i2 A4 X. A0 G
20201229152425486.png
9 i! c6 y1 ~; c7 J  x' G- `% l

; G: s/ x4 @3 O下面是两种 MOS 的典型用法。P 沟道的 MOS 一般 S 接电源正极,然后 Vgs 需要一个负电压来打开电流通道,而 N 沟道的 S 极一般接电源的负极,Vgs 需要一个正电压来打开电流通道。, t: C. F- A. e' R9 Z; O3 a
! V0 i: v. H  j$ y3 j; ?: i+ i7 I: B
20201229152425562.png
9 l; Z! n8 O1 z# X; N
* ]$ g6 \. X* U! g; v& F

" l1 L+ E% ~3 z# f# R$ M" m
20201229152425807.png
3 b  S: y! Y0 I8 u  b! j' M. U
4 A, M, }- u) c2 s; y+ r
0 Z) }; t$ @+ ]5 ?& S1 M
资料来源于 IOR 公司数据手册; y, p2 K$ f  ]* k
, k8 [; k+ k2 R$ Z" {
我们先从一个最简单的驱动电路开始。单片机控制 MOS 管栅极为高时,电流从电源经过电机和 MOS 管到地。当栅极为低时,MOS 管断开,此时电机线圈内的电流继续通过续流二极管回流电机的正极。我们通过调节栅极控制端的PWM占空比,就可以控制电机的转速。
7 m6 Y& @) m: c- ~# I& a( j/ v6 y7 T' u! y
20201229152425648.png
! }8 h- b+ R; b% a! Z& N

7 T8 l/ K. c3 G; c0 }  R" b/ u1.TIM模块
4 A* n$ A3 m4 T- f: @& H  H9 F8 U' XTIM 模块最重要的三个寄存器是:0 z/ w% a- n& R- A
, l& h# p* ?+ B& \" X9 _
Counter Register (TIMx_CNT) 计数寄存器
5 c& D4 X( m* p; t- o4 b
/ @( e8 F% y' \+ G, c8 ?- T- ~7 EAuto-Reload Register (TIMx_ARR) 重置寄存器; v% w/ i9 G6 c

  m) `- D, L5 g7 Q7 C4 pCapture/compare mode register 1 (TIMx_CCMRx) 输入捕获/输出比较寄存器
9 ^2 w: ~/ V( v2 r# [8 m. E- c, V& ~: t6 s, }- {4 D( I
20201229152425708.png

3 ]. K8 U% X/ c. Q: U- `; f
  s* L0 z. e( ?* d4 qCounter 在时钟的驱动下计数
" x1 F1 a  e7 M3 l/ ^8 S9 ~  h) c2 s# i# n# Y6 S
Auto-Reload 设定计数的最大限制值3 x* A& \$ H6 b( g, `# X# X  p5 E8 W
! l# Q( Z; ^! U9 t' `7 m
Capture/Compare 锁存一个事件发生时的计数值到Capture/计数达到 Compare 值后触发一个事件
* ]; E+ m" l& }- L5 ?0 H  Y+ r0 E7 c0 J$ r
在 PWM 模式下,Auto-Reload 寄存器设定PWM的周期,Compare 设定占空比。9 s$ c1 P  h0 F( Z
: q6 Z% \# R2 s' x4 o  I
有一点需要注意的是一个 TIM 模块只有一个计数器和一个重置寄存器,而有多个输入捕获/输出比较寄存器。所以一个 TIM 模块的多个通道可以设置不同的占空比,但周期都是相同的。
7 Z# G$ `7 D4 J8 }5 b
" R2 N+ l0 Q2 @7 g+ C6 y所以我们在选用 MCU 的时候,如果需要产生多种周期的 PWM,不仅要看它的定时器模块一共有多少通道数,还要看是否有足够的独立 TIM 模块。
/ |( _. j2 F0 t1 H% {& u, v7 J7 C1 e- l, J
2.代码( k  y  K. f# |, o, C

& \, N4 ?+ o( U/ V9 q我们在下面这个工程的基础上修改来实现用一个可调电阻控制PWM占空比,来控制电机的转速。6 o5 J4 f" a$ L+ @

. r. Z3 j4 q* SSTM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\TIM\TIM_PWMOutput\MDK-ARM\Project.uvprojx9 u- _- U  d. J# A) {

% {. x3 P8 |" w3 N' H这个工程默认使用TIM3模块输出4路PWM,我们可以只保留其中一路。
6 T% V# ?4 Y8 t3 h2 U* N# i" z' U2 i- @. h5 _% `+ G, k6 v
然后把ADC采样的代码添加进来:
" N/ M* g* t( k- u. K" z0 S8 I+ F  U5 Y+ U
Step 1:
' i, _/ ^9 {  a4 [4 i( b: ^3 R' U  ~
9 P& O+ H7 n2 Ustm32f0xx_hal_conf.h6 h0 j* Y5 p' }  ^$ [

2 A/ |* C& X2 L) H, v#define HAL_ADC_MODULE_ENABLED
# l" z, X! N6 x& R
; F$ x: ^% G1 X, o+ j- j0 e2 yStep 2:
1 {% b$ H% [- I5 |/ y/ s1 U7 T
: O4 Q0 i/ Z: _+ L$ Tmain.h1 D6 x+ N5 L) e- V( u$ f

* J) q- \' H9 p1 M添加ADC相关宏定义
. T5 j0 x% d% z+ [* E3 J- h  P1 j  I! j- Q( h
20201229152425927.png

' i' t. [% M* ^  ]% D2 t5 I( y. A7 P! ^- Y0 c8 Y
Step 3:8 e7 e: j5 A7 ^4 L3 l

. \$ {6 m5 z3 e; P' X0 I9 ~% Lstm32f0xx_hal_msp.c
0 e, t1 L1 a8 U/ h0 H' D3 z2 O* N
( I7 e9 N( Z# c' ]1 Y4 q添加ADC使用的引脚的初始化代码% \2 Z- Y& f4 _( ]0 S8 u% q

7 \) P& d# \2 D8 [+ ?5 y, V  V
20201229152425911.png

: t- x0 b7 `- c/ B; {' _) G, {. y) ]8 r
Step 4:( B2 ~# r' K) _
: i( u3 |( H) m, o, K: k0 _
把ADC的驱动文件添加进工程,在主程序初始化ADC。
$ Z5 G" f  T# \" b3 `6 n" Y0 p
20201229152426192.png

8 U. v# f! \# F6 _9 n. Z: R3 K* s
: Z! {8 T  ]! L& O9 h4 KStep 5:
" z3 }. E$ W' `8 G
, n: Z* [- x+ v$ B; Q: J! [读取 ADC 的值,写入 TIM 的 CCR 寄存器,观察 PWM 占空比的变化。根据电机的特性,还可能需要改变 PWM 的周期。) j) u4 k: O) f; ~

; B( {& b+ c1 {( \6 k
20201229152426108.png

; i( O6 K3 _$ }" k; f. Z) w9 W- z" M- h, F# v6 \7 b

" v5 E  W' {2 x1 t6 F# C2 W) w9 U, m1 M: j
如果需要参考代码,可以在 Github 搜索 TopSemic 找到。0 g7 ?0 N* G2 l3 V
& D6 t/ \/ y- s0 B+ r/ q1 u

3 P  ]2 ?. {0 G
收藏 评论0 发布时间:2021-11-25 15:00

举报

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