极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22134|回复: 10

为什么我的DSM501A返回值90%都是0.62,是空气太好了~

[复制链接]
发表于 2014-4-11 22:23:19 | 显示全部楼层 |阅读模式
代码如下:是不是时间上有问题?

#include <LiquidCrystal.h>
#include <dht.h>  

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
dht DHT;
#define DHT11_PIN 6
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 30000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup()
{
  Serial.begin(9600);  
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  pinMode(8,INPUT);
  starttime = millis();
}

void loop() {
  int chk = DHT.read11(DHT11_PIN);
  // set the cursor to column 0, line 1
  lcd.setCursor(0, 0);
  lcd.print("T:");
  lcd.print( DHT.temperature,1 );
  lcd.print ("C");
  lcd.setCursor(9, 0);
  lcd.print("H:");
  lcd.print(DHT.humidity,1);
  lcd.print("%");
  
  //
  lcd.setCursor(0, 1);
  lcd.print("PM2.5:");
  lcd.setCursor(13, 1);
  lcd.print ("pcs");
  duration = pulseIn(pin, LOW);
  lowpulseoccupancy = lowpulseoccupancy+duration;

  if ((millis()-starttime) > sampletime_ms)
  {
    ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100
    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
    //Serial.print(lowpulseoccupancy);
    //Serial.print(",");
   // Serial.print(ratio);
  // Serial.print(",");
    lcd.setCursor(6, 1);
    lcd.print(concentration);
    Serial.print("h1:");  
    Serial.print(DHT.humidity,1);  
    Serial.print(";");
    Serial.print("t1:");
    Serial.print(DHT.temperature,1);
    Serial.print(";");   
    Serial.print("c1:");  
    Serial.print(concentration);  
    Serial.println(";");
    lowpulseoccupancy = 0;
    starttime = millis();
  }
delay(1000);
}
回复

使用道具 举报

发表于 2014-4-11 23:43:41 | 显示全部楼层
不要和显示放在一起
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-4-12 10:17:57 | 显示全部楼层
davidce 发表于 2014-4-11 23:43
不要和显示放在一起

这个影响不大吧~
回复 支持 反对

使用道具 举报

发表于 2014-4-12 11:04:00 | 显示全部楼层
很大         
回复 支持 反对

使用道具 举报

发表于 2014-5-7 20:41:42 | 显示全部楼层
davidce 发表于 2014-4-11 23:43
不要和显示放在一起

我也遇到这个问题了
不要和显示放在一起是什么意思 看了半天没理解 希望能够帮助解答  谢谢了
回复 支持 反对

使用道具 举报

发表于 2014-5-7 20:42:31 | 显示全部楼层
请问你的问题解决了吗 是如何解决的呢 希望能帮助解答
回复 支持 反对

使用道具 举报

发表于 2014-5-7 22:49:53 | 显示全部楼层
七点 发表于 2014-5-7 20:42
请问你的问题解决了吗 是如何解决的呢 希望能帮助解答

显示会占用实现,把显示和数据采集放在一个循环里会影响数据采集的准确性
回复 支持 反对

使用道具 举报

发表于 2014-6-11 12:22:46 | 显示全部楼层
遇到同一个问题。请问解决了吗?
和“显示”没关系,我用示波器直接采集传感器的输出脚,确实大部分都是高电平。
请问有人解决了吗?(难道真的只能增加测量周期?。。。)
回复 支持 反对

使用道具 举报

发表于 2014-7-4 08:28:48 | 显示全部楼层
没使用额外显示屏,直接输出到电脑,没发现此问题...
回复 支持 反对

使用道具 举报

发表于 2014-9-18 17:52:58 | 显示全部楼层
代理PM2.5粉尘传感: 夏普、三瀛、GE、神荣VOC空气质量:QS-01、TGS2600、MS1100、MS1200英国达特甲醛传感器、红外二氧化碳传感器、空气质量模块 全新原装现货供应 有需要请联系 杨先生 13530889446  QQ:530820608
回复 支持 反对

使用道具 举报

发表于 2016-10-25 12:31:41 | 显示全部楼层
采集数据与显示写到一个LOOP里确实会有问题, 要么是显示不正常,要么是采集数据不对,我用四位数码管时就发现了这个问题, 核心原因是CPU是单线程的,同时做这两件事是不行的。 参考我的实验http://www.geek-workshop.com/thread-27707-1-1.html
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-4 03:38 , Processed in 0.043635 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表