步驟1:基本原理
Wikipedia對該原理進(jìn)行了很好的解釋,但是這里有一個(gè)快速指南:
升壓轉(zhuǎn)換器可快速打開和關(guān)閉開關(guān)。 (我的設(shè)計(jì)以65kHz運(yùn)行。)
開關(guān)閉合時(shí)(第一幅圖),它在輸入電源兩端連接一個(gè)電感,而二極管則阻止任何電流從輸出側(cè)回流。
電感器充電。 (盡管在輸入端短接一根線圈的線圈似乎會(huì)浪費(fèi)很多功率,但電感器實(shí)際上會(huì)將能量存儲在其內(nèi)核中。)
當(dāng)開關(guān)斷開時(shí),電感器會(huì)抵抗任何變化電流(并且將其短接在電源上意味著它有很多電流通過)。由于輸出側(cè)的電阻比開關(guān)高得多,因此電感器必須提高其電壓以保持電流流動(dòng)。 (通過改變電壓來阻止電流變化是電感器的神奇特性。)
輸出電容器從電感器和更高電壓的電源中充電。
當(dāng)開關(guān)再次接通時(shí),電容器將以較高的電壓充電并為負(fù)載供電,直到下一個(gè)周期。由于電源僅在時(shí)間的一部分上施加到輸出側(cè),因此輸出電壓上始終會(huì)出現(xiàn)紋波。
如果開關(guān)在每個(gè)周期中導(dǎo)通時(shí)間相對較長(其占空比較高),則電感器會(huì)存儲更多能量,從而在開關(guān)斷開時(shí)會(huì)產(chǎn)生更高的輸出電壓。通過控制占空比,可以調(diào)整電壓。
就原理而言,您如何將其變成真實(shí)的電路?
第2步:選擇關(guān)鍵組件
為獲得準(zhǔn)確值,我整理了一個(gè)Google電子表格模板,該模板可通過TI進(jìn)行計(jì)算指南。下面,我嘗試總結(jié)閱讀文檔并四處搜索后收集的經(jīng)驗(yàn)法則。
電感器
電感器是電路中最重要的部分。
它的標(biāo)題值是它的電感,以亨利為單位。電子表格將幫助您計(jì)算正確的值。我建議將計(jì)算值設(shè)為1.5-2倍,以便有一定的余量。
您還需要簽出:
額定電流,該電流必須足以處理電感中的峰值電流(由電子表格計(jì)算)。
形狀:之所以選擇環(huán)形線圈,是因?yàn)樗鼈儜?yīng)該具有較低的EMF干擾。我讀過的一位消息人士說,如果您不擔(dān)心干擾,則線軸電感器是最好的選擇。
核心材料是您想要的一種適合功率電感器的材料。我去買了一個(gè)作為功率電感器銷售的環(huán)形線圈。我相信它具有鐵氧體磁芯。
我使用了這個(gè)150uH電感器。
開關(guān)
這是電路中第二重要的部分,以及我第一次犯錯(cuò)的地方。 MOSFET是一個(gè)不錯(cuò)的選擇,因?yàn)樗苋菀子?a target="_blank">微控制器驅(qū)動(dòng)。您需要注意以下幾點(diǎn):
Rds(on)這很關(guān)鍵,它是開關(guān)打開時(shí)的電阻。我的第一次嘗試是因?yàn)檫@里的值太高而使人sc目結(jié)舌。 《10mOhm是理想的。如果該值太高,則電感器將無法吸收足夠的電流,從而浪費(fèi)了開關(guān)中的功率。
Vgs(th)值,這是您必須施加到晶體管柵極以使其導(dǎo)通的電壓。如果您使用的是5V微控制器,則該電壓必須為1-2V。
Vds(max),這是晶體管可以處理的最大電壓,用于輸出電壓加上一些安全裕度。
Ids(max),即開關(guān)可以處理的最大電流。根據(jù)電子表格,該值必須大于峰值電流。
我使用了此開關(guān)。
電容器
電子表格應(yīng)計(jì)算電路中電容器的最小值。我發(fā)現(xiàn),為音頻放大器供電時(shí),我需要的輸出容量要比指定的容量大得多。
輸出級的電容器需要具有低ESR值才能提高效率。
我選擇了一個(gè)大的ESR低的電解電容器,然后與22uF陶瓷電容器并聯(lián),希望進(jìn)一步過濾輸出。
在輸入端,我使用了相同的設(shè)置。
二極管
二極管非常簡單,只需肖特基二極管即可,它可以處理平均電流并且正向電壓低(450mV似乎是極限。非異國情調(diào)的部分)。
微控制器
我之所以選擇ATTiny84A,是因?yàn)樗捎猛装b提供,它的體積不太大,并且AVR GCC工具鏈還不錯(cuò)。我遵循Lady Ada的本教程來啟動(dòng)并運(yùn)行該工具鏈,并使用AVR Eclipse開發(fā)了代碼。我需要對硬件進(jìn)行相當(dāng)精確的控制,以使PWM以65kHz的頻率運(yùn)行,因此使用更抽象的Arduino IDE可能會(huì)比較困難。
步驟3:
這是我想到的電路。
本質(zhì)上,微控制器(后面的代碼。..)使用其PWM輸出來控制開關(guān)。
它通過反饋電位計(jì)使用其ADC監(jiān)視輸出電壓。
如果電壓降至目標(biāo)以下,則會(huì)增加PWM的占空比,從而增加電感器中的電流,從而增加輸出電壓。
如果電壓超過目標(biāo)值,則會(huì)降低占空比。
可以通過調(diào)節(jié)電位器來調(diào)節(jié)電壓。
輸出上的440歐姆電阻可確保轉(zhuǎn)換器上始終有一些負(fù)載。我通過反復(fù)試驗(yàn)發(fā)現(xiàn)了這一價(jià)值。如果我沒有從中汲取足夠的負(fù)載,我的5V輸入電源將關(guān)閉。您也許可以克服更大的阻力。不過,加載輸出至關(guān)重要。空載時(shí),轉(zhuǎn)換器將變得不穩(wěn)定,電感器將輸出非常大的電壓。
與大電容器并聯(lián)的小電容器是濾波電容器。大型電解槽具有較高的電阻,因此,將一個(gè)小的陶瓷或聚合物蓋并聯(lián)放置有助于應(yīng)對瞬態(tài)尖峰。
ADC輸入上的0.1uF電容只是一個(gè)濾波器。
為照片質(zhì)量差而致歉!我很興奮,它能起作用,所以在拍好照片之前將其密封在項(xiàng)目中。
步驟4:單片機(jī)代碼
我已經(jīng)將工作代碼放入了在Github上。它由幾個(gè)部分組成:
這些#defines和const聲明進(jìn)行編譯時(shí)計(jì)算,因此代碼只需要執(zhí)行簡單的uint8_t比較,而不需要浮點(diǎn)數(shù),這在微控制器中是不可行的。使用const會(huì)鼓勵(lì)編譯器在編譯時(shí)進(jìn)行計(jì)算,并將結(jié)果類型強(qiáng)制為uint8_t。
#define PWM_FREQ 62500
#define PWM_RESOLUTION(F_CPU/PWM_FREQ)
#定義MIN_DUTY_CYCLE 0.40
#定義MAX_DUTY_CYCLE 0.80
常量#define DIVIDER_RATIO 30.0
#define DESIRED_ADC_IN_V(DESIRED_VOUT/DIVIDER_RATIO) const uint8_t DESIRED_ADC_RESULT = 255 * DESIRED_ADC_IN_V/VREF;
這些定義了一些有用的實(shí)用程序宏,因此
#define DUTY_CYCLE_REG OCR0B
#define ADC_ENABLE()(ADCSRA | = _BV(ADEN))
#define ADC_START_CONVERSION()(ADCSRA | = _BV(ADSC) ))
主要功能有一個(gè)初始設(shè)置階段,在該階段它將打開我們需要的各種外圍設(shè)備:
i nt main(void){
/*將A7設(shè)置為輸出。 (需要PWM。)*/
DDRA | = _BV(DD7);
PORTA = 0;
/*讓輸入功率穩(wěn)定。.. */
_delay_ms(500);
/*
*將Timer0配置為快速PWM。它將
*-在每個(gè)周期開始時(shí)打開輸出引腳
*-當(dāng)值達(dá)到DUTY_CYCLE_REG
時(shí)將其關(guān)閉*-達(dá)到OCR0A
時(shí)將其包裝為0 */
TCCR0A = _BV(COM0B1)| _BV(WGM01)| _BV(WGM00);
OCR0A = PWM_RESOLUTION;
/*從40%的占空比開始,然后逐漸上升以避免涌入。 */
DUTY_CYCLE_REG =(uint8_t)(PWM_RESOLUTION * 0.40);
/*將Timer0時(shí)鐘源設(shè)置為主振蕩器。這將啟用計(jì)時(shí)器。 */
TCCR0B = _BV(CS00)| _BV(WGM02);
/*
*打開ADC,
*-使用內(nèi)部參考電壓
*-將ADC0配置為我們的電源
*-左調(diào)整結(jié)果,
*-禁用引腳上的數(shù)字輸入緩沖器
*-啟用ADC。
*/
ADMUX =/* REF = */_BV(REFS1)|/* INPUT = */0;
ADCSRA | =/* PRESCALER = 16 = 2 ^ */4;
ADCSRB | =/*左調(diào)整*/_BV(ADLAR);
DDRA&= ?_BV(DD0);
DIDR0 | = _BV(ADC0D);
ADC_ENABLE();
_delay_ms(1);
然后,它簡單地循環(huán)讀取電位計(jì)的模擬值并將其與目標(biāo)值進(jìn)行比較:
而(1){
/*等待Timer0溢出。.. */
loop_until_bit_is_set(TIFR0 ,TOV0);
/*我們的OFF周期結(jié)束時(shí),應(yīng)該是峰值電壓。.. */
TIFR0 | = _BV(TOV0);/*清除標(biāo)志。 */
/*檢查輸出電壓。 */
ADC_START_CONVERSION();
loop_until_bit_is_clear(ADCSRA,ADSC);
uint8_t adc_result = ADCH;
如果(adc_result DUTY_CYCLE_REG }
否則,如果(adc_result》 DESIRED_ADC_RESULT &&
DUTY_CYCLE_REG》 MIN_PWM_LEVEL){
DUTY_CYCLE_REG--;
}
}
}
-
微控制器
+關(guān)注
關(guān)注
48文章
7575瀏覽量
151714 -
升壓轉(zhuǎn)換器
+關(guān)注
關(guān)注
2文章
664瀏覽量
34926
發(fā)布評論請先 登錄
相關(guān)推薦
評論