利用單片機(jī)的PWM做充電器的問題.
我是新手,現(xiàn)在想用單片機(jī)PWM功能作一個(gè)鋰電池的充電器.現(xiàn)在的主要問題是充電管理這里.想做成CC/CV的充電方式,電路的結(jié)構(gòu)采用降壓BUCK方式,回路里面串聯(lián)小電阻的方法來(lái)檢測(cè)電流.但現(xiàn)在的問題是我怎么控制PWM的輸出,非要用PID的算法來(lái)控制嗎?現(xiàn)在的問題是單片機(jī)還沒有乘法功能.能有其他的簡(jiǎn)單的控制方法嗎?算法怎么處理?還請(qǐng)高手指點(diǎn)了阿!謝謝了先!
全部回復(fù)(6)
正序查看
倒序查看
@sdjufeng
很簡(jiǎn)單.充電器與穩(wěn)壓電源的不同點(diǎn)就在于輸出電流不是一個(gè)常數(shù).你可以做一個(gè)表,就是電壓與電流的對(duì)應(yīng)表,到了什么樣的電壓(ADC電壓采樣值),查表得到一個(gè)特定的脈寬值送入PWM,輸出后的PWM信號(hào)濾波后與充電電流相比較,比較后的誤差用于控制充電器的輸出電壓即可.程序采用定時(shí)中斷方式,每隔一定的時(shí)間間隔,比如1秒鐘處理一次即可.不需要PID控制.
你好,我也在正有PWM方式控制電流,可以就是不穩(wěn),AD口的值也是老出錯(cuò),可以和你請(qǐng)教相關(guān)問題嗎?謝謝
0
回復(fù)
@bestwish131
你好,我也在正有PWM方式控制電流,可以就是不穩(wěn),AD口的值也是老出錯(cuò),可以和你請(qǐng)教相關(guān)問題嗎?謝謝
如果不穩(wěn)的話,你可以加入一個(gè)數(shù)字濾波,方法也不復(fù)雜,其原理和RC電路類似,我們知道,當(dāng)一個(gè)電源通過電阻R給電容C充電的時(shí)候,充電電流與電源和電容兩端的電壓差是成正比的,即I=(E-Uc)/R.
我們已經(jīng)知道,在由硬電路構(gòu)成的系統(tǒng)中,RC網(wǎng)絡(luò)可以讓系統(tǒng)穩(wěn)定,同樣的道理,我們也可以得到在程序中加入類似的功能可以讓系統(tǒng)穩(wěn)定.
這種方法我在多個(gè)系統(tǒng)中使用,證明效果是不錯(cuò)的,下面簡(jiǎn)單的介紹一下:
假設(shè)我們根據(jù)當(dāng)前的電瓶電壓查表得到一個(gè)理論脈寬值W,在假設(shè)上一次輸出的脈寬值為D,那么本次輸出的脈寬值就是D+(W-D)/N,N是一個(gè)系數(shù),輸出調(diào)節(jié)的周期T*N就是類似于RC的充電時(shí)間常數(shù).比如在本例中,我們?nèi)∵@個(gè)時(shí)間常數(shù)為16秒,由于T=1秒,那么N=16,這個(gè)系數(shù)最好取2的整數(shù)次方,這樣做的好處是可以用移位來(lái)實(shí)現(xiàn)這個(gè)除法運(yùn)算,速度特快.D+(W-D)/N這個(gè)過程的最終結(jié)果是D=W.當(dāng)然應(yīng)該考慮到由于(W-D)/N較小,應(yīng)該采用兩字節(jié)運(yùn)算,另外還應(yīng)考慮到(W-D)有可能為正,也可能為負(fù),所以有關(guān)計(jì)算應(yīng)該采用補(bǔ)碼運(yùn)算.
我們已經(jīng)知道,在由硬電路構(gòu)成的系統(tǒng)中,RC網(wǎng)絡(luò)可以讓系統(tǒng)穩(wěn)定,同樣的道理,我們也可以得到在程序中加入類似的功能可以讓系統(tǒng)穩(wěn)定.
這種方法我在多個(gè)系統(tǒng)中使用,證明效果是不錯(cuò)的,下面簡(jiǎn)單的介紹一下:
假設(shè)我們根據(jù)當(dāng)前的電瓶電壓查表得到一個(gè)理論脈寬值W,在假設(shè)上一次輸出的脈寬值為D,那么本次輸出的脈寬值就是D+(W-D)/N,N是一個(gè)系數(shù),輸出調(diào)節(jié)的周期T*N就是類似于RC的充電時(shí)間常數(shù).比如在本例中,我們?nèi)∵@個(gè)時(shí)間常數(shù)為16秒,由于T=1秒,那么N=16,這個(gè)系數(shù)最好取2的整數(shù)次方,這樣做的好處是可以用移位來(lái)實(shí)現(xiàn)這個(gè)除法運(yùn)算,速度特快.D+(W-D)/N這個(gè)過程的最終結(jié)果是D=W.當(dāng)然應(yīng)該考慮到由于(W-D)/N較小,應(yīng)該采用兩字節(jié)運(yùn)算,另外還應(yīng)考慮到(W-D)有可能為正,也可能為負(fù),所以有關(guān)計(jì)算應(yīng)該采用補(bǔ)碼運(yùn)算.
0
回復(fù)