stm32之雨滴传感器使用记录

一、简介

        雨滴传感器、烟雾传感器(MQ2)、轨迹传感器、干黄管等的原理都类似,都是将检测到的信号通过LM393进行处理之后再输出,可以输出数字信号DO(0和1)和模拟信号A0。

雨滴传感器在正常情况下是AO输出的是工作电压,如果遇到水,电压会迅速下降。当然在遇到水时DO输出0,正常输出1。

实物图(曾被雨水泡过,生锈了) 

stm32之雨滴传感器使用记录_第1张图片 

原理图

stm32之雨滴传感器使用记录_第2张图片

CubeMX配置,PC13用于DO口或者通过ADC(PA3)

stm32之雨滴传感器使用记录_第3张图片

二、代码

数字信号检测

GPIO_PinState state = HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);
if(state == GPIO_PIN_RESET) {
	printf("water\r\n");
}

模拟信号检测

uint16_t ADC_Read(uint32_t Channel)
{
	ADC_ChannelConfTypeDef sConfig = {0};
	sConfig.Channel = Channel;                                         /* 通道 */
	sConfig.Rank = ADC_REGULAR_RANK_3;                              
	sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;                  /* 采样时间 */
	if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)             
	{
		Error_Handler();
	}
	HAL_ADC_Start(&hadc1);
	HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
	return (uint16_t)HAL_ADC_GetValue(&hadc1);
}

result = ADC_Read(ADC_CHANNEL_3);
printf("result = %f\r\n", 5.0/4096 * result);

三、效果图

stm32之雨滴传感器使用记录_第4张图片

你可能感兴趣的:(stm32,嵌入式硬件,单片机,雨水,传感器)