【雙極性SPWM調(diào)制講解以及基于stm32的代碼生成-嗶哩嗶哩】 https://b23.tv/ytFxdkL
雙極性spwm調(diào)制雖然沒(méi)有單極性好用,但比單極性要簡(jiǎn)單易懂一些,以下教程是如何利用stm32實(shí)現(xiàn)雙極性spwm調(diào)制.
?
?怎么根據(jù)不同開(kāi)關(guān)模式下的Uab值來(lái)輸出連續(xù)的正弦波呢,我們先取幾個(gè)特殊點(diǎn)分析。
??在正弦波峰值處,+VD寬度最大,因此T1,T4管此時(shí)的占空比達(dá)到最大,-VD寬度最小,因此T2,T3的最小,此時(shí)Uab為兩者相減(因?yàn)?,3導(dǎo)通時(shí)為-VD),正好也是最大值。
在正弦波過(guò)0處, +VD寬度接近一半周期,因此T1,T4管此時(shí)的占空比約為一半, -VD也是,因此T2,T3的也是,此時(shí)Uab為兩者相減(因?yàn)?,3導(dǎo)通時(shí)為-VD),正好也是過(guò)0。
?在正弦波谷值處, +VD寬度最小,因此T1,T4管此時(shí)的占空比達(dá)到最小, -VD寬度最大,因此T2,T3的最大,此時(shí)Uab為兩者相減(因?yàn)?,3導(dǎo)通時(shí)為-VD),正好也是最小值。
這三種特殊點(diǎn)之間的變化過(guò)程,如果占空比是按正弦規(guī)律變化的,那么,不難理解,最終輸出波形會(huì)是連續(xù)的正弦波形。
以上就是大致的原理。接下來(lái)就是代碼的生成。
打開(kāi)cubemx,選擇芯片型號(hào)新建工程。
?選擇外部時(shí)鐘并配置時(shí)鐘樹(shù)
?
接下來(lái)配置定時(shí)器1(也可以定時(shí)器8)pwm互補(bǔ)輸出,這里選擇通道一
?頻率為168M/(0+1)/(8399+1)=20KHZ;向上計(jì)數(shù)模式
配置死區(qū)和占空比;我這死區(qū)配的100多ns,大家根據(jù)實(shí)際需要配置
?因?yàn)橐哉乙?guī)律改占空比,配置一個(gè)20khz的定時(shí)器中斷
?
?接下來(lái)就是工程命名,大家用英文路徑。
?生成工程轉(zhuǎn)到keil。
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-611111.html
?在合適位置加入下列代碼
HAL_TIM_Base_Start_IT(&htim2);//開(kāi)啟定時(shí)器2中斷
HAL_TIM_PWM_Start (&htim1,TIM_CHANNEL_1);//開(kāi)啟四路pwm波
HAL_TIMEx_PWMN_Start (&htim1,TIM_CHANNEL_1);
?在合適位置復(fù)制以下代碼,
uint16_t spwmcnt=0;//數(shù)組計(jì)數(shù)值:0~399;
float M=0.8;//調(diào)制比M:0~1
int spwm_group[400]={
33,99,165,231,297,362,428,494,559,624,690,755,819,884,948,1013,1076,
1140,1203,1266,1329,1392,1454,1515,1577,1638,1698,1758,1818,1877,1936,1994,2052,
2110,2166,2223,2278,2333,2388,2442,2495,2548,2600,2652,2703,2753,2802,2851,2899,
2946,2993,3039,3084,3129,3172,3215,3257,3298,3339,3378,3417,3455,3492,3528,3564,
3598,3632,3664,3696,3727,3757,3786,3814,3841,3868,3893,3917,3940,3963,3984,4005,
4024,4042,4060,4076,4092,4106,4119,4132,4143,4153,4163,4171,4178,4184,4190,4194,
4197,4199,4200,4200,4199,4197,4194,4190,4184,4178,4171,4163,4153,4143,4132,4119,
4106,4092,4076,4060,4042,4024,4005,3984,3963,3940,3917,3893,3868,3841,3814,3786,
3757,3727,3696,3664,3632,3598,3564,3528,3492,3455,3417,3378,3339,3298,3257,3215,
3172,3129,3084,3039,2993,2946,2899,2851,2802,2753,2703,2652,2600,2548,2495,2442,
2388,2333,2278,2223,2166,2110,2052,1994,1936,1877,1818,1758,1698,1638,1577,1515,
1454,1392,1329,1266,1203,1140,1076,1013,948,884,819,755,690,624,559,494,
428,362,297,231,165,99,33,-33,-99,-165,-231,-297,-362,-428,-494,-559,
-624,-690,-755,-819,-884,-948,-1013,-1076,-1140,-1203,-1266,-1329,-1392,-1454,-1515,-1577,
-1638,-1698,-1758,-1818,-1877,-1936,-1994,-2052,-2110,-2166,-2223,-2278,-2333,-2388,-2442,-2495,
-2548,-2600,-2652,-2703,-2753,-2802,-2851,-2899,-2946,-2993,-3039,-3084,-3129,-3172,-3215,-3257,
-3298,-3339,-3378,-3417,-3455,-3492,-3528,-3564,-3598,-3632,-3664,-3696,-3727,-3757,-3786,-3814,
-3841,-3868,-3893,-3917,-3940,-3963,-3984,-4005,-4024,-4042,-4060,-4076,-4092,-4106,-4119,-4132,
-4143,-4153,-4163,-4171,-4178,-4184,-4190,-4194,-4197,-4199,-4200,-4200,-4199,-4197,-4194,-4190,
-4184,-4178,-4171,-4163,-4153,-4143,-4132,-4119,-4106,-4092,-4076,-4060,-4042,-4024,-4005,-3984,
-3963,-3940,-3917,-3893,-3868,-3841,-3814,-3786,-3757,-3727,-3696,-3664,-3632,-3598,-3564,-3528,
-3492,-3455,-3417,-3378,-3339,-3298,-3257,-3215,-3172,-3129,-3084,-3039,-2993,-2946,-2899,-2851,
-2802,-2753,-2703,-2652,-2600,-2548,-2495,-2442,-2388,-2333,-2278,-2223,-2166,-2110,-2052,-1994,
-1936,-1877,-1818,-1758,-1698,-1638,-1577,-1515,-1454,-1392,-1329,-1266,-1203,-1140,-1076,-1013,
-948,-884,-819,-755,-690,-624,-559,-494,-428,-362,-297,-231,-165,-99,-33,
};
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) //中斷回調(diào)函數(shù) 20k
{
if(htim==&htim2)
{
TIM1->CCR1 = 4200.f + M*spwm_group[spwmcnt] ;//20khz的頻率改變400次,20000/400=50hz的正弦波;
spwmcnt++;
if(spwmcnt==400)spwmcnt=0;
}
}
?編譯,沒(méi)有報(bào)錯(cuò),可以正常使用。
??? ?其中T1,T4管由TIM1-CH1(PE9)驅(qū)動(dòng);
?? ?T2,T3管由TIM1-CH1N(PA7)驅(qū)動(dòng);
如何在上電路前檢查自己的spwm對(duì)不對(duì)呢,首先可以把中斷關(guān)了,固定占空比輸出,用示波器看pwm波的頻率對(duì)不對(duì),互補(bǔ)兩路間有沒(méi)有合適的死區(qū)時(shí)間;無(wú)誤后正常開(kāi)啟中斷,準(zhǔn)備兩個(gè)合適且參數(shù)一樣的RC濾波器,選擇兩路通道接上,并用示波器的兩個(gè)通道同時(shí)看兩個(gè)濾波器中電容兩端波形,理論上CH1和CH1N為反相的50HZ正弦波。
如果有問(wèn)題,歡迎留言交流,順便把工程上傳了,供大家下載(沒(méi)有會(huì)員的就沒(méi)必要特意開(kāi)了哈)。
https://download.csdn.net/download/m0_65265936/86394301
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-611111.html
?
?
?
到了這里,關(guān)于利用是stm32cubemx實(shí)現(xiàn)雙極性spwm調(diào)制 基于stm32f407vet6的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!