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

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

[复制链接]
STMCU小助手 发布时间:2021-11-25 15:00
有刷电机驱动电路
+ U/ F% j5 g5 I有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。+ y' i0 U) W: A/ l) B+ R$ @2 K

* n- s' n* K9 m% k  N在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。% ?3 t" J1 i9 w" c' ^$ _6 o

" g. C' g- D3 J; U1 E  d5 D
20201229152425486.png
# N4 G8 B! y1 v8 [7 `

6 N1 Z& r: K" R- o: ]; f1 g下面是两种 MOS 的典型用法。P 沟道的 MOS 一般 S 接电源正极,然后 Vgs 需要一个负电压来打开电流通道,而 N 沟道的 S 极一般接电源的负极,Vgs 需要一个正电压来打开电流通道。# {; |) M9 h: t% X
0 v5 c: z7 u; |
20201229152425562.png

; w1 u5 G9 W7 w1 g: \$ P# q& H' t' r: `

7 J- x% o' ?3 ~5 l4 x0 U; \* i
20201229152425807.png
% P. V1 q) A+ j+ y) J% h

! ^- y1 ?( V# L, c3 _) R
9 r: }0 O9 o8 {/ P资料来源于 IOR 公司数据手册% z- i$ q" F8 j' A1 Y
# p, d8 b) t% f; ~; o/ ^' J
我们先从一个最简单的驱动电路开始。单片机控制 MOS 管栅极为高时,电流从电源经过电机和 MOS 管到地。当栅极为低时,MOS 管断开,此时电机线圈内的电流继续通过续流二极管回流电机的正极。我们通过调节栅极控制端的PWM占空比,就可以控制电机的转速。
$ v, ]/ V: C# `$ I4 l2 L% ]# ?/ m! Y% G9 P/ Z
20201229152425648.png
" ^1 u' a+ F" z' y
( c/ \! h8 L% f3 Z
1.TIM模块) |4 S* r( ~( }0 a8 H
TIM 模块最重要的三个寄存器是:
' F; @3 ~. }9 m1 n
6 D+ L, T) X. Z, ACounter Register (TIMx_CNT) 计数寄存器
+ y3 o$ A3 h, Q2 U3 D& x8 k0 k% A7 L0 h# ]2 p# c& _
Auto-Reload Register (TIMx_ARR) 重置寄存器
8 E- F; w: p  l2 A' d2 w8 B# K( N0 `2 D+ U! c- P; D1 @
Capture/compare mode register 1 (TIMx_CCMRx) 输入捕获/输出比较寄存器6 h0 T7 K: R  e# R6 O0 ?3 a
$ Y# `; \6 ^8 f) k5 ]
20201229152425708.png

5 q/ E0 o! b  {
. K: H2 A& p9 k' ECounter 在时钟的驱动下计数
: f5 j2 H9 K% Z  g0 h: k* n8 @/ q3 q8 X2 b
Auto-Reload 设定计数的最大限制值# [7 A8 w  y5 G/ N; M+ c: o3 ~' s) T$ `6 g

& z) k% v0 Z. F  |Capture/Compare 锁存一个事件发生时的计数值到Capture/计数达到 Compare 值后触发一个事件" [; l% N0 }' o) s

, U9 x; w) L" r8 Y7 Q4 X9 l在 PWM 模式下,Auto-Reload 寄存器设定PWM的周期,Compare 设定占空比。
& ]4 S3 m. S( `
1 U0 s3 [0 c9 r9 d! I% t有一点需要注意的是一个 TIM 模块只有一个计数器和一个重置寄存器,而有多个输入捕获/输出比较寄存器。所以一个 TIM 模块的多个通道可以设置不同的占空比,但周期都是相同的。
3 @& H( G( Y" [0 m0 Q' f/ z; s. W2 l) Y$ V4 S/ g1 F
所以我们在选用 MCU 的时候,如果需要产生多种周期的 PWM,不仅要看它的定时器模块一共有多少通道数,还要看是否有足够的独立 TIM 模块。% B: D! v# G" L2 P  Q
+ d/ E3 ~  T8 s
2.代码
- |& m9 W! t; k  }8 L1 g
* l& M0 ^; T5 d, \7 Z- v- R我们在下面这个工程的基础上修改来实现用一个可调电阻控制PWM占空比,来控制电机的转速。& U& n* i0 r. G# D9 \

5 W& b' \/ L/ n9 F# @, {- l' WSTM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\TIM\TIM_PWMOutput\MDK-ARM\Project.uvprojx
+ B+ T( Q/ \) z5 F) x& v! W3 w/ @
+ O. k# H0 W! J这个工程默认使用TIM3模块输出4路PWM,我们可以只保留其中一路。
3 n/ U1 z5 z/ V7 f. p3 [9 r  @: N0 S3 K! y, }
然后把ADC采样的代码添加进来:* G: E2 T$ F  ]+ G

: U% R9 j4 ~* y8 [Step 1:; W' a9 b. ?6 R, m
8 U8 i( C4 G+ H% y
stm32f0xx_hal_conf.h
  L- V3 S5 o  {2 P$ @/ B, x4 R2 c" W, g
#define HAL_ADC_MODULE_ENABLED
9 Q- a7 u6 q3 ~% R% j0 [" n0 j" _% g- K/ d. M0 p% v1 u5 n0 R6 M5 _
Step 2:
$ ?) G% D& k' x
& F9 _6 u6 x3 I& ymain.h
+ S3 P, P( X0 g* N" k
( o* ]8 G% ?4 |6 b3 M8 F添加ADC相关宏定义
1 B# O; o" i. Z3 \" Z8 ~" ]6 ]- z
) H/ X5 S2 E- n/ ]! B5 c% y7 T0 }
20201229152425927.png

5 |- b; L7 k- b9 `/ j, g2 F3 n( K1 @; R/ A6 Y  {
Step 3:
" ?1 w. T4 E$ }. w; j0 k* j9 a6 E- T" A" Y& A& T
stm32f0xx_hal_msp.c
4 [5 ]7 {! d9 `
2 Q, A: v; e, r7 A添加ADC使用的引脚的初始化代码7 ?% Q: v' T" n, E+ @2 V
/ A- @8 b, R# G4 b4 \* Q7 E
20201229152425911.png
" p) o5 i- o7 B# V

, N- H8 ^* a4 R5 `Step 4:7 a" x5 k3 U) \/ H
+ ]  G0 u0 s3 D9 w* F5 W" |
把ADC的驱动文件添加进工程,在主程序初始化ADC。1 k/ p/ i8 x# `5 @# ?/ S
5 O9 i+ U3 S% G3 Z
20201229152426192.png
5 _/ x2 `( O% j+ S6 o. f

' P% U4 d! z% f& O+ JStep 5:: C$ F9 N+ S( l4 F  z0 G8 b1 l

& _& [5 Q( \) V2 I1 {5 W读取 ADC 的值,写入 TIM 的 CCR 寄存器,观察 PWM 占空比的变化。根据电机的特性,还可能需要改变 PWM 的周期。
( Q) J: Q" b+ Q. B( o3 \. O: \4 B9 {# V: e  I+ X
20201229152426108.png

/ D& W' r9 Q* {2 S' D( v$ j6 n! z4 A6 p" q( @  I/ O) v0 Q
* W/ J$ U  d8 `) V, t: O
4 i  j7 M+ d( I2 l
如果需要参考代码,可以在 Github 搜索 TopSemic 找到。5 |8 z/ k. `% A7 |" ^

  |$ a' J( A' ~0 d  v
4 U4 x3 Z# j/ X' ?- l7 b* r2 T
收藏 评论0 发布时间:2021-11-25 15:00

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版