王伯槐, 康亞明
(榆林學院 信息工程學院,榆林 719000)
根莖類飼料在家畜飼養上有重要意義。根莖類飼料的特點是質地柔軟、水分和可溶性碳水化合物含量高、易于消化、含有多種維生素、適口性好,是白絨山羊幼羊、種羊、母羊冬季的重要營養補充飼料原料。目前,陜北地區喂白絨山羊的塊根、塊莖飼料主要有飼用甜菜、蘿卜、胡羅卜、馬鈴薯等。傳統塊根、塊莖飼料的清洗全靠人工完成,費時費工,效率低下,針對該情況,設計基于AT89c51的單片機控制的飼料清洗系統取代人工工作。
系統由硬件系統和軟件系統構成。硬件系統主要由單片機及其顯示電路、告警電路、檢測電路、直流電機控制電路等組成。正常工作時,單片機循環檢測電路輸出信號,依據此信息產生電機控制信號,電動機帶動清洗機運行,當系統檢測到控制方式發生改變時,系統進入相應控制模式。其原理框圖如圖1所示。
智能飼料清洗機硬件主要部分有:單片機控制模塊、顯示模塊、鍵盤輸入控制模塊、指示燈模塊、控制執行模塊、溫度傳感器采集模塊、加熱模塊。構成以單片機控制模塊為核心,其它以數據采集和輸入控制為輔,組成的一套清洗過程的管理系統。清洗機的電源包含220V交流電路,AT89C51和蜂鳴器工作用的低壓直流電路及高、低壓共路的電路。

圖1 飼料清洗系統組成框圖
AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器。AT89C51與MCS-51指令集和輸出管腳相兼容。它將多功能8位CPU和閃爍存儲器組合在芯片中,AT89C51是一種高效且價廉微控制器。芯片管腳路如圖2所示。
P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。

圖2 AT89C51管腳定義圖(VCC:供電電壓;GND:接地)
P1、P2口:P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。
P3口:P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。
電氣控制系統一般需兩種直流電源:+5 V和+12 V,其中+5 V作為IC、LED顯示路、三極管放大器驅動雙向可控硅的直流電源;+12 V直流電壓供給蜂鳴電路及繼電器。
控制器中的電源主要向繼電器、可控硅、LED燈、以及蜂鳴器等供電,負載電流較大,為有效抑制濾波后的電源的紋波,我們在穩壓片7805的輸入和輸出端各加一個電解電容。另外,為提高整個電源部分的抗干擾能力,一般在7805的輸入和輸出端各加一個高頻電容,以吸收外來的各種高頻干擾信號。如圖3所示。

圖3 直流電源
由分壓電阻及脈沖信號電路組成,將交流電過零點所產生的同步信號輸入給AT89C51,以作為雙向可控硅過零觸發的同步觸發信號。如圖4所示。

圖4 可控硅過零檢測電路和負載驅動
顯示電路由LED、LCD組成,由IC輸出端巡回輸出顯示信號,使顯示電路發光二極管(或LED、LCD)交替發光顯示,以顯示清洗機的運轉狀態。
對于LED必須采用直流電壓驅動,LED是電阻性負載,動態響應快。工作電壓為1.5-5 V。
三極管、電阻和陶瓷蜂鳴片等構成報警電路,當有信號給蜂鳴片使之發聲,表示按鍵按動有效,程序執行終了以及異常運轉狀態等。
以雙向可控硅為電源開關的電路,原理圖如圖5所示。

圖5 負載仿真電路圖
按鈕選擇開關發出操作指令給AT89C51,AT89C51根據指令按預定的程序向各個雙向可控硅控制極輸出控制信號,使各雙向可控硅按程序導通,電機等按程序運轉,清洗機按程序工作。與各個觸發電路上可相連反向驅動放大芯片,用于控制可控硅導通和截止。與雙向可控硅驅動電路并聯的壓敏電阻,是用以吸收瞬間高壓,保護雙向可控硅的安全。在保護回路是一個并接在雙向可控硅陽極之間的RC網絡。
在清洗機控制器的設計過程中,為提高抗干擾能力,一般在可控硅的門極要加上一個104的電容,在做PCB板時應盡量將該電容靠近可控硅的門極,否則將減少其效果。
可控硅的驅動電源盡量采用+5 V電源來驅動,該方式可避免因網絡電壓的波動影響可控硅的驅動。另外,在計算可控硅的門極電流時,將其電流值靠近該可控硅的最大門極電流,這樣可避免在低溫條件下可控硅的導通情況。
電動機控制部分原理圖如圖5所示。電動機有兩個控制端, 一端控制正向運轉, 另一端控制反向運轉。系統供電時,交流220 V電壓經過雙向可控硅加在電動機的兩個控制端, 可控硅的控制端由單片機的P3.0、P3.1控制,調節P3.0、P3.1的高低電平輸出,電機正反向旋轉。在整個清洗過程中,程序會不斷判斷清洗機的強、弱洗模式, 從而不斷調整電機轉動方向。
清洗機為了減少用戶的操作,用戶對智能清洗機的操作,基本除了啟動和緊急停止以外,很少有其他操作,為了滿足設計需要,系統中增加了設置時間和設置溫度操作。
系統開發語言以C語言為核心,使用軟件KEIL和PROTEUS結合開發仿真。主流程圖可細分為進水,加熱,清洗,排水,脫水,警告6個子程序。其主程序流程圖如圖6所示。

圖6 主程序流程圖
當用按下啟動按鈕時,所有硬件初始化,初始化完成后,“主控權”交給了單片機,從這時開始,各個硬件的打開關閉都由核心控制器單片機控制完成,各個硬件之間的交互與控制。而真正的要達到洗滌的效果。
在各子程序中,是按下啟動按扭的輔助繼電器;進水程序是判斷清洗機水位是否和設定水位不一致的輔助繼電器;加熱程序是判斷清洗機水位是否和到達設定溫度;清洗程序開始清洗過程,在以上程序中出現任何錯誤或警告時,則強制結束清洗過程,以保證清洗機正常工作。
為提高配料精度和設備的自動化水平,采用電磁振動給料機。工作時,振動給料機按控制定量,將貯料器中的物料送給流量計,流量計將實際給料量檢測出來,測量關鍵的是被控變量的實際值,與期望值相比較,用這個偏差來糾正系統的響應。反饋給控制系統,反饋理論的要素包括3個部分:測量、比較和執行。調節給料機,使給料量達到系統設定值。PID控制器由比例單元P、積分單元I和微分單元D組成,如圖7所示。

圖7 PID控制原理圖
在連續控制系統中,PID控制器的輸出u(t)與輸入e(t)之間成比例、積分、微分的關系,即式(1)。
(1)
寫成傳遞函數的形式如式(2)。
(2)
在正常情況下,按下啟動按鈕或者脫水完畢,而且清洗大循環未到2次時,開始進水,當水位到設定水位后停止進水,等待2分后進入加熱過程。為了不出現死循環,程序作了時間檢測。加水一定時間沒有加滿時,強制結束清洗過程。如果人為想強制停止情況下,可按下停止按鈕按下時立即停止進水,如圖8所示。

圖8 進水程序流程圖
加熱程序非常簡單,只是做一個簡單的判斷,判斷清洗過程是否選擇了加熱,如果選擇了加熱就循環判斷溫度時候達到清洗設定的上限,如果沒有達到上限就發送加熱指令,否則發送停止加熱指令;如果沒有選擇加熱,就直接跳過加熱程序判段,直接進入清洗子程序。
加熱完成后,等待J秒后(J在系統中設置),先發送順時針旋轉指令,旋轉N分鐘后(N在系統中設置),檢測是否到達設定的清洗時間,在判斷沒有到達之后,發送逆時針旋轉指令,這樣就產生了順時針旋轉和逆時針旋轉的效果。例如進水到設定清洗時長10分鐘,開始清洗,先正轉1分鐘,判斷是否超過10分鐘,這時肯定沒有到達設定時間,這時開始反轉1分鐘,反轉完成后,開始正傳1分鐘,正傳完成后又開始判斷時間,這時已經旋轉了3分鐘,但仍然小于10分鐘。以此類推。
清洗過程完畢后,進入排水過程。排水過程很簡單,只需要打開排水閘,之后檢測排水是否排完,注意:這時不能關閉排水閥,下個在脫水過程排水閥因該打開。
水排空后,開始脫水,脫水這清洗都是要發旋轉指令,不過脫水的時候,只是一個方向的旋轉,并且和清洗過程不一樣的是脫水的時候,排水閘是打開狀態,而清洗相反是關閉狀態。
整個流程循環設定次數后或出現異常情況結束,開始洗完警示過程,3s后停止報警,可以通過顯示屏,檢查是正常結束,還是錯誤導致的。這樣整個過程結束。
仿真主要是通過Keil和Proteus兩種軟件實現,keil主要編寫C程序,主要的目的是用來生成hex文件,hex文件是單片機的執行程序。Proteus軟件用來加載hex文件。模擬清洗機。
本次測試使用黑盒測試方法,在測試時,把程序看作一個不能打開的黑盆子,在完全不考慮程序內部結構和內部特性的情況下,在程序接口進行測試,它只檢查程序功能是否按照需求規格的規定正常運行,程序是否能適當地接收輸入數鋸而產生正確的輸出信息,并且保持外部信息的完整性。主要測試6個子程序的功能,和當前引腳的狀態,以及led顯示的結果,LED從上到下的表示的意思是初始化,進水,加熱,清洗,排水,脫水,警示、結束。根據正在運行的程序和引腳的狀態判斷是否達到預期的結果。通過測試功能,引腳的狀態以及led的顯示結果進行測試,并作了對程序運行過程的分析。并把測試結果如表1所示。

表1 系統電路測試
整體系統設計以AT89c51為主控制核心,通過C語言完成軟件設計,功能完善,并對設計進行了仿真檢驗和電路測試,根據測試結果,實現智能清洗機的進水、加熱、清洗、排水、脫水、警示等基本功能,達到設計所規定的指標和基本要求。