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