<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 智能化流量計量系統(tǒng)的研究

          智能化流量計量系統(tǒng)的研究

          作者: 時間:2006-05-07 來源:網絡 收藏

          摘要:介紹了一種基于AT89C2051單片機和AT45D0411IC智能卡開發(fā)的智能化流量計量系統(tǒng)。該系統(tǒng)具有精確測量、流量控制、科學計費、數(shù)字顯示、IC卡智能管理、數(shù)據(jù)采集、A/D轉換和標度換等功能。著重介紹了系統(tǒng)的原理以及硬件與軟件設計。

          本文引用地址:http://www.ex-cimer.com/article/255695.htm

          關鍵詞:單片機 IC智能卡 流量計量 隔離驅動 程序監(jiān)控

          近年來,IC智能卡和單片機被廣泛地應用到工業(yè)控制和家庭智能小區(qū)系統(tǒng)中。智能化、可編程控制的儀器儀表是傳統(tǒng)的儀器儀表發(fā)展的必然方向。本文介紹的是種智能化流量計量系統(tǒng),該系統(tǒng)主要采用了單片機程控、IC智能卡、數(shù)碼顯示、單簧管計數(shù)脈沖信號、數(shù)據(jù)采集與A/D轉換、標度變換、溫度傳感、儀表放大、用繼電器驅動電磁閥門通/斷、優(yōu)化算法以及看門狗監(jiān)控等技術。該系統(tǒng)與同類系統(tǒng)相比具有功能多、成本低、體積小、功耗低、調試方便、控制精確、抗干擾能力強等特點。更為突出的是系統(tǒng)若進一步擴展,可實現(xiàn)遠程收費和維護等功能。

          1 系統(tǒng)的硬件構成與特點

          系統(tǒng)的硬件主要由AT89C2051單片機、數(shù)據(jù)采集與數(shù)模轉換電路、儀表放大器、IC卡讀寫器、數(shù)碼顯示器、驅動電路和看門狗電路等組成,其硬件框圖如圖1所示。

          儀表放大器將溫度傳感器感應的信號差動放大到A/D轉換所需要的幅度值范圍,經A/D轉換、標度變換后的數(shù)據(jù)與通過計算器測出的流量信號一起送到單片機,通過優(yōu)化算法計算出費用。單片機通過控制顯示驅動器(MAX7221)動態(tài)顯示溫差、流量或余額,再利用IC讀寫電路向IC智能卡AT45D041讀、寫數(shù)據(jù)。當卡里金額不足時,系統(tǒng)會提醒用戶往IC卡里加費,否則系統(tǒng)的驅動電路就自動切斷流體的通路(卡里余額可續(xù)存),從而達到智能化流量控制和科學計費的功能。系統(tǒng)還采用看門狗電路和隔離電路,提高運行穩(wěn)定性和干擾能力。

          1.1 單片機

          單片機采用ATMEL公司的89C2051,內置128字節(jié)RAM、2K字節(jié)閃速內存儲器、2個16位計數(shù)器/定時器、15個I/O口和5個中斷源、一個全雙工串行口、一個精確的模擬比較器、片內振蕩器和時鐘電路。外部有20條引腳,比其了類型單片機壓縮了許多接口線。本系統(tǒng)充分利用了AT89C2051不多的接口線。

          1.2 IC卡讀寫器

          IC卡讀寫器主要由串行可編程閃速存儲器AT89C2051以及少量外圍元器件構成。AT45D041有兩大類讀/寫操作模式:A類和B類,其中A類能對閃速存儲器操作,而類則不行。兩種模式的工作流程尖似,即由單片機向IC卡操作指令,接著SCK端發(fā)送同步時鐘脈沖,就會把SO或SI端的數(shù)據(jù)串行地讀出或寫入IC卡里指定單元。本系統(tǒng)讀卡采用A類模式1,即主存儲讀寫方式,讀卡命令為52H,XXH,XXH,XXH;寫卡采用A類模式2,即通過緩沖器2向主存頁寫方式,寫命令為85H,XXH,XXH,XXH。圖2為IC卡讀寫裝置的電路源理圖,AT89C2051的PI.7、P1.6、P1.5分別與AT45D041的SI、SO、SCK相連,實現(xiàn)一個簡單的三線中行通信。其中C9與C10是IC卡座的接通開關,當IC卡插上時,開關閉合,C1端連上+5V,AT45D041被供電,讀寫器正常工作;當IC卡拔出后,C1端通過硬74HC09向AT89C2051的IXNT0卡拔出中斷請求,P2.1判斷是計數(shù)器滿中還是掉卡中,從而轉到相應的中處理程序。

          1.3 顯示器驅動電路

          顯示驅動電路主要由MAX7221芯片外加亮度調節(jié)電位器W1構成,其原理框圖如圖3所示。MAX7221是一8位七段共陰極顯示驅動芯片,它采用了3線串行輸入/輸出接口方式與單片機直接,無須外接任何外圍元器件,電路設計與調試非常方便。在本系統(tǒng)中,單片機每隔一段時間就發(fā)送要顯示呂的數(shù)據(jù),通過編程預設好其動態(tài)顯式方式后,MAX7221應不需要單片機干預的情況下,自行將鎖存器中的數(shù)據(jù)調出來,經譯碼、放大后驅動碼管動態(tài)循環(huán)顯示,直到單片機下次再串行地送中一組數(shù)據(jù)時,MAX7221才修改鎖器的內容,從而改變數(shù)碼管的顯示的結果。

          1.4 隔離驅動電路

          在本系統(tǒng)中,單片機通過控制電磁閥門的工作狀態(tài)來達控制流體回路通/斷的目的。電磁閥門屬于強電部分,因此不能與弱電部分即單片機控制系統(tǒng)直接相連。此外,強電控制回路會對單片機控制系統(tǒng)產生嚴重干擾,影響單片機系統(tǒng)的正常工作。這時采用的辦法是在單片機和強電控制回路之間加隔離驅動電路,如圖4所示。該電路還采取了幾個措施消除繼電器和電磁閥門動作對單片機的電磁干擾:(a)強、弱電控制回路單獨供電,而且它們的地線必須隔開,經消除脈動干擾;(b)給繼電器和電磁閥等易產生磁輻射的元件加裝屏蔽罩;(c)給單片機電源回路加濾波電容;(d)在單片機的I/O口與噪聲源之間慶加隔離以及濾波或陷電路;進一步消除沖激干擾,如圖5所示;(e)對單片機使用看門狗電路。

          2 系統(tǒng)的軟件設計

          本系統(tǒng)的程序采用模塊化結構,由主程序、中斷服務程序、數(shù)據(jù)采集處理子程序、顯示子程序和讀/寫卡子程序組成。主要程序的流程圖見圖6。

          主程序處于循環(huán)狀態(tài),主要完成各部分電路和中系統(tǒng)的初始化,并不斷地查詢IC卡的情況和循環(huán)調用顯示子程序。每當?shù)艨ɑ蛴嫈?shù)時間到時,就發(fā)出中申請,CPU響應中后立即修改IC卡里的數(shù)據(jù),最后修改顯示緩沖區(qū)的內容(供下一次顯示用)就返回。返回后繼續(xù)執(zhí)行示子程序,動態(tài)地顯示修改后的數(shù)據(jù),等待下一次中斷的到來。

          為了提高系統(tǒng)的抗干擾能力,除了在硬件上采取措施外,在軟件設計上采用了相應的對策。其辦法主要是發(fā)現(xiàn)失常狀態(tài)后能及時引導系統(tǒng)復到原始狀太。另外還有:(a)配合看門狗電路,在程序的不同地方添加一條STEBP3.7指令,隔一段時間對定時器進行刷新,保證兩次置位指令的程序執(zhí)行時間小于1.6s。而當程序失常時,定時器因得不到刷新產生的“溢出”信號使AT89C2051復位,從而就把程序拉回到正常的軌道上來;(b)對一點數(shù)據(jù)連續(xù)采樣多次,本程序采用數(shù)字濾波方法中的算術平均來減少系統(tǒng)的隨機干擾對采集結果的影響;(c)在非程序區(qū)設置攔截措施,使程序進入陷阱,然后強行使程序進入初始狀態(tài),在非程序區(qū)反復用“LJMP#0000H”指令來填滿。

          本文介紹的智能化流量計量系統(tǒng)是筆者應天津西清物業(yè)公司的委托而開發(fā)研制的,目前已用于該物業(yè)公司投資建設的兩個智能小區(qū)的暖氣計費系統(tǒng)中,解決長期以來的一直困擾該公司的暖氣收費計量問題。實際使用表明,這種智能化流量計量系統(tǒng)運行效果良好,實用方便。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();