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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于PIC16C72的水位水溫控制器的設計

          基于PIC16C72的水位水溫控制器的設計

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

          2.2 溫度測量
          下面以水箱的測量方法為例說明測溫原理。在圖2中,RT1是熱敏電阻,用來感應水箱。電阻R1與RT1組成簡單的串聯(lián)分壓電路對5 V的電源電壓分壓,RT1上的壓降為5V·RT1/(RT1+R1),該壓降隨溫度變化而變化,并通過A/D的輸入引腳AN0送入A內(nèi)部的A/D轉換器,轉換為數(shù)字信號,由程序讀取。熱敏電阻RT1用于測量室外管道的溫度,原理與上述完全相同,由引腳AN1把相應的熱敏電阻上的壓降送入A/D轉換器。這里選用負溫度系數(shù)熱敏電阻器(NTC)作測溫傳感器,NTC測溫熱敏電阻的主要優(yōu)點是電阻溫度系數(shù)大,靈敏度高,響應速度快,能進行精密溫度測量,主要缺點是熱電特性非線性現(xiàn)象嚴重。實驗發(fā)現(xiàn),在測量溫度較高時NTC熱敏電阻功耗較大,易造成熱擊穿,因此應盡量選用阻值較大的NTC熱敏電阻和分壓電阻。另外,考慮到PIC單片機的A/D輸入信號引腳的輸入漏電流最大為±500 nA,要保證A/D轉換結果的正確,就要求損耗在信號源內(nèi)阻上的電壓不能超過10 mV,這樣就要求信號源內(nèi)阻最大不要超過20 kΩ。經(jīng)分析和研究表明,在選用玻璃封裝的NTC熱敏電阻,精度為50kΩ+±0.5%,其B25/50為4050 k±1%,分壓電阻選用熱穩(wěn)定性好的精度為20 kΩ±0.5%的金屬膜電阻,不需線性補償,僅使用查表的方法就能滿足測溫精度±1℃的要求,并較好地解決了熱敏電阻的熱擊穿問題。
          2. 3 鍵盤輸入和顯示輸出
          利用的PORTB口的每個I/O引腳可提供量大20 mA的拉電流直接點亮LED工作,并具有軟件控制弱上拉的特點,可簡化按健輸入和顯示輸出接口電路。PORTB口除作按健狀態(tài)的輸入口外,還用于、溫度顯示及工作狀態(tài)的輸出端口,這通過程序設置PORTB口分時作輸入口或輸出口的方式實現(xiàn)。鍵盤查詢電路由電阻R4~R10及6個按鍵S1~S6組成,S1~S6分別定義為“升溫”、“降溫”、“定量”、“定時”、“上水”、“電熱”鍵。通過讀入引腳RB0~RB5上的電平可輸入按鍵S1~S6的開關狀態(tài)。兩位數(shù)碼管SM42052、指示燈L1~L7、狀態(tài)指示燈L8~L14以共陰、動態(tài)掃描方式輸出顯示,由的引腳RC4~RC7輸出的4個共陰顯示位控電平,控制4個8050三極管Q1~Q4作為兩位數(shù)碼管和兩組LED(L1~L7,L8~L14)的位控。由軟件譯碼后的顯示碼由引腳RB0~RB6上輸出直接驅動LED數(shù)碼管和指示燈L1~L14。按健S1~S6通過1kΩ的限流電阻R16接到PORTC口的引腳RC3,目的在于消除當PORTB作輸出口時,按鍵操作可能對數(shù)碼管和指示燈L1~L14顯示的影響。在查詢輸入按健S1~S6的狀態(tài)前,程序先使引腳RC3輸出低電平,然后讀入PORTB口的電平,輸入按健S1~S6的狀態(tài)。而在PORTB作輸出前,程序先設置RC3為輸入引腳,然后再從PORTB口的引腳RB0~RB6上輸出顯示碼,由于這時RC3引腳呈輸入高阻,按健S1~S6浮空,即使此時有健被按下,也不會把引腳RB0~RB6上輸出的高電平拉低而影響顯示。L1~L7燈顯示水箱,兩位數(shù)碼管一般情況顯示水箱,當按升溫或降溫鍵時,閃爍顯示設定的水溫值;當按定時健時,閃爍顯示設定的用水時間值;當出現(xiàn)故障時,則顯示故障編碼;燈L8~L10分別為定溫工作模式、定量工作模式、定時工作模式指示燈;燈L11~L14分別為上水、電熱、故障、自來水水壓狀態(tài)指示燈。S1、S2分別為升溫鍵和降溫鍵,用于選擇定溫模式,并用于改變水溫設定值;S3鍵為定量鍵用于選擇定量模式,并用于預置水量值,定時鍵S4用于選擇定時模式并改變時間設定值,S5為上水鍵用于開啟/關閉自動上水,S6為電熱鍵用于開啟/關閉電加熱,S7為水流開關,用于測量用戶用水狀態(tài)。
          2.4 控制輸出電路
          系統(tǒng)有三路控制輸出,分別是由單片機的RA5、RC1和RC2輸出控制三極管Q6、Q7和Q8,分別控制繼電器RL1和RL2、RL3和上水電磁閥。繼電器RL1和RL2用于控制電加熱管對水箱中的儲水輔助電加熱,繼電器RL3控制電伴熱帶用于上下水管路防凍堵,Q8控制上水閥上水。例如,按“上水”鍵將RC2置高電平開啟上水電磁閥,啟動上水。再次按“上水”鍵,程序使RC2輸出低電平,關閉上水電磁閥。低溫電伴熱帶防凍的條件是,室外管道溫度等于或低于4℃,程序就將RC1口置高電平,使電伴熱帶通電工作發(fā)熱,當管道溫度等于或高于10℃時,使引腳RC1輸出低電平,以關閉電伴熱帶電源。

          3 功能介紹和軟件編程
          本系統(tǒng)采用單片機程序控制,功能有水溫水量顯示、定量上水、定溫上水、定時用水、自動上水、輔助電加熱、管道自動防凍、溢水自停、用水自動停止上水和停止電加熱,低水壓判斷等功能。主要功能介紹如下:定量上水功能:按“水量”鍵,定量摸式燈亮,系統(tǒng)進入定量模式,水位燈開始閃爍,此時繼續(xù)按“水量”鍵,水位燈開始循環(huán)變化,在希望的水量值處停下,水量設定完成。按“上水”鍵,上水燈亮,開始上水,當水箱中的水量達到設定值時,自動停止上水。定溫上水功能:接“升溫”或“降溫”鍵,此時定溫模式燈亮,表示系統(tǒng)進入定溫模式,數(shù)碼管閃爍顯示設定的水溫值。繼續(xù)按“升溫”或“降溫”鍵,直到期望值為止。按“上水”鍵,上水燈亮,啟動定溫上水功能,在上水過程中,再按一下“上水”鍵,將關閉上水。定時用水功能:首先按“水量”健,水位燈閃爍顯示設定的水量值,繼續(xù)接水量鍵直到欲設定的水量值;再按“升溫”或“降溫”鍵,數(shù)碼管閃爍顯示設定的水溫值,繼續(xù)按“升溫”或“降溫”鍵,直到欲設定的值;最后再按“定時”鍵,此時數(shù)碼管閃爍,此時定時模式燈亮,指示當前為定時工作模式,繼續(xù)按“定時”鍵,直到顯示的數(shù)值為欲設定的用水時間(1~24 h)。在定時模式下,當日照較好,太陽能已使水溫達到設定溫度時,不啟動電輔助加熱;當日照不足時,會計算出合適的啟動電輔助加熱的時機,真正做到光與電自動互補,既節(jié)電又保證全天候使用。如要取消定時功能,按一下“水量”鍵或“升溫”“降溫”鍵就離開定時模式,進入定量模式或定溫模式。定溫電輔助加熱功能:當水溫低于設定值時,按“電熱”鍵可在開啟/關閉電加熱間切換。防干燒功能:當水溫低于設定值,水箱中水位不足1/4時,即使按電熱鍵也不能啟動電加熱。溢水自停功能:上水15min后,水位無變化,將自動關閉上水。另外還有用戶用水自動推遲上水、停止電加熱等功能,水箱無水15 min后自動啟動上水功能。系統(tǒng)程序由主程序、多個功能子程序及一個中斷服務程序組成,程序流程如圖3和圖4所示。程序用PIC匯編語言編寫完成,程序代碼近2kB。

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

          c.jpg



          4 結束語
          通過在測溫電路中采用較大阻值的分壓電阻和NTC熱敏電阻,有效地降低了NIC熱敏電阻的工作電流,較好地解決了NTC熱敏電阻的熱擊穿問題。采用自制的備份電極的水位傳感器,成倍地延長了水位傳感器的使用壽命。選用PIC16C72為控制芯片,外圍電路簡單、成本低、抗干擾性好。設計的定量、定溫、定時3種工作模式,功能全面實用,能滿足家庭太陽能熱水器多樣化控制的要求。按鍵操作簡明,無按鍵復用,一目了然,用戶容易掌握和使用,該水位水溫特別適用于家庭落水式太陽能熱水囂的自動控制。

          絕對值編碼器相關文章:絕對值編碼器原理
          水位傳感器相關文章:水位傳感器原理

          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(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); })();