产品选型

单片机 pwm控制电机 STM32F0单片机 PWM + ADC 控制有刷电机

小编 2024-10-09 产品选型 23 0

STM32F0单片机 PWM + ADC 控制有刷电机

1. 有刷电机驱动电路

有刷电机是电机里面最简单,也是历史最悠久的一种,到现在仍然广泛应用于各个领域。他的控制很简单,在电机的两个电极加正向电压,则正向旋转,如果加反向电压,则旋转方向也反过来。电机的转速可以通过控制加在电极上的电压来调节。

在电机控制电路中最常用的器件就是 MOS 管了。可以分为两个大的类型:P 沟道 MOS 和 N 沟道 MOS。MOS 管可以简单的理解为一个自来水阀门,Gate 是控制端,调节 Drain 和 Source 端之间流过的电流大小。

下面是两种 MOS 的典型用法。P 沟道的 MOS 一般 S 接电源正极,然后 Vgs 需要一个负电压来打开电流通道,而 N 沟道的 S 极一般接电源的负极,Vgs 需要一个正电压来打开电流通道。

资料来源于 IOR 公司数据手册

我们先从一个最简单的驱动电路开始。单片机控制 MOS 管栅极为高时,电流从电源经过电机和 MOS 管到地。当栅极为低时,MOS 管断开,此时电机线圈内的电流继续通过续流二极管回流电机的正极。我们通过调节栅极控制端的PWM占空比,就可以控制电机的转速。

2. TIM模块

TIM 模块最重要的三个寄存器是:

Counter Register (TIMx_CNT) 计数寄存器

Auto-Reload Register (TIMx_ARR) 重置寄存器

Capture/compare mode register 1 (TIMx_CCMRx) 输入捕获/输出比较寄存器

Counter 在时钟的驱动下计数

Auto-Reload 设定计数的最大限制值

Capture/Compare 锁存一个事件发生时的计数值到Capture/计数达到 Compare 值后触发一个事件

在 PWM 模式下,Auto-Reload 寄存器设定PWM的周期,Compare 设定占空比。

有一点需要注意的是一个 TIM 模块只有一个计数器和一个重置寄存器,而有多个输入捕获/输出比较寄存器。所以一个 TIM 模块的多个通道可以设置不同的占空比,但周期都是相同的。

所以我们在选用 MCU 的时候,如果需要产生多种周期的 PWM,不仅要看它的定时器模块一共有多少通道数,还要看是否有足够的独立 TIM 模块。

3. 代码

我们在下面这个工程的基础上修改来实现用一个可调电阻控制PWM占空比,来控制电机的转速。

STM32Cube_FW_F0_V1.11.0\Projects\STM32F030R8-Nucleo\Examples\TIM\TIM_PWMOutput\MDK-ARM\Project.uvprojx

这个工程默认使用TIM3模块输出4路PWM,我们可以只保留其中一路。

然后把ADC采样的代码添加进来:

Step 1:

stm32f0xx_hal_conf.h

#define HAL_ADC_MODULE_ENABLED

Step 2:

main.h

添加ADC相关宏定义

Step 3:

stm32f0xx_hal_msp.c

添加ADC使用的引脚的初始化代码

Step 4:

把ADC的驱动文件添加进工程,在主程序初始化ADC。

Step 5:

读取 ADC 的值,写入 TIM 的 CCR 寄存器,观察 PWM 占空比的变化。根据电机的特性,还可能需要改变 PWM 的周期。

如果需要参考代码,可以在 Github 搜索 TopSemic 找到。

参考资料:

PM0215 STM32F0xxx Cortex-M0 programming manual

UM1785 Description of STM32F0 HAL and low-layer drivers

STM32F030 Datasheet

STM32F030 Reference Manual

「PWM」用于单相电机调速的单片PWM控制技术

赢一个双肩 背包

有多难?

戳一下试试看!

→_→

长摁识别

1引言

随着家用电器产品变频技术的发展,单相电机的变频调速已成为一种可行的方法,在这种调 速系统中,脉宽调制(PWM)技术仍然是提高调速性能的主要手段。虽然PWM技术的实现方法很多,然而,为了降低产品的制造成本,采用微机控制软件实 现PWM控制具有成本低、调制方式灵活等特点,比较适合于家用电器产品的要求。本文针对 洗衣机电机的调速要求,提出了采用直接PWM(DPWM)软件计算的方法,并在AVR系列单片机AT 90C8535上实现,该方法可以很容易地实现电机的恒V/f比调速,其PWM算法简单,易于实现,是一种较为实用的方法。

2 直接PWM技术的算法

常用PWM技术的基本原理是利用高频载波与控制波进行比较,从而产生经过调制的PWM波。为 满足逆变电源的需要,减小输出电压的谐波含量,载波信号采用对称的三角波实现PWM 输出波形的对称双边调制,使输出电压不含偶次谐波。

用软件产生PWM波形的算法有很多方法,如:采样SPWM法、均值PWM法、直接PWM法等,其中SPWM法有三种不同形式:对称规则采样SPWM、非对称规则采样SPWM、平均对称规则采样SPWM,以平均对称规则采样SPWM的算法简单,应用较为广泛。SPWM的主要缺点就是电源电压利 用率不够高,即输出电压不高。均值PWM法的基本思想是根据等面积PWM控制方式的原理,选 择最佳脉冲中心线位置,使得其PWM波形的谐波成分量小,均值PWM法具有微机实现简单方便 的优点,且对各次谐波的抑制均有很好的效果。直接PWM法与均值PWM法类似,也是使相同时 间间隔内的PWM波 的面积与调制波的面积相等,其主要的优点是,在调制比固定时,控制规 律正比于调制深度而反比于输出频率,特别使用于电机的控制,因此本文选择直接PWM法。

直接PWM法的调制原理如图1所示,假定一个周期内PWM波的脉冲数(即载波比)为2N,将参考 正弦波Umsin ωt的整个周期T分为2N等份,则每个区间的长度(即载波周期)为Ts=T/2N,在第i个区间正弦波的面积为:

设输出PWM波的幅值为E,若采用单极性调制,则第i个区间内的PWM波形所围面积为:

若采用双极性调制,则第i个区间内的PWM波形所围面积为:

式中,Tpi为脉冲的宽度,考虑到有Ts=Tpi+2Tgi,令Sri=Spi,由式(1)和式(2)整理可得:

式中M=Um/E为调制深度,由式(4)或式(5)可分别计算出PWM的脉冲换相点公式为 :

由图1可知,等面积PWM法生成的PWM波形在T/2处是点对称的,因而可推导出:

在上述计算公式中,式(8)为单极性PWM调制,式(9)为双极性调制。在计算过程中,虽然δi的表达式包含有三角函数的计算,但它仅与N有关,一旦N确定后,可事先将计算好的δi存入内存中,需要时通过查表方式获取即可。从k的表达式可以看出,k正比于调制深度而反比于基波频率ω。这对于电机的变频调速系统,通常使U/f比为常数来达到恒转矩 控制,即只需使k值为一个常数即可。

3 单片机实现PWM技术的设计

采用单片机实现PWM,为了保证能够满足变流电路的控制性能要求,设计时必须处理好以下 几个技术问题。

3.1 载波比

采用微机生成PWM波时,必须事先确定好载波比N(或2N)。如果输出频率的变化范围较大,那 么在整个频率范围内采用同一个载波比的同步调制方案,难以兼顾高频和低频输出时的性能。较大的载波比往往会造成高频时PWM开关频率过高,导致开关器件的开关损耗增加,而较小的载波比又会造成低频时PWM波过于稀疏,使电流脉动增大、谐波分量增加等缺点。因此 采用分段同步调制是较合理的方法,即在不同的频率段选择不同的载波比,使变频器在整个频率变化范围内,都有一个较为合理的PWM开关频率,以获得较好的控制性能。然而载波比的选择和切换时必须注意两点:

(1)切换时不出现电压的突变。

(2)在各切换临界点处需设置一个滞环区,以避免输出频率落在临界切换点附近时造成载波 频率反复变化而引起的振荡现象。

3.2 PWM波的开关频率极限

由于PWM波是通过单片机CPU实时计算的,因此所选择PWM算法的数据处理量大小以及CPU的处 理速度是影响输出PWM波开关频率极限的主要因素。设计时必须保证单片机能输出的PWM波的最高开关频率满足逆变器要求,当然对逆变器的最低工作频率要求是很容易满足的。

3.3 PWM波的输出频率和调制深度指令

在变频调速系统中,由于逆变器的输出频率是可调的,因而要求PWM算法的输出频率和调制 深度都能根据实际需要变化以适应电机恒V/f比或恒功率控制的要求。一般,逆变器的输出频率指令可通过A/D转换输入到单片机中,调制深度M可以用软件计算完成,也可采取类似的方法读入CPU。

3.4 桥臂互锁及死区时间

为了保证逆变器同一桥臂上下两管同时导通而引起的短路,两驱动信号间必须留有一定的死 区时间,以防止一管还未完全关断时另一管便开始导通的短路故障。此要求可以在单片机PWM波的计算程序中加以考虑。然而这样做往往会增加单片机的数据处理工作量,而且仅靠软件实现上下桥臂开关管的互锁和死区延迟也不可靠,因此,为保证电路的安全性,建议最好在硬件电路设计上充分考虑并实现此项要求。

3.5 初始状态及故障封锁

任何一款型号的CPU,工作前总存在复位状态,此时CPU各I/O输出口全“1”或全“0”,设 计时应避免在此复位状态时造成所有开关管都被驱动导通的危险,因此应将CPU复位时的初 始电平值设置成开关管驱动信号无效状态。此外,当发生故障时,也可以通过输出故障封锁信号来关闭驱动信号。

4 PWM波的单片机控制

在本文分析的洗衣机电机控制中,逆变器的输出频率由给定电位器调节,经A/D转换输入至 单片机,由单片机根据给定输出频率的大小计算逆变器电压,以适应变频调速的恒V/f 比控制要求。控制芯片采用AT90S8535单片机。

AT90S8535是40脚封装的RISC结构低功耗CMOS 8位单片机,具有8K字节的Flash,512字节的EE PROM,512字节RAM,32个多功能的I/O口,3个内部定时/计数器,8通道10位A/D转换器,2个外部中断源,可编程的串行通讯,可编程的看门狗定时器等资源,适合于许多要求集成度高、成本低的应用场合,其引脚配置如图2所示。

设逆变器输出压频变化关系曲线是已知的,当逆变器的输出频率确定后,PWM控制的载波比 和调制深度指令也随之确定。单片机的资源分配为:39脚的PA1作为A/D采样输入口,采样输出频率;PC0~PC3作为PWM输出的驱动信号,设置为输出口;17脚的INT1外部中断作为电路 故障信号(如过流、过压、短路等)的输入脚,同时该脚也作为“解除闭锁”控制位的输入脚,其作用在于:当故障发生时,由外部中断输入引脚的信号变化向CPU提出中断请求,CPU响应中断,在执行中断服务程序中输出PWM封锁信号并实现闭锁,直到解除闭锁控制位有效时,才撤销PWM封锁信号,使PWM波能够正常输出。由于AT90S8535芯片的复位时端口的初始状态是“高”,因此封锁信号和驱动信号均设置成“低”电平为无效状态,此时端口输出信号使所有功率开关管处于关断状态。PWM波的载波周期由片内T0定时器来完成,PWM波换相所需的时间由片内T1定时器来实现。采用AT90S8535单片机实现的单相PWM波形发生器的硬件连接关系如图3所示。

5 单片机控制软件设计

按上述算法分析,软件只计算PWM波的切换时间,在CPU中由定时中断服务程序完成PWM脉冲 波的换相。其具体过程:PWM的载波周期Ts由载波周期定时器定时,当定时到时,向C PU发出中断申请,CPU响应中断并执行中断服务程序,此中断服务程序的主要任务是将保存 在内存中的PWM开关定时数据(在上一个载波周期计算出来的PWM换相定时时间)送PWM波定时器,并启动此定时器工作,然后再计算下一个载波周期的PWM数据并保存。

PWM波定时器根据载波周期定时中断服务程序送来的开关数据进行定时控制,在中断服务程 序中完成对PWM的换相并输出至端口。

主程序的主要任务是,对逆变器输出频率指令f的采样或计算,并计算与频率指令对应的调 制深度指令、载波比、载波周期定时常数等,为载波周期定时中断服务程序的计算提供实时指令。然而在变频切换时,由于电压跟随频率的变化而改变,变频瞬间容易产生电流冲击。通常解决办法是在基波电压过零时(即0°、180°),变频瞬间无电流冲击,但该方法会造成频 率变化响应过程较慢,特别是低频时响应时间过长。因此最好能设计成在任何一个载波周期结束时刻都可以进行频率切换,为防止电流冲击的产生,此时应使频率切换前后的基波电压不仅与频率和相位有关,还和调制比有关,使得计算频率变化前后基波电压相等的条件相当费时,因此在实现过程中,一般按相位相等的原则进行频率切换。即在新旧频率切换时,根据脉冲计数器所表示的相位关系进行等相位切换。假定旧频率时的载波比为N1,频率变化的切换时刻计数器值为P1,新频率时载波比为N2,切换时新频率计数器的值P2应为:

求出P2后再进行切换。

实现PWM算法的整个控制程序流程如图4所示。

6 实验与结论

按照上述设计方法,研制了单片机控制系统的软硬件,并进行了实验,其输出波形如图5所 示。实验证明,该方法简单可行,控制性能良好,具有一定的实用价值。

此外,三相PWM发生器的实现方法与单相也是相似的,不同之处在于三相PWM发生器需要3个 PWM波换相定时器,再加上载波周期定时器,共需4个定时器。至于三相PWM发生器的软件设计,其基本的设计方法与单相的是相同的,这里不再讨论。

相关问答

atmega16 单片机 输出 pwm 驱动 电机 ?

比如快速PWM方式,定点使用ICP寄存器,这时改变ICP的值,就改变了PWM频率,当然占空比也跟着变化了,需要你重新调整。Atmega16的OC1A和OC1B输出两路PWM的程序,...

单片机 产生 PWM 波实现对直流无刷 电机 的调速问题?

不告诉你怎么掌控电机扭矩的,是靠直流电压还是PWM来掌控,前者很非常简单,跟上条问一样处置就可以,后者的话你原作三个占宽比的PWM就可以了。不告诉...

STC 单片机 直流 电机 PWM 具体怎么使用?

一般用单片机控制直流电机运转的控制方法有两种,一种为电平控制(可能不准确),另一种为PWM控制。如果你选用第一种,你需要为你的直流电机设计一个驱动控制模...

单片机pwm 是什么原理 - 149****8991 的回答 - 懂得

原发布者:大鹏799PWM的工作原理脉宽调制PWM是开关型稳压电源中的术语。这是按稳压的控制方式分类的,除了PWM型,还有PFM型和PWM、PFM混合型。脉宽宽...

51 单片机控制pwm 风扇原理?

原理是当输出频率一定时,输出电压与高电平的占空比成正比,即PWM每个周期中高电平脉宽越宽输出电压越高。单片机使用方法是1.设置定时器的工作模式为PWM和输...

伺服 电机控制 方法有哪些? 单片机 或驱动CPU原理?

伺服电机也叫舵机。控制方法很简单不同占空比的pwm可以控制它正转反转。用单片机的引脚产生pwm接到电机的信号脚上即可。伺服电机也叫舵机。控制方法很简单...

直流 电机 的电流大小如何 控制 ?我用 单片机 输出 PWM 给功率器件,...

[最佳回答]1.你做的直流电机控制系统,肯定要有反馈控制环节,即采样电机电流的反馈控制环节,故反馈环节的硬件参数肯定得变化.2.单片机仅能输出PWM信号,不能改...

麻烦同志们帮个忙呗!如何 控制 无刷电机?,无刷 电机控制 使用周...

[回答]不加接口肯定的无法直接驱动的,用驱动的话,需要自己编无刷电机的整个驱动程序,工程量比较大,如果你是需要学习这方面内容的,那么可以考虑,否则建议...

51 单片机 步进 电机 怎么调速?

答:51单片机不能直接驱动步进电机,因为单片机的输出的是数字信号,不是驱动电流,所以需要外加驱动,舵机是可以通过单片机直接控制的PWM控制,51单片机是对所...

5v 单片机PWM 输出,想去 控制 一个交流电1000w加热器,请问用IG...

[最佳回答]控制交流电了,那么IGBT和场效应管就用不上了,它们只能单方向通电,你只能用固态继电器或者双向可控硅了,当然了,再者其实本质是一种东西,只是...你...

猜你喜欢