① 对空气中二氧化碳测量,用单片机怎么做呀
单片机系统+二氧化碳浓度测量传感器。
气体分析传感器较为复杂,需要做温度、压力、湿度、氧气补偿,所以,商品提供的传感器一般均为智能传感器,即微处理器与传感器及补偿电路做为一体供应,只需要对传感器供电, 有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串行接口送至信息中心。
对于空气中微量气体的检测,不同气体之间的交叉干扰尤其突出,如处理不好,对测试结果会产生极大的影响。我们采用了两项关键技术解决了此问题:一是采用面对环境空气质量专用传感器;二是使用选择性合适过滤器,由此使本系统监测结果准确、可靠。
⑤ 单片机空气质量检测命令协议
你好!
不同厂家的设备和传感器,协议是不一样的