摘要:介紹了點型光電感煙探測器的工作原理,闡述了PIC16F676單片機的特殊功能,同時給出了該功能在探測器設計中的應用方法,最后給出了基于PIC16F676單片機設計的探測器的硬件構成和軟件程序。
關鍵詞:單片機(微控制器);點型光電感煙探測器;PIC16F676
火災是人類面臨的最大威脅之一,火災探測對防御火災具有舉足輕重的作用。光電感煙探測器是目前消防中使用的主要探測器之一。光電感煙探測器分為兩大類:其中“線型光電感煙”是利用煙霧對光束能量的衰減原理制成的光電感煙探測器,該探測器正常工作需要比較長的空間距離,所以稱之為“線型”,否則,煙霧對光束能量的衰減太小不能獲取足夠的報警信息;“點型光電感煙”是利用煙霧對光束的散射原理制作的光電感煙探測器,該探測器總體積不超過10×10×10cm,所以稱之為“點型”。本文主要介紹基于PIC16F676單片機的點型光電感煙探測器的設計方法。
1 點型光電感煙原理
點型光電感煙探測器是“主動”式探測器,其工作原理見圖1。沒有煙霧時,由于光學迷宮的特殊設計(即紅外發(fā)光二極管與光電接收二極管的軸向夾角成鈍角等等),光電接收二極管不能直接接收到紅外發(fā)光二極管(在火災報警領域主要采用紅外波段,波長在900nm左右)發(fā)射的光信號,當有火災發(fā)生時,煙霧擴散到探測器的迷宮之內會對紅外發(fā)光二極管的發(fā)射光產生散射,從而使光電接收二極管能夠接收到散射光信號,光信號的大小標志著煙霧濃度,也標志著火災燃燒的程度。
光學迷宮的主要功能是阻止外部的雜散光進入光電接收二極管的探測領域,吸收內部雜散光信號以降低本底,同時保證煙霧的通暢進入??傊?,光學迷宮的作用是保證沒有煙霧進入迷宮時放大器的輸出信號(本底信號)最小,而當有煙霧進入迷宮時,光電接收二極管能接收到足夠的被煙霧散射的光信號,然后經過放大和識別以形成報警信號。
2 PIF16F676單片機的模數轉換
PIC16F676單片機有8個模數轉換輸入通道,共用一套采樣、保持、模數轉換電路。其中模數轉換電路負責把模擬信號轉換成10位數字信號。與模數轉換模塊相關的寄存器主要有ADCON0、ADCON1、AB-SEL、ADRESH、ADRESL。寄存器的位定義及其相應功能簡介見表1。如果模數轉換的時鐘源采用內部晶振,則該模數轉換電路還可以工作在單片機的睡眠模式。
表1 與模數轉換模塊相關的主要寄存器
寄存器名稱 | 寄存器位定義 |
寄存器位功能簡介 |
BIT7(ADFM) | 規(guī)定模數轉換生成的10位二進制數據的保存方式 | |
BIT6(VCFG) | 規(guī)定模數轉換采用的參考電壓 | |
BIT5(未用) | ||
模數轉換控制寄存器0 ADCON0 |
BIT4(CHS2) BIT3(CHS1) BIT2(CHS0) |
BIT4~BIT2聯(lián)合起來規(guī)定模數轉換的通道選擇,因為PIC16F676共有8個模數轉換輸入通道 |
BIT1(GO/DOWN) | 標志著模數轉換是否完成 | |
BIT0(ADON) | 模數轉換正在進行還是被關掉 | |
BIT6(ADCS2) | BIT6~BIT3聯(lián)合起來規(guī)定模數轉換模塊采用的時鐘 | |
模數轉換控制寄存器1 ADCON1 |
BIT5(ADCS1) | |
BIT4(ADCS0) | ||
其它數據位 | 未用 | |
模擬輸入選擇寄存器ABSEL | 所有數據位 | 因為PIC16F676共有8個模數轉換輸入通道,該通道還可以用作普通的I/O口,該寄存器用于設定管腳如何使用 |
模數轉換結果存儲寄存器ADRESH、ADRESL | 所有數據位 | 兩個寄存器聯(lián)合存儲最終轉換生成的10位二進制數據 |
假設對模數轉換模塊的使用要求是:放大信號由模擬輸入通道管腳PIN7(RC3/AN7)輸入;模數轉換生成的10位二進制數據從寄存器ADRESH的最高位開始存放;模數轉換模塊采用的參考電壓是單片機工作電壓VDD,采用的時鐘取自內部晶振;則寄存器的部分設置程序如下:
;以下6句對模數轉換模塊相關寄存器進行初始化
MOVLW B'00011100';
MOVWF ADCON0;
MOVLW B'01110000';
MOVWF ADCON1;
MOVLW B'10000000'; ?
MOVWF ABSEL;
以下是模數轉換模塊完成一個完整的模數轉換所采用的程序片斷:
BSF ADCON0,ADON;
;以下4句完成模擬數據的采樣延時
MOVLW SAMPLE TIME
MOVWF TEMP0
FOR_SAMPLE DECFSZ TEMP0,1
GOTO FOR_SAMPLE
;以下3句監(jiān)測模數轉換過程的完成與否
BSF ADCON0,GO_DONE
;啟動模數轉換
CONVERTING BTFSC ADCON0,GO_DONE
GOTO CONVERTING
BCF ADCON0,ADON ;關閉模數轉換
圖2
3 探測器與總線的接口
該探測器與總線的接口包括編碼輸入電路和回執(zhí)輸出電路。
3.1 編碼輸入電路
編碼輸入電路是總線與探測器的接口,用于把總線編碼的電平幅度(一般24V)降低到適合單片機輸入的要求(一般5V)。由于輸入編碼信號經過遠距離長線傳輸后,部分信號會發(fā)生畸變。故應用編碼輸入電路對總線編碼信號進行濾波,以消除總線干擾,同時可利用比較器電路對輸入編碼信號做整形。一般情況下,為了降低成本,該比較器可用分離元件搭建,而單片機PIC16F676內部恰好集成了一個功能強大的比較器,該比較器的正向輸入是單片機的管腳13(RA0/AN0/CIN+), 反向輸入為單片機的管腳12(RA1/AN1/CIN-),輸出是管腳11(RA2/AN2/COUT)。與此比較器相關的寄存器有CMCON和VRCON,具體功能參見表2。
表2 與比較器模擬相關的關鍵性寄存器
寄存器名稱 | 寄存器位定義 | 寄存器位功能簡介 |
比較器控制寄存器CMCON | BIT7(未用 | |
BIT6(COUT) | 比較器的輸出位,該位數值就是比較器的輸出結果 | |
BIT5(未用) | ||
BIT4(CINV) | 控制比較器的輸出結果是否反向 | |
BIT3(CIS) | 控制輸入信號是從RA1(CIN1)還是RA0(CIN+)輸入 | |
BIT2(CM2) | ||
BIT1(CM1) | BIT2~BIT0聯(lián)合控制八種比較器I/O口工作模式的選擇 | |
BIT0(CM0) | ||
比較器參考電壓控制器VRCON | BIT7(VREN) | 參考電壓啟動控制位 |
BIT6(未用) | ||
BIT5(VREN) | 參考電壓范圍選擇控制位 | |
BIT4(未用) | ||
BIT3(VR3) | BIT3~BIT0聯(lián)合控制參考電壓的具體設置 | |
BIT2(VR2) | ||
BIT1(VR1) | ||
BIT0(VR0) |
如果對比較器的使用要求是:模擬信號由單片機管腳12(連接比較器的負向)輸入;參考電壓選自片內參考電壓(參考電壓設定為3V)(連接比較器的正向);比較器的輸出結果不反向(即比較器正向輸入大于負向輸入則比較器輸出高電平,反之輸出低電平),則此與比較器相關的寄存器CMCON、VRCON設置程序如下:
MOVLW B'00010011' ;選擇比較器模式011
MOVWF CMCON
MOVLW B'10101110' ;選擇參考電壓1110(其十進制是14)14/24×5=3V
MOVWF VRCON
圖2是該比較器的電路原理(包括比較器的參考電壓形成部分)框圖。
3.2 回執(zhí)輸出電路
回執(zhí)輸出電路用于把探測到的代表煙霧濃度的數字信號通過總線回送到控制器。單片機信號一般為5V,總線上的信號大于20V?;貓?zhí)輸出電路必須進行電平轉換,并使信號有足夠的總線驅動能力。
4 探測器的地址讀寫
火災報警控制器通過總線上的地址編碼來識別各個探測器。以往探測器的編碼是依靠機械式撥碼開關實現的。由于撥碼開關壽命短、易損壞而且成本較高,因此現在多采用串行EEPROM來存儲探測器地址。同時,探測器工作過程中的其它重要數據也需要存儲保留,所以更有必要使用串行EEP-ROM。而單片機PIC16F676本身恰好內置有128字節(jié)的串行EEPROM,因此使用PIC16F676有助于簡化電路設計、降低成本。與PIC16F676片內串行EEPROM有關的寄存器主要有EEDAT、EEADR、EECON1、EECON2(EECON2不是一個物理可用的寄存器)。其具體功能見表3所列。
表3 與PIC16F676內置EEPROM相關的寄存器
寄存器名稱 | 寄存器位定義 | 寄存器位功能簡介 |
EEPROM數據寄存器EEDAT | 所有數據位 | 用于暫時存儲操作的目標數據 |
EEPROM地址寄存器EEADR | 所有數據位(7位) | 用于暫時存儲目標數據的地址 |
EEPROM控制寄存器EECON1 | BIT7~BIT4(未用) | |
BIT3(WRERR) | 寫操作完畢還是被復位行為中斷 | |
BIT2(WREN) | 允許還是禁止寫周期 | |
BIT1(WR) | 啟動還是禁止寫過程 | |
BIT0(RD) | 啟動還是禁止讀過程 |
因為片內EEPROM的最大空間是128字節(jié),所以EEADR寄存器僅使用到前7位,最高位不用。其中EECON1用于實現對串行EEPROM的具體操作命令。下面是部分讀取地址的操作程序:
?與串行EEPROM有關的寄存器全部在數據存儲器的第一分區(qū)中
BSF STATUS?RP0
MOVLW .0 ;假如內置EEPROM的.0地址用于存儲探頭地址
MOVWF EEADR
BSF EECON1?RD ;啟動“讀”命令
MOVF EEDATA,W
MOVWF NODE ;假如數據寄存器NODE用于暫時存儲讀出的地址數據
存儲地址的操作程序片斷舉例:
BSF STATUS,RP0 ;Bank 1
MOVLW .0 ;假如內置EEPROM的.0地址用于存儲探頭地址
MOVWF EEADR ;Address to read
MOVLW .1 ;假如探頭地址為“1”
MOVWF EEDATA ;Move data to w
BSF STATUS,RP0 ;//DATA EEPROM WRITE//
BSF EECON1,WREN ?;啟動“寫”的使能命令
BCF INTCON,GIE ;暫時關閉全局中斷以執(zhí)行下列5句命令
;以下5句相當重要并且必要,否則“寫操作”不能初始化。
;在執(zhí)行下列5句的過程中產生周期計數,任何不等于該計數的的數目將阻止數據寫入片內EEPROM.
MOVLW B′01010101′;
MOVWF EECON2 ;
MOVLW B′10101010′; ?
MOVWF EECON2;
BSF EECON1,WR ;啟動“寫”命令
?以上5句相當重要并且必要,否則“寫操作”不能初始化。
BSF INTCON,GIE ; 打開全局中斷
BCF EECON1,WREN ; 完成“寫操作”之后關閉“寫”的使能命令
5 基于PIF16F676的感煙探測器
圖3是采用PIC16F676單片機設計的光電煙探測器的硬件結構框圖。
圖4是該光電感煙探測器的工作程序框圖。表4簡要注解了圖4所示的程序流程圖中所使用的程序模塊的具體功能。
表4 程序流程圖中程序模塊的功能定義
程序模塊名稱 | 程序模塊完成的功能 |
模塊1 | 完成對主機發(fā)出的編碼信號的解碼 |
模塊2 | 驅動發(fā)光電路、放大電路 |
模塊3 | 對光點二極管的放大輸出信號進行模數轉換、抗干擾處理 |
模塊4 | 對主機輸出回答信號 |
模塊5 | 點亮探測器指示燈 |
模塊6 | 熄滅探測器指示燈 |
6 結束語
本文詳細介紹了基于PIC16F676的點型光電感煙探測器的設計原理和方法,重點介紹了單片機PIC16F676的轉換功能及其在探測器設計中的應用方法和程序,最后給出了探測器的系統(tǒng)硬件及軟件設計流程。該光電感煙探測器不僅功耗很低、設計簡單,同時利用單片機有助于探測器的智能化探測。