陶 佳
(廣東省技師學院,廣東惠州,516100)
基于VB 和單片機的溫濕度及火焰監控報警系統設計
陶 佳
(廣東省技師學院,廣東惠州,516100)
本文介紹了運用VB6.0的MSComm控件完成計算機與單片機的串行通信,采用數字溫濕度傳感器和火焰傳感器完成對數據的采集。單片機將處理后的數據上傳到PC機,利用VB控件顯示,并根據監測到的數據進行判斷發送控制信號給單片機,進而驅動執行機構實現相應的控制。
VB6.0;傳感器;單片機;串行通信
自動化、智能化是未來的趨勢,特別是在企業、學校機房等一些特殊環境為了更好的維護一些儀器設備,使其能夠正常工作并且避免火災的產生,需要對機房的溫濕度及是否有火焰進行監控,并且不用手動控制空調、火災報警器,通過計算機實現對空調及報警器的控制,大大提高了工作效率。單片機利用溫濕度傳感器和火焰傳感器采集數據,采集完的數據傳送給 PC 機作出處理,為了使數據快速有效的傳輸, PC 機與單片機必須有可靠的通信方法,本文先介紹了PC機和單片機通信接口的設計,然后基于 VB 軟件平臺的PC 機一方面接收單片機從傳感器采集的數據,另一方面發送信號給單片機對執行機構進行控制實現溫濕度的調節及火焰報警。
本系統PC機與單片機之間串行通信使用RS232接口進行,PC機可以實時的顯示采集到的溫濕度和光線(火焰)數據,并且把得到的數據每隔一分鐘進行保存,根據檢測到的數據對空調的溫度進行控制,可以選擇所期望的溫度,發指令給單片機控制溫濕度值;PC機還可以顯示是否有火焰產生,一旦火焰產生,發指令給單片機控制報警器報警。單片機負責對溫濕度和火焰信號采集,以及控制調溫設備和報警器的運行,傳感器分別采用 SHT71溫度傳感器和telesky公司的火焰傳感器。單片機將采集到的數據按照串行通信協議發送給PC機,由PC機進行實時顯示,根據顯示的情況設定期望的溫度和濕度值,發送控制信號給單片機控制執行機構。基于 VB 的人機交互平臺,達到數據采集處理進而控制執行機構的目的。由于計算機串行接口與 ATemga16 單片機的驅動電平不一致,故采用MAX232作為兩者的接口電平轉換芯片。
下位機系統由單片機、傳感器和控制執行機構三個部分組成,主要負責數據的采集和執行命令。單片機采用的是ATmega16,ATmega16 在片內集成了 16KB 的 Flash 程序存儲器、1KB 的 RAM 數據存儲器和 512字節的 EEPROM數據存儲器,32個可編程的 I/O總線,2個 8 位、1個 16位的定時/計數器和1個串行收發器 USART。
溫濕度傳感器采用SHT71,它具有數字輸出、低功耗、 高精度、快速響應、抗干擾能力強、性價比高等優點,相對濕度的工作范圍在0%~100%,溫度的工作范圍—40°C~123.8°C 。
火焰傳感器采用深圳天士凱(telesky)電子公司的紅外線火焰傳感器,火焰探頭探測角度為前方60度左右,可根據實際需要使用多個該型號傳感器,實現全角度覆蓋,輸出接口可以與單片機I/O口直接相連,具有數字和模擬兩種信號輸出形式,靈敏度可調。
系統上位機和下位機采用 RS-232協議進行通信,因為單片機輸入和輸出電平為 TTL電平,PC機上配備的異步通信口符合RS-232 標準,RS-232C 的邏輯“0”電平規定為+5~+15V ,邏輯“1”電平規定為?15~?5V ,因此不能直接與 TTL/CMOS 電路連接,要實現單片機 ATmega16與 RS-232 進行通信,必須經過電平轉換,MAX232經常用于 RS-232C 電平轉換。
軟件系統主要包括 PC 機與單片機的通信程序的設計。PC機(上位機)采用串行通信控件 MSComm與單片機進行通信,利用MSComm 控件的 Input 和 Output 屬性完成串口數據的接收和發送功能。單片機(下位機)接收 PC 機發送的命令并判斷是否為標志位,如果相符的話就向 PC 機發送采集的數據,并且根據PC機發出的控制命令對執行機構進行相應的動作。
4.1 PC機通信設計
PC機通信程序設計包括通信初始化,接收單片機上傳的溫濕度和光線(火焰)數據,對接收到的數據進行顯示以及存儲,向單片機發送控制命令,從而使執行機構在單片機控制下完成相應的動作。
4.1.1 利用MSComm 控件通信初始化
單片機與PC機進行異步通信,采用RS-232標準接口,為了實現信息的同步,要求兩者之間有一定的通信協議,上、下位機之間以波特率為 9600 b/s 的傳輸速率通信,無校驗位,8位數據位和1位停止位。傳送的數據類型為二進制格式,單片機一次性傳輸六個字節,高字節在前,低字節在后,包括起始與結束字符。設置VB中MSComm控件參數,以下部分程序代碼:
MSComm1.CommPort=1
MSComm1.Settings=”9600,n,8,1”
MSComm1.InputMode=1
MSComm1.InputLen=0
MSComm1.SThreshold=1
MSComm1.InBufferCount=0
MSComm1.OutBufferCount=0
MSComm1.RThreshold=6
4.1.2 PC機用 MSComm 控件接收數據
利用 MSComm 控件的 Input 屬性中以接收數據,Input 屬性從接收緩沖區中返回一串數據,它在設計階段是無效的, 在運行階段也只能讀。單片機發送采集的數據,每收到6個字符引起Oncomm事件,將接收的數據經過相應的處理后實時顯示在文本框中,以下是部分接收數據的程序:
DimexchAsString //用來從接收緩沖區讀取數據
DimresultAsLong
DimtempAsDouble //用來存儲溫度、溫度
DimhumiAsDouble
Dimrd()AsByte //接收數據數組
Dimsd()AsByte //發送數據數組
ConstSOH=&H1 //數據初始標志位
ConstEOT=&H4 //接收數據結束標志位
4.2 單片機程序設計
單片機程序設計主要包括串口初始化,接收 PC機發送命令是否為標志位,將 SHT71傳感器和火焰傳感器采集到的數據發送給PC 機,接受PC機發控制指令給相關裝置,使其完成動作。
4.2.1 單片機串口初始化
ATmega16單片機提供全雙工串行通信接口 RXD、TXD,片內集成一個全雙工的通用同步/異步串行收發器 USART,它具有相互獨立的接收數據寄存器 RXB 和發送數據寄存器 TXB,能夠支持同步和異步的傳輸,有獨立的高精度波特率發生器,不占用定時/計數器,波特率寄存器 UBRRL和 UBRRH用于設置波特率。
部分初始化程序如下:
UCSRA=0x00;
UCSRB=0xD8;//USART模式:異步,USART接收器與發送器使能。
UCSRC=0x86;//通信參數;
UBRRH=0x00;//USART波特率為9600
UBRRL=0x19;
4.2.2 單片機發送和接收數據
通過設置UCSRB 寄存器中的發送允許位TXEN,使USART發送數據;設置接收允許位 RXEN,使USART發送數據。當TXEN 和RXEN 使能時,TXD引腳和 RXD 引腳的通用數字 I/O功能被代替,分別作為發送器的串行輸出引腳和接收器的串行輸入引腳使用。發送緩沖器中需要發送的數據,由CPU寫入 UDR 發送數據寄存器來實現,一旦移位寄存器準備發送下一幀時,緩沖器中的數據將被移到移位寄存器中。只要新的數據被加載到移位寄存器中,則數據就會按指定的幀格式進行發送。狀態標志位 RXC為1時,代表在接收緩沖器中收到的一個數據未被讀取。當 RXC 為0時,代表數據接收器沒有數據。
本文在 windows下利用 VB6.0和單片機 Atmega16的進行串行通信,單片機負責處理溫濕度傳感器和火焰傳感器采集的數據,PC 機負責接收命令和發送指令給單片機,并將采集得到的數據在VB 界面上顯示出來,發出命令執行控制執行機構。PC機中利用MSComm 接受和發送數據,屏蔽了通信過程的低層操作。通過設置控件的相應屬性,完成數據的接收和發送,其編程簡單,容易實現,大大節省了開發時間。
[1]周靄如,官士鴻.VisualBasic 程序設計講義.廣州:華南理工大學教材供應中心.1999年
[2]范逸之,陳立元.VisualBasic 與RS-232 串行通信控制.北京:清華大學出版社.2002年
[3]馬潮.AVR單片機嵌入式系統原理與應用實踐.北京:北京航空航天大學出版社.2007年.
陶佳,男,廣東省技師學院,講師,研究方向:智能控制工程,無線通信技術
Design of Temperature, Humidity and Flame Monitoring and Alarming System Based on VB and Single - chip Microcomputer
Tao Jia
(Guangdong Technician College, Huizhou Guangdong,516100)
This paper describes the use of VB6.0 MSComm control complete computer and microcontroller serial communication, the use of digital temperature and humidity sensors and flame sensors to complete the data collection. MCU will be processed data uploaded to the PC, the use of VB control display, and in accordance with the monitoring data to determine the sent control signal to the microcontroller, and then drive the implementing agencies to achieve the appropriate control.
VB6.0; sensor; MCU; serial communication