GP2Y10粉尘传感器详解
洗衣机水位传感器故障:需更换新的传感器。 #生活常识# #家庭维修技巧# #洗衣机故障解决#
1、粉尘传感器 GP2Y10是一款光学空气质量传感器,设计用来感应空气中的尘埃粒子,其内部对角安放着红外线发光二极管和光电晶体管,使得其能够探测到空气中尘埃反射光,即使非常细小的如烟草烟雾颗粒也能够被检测到,通常在空气净化系统中应用。该传感器具有非常低的电流消耗(最大20mA,典型值11mA),可使用高达7VDC。该传感器输出为模拟电压,其值与粉尘浓度成正比。
2、可测量0.8微米以上的微小粒子,感知烟草产生的花粉,房屋粉尘等,体积小,重量轻,便于安装,广泛应用于空气清新机,换气空调,换气扇等产品。输出电压与粉尘浓度的比值如下图:
根据曲线图可以列出部分电压与粉尘浓度的对应值,如下:
V
0.5846
1.1544
1.7173
2.3153
2.9730
3.5229
mg/m3
0
0.1
0.2
0.3
0.4
0.5
根据以上对应值可以求出粉尘浓度mg/m3与电压V的计算公式,如下(根据Excel生成的公式):
mg/m3 = 0.1686 * V - 0.09856
根据传感器数据手册介绍,传感器的采集周期为10ms,LED灯亮时间为0.32ms,传感器采集时间为0.28ms。如下图:
3、Sensor_Dust.c 文件
void GP2Y10_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA , ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_0;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_Init(GPIOA , &GPIO_InitStruct);
GP2Y10_LED_OFF();
GPIO_InitTypeDef GPIO_InitStruct;
ADC_InitTypeDef ADC_InitStruct;
DMA_InitTypeDef DMA_InitStruct;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_InitStruct);
ADC_DeInit(ADC1);
ADC_StructInit(&ADC_InitStruct);
ADC_InitStruct.ADC_ContinuousConvMode = ENABLE;
ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStruct.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
ADC_InitStruct.ADC_ScanDirection = ADC_ScanDirection_Upward;
ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;
ADC_Init(ADC1,&ADC_InitStruct);
ADC_ChannelConfig(ADC1,ADC_Channel_1,ADC_SampleTime_239_5Cycles);
ADC_GetCalibrationFactor(ADC1);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
DMA_DeInit(DMA1_Channel1);
DMA_StructInit(&DMA_InitStruct);
DMA_InitStruct.DMA_BufferSize = 1;
DMA_InitStruct.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStruct.DMA_M2M = DMA_M2M_Disable;
DMA_InitStruct.DMA_MemoryBaseAddr = (uint32_t)&ADC_Value;
DMA_InitStruct.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStruct.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStruct.DMA_Mode = DMA_Mode_Circular;
DMA_InitStruct.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;
DMA_InitStruct.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStruct.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStruct.DMA_Priority = DMA_Priority_High;
DMA_Init(DMA1_Channel1, &DMA_InitStruct);
ADC_DMARequestModeConfig(ADC1,ADC_DMAMode_Circular);
DMA_Cmd(DMA1_Channel1, ENABLE);
ADC_DMACmd(ADC1, ENABLE);
ADC_StartOfConversion(ADC1);
}
float GP2Y10_Value(void)
{
GP2Y10_LED_ON();
SYSTICK_DelayUs(GP2Y10_SAMP_TIME);
float v = LIMIT(ADC_Value * 3.3f / 4095, 0.5846f, 3.5229f);
SYSTICK_DelayUs(GP2Y10_LEDON_TIME - GP2Y10_SAMP_TIME);
GP2Y10_LED_OFF();
SYSTICK_DelayUs(GP2Y10_PULSE_PERIOD - GP2Y10_LEDON_TIME);
return (v * 0.1686f - 0.09856f);
}
cpp
运行
4、Sensor_Dust.h文件
#ifndef _SENSOR_DUST_H_
#define _SENSOR_DUST_H_
#include "stm32f0xx.h"
#define LIMIT(x, min, max)( (x) < (min) ? (min) : ( (x) > (max) ? (max) : (x) ) )
#define GP2Y10_LED_ON() GPIO_ResetBits(GPIOA , GPIO_Pin_0)
#define GP2Y10_LED_OFF() GPIO_SetBits(GPIOA , GPIO_Pin_0)
#define GP2Y10_SAMP_TIME280
#define GP2Y10_LEDON_TIME320
#define GP2Y10_PULSE_PERIOD10000
void GP2Y10_Init(void);
float GP2Y10_Value(void);
#endif
cpp
运行
5、主函数
int main()
{
GP2Y10_Init();
USART1_Init();
SYSTICK_Init(1);
while(1)
{
printf("Dust Concentration is :%f mg/m3\n",GP2Y10_Value());
SYSTICK_DelayMs(50);
}
}
cpp
运行
网址:GP2Y10粉尘传感器详解 https://www.yuejiaxmz.com/news/view/1193788
相关内容
江门空气质量监测传感器 粉尘传感器 按需定制运用在扫地机器人灰尘识别感应中的灰尘传感器
智能吸尘器灰尘传感器 吸尘器微尘感知
湘潭粉尘吸尘器
粉尘除尘器
工厂粉尘用什么吸尘器?工厂用吸尘器品牌推荐 工厂粉尘除尘设备
天水粉尘吸尘器
*吸粉尘吸尘器
小型脉冲布袋式除尘器,解决空气粉尘污染的有效环保设备
【气动粉尘吸尘器】