① 對空氣中二氧化碳測量,用單片機怎麼做呀
單片機系統+二氧化碳濃度測量感測器。
氣體分析感測器較為復雜,需要做溫度、壓力、濕度、氧氣補償,所以,商品提供的感測器一般均為智能感測器,即微處理器與感測器及補償電路做為一體供應,只需要對感測器供電, 有5V供電的,還有11--36V范圍供電的,感測器就會變送輸出4-20mA標准電流信號或者0-5V電壓信號。 將這個信號輸入單片機做AD變換, 根據感測器標定的量程即可算出二氧化碳濃度。也有感測器可直接輸出數字信號,與單片機進行串列通信即可讀出二氧化碳濃度值。
② 如何檢測空氣溫度原理單片機
本設計是基於單片機的氣象監測系統,主要實現以下功能:
可通過LCD1602顯示溫濕度和空氣質量;
可通過按鍵調整溫濕度閾值和空氣質量最大值;
可通過ADC0832將MQ-135檢測到的模擬量轉換成數字量;
可通過蜂鳴器和LED進行聲光報警。
標簽:51單片機、LCD1602、ADC0832、MQ-135、DHT11
③ Proteus模擬單片機測量空氣濕度
幾點說明:
1.主要是分以下幾個模塊寫的:SHT10,LCD1602,主函數,頭文件。
2.每支SHTxx感測器都在25℃(77 °F)和 3.3V條件下進行過標定並且完全符合精度指標.因為考慮到實際硬體5V的電壓比較好操作,所以SHT10用的精度採用的為5V時的參數。其他的都採取默認值(14bit濕度, 12bit 溫度)。
3.SHT10中所以部分我都編寫了。有的部分在本次程序中沒用到,也可以作為參考。
4.所有程序都已經加了注釋,且有模擬圖。
5.個人認為還可以在此基礎上添加個中斷。
6.程序編寫keil 4 ,模擬 protues7.5
/***********************************************************************************************************************************************************/
頭文件(tou.h):
#ifndef __TOU_H__
#define __TOU_H__
#include<reg52.h>
#include <intrins.h>
//#include <math.h> //Keil library
#define uchar unsigned char
enum {TEMP,HUMI};
sbit DATA = P1^7;
sbit SCK = P1^6;
sbit LcdRs= P2^4;
sbit LcdRw= P2^5;
sbit LcdEn= P2^6;
sfr DBPort= 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數據埠
/******** DS1602函數聲明 ********/
void LCD_Initial();
void GotoXY(unsigned char x, unsigned chary);
void Print(unsigned char *str);
void LCD_Write(bit style, unsigned charinput);
/******** SHT10函數聲明 ********/
void s_connectionreset(void);
char s_measure(unsigned char *p_value,unsigned char *p_checksum, unsigned char mode);
void calc_sth10(float *p_humidity ,float*p_temperature);
//float calc_dewpoint(float h,float t);
#endif
/***********************************************************************************************************************************************************/
SHT10程序(SHT10.c):
#include<tou.h>
#define noACK 0 //繼續傳輸數據,用於判斷是否結束通訊
#define ACK 1//結束數據傳輸;
//地址命令 讀/寫
#define STATUS_REG_W 0x06 //0000011 0
#define STATUS_REG_R 0x07 //0000011 1
#define MEASURE_TEMP 0x03 //0000001 1
#define MEASURE_HUMI 0x05 //0000010 1
#define RESET 0x1e//000 1111 0
//寫位元組程序
char s_write_byte(unsigned char value)
{
unsignedchar i,error=0;
for(i=0x80;i>0;i>>=1)//高位為1,循環右移
{
if(i&value) DATA=1; //和要發送的數相與,結果為發送的位
else DATA=0;
SCK=1;
_nop_();_nop_();_nop_(); //延時3us
SCK=0;
}
DATA=1; //釋放數據線
SCK=1;
error=DATA; //檢查應答信號,確認通訊正常
_nop_();_nop_();_nop_();
SCK=0;
DATA=1;
returnerror; //error=1 通訊錯誤
}
//讀位元組程序
char s_read_byte(unsigned char ack)
//----------------------------------------------------------------------------------
{
unsignedchar i,val=0;
DATA=1; //釋放數據線
for(i=0x80;i>0;i>>=1) //高位為1,循環右移
{
SCK=1;
if(DATA) val=(val|i); //讀一位數據線的值
SCK=0;
}
DATA=!ack; //如果是校驗,讀取完後結束通訊;
SCK=1;
_nop_();_nop_();_nop_(); //延時3us
SCK=0;
_nop_();_nop_();_nop_();
DATA=1; //釋放數據線
returnval;
}
//啟動傳輸
void s_transstart(void)
// generates a transmission start
//_____ ________
// DATA: |_______|
//___ ___
// SCK : ___| |___||______
{
DATA=1; SCK=0; //准備
_nop_();
SCK=1;
_nop_();
DATA=0;
_nop_();
SCK=0;
_nop_();_nop_();_nop_();
SCK=1;
_nop_();
DATA=1;
_nop_();
SCK=0;
}
//連接復位
void s_connectionreset(void)
// communication reset: DATA-line=1 and atleast 9 SCK cycles followed by transstart
//_____________________________________________________ ________
// DATA:|_______|
//_ _ __ _ __ _ ____ ___
// SCK : __| |__| |__| |__| |__| |__| |__||__| |__| |______| |___| |______
{
unsignedchar i;
DATA=1;SCK=0; //准備
for(i=0;i<9;i++) //DATA保持高,SCK時鍾觸發9次,發送啟動傳輸,通迅即復位
{
SCK=1;
SCK=0;
}
s_transstart(); //啟動傳輸
}
//軟復位程序
char s_softreset(void)
// resets the sensor by a softreset
{
unsignedchar error=0;
s_connectionreset(); //啟動連接復位
error+=s_write_byte(RESET); //發送復位命令
returnerror; //error=1 通訊錯誤
}
/*讀狀態寄存器
char s_read_statusreg(unsigned char*p_value, unsigned char *p_checksum)
//----------------------------------------------------------------------------------
// reads the status register with checksum(8-bit)
{
unsignedchar error=0;
s_transstart(); //transmission start
error=s_write_byte(STATUS_REG_R);//send command to sensor
*p_value=s_read_byte(ACK); //read status register (8-bit)
*p_checksum=s_read_byte(noACK); //read checksum (8-bit)
returnerror; //error=1 incase of no response form the sensor
}
④ 空氣檢測儀的檢測部分原理
本儀器採用高靈敏度電化學感測器原理,結合單片機技術和網路通訊技術,可以連續監測大氣層中的SO2、NO2、O3、CO、H2S、NH3、HF氣體,全面顯示需要的測量數據。首先由抽氣泵將環境空氣通過過濾器,經流量調節器後分別以300mL/min的流量送到感測器氣室,通過感測器時所產生的信號經放大、A/D轉換後,由微處理器進行採集、計算、數據處理,產生濃度結果數據,同時保存數據結果或通過RS485串列介面送至信息中心。
對於空氣中微量氣體的檢測,不同氣體之間的交叉干擾尤其突出,如處理不好,對測試結果會產生極大的影響。我們採用了兩項關鍵技術解決了此問題:一是採用面對環境空氣質量專用感測器;二是使用選擇性合適過濾器,由此使本系統監測結果准確、可靠。
⑤ 單片機空氣質量檢測命令協議
你好!
不同廠家的設備和感測器,協議是不一樣的