基于STM32单片机的SPWM波的实现.pdf

上传人:飞****9 文档编号:136865408 上传时间:2020-07-03 格式:PDF 页数:11 大小:373.83KB
返回 下载 相关 举报
基于STM32单片机的SPWM波的实现.pdf_第1页
第1页 / 共11页
基于STM32单片机的SPWM波的实现.pdf_第2页
第2页 / 共11页
基于STM32单片机的SPWM波的实现.pdf_第3页
第3页 / 共11页
基于STM32单片机的SPWM波的实现.pdf_第4页
第4页 / 共11页
基于STM32单片机的SPWM波的实现.pdf_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《基于STM32单片机的SPWM波的实现.pdf》由会员分享,可在线阅读,更多相关《基于STM32单片机的SPWM波的实现.pdf(11页珍藏版)》请在金锄头文库上搜索。

1、基于 STM32 的 SPWM 调制实现方法 SPWMSPWM 波的原理波的原理 SPWM 全称正弦脉冲宽度调制技术,是用一系列等幅不等宽的脉冲等效正弦 波。SPWM 技术是基于“面积相等,效用等效”原理,即形状不同的窄脉冲信号 对于时间的积分相等(面积相等),其效果相同。 将半周期的正弦波在时间轴上等分成若干份,这些部分的面积依次呈先增 大,再减小的趋势变化,面积两边对称;若每一部分用对应面积相等,等宽不等 幅的矩形脉冲代替,则这些脉冲的高度就会呈现依次先增高,再降低的的趋势, 脉冲高度两边对称;进一步说,如果被等分的正弦波与横轴围成的区域用对应面 积相等,等幅不等宽的矩形脉冲代替,则这一系

2、列脉冲的宽度就会依次呈现出先 变宽,后变窄,宽度两边对称的有规律的变化。 SPWM 波正是用一系列等幅不等宽的矩形脉冲来等效正弦波的。如图所示: i 2 d U n i 图(1) 如图(1)正弦曲线sin m yUt,将曲线半周期均分成 N 份,每一份用与之 面积相等的矩形脉冲代替,脉冲中点与每一份的中点重合,各个脉冲高度相同, 等于 2 d U ,中心间距都是 n 。为一般起见,不妨设正弦角频率为 s ,假设第i个 脉冲的宽度为 i ,中心点所对应的相位角为 i ,则根据面积相等的等效原则 得到 2 2 U sin(t)dt 2 i s i s n d ims n U 进一步化简得 2 2

3、cos(t) 2 ( 2sin() sin() 2 2 sin() sin() 2 2 sin() sin() 2 i s i s n dm is sn m sis ss m sis ss m si s UU U n U n U n 两边同乘 2 d U ,得到 1 sin() 2 2 =sin() 1 2 1 sin() 2 sin() 1 2 m isi sd sm si d U n nU n TU n nU n 当 n 的数值较大时, 11 sin() 22nn 最终得 =sin() sm isi d TU nU 。 显然矩形脉冲宽度 i 与其中心点 i 所对应的正弦值成正比,因此在这半

4、个 周期里,脉冲宽度是中间宽,两边依次变窄窄,随正弦规律变化。 SPWMSPWM 波的实现方法波的实现方法 (1)自然采样法 自然采样法是用正弦波与三角载波的交点来确定脉冲宽度与间隙时间的,进 而生成 SPWM 波。如图 2,截取了任意一段正弦波与三角载波在一个周期内相交 的情况。 A 点是脉冲的发生时刻, E 点是脉冲的结束时刻, 在三角波的一个周期 c T 内,2t为 SPWM 波的高电平时间。1t 和 3 t是脉冲周期的间隙时间。 显然 c T= 123 ttt。 如图 2,有三角形相似得到 / 2 c c UAAEE TA BB E , 其中sin(w) msa AAU ,sin(w)

5、 mse EEU , 2 A Bt , 2 BEt , 得到 222 (sinwsinw) 2 cm sase c TU ttt U 很显然,由于 A 和 E 的位置要经过解复杂的方程才能获得,所以程序的运 算量非常大。 图(2) (2)规则采样法 由于自然采样法计算繁琐,所消耗的资源较大,人们提出了一种更简便的方 法来替代自然采样法,即规则采样法。如图 3 所示,任取一段三角波与正弦波相 0 1 t 2 t 3 t 2 t 2 t AB C D E sin(w t) ms U Uc c T A B E 交的情况, A 点是脉冲开始的时刻, E 点是脉冲结束的时刻, 在等腰三角形底部 B 时刻

6、对正弦波采样,获得对应相位的正弦值,然后做时间轴的平行线,获得 A,B 两点,由于两边对称,所以 ABBE, ABBE ,即 22 tt,如图(3) : 由三角形相似得到 : / 2 c c UAAE E TA BB E , 而sin 2 cm sb C TU AAEE U ,即 22 sin 2 cm sb C TU tt U , 则 2222 2sin cm sb C TU tttt U , 2 13 2 c Tt tt 。 由于 B 位置非常容易确定,而且两边对称,计算量大大减少,软件实现较 为简单,故实际中经常采用此法来产生 SPWM 波。 图(3) 基于基于 STM32STM32 的

7、的 SPWMSPWM 波的实现波的实现 如图(4)所示,STM32 微控制器的定时器 TIMx 的部分方框图,包括计数比 较模块和输出控制模块。 0 1 t 2 t 3 t 2 t 2 t A B E sin(w t) ms U Uc c T A B E 图(4) 选择定时器的 PWM 模式,输出比较通道 OCx 将产生由 TIMx_ARR 决定周期, TIMx_CCRx 决定占空比的 PWM 波;通过在每个计数周期赋给 TIMx_CCRx 按照正弦 规律变化的数值,输出比较通道 OCx 将输出占空比与正弦值呈正比的 PWM 波,即 SPWM 波。 STM32 中的定时器计数模式有 3 种,这

8、里选择中央计数模式,该计数模式是 计数器从 0 开始计数到自动加载的值(TIMx_ARR 寄存器)1,产生一个计数器溢 出事件,然后向下计数到 1 并且产生一个计数器下溢事件,完成一个计数周期, 然 后 再 从 0 开 始 重 新 计 数 。 选 择 PWM 模 式 2 : 在 向 上 计 数 时 , 一 旦 TIMx_CNTTIMx_CCR1 时通道 1 为有效电平,否则为无效电平。定 时器不断计数的同时,将比较寄存器的值与计数器寄存器的值进行比较,当两者 发生匹配的时候,引脚电平就会发生翻转,由于定时器向上和向下计数的时候, 数值匹配会发生两次,这就意味一个周期内会发生两次翻转,产生对称的

9、 PWM 信号。 自动重装载寄存器 计数器 捕获比较寄存器 2 PSC 输出 控制 捕获比较寄存器 1 Sin_val CC2I (1)正弦表的生成 本文的方法正是通过在每个计数周期赋给 TIMx_CCRx 按照正弦规律变化的 数值, 输出比较通道 OCx 就输出占空比与正弦值呈正比的 PWM 波,因此正弦表的 数据对 SPWM 波的生成至为重要。由于 16 位自动重装计数器是从 0 开始计数到 TIMx_ARR 再到 0,因此要对 1 sin s yt曲线进行处理,得到 2 1 sin s yt ,如图 (5) ,然后进行幅值扩展得到 4 0.5(1 sin) s yARRt,系数 0.5

10、是为了避免采样 的正弦值超过自动重装载寄存器 ARR 的值,这是计数器寄存器的最大值。 (a)(b) 图(5) 计数器的频率设为 cnt f,目标正弦波的频率 s f,计数器自动重装值 ARR,对 正弦曲线进行采样,采样份数为 samp N ,则每一份所占时间是1/() samps Nf,这个时 间也就是计数器的一个计数周期。对计数器来说,由于采用中央计数模式,所以 一个计数周期是计数器从零开始到向上溢出所经历时间的两倍, 即2 (/) cnt ARRf。 由2 (/)1/ () cntsamps ARRfNf,得到/(2) scntsamp ffARRN。 0 1 2 t 1 sin s y

11、t 2 1 sin s yt _ARR VAL 2_ARR VAL t0 3 (1 sin) s yARRt 4 0.5(1 sin) s yARRt 表 1 为了使一个周期的正弦曲线前后半个周期的采样点数相等, 采样点数 samp N 必 须是偶数。 表 1 是当 samp N取某些值时的部分正弦值, 当数值下标i在 4 samp N 左右时, 数值达到最大,且在半周期的采样点数取偶数或奇数时,最大采样数值出现不同 的情形: 当 2 samp N 为偶数时,即半周期等效脉冲数为偶数个,如上表取 378、250、128 时,正弦表的最大值都小于计数器的自动重装载值 ARR;而当 2 samp

12、N 为奇数时, 半 周期等效脉冲数取奇数个,如上表中取 379、251、129 时,正弦表的最大值等于 计数器的自动重装载值 ARR。 出现这样的情况的原因如图(6)所示, 当半周期的脉 冲数是偶数,采样点均匀地分在正弦曲线最高点的两边,避免了采样值取得正弦 曲线最高点的值。 当半周期的脉冲数是奇数, 下标是 4 samp N 的采样值正好在正弦曲 线最高点采样,取得最大值,与 ARR 相等,由于采样点很密集,采样值之间相 差不多, 且在正弦曲线顶点附近曲线变化非常平缓, 故在经过量化取整后 4 samp N 下 /2 samp NSIN_VALi ARR 756 2 标号1731751761

13、79180197198201202204661 数值658659660659658 758 2 标号176179180188189190198199202659 数值657658659658657 500 2 标号1161171181191201291301311321331000 数值997998999998997 502 2 标号118119120124125126130131132996 数值994995996995994 256 2 标号6061626566671953 数值19491951195219511949 258 2 标号62636465661937 数值1935193619

14、3719361935 128 2 标号2930313233343906 数值38913900390539003891 130 2 标号30313233343846 数值38373843384638433837 标附近的值都与计数器的自动重装载值 ARR 接近,这些值的出现会致使输出多 个前后相连的占空比接近百分之百的脉冲,前一个周期的输出电平刚刚翻转, 下 一个周期比较寄存器的值和计数器寄存器的值就发生匹配,输出电平再次翻转, 两次翻转时间间隔非常小,极有可能发生错误,所以这种情况是要极力避免的, 因此采样点数取 4 的整倍数。 图(6) (2)CCR 赋值时机 选择更新 CCRx 的时机非常

15、重要, 可以在两个重要时刻来执行更新 CCRx 的操 作:CNT_VAL 与 CCRx_VAL 第二次匹配时和计数器计数下溢时。在 CNT_VAL 和 CCRx_VAL 第二次匹配时,通过查询输出比较通道(OC1)的中断标记 CC1IF,若 CC1IF 被置 1,则将新的值赋给 CCR1,如下图(7)所示为 CCR1 值呈递增的情况, 在向下计数时发生第二次匹配,将 CCR1 的值 val(i)替换为 val(i+1),计数器继 续运行,此时计数器寄存器的值小于比较寄存器的值,输出通道(OC1)为无效 电平,等到下一个计数周期,计数器寄存器的值与较寄存器的值匹配时,输出通 道电平发生翻转,并在计数器寄存器值大于比较寄存器的值状态下保持高电平, 直到发生第二匹配时再次翻转。 tt ARR ARR 0 0 2 3 图(7) 然而如图(8)CCR1 的值呈递减趋势,在向下计数过程中发生第二次匹配, 将 CCR1 的值 val(i)替换为 val(i+1),计数器继续运行,如果 CPU 在计数器到达 val(i+1)的值之前就已经完成了对 CCR1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号