大家好,作為電子愛好者,我們經(jīng)常需要自己搭建電路,測試電路的性能和參數(shù),在實驗設(shè)備里面,電源是最重要的設(shè)備之一,一臺好的電源可以給我們的測試帶來極大的便利和安全,但是很多愛好者是沒有一臺正規(guī)的實驗電源的,只能使用一些廉價的開關(guān)電源,或者適配器給電路供電,這樣操作存在一定的風險性,可能由于疏忽造成了電源短路,或者負載電流過大,導(dǎo)致電源承受不了這么大的功率,造成電源損壞甚至人身安全問題,這個項目的內(nèi)容就是給大家提供一個廉價的簡單的電源保護方案,保證大家在使用電源測試時的安全。
項目簡介:
本項目是一個基于STM32的過壓過流保護模塊,用戶可以通過按鍵進行屏幕交互,設(shè)置過壓過流值,當過流或者過壓觸發(fā)后,屏幕會指示相應(yīng)故障,切斷輸出,用戶排除故障后,可通過按鍵復(fù)位故障,再次接通負載 。
模塊指標:
過流響應(yīng)時間:小于600uS
過壓響應(yīng)時間:小于1.3mS
輸入電壓范圍:9V~60V
通過電流范圍:0A~10A
步驟1:系統(tǒng)框架搭建及核心器件的選型
1.系統(tǒng)框圖
2.核心器件的選型
整個項目其實我們一開始就考慮過要不要使用純硬件保護方案,然后STM32只做數(shù)據(jù)采樣顯示以及過壓過流參考值控制,后面仔細考慮了下,雖然反應(yīng)很迅速,但是我們希望加入數(shù)顯,用戶可以通過按鍵修改過壓過流值,同時為了減小體積,最終還是選擇使用單片機處理的方案,32系列型號比較多,為了充分的利用芯片資源,節(jié)省成本,我們采用STM32F031F6這個型號,TSSOP20封裝,Cortex-M0內(nèi)核,48M主頻,外設(shè)及性能足夠項目使用了。
為了方便采樣電流和電壓,我選用了TI公司的INA226,該器件可以監(jiān)視分流壓降和總線電源電壓,可編程校準值,轉(zhuǎn)換時間和取平均值功能與內(nèi)部乘法器相結(jié)合,可實現(xiàn)電流值和功率值的直接讀取。
OLED屏使用中景園的0.73寸屏幕,分辨率128*88,驅(qū)動芯片SH1107,這款屏幕有個很不好的地方就是工作電壓過高,7V以上才能工作,我初步設(shè)計決定這個模塊最好5V也能工作,很明顯這個屏幕是不符合需求的,但是負責硬件的朋友非要用這個屏幕,我也就沒干預(yù)太多,最終還是選用的0.73寸的,需要額外增加SX1308這顆升壓芯片,大家可以自行更換常見的中景園的0.96寸或者0.91寸的OLED這兩尺寸的,驅(qū)動芯片SSD1306,需要自行更換驅(qū)動庫,注意要更換成硬件IIC驅(qū)動,稍微有點費時。其它芯片沒有太多注意的,用的常用的型號。
電源芯片:XL7005(BUCK降壓),LP2983(LDO降壓),SX1308(BOOST升壓);
MOS驅(qū)動芯片:UCC27517;
MOS型號:BSC093N15N85/CSD19534。
步驟2:硬件系統(tǒng)及GUI用戶界面設(shè)計
簡要講解下電源部分,輸入電壓通過XL7005進行降壓后輸出5V電壓,然后再通過LP2983降壓到3.3V給單片機和INA226供電,另一路通過SX1308進行升壓到12V給MOS驅(qū)動芯片和屏幕供電。注:原理圖源文件請下載附件查看
GUI設(shè)計:
為了節(jié)省屏幕刷新時間,每次只顯示一個數(shù)字,顯示為覆蓋式,即不更改之前顯示的內(nèi)容,只把目標區(qū)域的內(nèi)容進行替換,減少清屏和重復(fù)內(nèi)容顯示所占用的時間,如下面設(shè)計圖,只有“299”,“299”,“NORMAL”這些字樣位置會進行數(shù)據(jù)替換,單位“V”,“A”,及背景,不需要顯示更新。
設(shè)計的界面圖如上圖:
頂部內(nèi)容為“電路城的LOGO”+Protection Modual字樣;
第一欄顯示電壓;
第二欄顯示電流;
第三欄顯示狀態(tài)。
步驟3:程序設(shè)計
按照預(yù)期的功能,我們需要使用單片機完成電壓電流的數(shù)據(jù)采樣,屏幕顯示內(nèi)容更新,數(shù)據(jù)處理這三個功能,其中屏幕顯示是一個比較占用處理器時間的過程,中景園官方例程提供的還是軟件IIC的驅(qū)動代碼,為了提高顯示內(nèi)容單次更新速度,就必須將官方的代碼進行更改,換成硬件IIC驅(qū)動,換成硬件IIC后,時鐘開到1MHz(實測IIC跑到1.2M以上屏幕驅(qū)動就吃不消了),顯示一個8*16像素的數(shù)字需要11ms左右,這個時間過長,導(dǎo)致其它進程循環(huán)周期過長,查看官方的驅(qū)動代碼后,發(fā)現(xiàn)顯示內(nèi)容數(shù)據(jù)生成的算法過于低效,算法跟中景園他們家0.96寸的型號不一樣,我參考0.96寸的算法進行了更改,將顯示一個8*16像素的數(shù)字提升到了1ms左右的刷新速度,這個速度還算可以,如果各位對這方面感興趣,也可以配合DMA+中斷,再換成SPI接口的硬件連接方式測試一下速度能不能更大幅度提高;電壓電流數(shù)據(jù)采樣部分采用的INA226這顆芯片,帶觸發(fā)輸出,但是只能限制一種觸發(fā)輸出,為了穩(wěn)定起見,在初始化INA226的時候,設(shè)置為過流觸發(fā),設(shè)置過流閾值,直接外部中斷觸發(fā)STM32并進行保護動作,電壓保護就采用寄存器輪詢方式進行監(jiān)控,所以屏幕刷新速度直接影響電壓保護動作速度,快則幾百uS,慢則1ms多,除了這兩個需要重點處理,其他部分就是常規(guī)的代碼編寫和優(yōu)化了。程序流程圖與部分程序截圖可在附件提供的資料中查看。
代碼都做了大量的批注,有些地方大家不太理解的對照程序流程圖輔助理解就好,大家可以根據(jù)自己的需求在工程里面刪改一些內(nèi)容,自定義一些功能,有什么建議和問題可以在評論區(qū)討論。
步驟4:系統(tǒng)功能測試及項目總結(jié)
制作說明:
將附件內(nèi)容的PCB工程用AD打開,生成Genber文件或者直接把PCB文件交給PCB生產(chǎn)商打樣,然后按照BOM表單進行元器件購買,程序文件使用的Keil 5進行編寫的,需要安裝Keil 5才能打開,程序下載采用的SWD方式,使用JLINK或者DAPLINK等下載器下載
使用教程:
1.模塊說明:
2.按鍵介紹:
SET鍵:進入/退出設(shè)置模式
AN鍵:復(fù)位保護操作(未進入設(shè)置模式);進入/退出更改閾值模式
+ 鍵:選中下一個數(shù)字(未進入更改閾值模式);當前數(shù)字數(shù)值+1(更改閾值模式)
-鍵:選中上一個數(shù)字(未進入更改閾值模式);當前數(shù)字數(shù)值-1(更改閾值模式)
3.更改閾值 :
①按一下”SET鍵”,進入設(shè)置狀態(tài)
②按“+鍵”或者“-鍵”移動光標選中的數(shù)字
③按下“AN鍵”,進入更改數(shù)字狀態(tài)
④按“+鍵”或者“-鍵”更改數(shù)值大小
⑤按下“AN鍵”,退出更改數(shù)字狀態(tài)
⑥按一下“SET鍵”,退出設(shè)置狀態(tài)
4.復(fù)位保護動作:
確保當前為顯示電壓電流狀態(tài),不是設(shè)置模式界面(如果是過流過壓觸發(fā)了保護,請排除故障再操作,以免多次復(fù)位保護導(dǎo)致MOS管損壞)
①按下“AN鍵”,即可復(fù)位
結(jié)語:
做這個項目和寫這個教學帖,目的是給一些電子愛好者提供一個過壓過流保護方案,可以直接用我們的DEMO工程去制作出來,對于有能力的朋友,完全可以在我們的基礎(chǔ)上進行改進,這個項目的硬件部分還可以做很多的優(yōu)化,大家可以在我的程序框架基礎(chǔ)上或者仿照我這個程序系統(tǒng)的設(shè)計進行自定義的功能設(shè)計和開發(fā),希望這篇教學帖子可以幫個各位,感興趣的朋友可以點個贊,留個評論,謝謝各位~
版權(quán)聲明:本文系電路城原創(chuàng)內(nèi)容,未經(jīng)授權(quán)禁止轉(zhuǎn)載,侵權(quán)必究!