
由于不需要建立復雜的數學模型,大部分PID控制器靠良好的PID系數整定就能工作的很好。而STM8S103F屬于很小的8位單片機,它開發簡單便捷、價格適宜,是一種非常好用的單片機。本文中我們運用STM8S103F3來制作一個穩定簡單的升壓電路。
STM8S103F3是一種TSSOP20封裝很小的8位單片機,具有價格低、外設多、開發方便、以及寬工作電壓等優點,平均只要1塊多就能買一片。這里我們要用到3個定時器、一個UART串口、一個I2C串口、一個SPI串口、一個10位16通道的高速AD,還有看門Doge等。幾乎每一個IO口都有自己的外部中斷,內部具有多個始終源。
這里暫時只用了兩個定時器和ADC。IM1這個高級16位定時器用于產生固定頻率可變占空比的PWM波,通過一個引腳進行輸出TIM4這個普通8位定時器用于隔一段時間進行PI運算,從而穩定輸出電壓ADC中的4通道(AIN4)用于檢測輸出電壓,而3通道(AIN3)用于提供一個參考電壓,約0.6-0.7V,這個電壓利用二極管正向導通壓降產生的。
使用參考電壓是因為ADC出來的結果是一個整數,還需要乘以單片機電源電壓再除以2的10次放才是真正的電壓。單片機的供電可能不穩定,如果沒有這個參考,那可能會造成輸出不穩定。
電路圖
運行時配置好定時器TIM1 TIM4還有ADC即可。然后在TIM4中定時運行PID算法。初始化TIM1,由主時鐘直接驅動不分頻,把它弄成向上計數模式:
TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, DUTYCYCLE_RESOLUTION, 0);
然后把輸出通道1配置成PWM模式,高電平有效,同時開啟反向的輸出,可以給同步整流的管子用wTIM1_OC1Init (TIM1_OCMODE_PWM1,TIM1_OUTPUTSTATE_ENABLE,TIM1_OUTPUTNSTATE_ENABLE,0,TIM1_OCPOLARITY_HIGH,TIM1_OCPOLARITY_HIGH,TIM1_OCIDLESTATE_RESET,TIM1_OCIDLESTATE_RESET);
啟動定時器和PWM輸出
TIM1_CtrlPWMOutputs(ENABLE);
TIM1_Cmd(ENABLE);
設置占空比為1/320
TIM1_SetCompare1(1);
初始化TIM4,由64次分頻的主時鐘驅動,當計數到達255的時候觸發一次中斷。
TIM4_TimeBaseInit(TIM4_PRESCALER_64, 0xFF);
上來就得觸發一次更新事件還有中斷,讓TIM4_PRESCALER_64生效。
TIM4_SetCounter(0xFF);
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
開總中斷
rim();
開TIM4
TIM4_Cmd(ENABLE);
本電路設計中的PWM頻率計算方法及結果如下:STM8中的主時鐘為16MHz。本制作中讓STM8全速工作:CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1),也就是說驅動TIM1的預分頻器的頻率為16MHz,沒有進行分頻。當計數到320時自動重裝計數器的值,得出PWM頻率=16MHz/320=50KHz, PWM的分辨率為100/320%。
(編者按:本文為電源網論壇網友“尤小翠”原創分享,本文觀點僅代表個人。)
聲明:本內容為作者獨立觀點,不代表電源網。本網站原創內容,如需轉載,請注明出處;本網站轉載的內容(文章、圖片、視頻)等資料版權歸原作者所有。如我們采用了您不宜公開的文章或圖片,未能及時和您確認,避免給雙方造成不必要的經濟損失,請電郵聯系我們,以便迅速采取適當處理措施;歡迎投稿,郵箱∶editor@netbroad.com。
小編推薦:預測控制?一種CRM Totem pole PFC的實現方法 | 20-09-07 12:01 |
---|---|
電路設計篇之Buck電源設計該如何深入學習 | 19-11-14 10:42 |
干貨|BUCK/BOOST電路原理(建議收藏) | 19-06-26 11:12 |
BOOST升壓原理如此簡單! | 19-05-31 13:57 |
詳解無橋Boost PFC電路的驗證及EMI實例分析 | 19-01-11 10:07 |
微信關注 | ||
![]() |
技術專題 | 更多>> | |
![]() |
技術專題之EMC |
![]() |
技術專題之PCB |