基于STM8S103F3的簡易Boost電路設計
由于不需要建立復雜的數(shù)學模型,大部分PID控制器靠良好的PID系數(shù)整定就能工作的很好。而STM8S103F屬于很小的8位單片機,它開發(fā)簡單便捷、價格適宜,是一種非常好用的單片機。本文中我們運用STM8S103F3來制作一個穩(wěn)定簡單的升壓電路。
本文引用地址:http://m.butianyuan.cn/article/201612/326975.htmSTM8S103F3是一種TSSOP20封裝很小的8位單片機,具有價格低、外設多、開發(fā)方便、以及寬工作電壓等優(yōu)點,平均只要1塊多就能買一片。這里我們要用到3個定時器、一個UART串口、一個I2C串口、一個SPI串口、一個10位16通道的高速AD,還有看門Doge等。幾乎每一個IO口都有自己的外部中斷,內部具有多個始終源。
這里暫時只用了兩個定時器和ADC。IM1這個高級16位定時器用于產生固定頻率可變占空比的PWM波,通過一個引腳進行輸出TIM4這個普通8位定時器用于隔一段時間進行PI運算,從而穩(wěn)定輸出電壓ADC中的4通道(AIN4)用于檢測輸出電壓,而3通道(AIN3)用于提供一個參考電壓,約0.6-0.7V,這個電壓利用二極管正向導通壓降產生的。
使用參考電壓是因為ADC出來的結果是一個整數(shù),還需要乘以單片機電源電壓再除以2的10次放才是真正的電壓。單片機的供電可能不穩(wěn)定,如果沒有這個參考,那可能會造成輸出不穩(wěn)定。
電路圖
運行時配置好定時器TIM1 TIM4還有ADC即可。然后在TIM4中定時運行PID算法。初始化TIM1,由主時鐘直接驅動不分頻,把它弄成向上計數(shù)模式:
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次分頻的主時鐘驅動,當計數(shù)到達255的時候觸發(fā)一次中斷。
TIM4_TimeBaseInit(TIM4_PRESCALER_64, 0xFF);
上來就得觸發(fā)一次更新事件還有中斷,讓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,沒有進行分頻。當計數(shù)到320時自動重裝計數(shù)器的值,得出PWM頻率=16MHz/320=50KHz, PWM的分辨率為100/320%。
評論