一種數(shù)控DC電流源的設(shè)計(jì)與實(shí)現(xiàn)
圖5 主程序流程圖
A/D轉(zhuǎn)換部分程序主要用于將采樣電阻采到的模擬電壓信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。采樣信號(hào)由IoA6輸入并直接送入緩沖器P_ADC_MUX_Data,在ADC自動(dòng)方式被啟用后,會(huì)產(chǎn)生一個(gè)啟動(dòng)信號(hào),此時(shí),RDY=0,DAC0的電壓模擬量與外部的采樣模擬比較,以盡快找出外部信號(hào)模擬量的數(shù)字量,A/D轉(zhuǎn)換的結(jié)果保存在SAR內(nèi)。當(dāng)10位A/D轉(zhuǎn)換完成時(shí),RDY=1,此時(shí),通過(guò)讀P_ADC_MUX_Data單元可以獲得10位A/D轉(zhuǎn)換的數(shù)據(jù)。其IRQ1 中斷服務(wù)程序的流程圖如圖6所示。
圖6 IRQ1中斷服務(wù)程序的流程圖
PID算法程序主要用于修正實(shí)際輸出的電流值和設(shè)定值的偏差,調(diào)節(jié)下一次的輸出值,使輸出更接近于設(shè)定值,提高精度。具體控制過(guò)程為單片機(jī)經(jīng)A/D芯片讀出實(shí)際電流Ik,然后和設(shè)定的電流Is比較,得出偏差值Ek=Is-Ik,單片機(jī)根據(jù)Ek的大小,調(diào)用PID公式,計(jì)算出本次電流調(diào)節(jié)的增量Δik,然后根據(jù)前一次的D/A轉(zhuǎn)換后輸出電流Iq-1,計(jì)算出本次電流的輸出Iq。
離散增量PID的計(jì)算公式為
ΔIk=Kp[(Ek-Ek-1)+K1Ek+KD(Ek-2Ek-1+Ek-2)]
=Kp(Ek-Ek-1)+K1’Ek +KD’(Ek-2Ek-1+Ek-2)
式中,K1’= Kp.K1, KD’= Kp×KD,Ek為本次采樣時(shí)刻的電流誤差,Ek-1為上次采樣電流誤差,Ek-2為再次采樣電流誤差值。
為了測(cè)試系統(tǒng)運(yùn)行的準(zhǔn)確性和可靠性,將設(shè)定量與反饋量的進(jìn)行測(cè)試對(duì)比,誤差在0.01%之內(nèi),并且運(yùn)行穩(wěn)定,達(dá)到了預(yù)期目的,還增添了特色的音頻播放設(shè)計(jì)。
基爾霍夫電流相關(guān)文章:基爾霍夫電流定律
評(píng)論