☆与☆ 发表于 2014-4-11 22:23:19

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

代码如下:是不是时间上有问题?

#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);
}

davidce 发表于 2014-4-11 23:43:41

不要和显示放在一起

☆与☆ 发表于 2014-4-12 10:17:57

davidce 发表于 2014-4-11 23:43 static/image/common/back.gif
不要和显示放在一起

这个影响不大吧~

davidce 发表于 2014-4-12 11:04:00

很大         

七点 发表于 2014-5-7 20:41:42

davidce 发表于 2014-4-11 23:43 static/image/common/back.gif
不要和显示放在一起

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

七点 发表于 2014-5-7 20:42:31

请问你的问题解决了吗 是如何解决的呢 希望能帮助解答

davidce 发表于 2014-5-7 22:49:53

七点 发表于 2014-5-7 20:42 static/image/common/back.gif
请问你的问题解决了吗 是如何解决的呢 希望能帮助解答

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

嘿你好 发表于 2014-6-11 12:22:46

遇到同一个问题。请问解决了吗?
和“显示”没关系,我用示波器直接采集传感器的输出脚,确实大部分都是高电平。
请问有人解决了吗?(难道真的只能增加测量周期?。。。)

i_dscover 发表于 2014-7-4 08:28:48

没使用额外显示屏,直接输出到电脑,没发现此问题...

PM2.5粉尘传感器 发表于 2014-9-18 17:52:58

代理PM2.5粉尘传感: 夏普、三瀛、GE、神荣VOC空气质量:QS-01、TGS2600、MS1100、MS1200英国达特甲醛传感器、红外二氧化碳传感器、空气质量模块 全新原装现货供应 有需要请联系 杨先生 13530889446QQ:530820608

flying03 发表于 2016-10-25 12:31:41

采集数据与显示写到一个LOOP里确实会有问题, 要么是显示不正常,要么是采集数据不对,我用四位数码管时就发现了这个问题, 核心原因是CPU是单线程的,同时做这两件事是不行的。 参考我的实验http://www.geek-workshop.com/thread-27707-1-1.html
页: [1]
查看完整版本: 为什么我的DSM501A返回值90%都是0.62,是空气太好了~