作為業余愛好者,我們經常需要為原型供電,檢查項目的電壓、電流、功率限制,測試新購買的組件。在這項工作中始終需要可變電源。但不幸的是,并非我們所有人都有工作臺/實驗室電源。如果買的話也很貴,如果需要攜帶的話會很笨重。我一直在尋找一種成本更低、便攜性和生產力高的可編程電源,用于為我的原型和測試組件供電。所以,我決定做一個。
特點:
可編程的
可充電的
便攜的
步進變量
電壓/電流/功率計
保護繼電器
可定制,小巧可愛
酷炫的 OLED 用戶界面
按鈕用戶控制和基于菜單的導航
固件可升級以獲得更多功能!
以及適用于低功率電子項目的最通用電源。
設備規格:
最大輸出直流負載電流:400 mA
電壓范圍:2.0 伏 - 12.0 伏
電壓步長:約 0.1 伏
最佳效率:75 %
電流測量精度:+/- 1 mA
電壓測量精度:+/- 0.02 伏
請注意,此設備是一個快速原型。通過使用高容量電池、附加電子設備和升級設計,可以實現 0-30 甚至負電源和更多輸出電流。
工作原則
設計本身是硬件密集型的。這里發生了很多事情。系統的粗略框圖如下所示:
電源是 USB 可充電的 3.7 V 鋰聚合物電池。首先使用 XL6009 DC-DC 升壓模塊,我們從 Li-Po 產生 15.6 伏的電壓。為了運行 MCU,我們還使用 7805 穩壓器制作了 5 伏電壓。
Arduino UNO 克隆 Atmega328P 與 2 個基于中斷的用戶輸入開關連接,一個優雅的 OLED 輸出顯示器。Rx/Tx/DTR 固件(草圖)通過 USB/串行從 PC 上傳端口。(模塊 1)
該項目的核心是基于MCP4131 數字電位器 (Digipot) + LM 358 OpAmp的步進電壓發生器。該電壓是 LM317 可調穩壓器的控制電壓。(模塊 2)
Digipot 通過類似 Pseudo-SPI 的命令從 Arduino 控制。LM317 的設計方式是輸出引腳電壓始終比調整引腳電壓高 1.25 伏,前提是輸入引腳的電壓足夠高(此處為 15.6 伏)。(模塊 3)
階躍電壓被饋送到調整引腳,以根據用戶的需要從 Arduino 創建可變輸出。
ADC 測量與監控和保護相關的所有電壓;電池電壓、升壓電壓、充電檢測電壓和輸出電壓通過分壓器網絡進行調節,用于為 ADC 范圍供電,此處為 0-1.1 伏。我使用了 Arduino 的內部參考,它創建了 1.1 伏的參考電壓。
對于電流檢測,輸出負載的返回(負載接地)與 1 歐姆電流檢測電阻串聯連接到系統接地。當電流流過外部負載時,該檢測電阻器中也會產生電壓降。該電壓通過 OP07 精密運算放大器放大并饋送到 ADC 引腳之一。
最后,對于電池充電,來自 USB 的 5 伏電壓與 4007 二極管和 5 歐姆限流電阻串聯到鋰聚合物電池。這是一種粗略的充電方法,不是最適合鋰電池充電的方法。
操作總結:
MCP4131 數字電位器產生 0-5 伏特范圍內的階躍電壓,步長約為 40mV(7 位 10K Digipot 有 129 階 5V/128 = 0.40 mV),然后由 LM358 放大 2.5 倍,給出0-12.5 伏控制電壓范圍,步長為 0.1 伏。這個放大的階躍電壓信號被饋送到 LM317 的調整引腳。LM317 產生 V_Step+1.25 伏的輸出電壓,提供給外部負載。外部負載的返回/接地通過 1 歐姆電流檢測電阻器連接到內部接地。
假設:x mA 電流流向外部負載,它將產生x1 歐姆電流檢測電阻上的 mV 壓降(歐姆定律 V=I*R)。這個小電壓信號被饋送到配置為 2.5X 增益的低偏移 (10uV) 運算放大器 OP07,這將產生2.5x毫伏輸出。Arduino ADC 配置有 1.1 伏的內部基準電壓,因此可以以大約 1 mV (1100/1023) 的步長檢測 0 -1100 mV 的電壓。OP07 的輸出連接到 Arduino ADC 以進行電流感應。這就是電流限制為 400mA 的原因。可以通過改變 OP07 的增益來增加/減少它。類似地,可以通過改變 LM358 的升壓電壓和增益來改變輸出電壓范圍。其他電壓是使用電阻分壓器網絡衰減電壓以適應 ADC 范圍測量的。鎖存繼電器有 2 個線圈。通過向任何線圈施加瞬時電源,可以切換繼電器觸點。一旦切換,它就會保持在那里,因此線圈會立即斷電。
構建項目
首先,我們從單個開關插座盒開始,并為放置電池、USB 充電端口、電源開關等進行必要的切割和對齊。
接下來,用銅帶和硬幣制作散熱器,用于 DC-DC 升壓模塊。
升壓模塊放置在插座盒內:
使用以上部分,制作了以下3個模塊:
Arduino + I/O + 控制模塊
步進電壓和可調穩壓器模塊
電流感應模塊
最后,所有板之間的連接被連接和焊接。
使用熱膠作為填充物后,我們終于有了:
開發固件和操作程序
固件(Arduino Sketch)現在是 1.0.2 Beta。目前并非所有功能都可用。但啟用了控制電壓、連接/斷開繼電器、查看信息等最重要的功能。在void setup() 其中很少有初始化函數來預熱與不同外部硬件相關的 Arduino 引腳。
輸入:有 2 個基于中斷的輸入按鈕,用于增加/減少輸出電壓,訪問菜單。Arduino 引腳 2 和 3 上的 INT0 和 INT1 編碼為下降沿中斷。您將看到 2 個電容器與機械開關并聯,用于去抖動。編寫代碼以在用戶按下這些開關通過繼電器打開/關閉輸出或增加/減少電壓(Beta)時觸發中斷。
輸出:1306 OLED 顯示輸出信息,從 ADC、內部定時器(用于設備運行時間)和標志變量獲取數據,以告知用戶輸出啟用/禁用狀態。基于 U8G 庫,OLED 將信息打印為文本和數字。我有使用圖形(模擬類型)表示的計劃。
SSD1306 的 5 個數字引腳(Waveshare 的 OLED)clk、din、cs、d/c、res 連接到 Arduino 10、9、11、13、12 引腳并進行相應編程。在主循環中,每次都會調用函數來更新 OLED 上的信息。
update_display()
Atmega328P 的內部定時器 1 配置為每 1 秒定期觸發以跟蹤時間。
控制:MCP 4131 數字電位器是一種控制器,具有以下功能:使用引腳 6、7、8 作為 CS、Clk、數據引腳,數據通過適當的時鐘和延遲移出。這就像慢速軟 SPI。由于我已經在其他地方用完了硬件 SPI 引腳,所以這是當時唯一的解決方案。
increment_digipot()decrement_digipot()
兩個數字引腳 4 和 5 用于控制自鎖繼電器。一個短的高脈沖被饋送到繼電器驅動晶體管以激勵 2 個線圈以翻轉繼電器。它既可以自動發生(在過載/短路期間),也可以由用戶手動發生。
ADC:主循環中的函數執行 獲取 20 次平均電壓和電流信息并更新變量以獲得新信息,然后將其打印在顯示器上
calc_VI()analogRead
草圖寫在多個選項卡中,以組織與不同操作相關的不同功能的代碼。有 ADC、Digipot、、中斷、繼電器和定時器選項卡排列所有用戶定義的功能。我也會嘗試添加更多注釋來解釋所有功能,但您應該不會覺得難以理解,因為這些功能是基于執行某些任務的多個 Arduino 功能。
Display_Fn
局限性
該設備有一些嚴重的限制:
電壓不能低于 2.0 V
電壓輸出階躍不連續
電流測量會為大電流產生接地偏移
ADC 測量具有低分辨率
在低壓大電流負載下效率是同類產品中最差的
非標準,稍不安全的鋰電池充電
結論
這種可編程電源將幫助我更有效地制作項目/原型。不使用萬用表測量電壓電流功率。
-
電源
+關注
關注
184文章
17586瀏覽量
249500 -
可編程
+關注
關注
2文章
844瀏覽量
39784 -
OLED顯示屏
+關注
關注
6文章
217瀏覽量
30647
發布評論請先 登錄
相關推薦
評論