基于FPGA的自動采集控制系統(tǒng)
摘要:本系統(tǒng)是基于FPGA為核心的自動溫度采集控制恒溫系統(tǒng),運(yùn)用了傳感器技術(shù),實(shí)時(shí)的對一定環(huán)境中的溫度進(jìn)行采集,并通過FPGA芯片進(jìn)行恒溫控制。系統(tǒng)運(yùn)行過程中,不需要人為進(jìn)行任何控制。系統(tǒng)通過固化在內(nèi)部的程序,自動對外界溫度進(jìn)行采集,顯示,并控制。該系統(tǒng)既能滿足小范圍內(nèi)的恒溫控制,同時(shí)又具有造價(jià)低,維護(hù)簡便,可操作性好的優(yōu)點(diǎn)。非常適用于小范圍內(nèi)的恒溫控制。
隨著當(dāng)前工業(yè)控制自動化日益普及,對于工作環(huán)境中的溫度控制也越來越重要。本設(shè)計(jì)即是針對某些需要持續(xù)恒溫的特殊環(huán)境而設(shè)計(jì)的自動溫度采集控制系統(tǒng)。該系統(tǒng)采用FPGA作為硬件核心部分,有效地利用FPGA在可編程門陣列方面的優(yōu)點(diǎn),最大限度的使硬件電路軟件化,減少了可視硬件的規(guī)模,降低了硬件加工、布線以及元器件采購方面的成本與復(fù)雜性,從而降低了故障排查方面的繁雜性。使硬件電路簡潔,降低了整體占用的空間。相對于其他的溫度控制系統(tǒng),具有小巧,維護(hù)維修方便的優(yōu)點(diǎn),大大的提高了可維護(hù)性,同時(shí)由于采用的元器件都比較常見,整體成本較低。因此很適用于一些小規(guī)模同時(shí)對溫度精度要求不高的場合。
1 系統(tǒng)工作原理
通過傳感器實(shí)現(xiàn)對外界環(huán)境溫度的采集,并將采集到的溫度信號傳送給FPGA芯片,F(xiàn)PGA芯片能夠自主地對采集的溫度信號進(jìn)行處理,并能通過LED顯示當(dāng)前溫度,同時(shí)自動將采集到的溫度信號與預(yù)設(shè)的溫度進(jìn)行比較得出正確的比較結(jié)果,通過I/O端口輸出控制外圍設(shè)備對環(huán)境溫度進(jìn)行控制,從而達(dá)到實(shí)時(shí)溫度控制的目的。本設(shè)計(jì)中主要有溫度采集模塊、FPGA芯片模塊、LED數(shù)字顯示模塊三部分,系統(tǒng)原理框圖如圖1所示。
通過FPGA編程來實(shí)現(xiàn)對溫度傳感器的實(shí)時(shí)溫度數(shù)據(jù)采集,并且實(shí)時(shí)地處理采集到的數(shù)據(jù),將采集到的數(shù)據(jù)轉(zhuǎn)換為BCD碼通過8段LED數(shù)碼管顯示出此前的溫度。與此同時(shí),采集到的數(shù)據(jù)將會與存儲在芯片里的溫度預(yù)設(shè)值比較,并自動產(chǎn)生比較結(jié)果,控制外圍設(shè)備對被測空間的溫度實(shí)施調(diào)節(jié)控制,從而達(dá)到恒溫的目的,溫度傳感器采集出的溫度數(shù)據(jù)通過二進(jìn)制數(shù)組片選選擇數(shù)據(jù)通過LED顯示,選擇的數(shù)據(jù)再與標(biāo)準(zhǔn)溫度進(jìn)行比較,溫度過高降溫處理、溫度過低則升溫處理。
2 主要功能模塊的實(shí)現(xiàn)
控制模塊如圖2所示,其中兩個(gè)PNP三極管的作用是在P1輸出控制信號時(shí)起到開關(guān)作用,根據(jù)圖中的三極管接法,當(dāng)輸出控制信號為低電平時(shí),三極管通導(dǎo),此時(shí)P2繼電器中有電流通過,使其3和6引腳接通。設(shè)計(jì)中由于采用的三極管對電流的要求較高,而又由于繼電器內(nèi)部可以認(rèn)為相當(dāng)于是一個(gè)電感,因此在繼電器剛剛上電的時(shí)刻,三極管發(fā)射極和集電極電流將會很大,很容易將三極管燒毀,因此加裝穩(wěn)壓二極管D2,使繼電器上電工作的時(shí)刻,瞬間電流通過二極管回路而不是通過三極管,就可以有效保護(hù)三極管不被燒毀。
外部輸出信號為低電平時(shí),p2回路導(dǎo)通,引腳6與引腳3有電流,p3導(dǎo)通開始工作,當(dāng)溫度過低時(shí),燈泡點(diǎn)亮;當(dāng)溫度過高時(shí),風(fēng)扇工作。從而實(shí)現(xiàn)對溫度的實(shí)時(shí)控制。
3 軟件設(shè)計(jì)及仿真結(jié)果
本設(shè)計(jì)中采用FPGA芯片作為核心控制部分。在本設(shè)計(jì)中軟件模塊主要包括溫度傳感器控制及數(shù)據(jù)接收模塊,溫度數(shù)據(jù)處理模塊,溫度顯示模塊。
3.1 溫度數(shù)據(jù)處理模塊
傳感器數(shù)據(jù)處理模塊tempture的頂層電路圖如圖3所示,它的作用主要是將12位二進(jìn)制的溫度信號轉(zhuǎn)換為用BCD碼表示的3位十進(jìn)制數(shù),輸入的12位溫度信號中其中的高8位二進(jìn)制代碼轉(zhuǎn)換為2組4位的BCD碼,例如輸入二進(jìn)制碼為“00010110”,代表十進(jìn)制數(shù)為“22”,輸出 BCD碼為“00100010”對應(yīng)的十進(jìn)制數(shù)個(gè)位、十位均為“2”和“2”;然后將剩余的低4位二進(jìn)制代碼轉(zhuǎn)換為4位BCD碼,如輸入二進(jìn)制碼為 “1110”,代表10進(jìn)制數(shù)小數(shù)為“0.875”,若只取一位小數(shù)位,則取“8”,其BCD碼可表示為“1000”。通過三個(gè)輸出端口分別輸出十位、個(gè)位和小數(shù)位。
對溫度數(shù)據(jù)處理模塊tempture-進(jìn)行仿真測試。假定預(yù)設(shè)置輸入溫度二進(jìn)制的代碼為“000101111011”,則其對應(yīng)十進(jìn)制數(shù)應(yīng)為:“23.6”。仿真結(jié)果如圖4所示。
根據(jù)頂層原理圖,a[3. . 0]輸出為溫度數(shù)值的十位數(shù),b[3..0]輸出為溫度數(shù)值的個(gè)位數(shù),c[3..0]輸出為溫度數(shù)值的小數(shù)位。則仿真圖中,shi、fen、ge三位輸出的數(shù)字分別為“2”、“3”、“6”,仿真結(jié)果與預(yù)測轉(zhuǎn)換結(jié)果一致。
3.2 溫度顯示模塊
設(shè)計(jì)采用了4個(gè)8段式的LED數(shù)碼管可以動態(tài)顯示溫度的百位、十位、個(gè)位與分位。下圖為溫度顯示模塊的頂層電路,由圖可知,模塊由片選模塊、譯碼轉(zhuǎn)換模塊與計(jì)數(shù)器三者組成。片選模塊主要由一個(gè)二進(jìn)制計(jì)數(shù)器和四選一電路組成。
當(dāng)系統(tǒng)工作時(shí),先將二進(jìn)制計(jì)數(shù)器在clk控制下依次連續(xù)產(chǎn)生4個(gè)兩位二進(jìn)制數(shù)組,來控制片選模塊選擇性的輸出shi[3..0]、ge[3..0]、fen[3. . 0]、bai[3. . 0]四路輸入信號中任意的一路。將選出的這一路輸入信號交給譯碼轉(zhuǎn)換模塊,利用二進(jìn)制計(jì)數(shù)器產(chǎn)生的連續(xù)二進(jìn)制數(shù)組,可以控制譯碼器依次輸出對應(yīng)的4位二進(jìn)制數(shù)組來依次點(diǎn)亮各個(gè)LED數(shù)碼管。最后,可以在LED上顯示出數(shù)字,讀取結(jié)果。
對溫度顯示模塊display進(jìn)行軟件仿真測試,設(shè)置輸入shi[3..0]、fen[3..0]、ge[3..0]分別是“0100”、“0011”、“0010”,則其對應(yīng)10進(jìn)制數(shù)應(yīng)為“43.2”。仿真結(jié)果如圖6所示。
由仿真示意圖可看出,片選信號由時(shí)鐘信號控制循環(huán)變化,而對應(yīng)輸出的ledout端也依次輸出shi,fen,ge,bai四個(gè)端口輸入的數(shù)據(jù),且輸出的是8位LED數(shù)碼管顯示碼,從圖中可以讀出,當(dāng)片選信號為“0111”時(shí),對應(yīng)的輸出信號ledout為“11000000”,即表示在數(shù)碼管上的顯示為 0,小數(shù)點(diǎn)不亮,表示百位為0;當(dāng)片選信號為“1011”時(shí),對應(yīng)的輸出信號ledout為“10011001”,在數(shù)碼管上的顯示為4,小數(shù)點(diǎn)不亮,表示十位為4;當(dāng)片選信號為“1101”時(shí),對應(yīng)輸出ledout為“10110000”,在數(shù)碼管上的顯示即為3,表示個(gè)位為3;當(dāng)片選信號為 “1110”時(shí),對應(yīng)輸出ledout為“00100100”,在數(shù)碼管上的顯示即為2,小數(shù)點(diǎn)點(diǎn)亮,表示小數(shù)位為2。動態(tài)掃描后可知,數(shù)碼管上顯示的內(nèi)容即為“043.2”。與輸入的數(shù)據(jù)相同,說明程序編寫正確,系統(tǒng)運(yùn)用良好。
4 測試數(shù)據(jù)
由表1數(shù)據(jù)顯示,LED數(shù)碼管上顯示的溫度與實(shí)際測量的溫度,從表中可以得出,兩者近似相等,誤差在0%~0.58%之間,是可以接受的誤差范圍。表2是指設(shè)定了所需溫度,記錄溫度變化的過程與實(shí)現(xiàn)這一目標(biāo)所需的時(shí)間。例如第一次中,我們設(shè)定的溫度為20℃,開始LED上顯示的溫度值為17.5℃,最后經(jīng)過自動控制系統(tǒng)溫度升高到20.2℃,這一過程共用時(shí)30分鐘。誤差也是存在的,誤差在1%左右,也是可以接受的范圍。
5 結(jié)束語
從測試結(jié)果上看,設(shè)計(jì)的主要目的已經(jīng)達(dá)到,系統(tǒng)運(yùn)行可靠,精度也已達(dá)到設(shè)計(jì)要求。但設(shè)計(jì)中仍存在一定缺陷,主要缺陷在于本設(shè)計(jì)中所使用的預(yù)設(shè)溫度是固化在程序中,一旦系統(tǒng)開始工作,就不能再更改預(yù)設(shè)的溫度,因此本系統(tǒng)比較適用于不會經(jīng)常變更設(shè)置溫度的場合。