一、模块

1、烟雾传感器模块
2、土壤湿度传感器模块

其基本都是通过检测电压变化而进行的,使用adc进行采集数字信号的变化,进而得到想要的模拟量值来。其中涉及到很多数字信号和模拟量之间的关系,例如温度变化到导致的电压改变,又或是重量变化导致电压发生改变等等,这些变化在特定环境(如常温常压)与电压呈现出一点的线性关系。通过adc采集电压变化的数字信号,就能得到与之对应的模拟量值来。

二、adc配置与传感器配置

//开启adc+dma传输

uint16_t ADC_ConvertedValue[2]={0};

HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_ConvertedValue, 2);
//土壤湿度传感器
uint32_t TS_read()
{
	uint32_t date=0;
	
	for(int i=0;i<10;i++)
	{
		date+=ADC_ConvertedValue[1];
	
	}
	date/=10;
	return date;
}
//烟雾传感器
float mq2_read_ppm()
{
	float date=0;

	for(int i=0;i<10;i++)
	{
		date+=ADC_ConvertedValue[0];
	
	}
	date/=10;
float	vol=(date*5/65536);
float	rs=(5-vol)/(vol*0.5);
float	ro=6.64;
float	ppm=pow(11.5428*ro/rs,0.6549f);
	return ppm;
}

//调用
  uint32_t value;
  value =TS_read();
  printf("土壤湿度百分比:%f \n",(1-((float)value/65536))*100);
  printf("烟雾浓度 %fppm\n",mq2_read_ppm());
  

请添加图片描述
请添加图片描述

更多推荐