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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于單片機的智能感溫水表的設(shè)計

          基于單片機的智能感溫水表的設(shè)計

          作者: 時間:2012-02-08 來源:網(wǎng)絡(luò) 收藏

          3 系統(tǒng)軟件
          3.1 軟件總體
          系統(tǒng)的軟件采用了模塊化的設(shè)計方法,主程序通過調(diào)用各子程序模塊來實現(xiàn)相應的功能,其程序流程如圖5所示。

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

          e.jpg


          系統(tǒng)初始化程序完成端口的功能選擇及各寄存器、LCD顯示模塊的初始化。溫度傳感器模塊檢測當前水管中液體溫度,并與設(shè)定的閾值(85℃)相比較,當溫度高于閾值時,流量傳感器模塊計算當前流量。LCD顯示模塊程序完成流量顯示,存儲模塊存儲當前流量值。
          3.2 流量信號的計算
          流量傳感器中的干簧管采用單計數(shù)脈沖輸入,2個100μF的電容用來消除雙干簧管閉合時產(chǎn)生的抖動。如圖4所示,轉(zhuǎn)盤每轉(zhuǎn)一圈,永磁鐵經(jīng)過干簧管附近一次,即產(chǎn)生一個計量脈沖。雙干簧管的情況下這要計數(shù)脈沖有效就對流量進行計算。具體的程序流程如圖6所示。

          f.jpg


          當檢測到干簧管A的脈沖信號是并不直接開始計算,還要檢測干簧管B得脈沖信號。當干簧管B的脈沖信號也被檢測到的時候,認為此次計數(shù)脈沖有效,并記錄,與以前的檢測脈沖數(shù)求和。
          在室溫下進行20次測量實驗,傳感器管道直徑50 mm。實驗數(shù)據(jù)得到該流量傳感器平均一次有效計數(shù)脈沖對應0.64 L的液體流過設(shè)計管道。
          若當前記錄的總的脈沖數(shù)為N,則此時的流量Q=0.64N(單位:L)。
          3.3 溫度測量
          感溫的溫度測量系統(tǒng)的溫度傳感器是DS18B20,硬件電路簡單、穩(wěn)定。但是這是以犧牲軟件為代價的,在編程時必須嚴格遵守DS18B20工作時序的要求。DS18B20的溫度信號檢測流程如圖7所示。

          g.jpg


          先由主機給DS18B20發(fā)一個復位脈沖,在DS18B20發(fā)回響應脈沖給主機后,主機再發(fā)讀ROM命令(代碼33H),并發(fā)一個15μs左右的脈沖,接著再讀取DS18B20序列號的一位,并用同樣方法讀取序列號的每一位。

          4 結(jié)語
          本文所設(shè)計的感溫,以AT89C52為核心控制芯片,加入了溫度傳感器、流量傳感器、外圍顯示電路和E2PROM存儲設(shè)備。
          設(shè)計提出的采用DS18B20傳感器采集溫度信號的設(shè)計方案,克服了普通不能分辨冷熱水的缺陷,適合用于我國各種不同的區(qū)域環(huán)境。同時,其計量準確度符合國家標準要求,有良好的實用價值,具有廣闊的市場前景。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();