請輸入產品關鍵字:
郵編:201824
聯系人:張琳琳
電話:
傳真:
手機:13482229885
留言:發送留言
個性化:www.junengjx.com
網址:www.junengjx.com
商鋪:http://m.js967.com/st166825/
智能渦輪流量計的設計
點擊次數:2337 發布時間:2011-10-9
智能渦輪流量計系統結構如圖1所示,包括傳感器、信號處理電路、AT89C2051單片機、LCD顯示電路、數據存儲電路和電源。信號處理電路通過放大器用于對待測信號進行放大;通過單片機設置能夠對內部定時器T0的工作進行控制,這樣能地測出加到T1引腳的單位時間內的脈沖個數;流速和流量顯示部分采用串口LCD顯示模塊,所得的數據采用I2C總線,并通過EEPROM來存儲,節省了所需單片機的口線和外圍器件,同時也簡化了顯示部分的軟件編程。 圖1 系統結構圖 該設計能實時將所測的流量速度顯示出來,同時也能夠累計顯示累計流量和分段流量。渦輪流量計能將傳感器輸入到單片機的脈沖信號的個數(傳感器將渦輪葉片轉過的個數轉變成相應的脈沖信號的個數)實時地測量出來,然后通過單片機計算出流速和流量,再將所得的數據存儲到串口數據存儲器,并由串口液晶顯示模塊實時顯示出所測流速或流量。該設計用一個按鍵來控制顯示即時流速或累計流量或分段流量.考慮到信號的衰減、強弱等影響,在信號送入單片機前應對其進行放大,然后再輸入到單片機進行計算。 單片機利用定時器T1的計數功能測出輸入信號的個數后,再利用單片機的算術運算功能將個數轉換成速度,同時每秒進行一次流量累計,從而計算出累計流量。zui后將得出的流速、分段流量值和累計流量值存儲在E2PROM中,并根據按鍵的按下情況來顯示流速或流量。為了方便計算要顯示數據值的段碼,可以通過查表的方式將要顯示的數據值中每一位的BCD碼轉換成8段碼送到顯示緩沖區,zui后經串口送至液晶顯示模塊以顯示所測的流速或流量。速和流量值采用8位顯示,流量用1個小數位,流速用2個小數位。 選用AT89C2051作為信號處理核心。T89C2051包含2kB的可重擦寫閃存、128字節的內部RAM、15個可編程的I/O口線、2個16位定時/計數器、1個5向量兩級中斷結構和1個全雙工的串行通信口,同時支持2種軟件可選的節電工作模式[1-2]。設計中用到了AT89C2051的T0,T1定時器,以及P1端口的8個口線。于該單片機與89C51相兼容,因此在硬件電路設計和軟件編程方面更加方便。由于AT89C2051本身固有的特點,設計時應考慮到:首先,它的程序存儲器空間為2kB,因此所有的跳轉和分支轉移指令都要限制在這個范圍內。其次,它沒有MOVX指令,不支持外部存儲器操作。此外,AT89C2051自身還有一些其他特點,譬如可以使用命令使其工作在低功耗模式等。 電路采用液晶顯示模塊LCM0825,該模塊與單片機的接口電路如圖2所示。 圖2 單片機與液晶顯示模塊接口電路 LCM0825是8位段碼式液晶顯示模塊,它內部集成有LCD控制器、LCD驅動器和RAM,因而可方便顯示數據的編程。液晶顯示模塊采用3~4線串行數據輸入,可直接與單片機接口。由于串行接口方式節省了所需的口線和系統資源,因而使系統具有較高的資源利用率。該模塊可在2.7~5.2V電壓下工作,其低功耗及背光可調特性使得設計更具有經濟性和通用性。LCM0825能夠顯示8位數據,每一個數據均以8段碼的形式放在其內部顯示RAM區,并用模塊內RAM的2個存儲地址來放置一個數據的8段碼。8位數據共占用內部16個地址[3]。每一個數據位的8段碼存放形式及高低地址存放段碼的順序都和表1所列的第8位數據的8段碼存放格式一樣,只是段碼的存放地址不同。因此,編程時應考慮數據的存放地址和形式.在使用該液晶顯示模塊時,VCC與VLCD之間可用一個50kΩ的電位器來調整背光。 數據存儲電路采用I2C總線的E2PROM存儲器CAT24WC04.CAT24WC04是串行的E2PROM存儲器,其存儲容量為4kB,SCL為時鐘線,SDA為數據線。流量數據保存在CAT24WC04,因此可保證掉電時數據不丟失。 系統軟件采用模塊化設計方法。整個系統由系統初始化模塊、信號處理模塊、定時器中斷模塊、流量和流速計算和存儲模塊、顯示數據處理模塊、數據顯示模塊以及其他功能模塊組成,其軟件結構如圖3所示。上電后,首先進入系統初始化模塊,此后系統軟件將開始運行,以實時地將所測數值顯示在液晶模塊上。 圖3 系統軟件結構框圖 待測信號經信號處理電路后加至單片機的P3.5(T1)引腳可為單片機測量信號數量提供有效的輸入信號。單片機通過T0定時器來決定測量數量的時間。測量時,首先將零賦給TH1,TL1兩個寄存器,將計數器T1的運行控制位TR1置位,同時也將ET1置位以允許計數器T1中斷。一旦出現低電平,則立即復位TR1以終止計數器,以結束計數程序。根據信號的數量和渦輪流量計的參數即可計算出此時的流速。 每秒進行一次流量數累加,用當前的速度值加上一秒前的流量數即可得出當前的總流量值,得出的流速和流量值放到E2PROM中,通過鍵盤顯示鍵可顯示流速或流量值。要顯示的流速或流量放到R1,R2,R3三個寄存器后即可調用轉換BCD代碼模塊,以將數據值顯示處理。數據轉變成相應的BCD代碼后,可調用顯示消多余零和顯示數據存儲模塊,并將要顯示的數據通過查表轉換成相應數據的8段碼放到顯示緩沖區以備顯示。編程時要把十進制數據的相應8段碼放在表格中,以便通過查表而得到相應數值的段碼。此過程的另一個重要目的是消除zui高有效位前面的多余零,使多余零的段碼處于不顯示狀態,從而保證數據以正常的格式顯示出來。zui后,將顯示緩沖區的8位8段碼經串口送至液晶顯示模塊進行顯示。 LCM0825是串行8位8段液晶顯示模塊。使用時,要在上電后對該模塊進行初始化.在初始化之前,應延時200ms以上再送命令。初始化工作過程如下:首先定義液晶模塊(當其命令代碼為:00101001),其次定義振蕩器方式(當其命令代碼為00011000時,將模塊定義為內部RC振蕩方式,命令代碼為00010100時,定義為外部晶體振蕩方式)。然后分別用命令代碼00000001和00000011開振蕩器和開顯示器。命令送入后,便可以在需要顯示數據時將相應的段碼直接送入模塊內部的顯示RAM中。在送顯示數據的段碼數據時,要考慮到顯示RAM的高和低地址所對應的數據段碼的存放形式。其第8位數據的段碼與LCM0825內部的RAM地址的對應關系見表1。以后隨地址的增加依次存放第7位至第1位數據段碼。為了正確地顯示數據,應使要顯示的8位字符在顯示屏幕中為左起第1位,右止第8位。 另外,由于命令格式及時序不同,寫命令和寫數據程序應分別編寫。編寫傳輸子程序時,所傳數據的高位先移入模塊,否則模塊不能正常工作或顯示。同樣,為了能正確讀/寫命令或數據,必須在時序中加入相應的延時;此外,為保證系統的低功耗,每次讀/寫命令或數據之后,都應將CS,RD,WR,DATA引腳置高電平。 基于單片機的智能渦輪流量計的設計方案中因使用了串口LCD顯示模塊和EEPROM儲存器,不僅節省了硬件資源,提高了系統性價比,又保證了系統測量精度和實時性,具有很好的應用價值。 |