找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1584|回复: 1
收起左侧

粉尘传感器上下浮动的厉害,什么原因?

[复制链接]
ID:107935 发表于 2018-10-9 22:10 来自手机 | 显示全部楼层 |阅读模式
#include <TM1637Display.h>

#include <TM1637.h>

#define CLK 3//pins definitions for TM1637 and can be changed to other ports      
#define DIO 2
TM1637 tm1637(CLK, DIO);
int dustPin = 0; // 夏普灰尘传感器黑色线,传感器输出到nano 的A0 端
float dustVal = 0; // 灰尘传感器输出到nano 的电压值,与灰尘浓度成函数关系,
int ledPower = 2;
// 夏普灰尘传感器绿色线, nano 的D2 输出作为夏普灰尘传感器激光头电源,激光头发
// 射激光遇到灰尘散射,散射越厉害,灰尘传感器向外输出电压越高
int delayTime = 280;
int delayTime2 = 40;
float offTime = 9680;
void setup (void)
{
  
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);

Serial.begin(9600); // 串口初始化,电脑可以和nano 交互
pinMode(ledPower, OUTPUT); // A0 give 传感器5 号
pinMode(dustPin, INPUT); // Digital pin 2 give 传感器3 号
}
void loop (void)
{

digitalWrite(ledPower, LOW);
delayMicroseconds(delayTime);
dustVal = analogRead(dustPin);// 读取灰尘传感器的模拟电压输出到nano 的A0 端
delayMicroseconds(delayTime2);
digitalWrite(ledPower, HIGH);
delayMicroseconds(offTime);
delay(1000);
// Serial.println(dustVal);// 电脑作为显示设备看输出的电压,数值越高灰尘越多
dustVal = dustVal * (5.0 / 1023);
// 电压换算 ,Arduino A0-A5 口为ADC引脚,其分辨率为10 位,也就是
//1024 级,输出数值为0-1023,默认以输入电压5V 作为基准电压。
dustVal = 0.17 * dustVal - 0.1;// 电压值转换为灰尘浓度线性函数关系
dustVal=dustVal*1000;//mg 和ug 的换算
Serial.println(dustVal);// 串口通信写
int num = dustVal;
  // 4位数显示
  tm1637.display(0, num / 1000);
  tm1637.display(1, (num % 1000) / 100);
  tm1637.display(2, (num % 100) / 10);
  tm1637.display(3, num % 10);
    delay(500);
}
回复

使用道具 举报

ID:407392 发表于 2018-10-10 10:34 | 显示全部楼层
传感器正常数值都是有浮动的。请注意后端数据滤波。当然如果波动太大的话,就是有原因了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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