AVR單片機(jī)可控直流電源
介紹:單片機(jī)可控的直流電源使用ATMEL單片機(jī) AT90S4433
單片機(jī)可控。它有一個(gè)Lcd顯示,你可以從你的Linux服務(wù)器通過RS232串口發(fā)送命令給它。 它設(shè)計(jì)的很棒。雖然是Linux下的作品,但是它真的很棒!
這個(gè)單片機(jī)可控的直流電源不是一個(gè)簡(jiǎn)單的電路。但是我能保證你用到它時(shí), 如果你沒有,你會(huì)后悔的。它很穩(wěn)定可靠,而且在技術(shù)上它也是很有趣的, 因?yàn)槟銜?huì)學(xué)到如何在沒有一個(gè)模/數(shù)轉(zhuǎn)換芯片的情況下如何產(chǎn)生一個(gè)模擬直流電源。
主電路圖(點(diǎn)擊可放大):
接近高電壓部分的電路圖(點(diǎn)擊可放大):
如何在矩陣中連接一個(gè)按鍵(點(diǎn)擊可放大):
主電路板,頂視圖(點(diǎn)擊可放大):
這個(gè)板子很適合業(yè)余電子愛好者。藍(lán)色的層是要被腐蝕掉后留下的銅箔。紅色的表示連線。 這個(gè)單面板的制作很容易,不需要太精確的。你可以在板上布線最短的線(紅色的)。 但是我在eagle上可不成。
在高壓電路中只有很少的元器件,它可以用一個(gè)面包板來做(這種板子有很多的過孔)。 主板和電源板通過JP2和JP3插頭的連線連接。 你會(huì)注意到主板的地線連接到了直流電源的輸出。 這也是我們需要2個(gè)變壓器的原因(一個(gè)是在電源板上,一個(gè)是和單片機(jī)和運(yùn)放在一起)。
工作原理
看一下主板的原理圖你可以看到它從邏輯上分為2個(gè)部分,一個(gè)部分在電路圖中標(biāo)有 “電流控制”,另一個(gè)部分標(biāo)有“電壓控制”。它們是2個(gè)獨(dú)立的控制回路。 一個(gè)回路控制輸出電壓另一路電流流過0.275歐姆的電阻上,壓降等于電流。這2個(gè)部分通過二極管D2和D3“聯(lián)系”到一起。這些二級(jí)管在電路中的作用就象數(shù)字電路中的或門一樣。如果電流過大那么電流控制電路會(huì)降低電壓直到某個(gè)限定值,否則(在電流不大的情況下) 電壓控制部分會(huì)控制整流輸出的直流電壓。
這個(gè)或邏輯是成立的,因?yàn)槿龢O管T3通過R19連到了+5V。 如果這里沒有D2和D3后面的運(yùn)放電路存在,你可以得到最大的輸出。 控制電路是通過減小T3基極電壓(最小可接地)來控制輸出電壓的。
電壓控制回路通過調(diào)整IC6B的5腳的電平來實(shí)現(xiàn)調(diào)壓。換句話來講, 腳5的電壓等于由R15,R10和R16決定的放大系數(shù)乘電壓輸出。 電流控制也是一樣,不同的是在R30上的壓降等于最大的輸出電流。
為了把輸出電壓或者電流調(diào)整到某個(gè)的值,我們需要控制2個(gè)點(diǎn)的電壓 (IC6B腳5和R30上的壓降)。這就是單片機(jī)要做的事.... 但是,單片機(jī)怎么產(chǎn)生和整流一個(gè)直流電源呢?看下圖:
你會(huì)看到一個(gè)脈沖信號(hào)如何變成一個(gè)直流信號(hào)的。 你做到這點(diǎn),需要把(脈沖)信號(hào)通過一個(gè)截止頻率是信號(hào)頻率1/100 (或者比100更大)的低通濾波器。 由于我們的單片機(jī)運(yùn)行在4Mhz,它做到這么一個(gè)低通濾波器不成問題的。即使我們使用軟件成生信號(hào),我們?nèi)钥梢缘玫胶苄〉膋hz的信號(hào)并且濾波器會(huì)依舊很小。
在圖片上方和下方中間的電路圖部分叫做脈沖寬度調(diào)制。 通過改變脈沖的長(zhǎng)度我們可以控制濾波器后的直流電壓。
酷嗎?我們可以使用數(shù)字信號(hào)產(chǎn)生額外的直流電壓。
AT90S4433 單片機(jī)有2個(gè)內(nèi)部的計(jì)數(shù)器。一個(gè)16位寬,一個(gè)8位寬。 16位的計(jì)數(shù)器有PWM(脈沖寬度調(diào)制)的能力,它在單片機(jī)內(nèi)部由硬件實(shí)現(xiàn)了10bit精度脈沖寬度調(diào)制。 8位的沒有但是我們可以使用軟件模擬實(shí)現(xiàn)。它的速度還是夠快。我們使用16位的計(jì)數(shù)器來實(shí)現(xiàn)電壓調(diào)制,可以實(shí)現(xiàn)10位精度,1023等分輸入電壓。 8位計(jì)數(shù)器負(fù)責(zé)控制電流,它是8位精度,可以255等分1-3000mA的電流,就是說可以得到12mA(或者更少)的電流。這對(duì)于電流控制來說是足夠了。
電流剩下的部分是電源供應(yīng)部分,參考電壓部分(7805的輸出是我們參考點(diǎn)) 還有保證當(dāng)開關(guān)電源時(shí),電源保持不跳動(dòng)部分。
軟件:這里我們關(guān)注的是軟件的PWM(脈沖寬度調(diào)制)。 在軟件PWM中,用到了變量ipwm_phase和變量ipwm_h。我們使8位的計(jì)數(shù)器運(yùn)行在中斷模式下,每當(dāng)中斷溢出,中斷處理程序 “SIGNAL(SIG_OVERFLOW0)”會(huì)被調(diào)用。在中斷處理程序里,我們檢查變量ipwm_phase 來決定是產(chǎn)生1還是0。之后,重啟動(dòng)計(jì)數(shù)器。很簡(jiǎn)單。
軟件不復(fù)雜但是如果你想搞懂這些東西,你需要閱讀4433的手冊(cè)(看下面的參考)。
4433是8位的單片機(jī)并且它的計(jì)算能力有限。決定用戶給定電壓大小的精確的脈沖寬度 需要24位的除法和乘法。
我們的電源有7個(gè)按鍵。6個(gè)按鍵步進(jìn)電流和電壓大小,另一個(gè)按鍵是“待命”。 使用待命按鍵時(shí),你可以以暫時(shí)停掉電源的同時(shí)調(diào)節(jié)電壓和電流的上限。這些按鍵的狀態(tài)在主程序中被”上拉“了。變量ignorebutton用于按鍵去抖。你用手指按動(dòng)按鍵時(shí),它會(huì)上下跳動(dòng)的。人是感覺不到的,但是單片機(jī)運(yùn)行很快, 它會(huì)讀到到開,關(guān),開,關(guān)...這些狀態(tài)的,變量ignorebutton計(jì)數(shù)到一定值再去讀,這樣就去抖動(dòng)了。
象任何的電路一樣你把它焊好后,不要直接連接電源而是應(yīng)該一步一步的測(cè)試它, 這樣做才好。這樣你可以找到你做電路時(shí)的錯(cuò)誤。
- 把主電路板的所有元器件裝齊但是不要把IC芯片裝到插座上。
- 拿一個(gè)9伏的電池,正極連接電路圖中標(biāo)注“AC_POWER”接頭的腳2和負(fù)極連接腳1。 用一個(gè)電壓表檢查在max232的腳8和腳16之間的和單片機(jī)腳7和腳8的電壓。 在運(yùn)放上你會(huì)發(fā)現(xiàn)它的正電源達(dá)到9伏。
- 把9伏電池1腳接正,腳2接負(fù)。檢查一下運(yùn)放的負(fù)電源你會(huì)發(fā)現(xiàn)是負(fù)9伏的樣子。
- 如果前面的測(cè)試通過了,電源檢測(cè)就通過了。這樣, 就可以把max232和單片機(jī)芯片插到插座里了。
- 再次使用9伏電池連接。這樣,正5伏電源就有供應(yīng)了。 連接編程線一連接端計(jì)算機(jī)并口,一端連接電流板上的編程插座。
更新軟件包(下載地址見參考)。 進(jìn)入解包的目錄并且鍵入:
make avr_led_lcd_test.hex
make testload
make ttydevinit
這樣測(cè)試軟件在板子上運(yùn)行了。lcd上會(huì)顯示“hello”。紅色的led會(huì)閃爍。 如果你連接了串口到你的計(jì)算機(jī)上,你可以看到“ok”打印在屏幕上。(使用ttydevinit初始化串口,如果用串口1, 鍵入cat /dev/ttyS0;如果使用串口2,鍵入cat /dev/ttyS1)。 - 現(xiàn)在組裝電源部分但是不要裝主變壓器。 把9伏電池連接到變壓器連的地方。 無論連接的極性,在4700uF的電容總會(huì)被穩(wěn)壓到9伏。 用電壓表量一下。
- 所有的測(cè)試都通過后,最后檢查一下連線。 然后,連接變壓器,上電。 因?yàn)檫\(yùn)放沒有插到插座里,所以你會(huì)得到電源的最大的輸出電壓。 量一下它,但是要注意不要短路否則會(huì)燒電路板的, 因?yàn)闆]有短路保護(hù)。
- 斷電。把運(yùn)放插到插座里,連接編程電纜,上電,鍵入:
make
make load
- 這樣電源供應(yīng)就有了所有的功能。注意的是編程電纜連接的時(shí)候, 輸出電壓有一點(diǎn)下降。如果你想得到精確的輸出電流和電壓的話, 不要連接它
評(píng)論