本人今天才接觸STM8單片機 不過之前有別的單片機開發(fā)經(jīng)驗 因此上手比較快 現(xiàn)在寫出了正弦波發(fā)生程序 明天搞了AD和PI算法就能做逆變了 慢慢搞
STM8實現(xiàn)SPWM.txt1和20輸出SPWM波 11輸出50Hz方波
本人今天才接觸STM8單片機 不過之前有別的單片機開發(fā)經(jīng)驗 因此上手比較快 現(xiàn)在寫出了正弦波發(fā)生程序 明天搞了AD和PI算法就能做逆變了 慢慢搞
STM8實現(xiàn)SPWM.txt1和20輸出SPWM波 11輸出50Hz方波
目前這么設計的 SPWM1 2和它們的反向直接驅動全橋
Shutdown腳用于實現(xiàn)過流保護超功率保護等功能
Shutdown Logic懸空時 Shutdown被拉地時鎖定SPWMx的輸出
Shutdown Logic接地后 Shutdown被拉低時關閉輸出 當取消下拉時恢復輸出
FrequencyDetermine 懸空時 輸出50Hz正弦波 接地后輸出60Hz正弦波
這次修改為TIM1產(chǎn)生SPWM波形 而且一次4個單極性波形都產(chǎn)生 帶死區(qū) 直接驅動全橋無壓力
但是為了方便使用還是保留了50Hz Sync即同步方波
未來的:
Beep用于連接蜂鳴器 在逆變器發(fā)生故障時(被從Shutdown腳關機或者電池電壓過低等)出聲
OutputFeedback用于反饋輸出電壓 穩(wěn)定輸出電壓
Battert Low用于反饋蓄電池電壓 外部需要電阻分壓 來檢測電瓶欠電 當這個腳電壓低于1V時亮低電壓燈 當?shù)陀?.8V時鎖定逆變器 SPWM.zip
SPWM1 SPWM2等通過光藕隔離驅動全橋 光藕另一側是15V的mos驅動電壓
單片機是3.3V的
最新的程序SPWM (4).zip
增加1個Disable PID腳 接地時輸出的正弦波的峰值從0-100%隨著Output Feedback(0-單片機供電電壓 通常3.3V) 變化 用于內部PID穩(wěn)壓無法滿足需求時 外接運放實現(xiàn)穩(wěn)壓
現(xiàn)在程序功能應該完善了 可以試試驅動全橋了 這次爭取來個12V300W逆變 帶短路保護
程序看過了,提點建議
1、系統(tǒng)開啟了至少2個定時器中斷,使用了3個定時器,在這樣的系統(tǒng)中中斷沖突導致的延遲必須考慮,建議改成只使用tim1中斷,每次中斷更新下一個占空比,spwm表可以更細一些,比如用20k的載頻,直接用400的spwm表,這個對于stm8來說沒有問題。
2、只用一個定時器的情況下,50hz可以使用軟件計數(shù)來輸出的,不是問題,沒有必要單獨搞一個定時器來做更新
3、你的剎車信號使用了,但是沒看到相應的中斷服務,也就是說剎車中斷只是硬關閉,不恢復的,這個在產(chǎn)品中是有問題的。剎車的恢復一般是延時一段時間后重新啟動。
4、需要加上軟啟動部分否則還是挺危險的。
再補充一點,建議增加電流采樣通道,硬件驅動剎車的用于保護危險的過流信號,比如負載短路,軟件檢測的電流信號用于控制過載,最好是有幾秒甚至幾分鐘的過載允許范圍
典型設計一般是
額定1000w
允許1200到1500w的120秒過載
允許1500w到2000w的3-5秒過載
超過1500或者2000w的話立即保護
一般商用的選前一組參數(shù),工業(yè)的選后一種
一般來說選擇的功率管都能短時間承受100%的過載的,但是散熱系統(tǒng)通常不能容忍持續(xù)過載,否則體積和成本難以接受。所以實用的角度來看加上軟件電流檢測是有必要的,而且用于顯示的話有電流采樣就能顯示功率(視在功率)信息了,對于應用價值相對較大
adc采樣結果的反饋和pid計算的系數(shù)都存在問題,另外積分項的最大值也沒有意義,不可能那么大,另外你這個計算出來的pid結果有可能是負數(shù),會導致失控的情況出現(xiàn)。
一般說pid的計算結果是用來進行調整的,也是對調制度進行加操作,并且對調制度上下都要做限制,你當前的調制度出現(xiàn)負數(shù)是不能工作的