項目分享| STM32G474雙向超級電容控制器
Robomaster比賽顛覆傳統的機器人比賽方式,激烈的對抗,震撼人心,感興趣的可以去搜一下比賽視頻。與電賽、智能車相比,Robomaster觀賞性
Robomaster比賽顛覆傳統的機器人比賽方式,激烈的對抗,震撼人心,感興趣的可以去搜一下比賽視頻。與電賽、智能車相比,Robomaster觀賞性更多,需要多學科協同作業。本次項目分享是來自大連理工大學的光速翼分享的雙向超級電容控制器。超級電容在電賽、智能車中也是頻繁出現,因此分享給大家作為參考,本項目軟硬件開源

為什么會分享超級電容控制器呢,主要原因是在 Robomaster 比賽中官方對底盤的功率限制,促使各個戰隊投入一定精力研發超級電容。為了進一步追求能量利用效率,光速翼在戰隊前輩的基礎上繼續鉆研數字電源方案,勇于創新的同時加以理性分析,最后開發出了本方案,已經在實驗室進行過烤機測試和實際場地的飛坡測試。
和普通的超級電容控制器不同,這個超級電容控制器具有以下突出特點:
1)可以將電容組的電壓利用到1V以下,極高的能量利用率
2)電調電壓恒定為電源電壓
3)可以額外負責裁判系統解析實現緩沖能量閉環和底盤運動控制
4)鋁基板和四層板級聯可以做到強悍的散熱和高集成度
5)尺寸為80*55*25(單位:mm),約為一張銀行卡左右的大小
6)200w充放電效率大于95%
總體設計
控制器采用四層板和鋁基板的結合方案。主要功率器件放在鋁基板,控制和測量電路放在四層板。鋁基板散熱性能非常強,四層板可以在相同面積下放置更多的電子元件,同時可以保證完整的地層和電源層,提高 pcb 抗干擾能力。鋁基板和四層板采用捷配和嘉立創的特價打樣(太窮了沒辦法),五塊 PCB 只需要五塊錢。

? 控制器板設計:

【嵌入式物聯網單片機學習】大家可以加我微信一起學習,我整理了100多G(全網最全)的學習資料包(持續更新)、最新的學習路線思維導圖。各種學習群、項目開發教程。還可以圍觀我朋友圈中的一手行業消息,每周的技術大咖直播答疑吹水

由于需要高控制精度,即需要 HRTIM 模塊,所以可以排除掉 STM32F103 等單片機。可選方案有 STM32F3系列和 G4 系列以及 TI 的DSP。其次考慮開發難度,首先排除TI 單片機,做過電賽都知道MSP430 這玩意不是一般人能拿捏的。STM32有豐富資料和強大的 cubemx,最后考慮性能,最終選擇G4 系列,主頻高達 170M ,有5路ADC轉換器和更豐富的模擬外設,可硬件過采樣,三路 fdcan 更如虎添翼。還有一點,G4在ST介紹中是專為電機控制和數字電源而生。
控制器板的測量分為電壓測量和電流測量部分,全部采用差分線減小噪聲的影響。電路運放使用AD8052 和OPA2350。電流采樣使用INA199 高邊采樣芯片,內置反饋電阻也可以減小溫飄。電壓同理用個差不多的軌到軌運放即可。
電源部分采用DCDC降壓芯片 xl1509 降壓到12V為MOS驅動供電,12V在經過LDO降壓給單片機和其他部分供電。由于壓差過大導致靜態功耗過高,所以使用兩路DCDC,其中一路降壓到12V,另一路降壓到5V在經過LDO降壓到 3.3V為單片機供電。

板子當時畫的時候太著急了,有兩個 bug:
第一個是電壓調理和兩個ADC接反了。當時整了好久百思不得其解為啥同樣代碼不好使,最后發現是這個智障問題大呼上當(或許這樣接線會更短,筆者當時應該這樣考慮的)。解決辦法很簡單,軟件里面調換一下計算就 ok 了。
第二個是理想二極管部分。起初考慮到了反向供電時候供電自鎖問題,所以加上了理想二極管。但是換上 LM5050 后發現這個會將輸出電壓升高到 28V,因為這個特點燒了三個 3508 電調然后才亡羊補牢(感謝老板不殺之恩),最后通過軟件方式解決了這個問題。詳見代碼。如果有條件可以采用凌特的 LTZ7001 高邊開關解決(太貴了)。
? 功率部分:
半橋驅動器選用UCC27211,MOS管選用CSD19536。理由有兩點。第一是這兩個元件性能強悍。UCC27211 自帶自舉二極管且開關時間短。MOS 管內阻低,Qgs 小。這兩點有助于降低開關損耗,提高功率上限。

代碼設計及調試心得
代碼里包含了需要用到的所有外設,并且寫好了中文注釋。代碼詳見 code 下子文件夾下 Technical validation 文件夾,其中工程中 txt 文檔包含每一個版本的測試內容。在實測中 adc 會產生微小偏移,以及內部 opamp 失調電壓過大,測量電流會產生較大誤差。所有代碼可以在“達爾聞說”回復:超級電容,獲取。代碼內容包括了開環升降壓到最后的上場比賽版本的代碼。
以下是嵌入式代碼調試心得:
ADC測量改進:此部分一定要做好濾波和校準。如果不做校準那么會產生飄移電壓,這對電流測量影響巨大,而且由于是給超級電容充電,微小的過壓也會觸發保護芯片工作導致靜態損耗,這是無法接受的。濾波的作用是避免偶然錯誤的數據干擾控制此外濾波還可以一定程度降低PID控制中引入高頻微分噪聲。此外,考慮到裁判系統是高邊采樣,因此控制板也采用了高邊采樣代替低邊采樣。
代碼速度優化:STM32G474 有 ccmram 區,可以稍微加快代碼執行速度。即使不是很多也要追求極致。實測PID計算可以降低 5us 左右。此外,使用 cmsis 數學加速庫或者將濾波中的冒泡排序更換為快速排序都可以提高代碼執行速度,從而提高控制頻率和采樣頻率,達到更快速的響應。
避免 double 類型參與重復:計算起初的代碼執行一次數據獲取和控制需要 40us,對于數字電源來說控制周期太長。逐步測試后發現ADC數據線性變換部分用的是 double(當時寫錯了)改為 float 后一次中斷中執行周期降低為 20us。但在校準初始化部分使用了 double 類型,因為這部分代碼只需運行一次
將ADC校準數據寫在條件編譯部分:由于校準的必要性,這里需要每個ADC采集兩個點的真實數據和測量數據。五個ADC加起來就是 20 個數。并且因為不同批次的模塊ADC,模擬前端部分的誤差各不相同,所以不能將同一個校準參數應用于所有做出來的模塊。這里在模塊顯眼位置用馬克筆標記序號,并在 ADC校準初始化部分逐個標定。最后將代碼段選擇性編譯,這樣可以避免多個工程調試和升級的麻煩。
END
轉載自:達爾聞說
文章來源于項目分享| STM32G474雙向超級電容控制器
原文鏈接:項目分享| STM32G474雙向超級電容控制器







