自製車用冷啟動電池電壓波形產生器
摘要
為了對車用電壓一級穩壓器進行測量,使用動態變化的輸入電壓源是常用的方法,這樣可以確保它們即使在冷啟動造成的電池電壓變化期間也能正常工作。使用 Arduino 和大電流連續模式 Buck 轉換器自製一個冷啟動電池電壓波形產生器並非難事,本文將對其需求和自製的方法進行詳細描述。
1.
概述
在開發以車用電池作為電源的車用電子產品過程中,電路設計工程師需要根據ISO 16750-2 標準的要求,使用各種電壓曲線的電源對電子產品進行測試。其中最特別的當屬車用冷啟動電池電壓波形,冷啟動對各種應用來說可能都是致命的威脅,因為在此事件發生的時候,電池電壓可能下降得非常快,而且會降至很低的電壓。
在一般情況下,可編程電源會被用來當作此類測試的信號產生器,但我們也可以使用以MCU 為核心的Arduino Nano 控制板和大電流Buck 轉換器,例如立錡科技的RT8131BGQW,組成一個強大的電池電壓曲線模擬器來做測試。本文將說明這樣一個電池電壓曲線模擬器是如何設計、製作出來的,其程式設計和使用方法也將一一給出來供讀者參考。
2.
初步構想
要對車用電子產品使用的一級穩壓器進行測量,需要使用ISO 16750-2 定義的輸入電壓波動曲線,我們現在要考慮的是,如何將此標準中描述的車用電池冷啟動期間的電壓波形模擬出來。
圖1
圖 1 顯示的是一個實際測量的車用電池電壓冷啟動波形,它是在環境溫度大約為 -5°C 的冬天測得的。從此圖可以看出,因為天氣寒冷,電池電壓在開始的時候就已經低於 12V 了,車子啟動的時候它更是掉到了 6.24V。隨著電池狀態和其他負載狀況的不同,電池電壓可能降得多一點或少一點。當引擎被啟動以後,發電機開始對電池充電,電池電壓回升到了大約 14.5V。
ISO 16750 標準對冷啟動期間電池電壓的下降是這樣描述的:
圖2
典型的電池電壓下降時間是 5ms,電壓可以下降到不同的準位,然後再上升到一個中間準位,緊接著就是由於引擎啟動而造成的一個電壓振盪過程,最後再回到它最初的電壓準位上。
測試用的信號產生器應該具備產生類似波形的能力,而且應該具有容易調節其初始電壓準位和電壓下降深度的能力,目的是方便檢查最終產品在不同電壓下降準位下的表現和恢復的表現。
圖3
圖3 顯示了冷啟動電池電壓波形產生器的基本結構,其中包含一個Arduino Nano MCU 板,其作用是要生成一個可變的PWM 輸出信號,來反向模擬出冷啟動的電池電壓波形,這個PWM信號經過濾波以後就可以得到一個與其變化對應的電壓,再將此電壓經過兩個電阻引入大電流Buck 轉換器的反饋電路,通過調節可變電阻便能對注入反饋電路的電流進行調節。如果注入反饋電路的電流多,Buck 轉換器的輸出電壓便會下降得多,反之亦然。經過這樣的處理,Buck 轉換器的輸出就可以被用來對車用電子產品的電壓預調節器進行測量了,因為其輸出電壓是完全可控的,可以很好地模擬出ISO 16750-2 所定義的電壓波形,同時又有足夠的供電能力,可以滿足應用的要求。
3.
冷啟動電池電壓產生器的實際電路
設計中所使用的 Buck 轉換器是 RT8131BGQW ,它是一顆以連續電流模式工作的 Buck 控制器,其封裝引腳配置和應用電路如圖 4 所示。
圖4
RT8131BGQW 是一個電壓模式控制架構的單相同步Buck 控制器,可在5.5V~26V 的輸入電壓範圍內工作,其VCC 引腳還需要一個獨立的5V 為其內部控制電路和MOSFET 柵極驅動器供電。它具有參數可調的過流保護,通過其 VOS 引腳可設定輸出過壓保護窗口。它所採用的電流連續控制模式提供很大的電流供應和吸入能力,這種特性具有快速改變輸出電壓的能力。我們的設計需要的輸出電壓為典型的 12V,相應的補償電路的參數可以用立錡電壓模式轉換器補償電路設計工具計算求得。我們可以將過流保護閾值設定在比較高的水平上,這樣可以讓此控制器具備供應和吸入大電流脈衝的能力,這在需要驅動大型外圍元件,及使用大容量輸入電容的情況下是很有必要的。
我們最後得到的 RT8131B 12V 輸出降壓電路如圖 5 所示。
圖5
為了得到 12V 的輸出,輸入電壓至少要有 16V。補償電路的參數是根據輸出電容 C16 的 ESR 參數計算得出的。VOS 引腳的連接位置與 FB 相同,目的是要擁有最大的過壓保護窗口,避免在快速改變反饋調製信號的時候出現誤觸發。下橋開關由兩個 MOSFET 構成,目的是提高過流保護的觸發閾值,避免在輸出電壓快速變化期間出現誤觸發。
與 Arduino 有關的電路部分見圖 6。
圖 6
Arduino 的 D5 引腳用於 PWM 信號輸出,D6 用於驅動 LED。 D2 和 D3 用作兩個按鈕開關的輸入,每按一次 S2 就生成一次冷啟動信號,按一下 S1 則會以 1.5s 的周期輸出 30 次冷啟動信號。
為了檢驗設計的正確性,我們需要通過實際的測試來看看效果,圖7 中的黑色曲線是測量出來的波形,紅色折線是模擬的曲線。
圖7
Arduino 的 D5 引腳輸出的標準 PWM 信號頻率是 980Hz,這麼低的頻率就需要使用 3dB 帶寬很低的低通濾波器,但這樣就增加了得到快速變化輸出電壓波動的難度。為了達成設計的目標,我們使用了特殊的命令來使 Arduino D5 引腳輸出 62.5kHz 的 PWM 信號,這就使得低通濾波器的 3dB 帶寬可以做到 1kHz,使生成快速變化電壓波動成為可能。
生成冷啟動波形的 PWM 信號的變化與 Buck 轉換器輸出波形的變化是相反的,圖 8 是對 PWM 波形的一個模擬,它是對 Arduino 生成 PWM 信號進行程式編輯的一個基礎。
圖8
PWM 調製信號是以 RT8131B 的反饋參考電壓 0.8V 為基準的,如此一來我們在減小可變電阻 P1 的值以增加調製的深度時,就不會造成基準電壓的變化。
4.
Arduino 程式編輯
這裡需要用到的 Arduino 程式很簡單,可下載或複製貼上下述代碼到 Arduino 程序編輯窗口便可以使用。
// Program for Arduino Nano for self-made car battery cold-crank waveform generator in combination with RT8131BGQW Buck controller
// Roland van Roy, Richtek Europe FAE January 2021
void setup() {
TCCR0B = TCCR0B & B11111000 | B00000001; // for PWM frequency of 62500.00 Hz, note delay(1) gives 15.8usec delay
pinMode(5,OUTPUT); // PWM output on pin 5
pinMode(6, OUTPUT); // LED mounted on pin 6
pinMode(3, INPUT); // switch mounted on pin 3
pinMode(2, INPUT); // switch mounted on pin 2
analogWrite(5, 42); //set PWM for 0.8V initial output
}
void loop() {
if (digitalRead(3)== HIGH){ // run 1 time profile
profile();
}
if (digitalRead(2)==HIGH){ // run 30 times profile with 1.5 sec in between
for (int i = 1; i<=30; i=i+1){
profile();
delay(32000); //0.5sec
delay(32000); //0.5sec
delay(32000); //0.5sec
}
}
}
void profile() { // crank profile subroutine
digitalWrite(6,HIGH); // LED ON
//step1
for (int i = 42; i <= 192; i=i+1) {
analogWrite(5, i);
delay(1); //150 steps in 1*15.8usec = 2.37msec but will be ~ 5msec when including program delay
}
//step2
delay(315); // delay 5msec
// step3
for (int i = 192; i >= 129; i=i-1) {
analogWrite(5, i);
delay(100); //63 steps in 100*15.8usec = 100msec
}
// step4
delay(3150); //50msec
// step5
for (int i = 129; i >= 105; i=i-1) {
analogWrite(5, i);
delay(126); //25 steps in 126*15.8usec = 50msec
}
// step6
delay(3150); //delay 50msec
// step7
for (int i = 105; i <= 129; i=i+1) {
analogWrite(5, i);
delay(126); //25 steps in 126*15.8usec = 50msec
}
// step8
for (int i = 129; i >= 92; i=i-1) {
analogWrite(5, i);
delay(85); //37 steps in 85*15.8usec = 50msec
}
// step9
delay(3150); //50msec
// step10
for (int i = 92; i <= 117; i=i+1) {
analogWrite(5, i);
delay(126); //25 steps in 126*15.8usec = 50msec
}
// step11
for (int i = 117; i >= 67; i=i-1) {
analogWrite(5, i);
delay(504); //50 steps in 504*15.8usec = 400msec
}
// step12
for (int i = 67; i >= 42; i=i-1) {
analogWrite(5, i);
delay(13); //25 steps in 13*15.8usec = 5msec
}
digitalWrite(6,LOW); // LED OFF
}
5.
使用冷啟動電壓產生器
冷啟動電壓波形產生器可以用來對多種設備進行測試,如車用前置一級穩壓器、車用 POC 攝影鏡頭系統、車用 USB-C 充電器等等。把 18V 電源連接到 RT8131B 的輸入端,將 Arduino 板連接到 RT8131B EVB 的 GND、VCC 和反饋調製輸入端,再把需要測試的東西連接到 RT8131B 的輸出端即可。
圖9 顯示的是使用冷啟動信號產生器測量具有36V 耐壓、可輸出5V/3A 的車用Buck 轉換器RTQ2104BGSP-QA 的配置情況,該Buck 轉換器的輸入端就連接在RT8131B 的輸出端,它的5V 輸出則與3A 負載連接。
圖9
在這個例子中,透過可調電阻調整冷啟動信號產生器,讓 Buck 轉換器 RTQ2104BGSP-QA 剛好能輸出 5V 的狀態。從圖 10 顯示的測試波形圖可以看到,Buck 轉換器的輸出 (位於下方的 CH2 的波形) 在轉換器的輸入電壓接近輸出電壓時出現了輕微的下降。由於這個 Buck 轉換器支持高佔空比工作狀態,因此在 VIN = VOUT 時的輸入輸出電壓差很小。
圖10
6.
總結
為了對車用一級穩壓器進行測試,使用動態變化的輸入電壓是常用的方法,這樣可以保證它們在出現類似冷啟動期間的電池電壓變化時也能正常工作。使用Arduino 和大電流連續模式Buck 轉換器自製一個車用電池冷啟動電壓波形發生器並不太難,我們可以用它來對很多轉換器在輸入電壓波動很大的情況下的表現進行測量,是一個很好用的攜帶式工具。