基于STM32F103ZET6的雨滴传感器应用开发教程
创作时间:
作者:
@小白创作中心
基于STM32F103ZET6的雨滴传感器应用开发教程
引用
CSDN
1.
https://blog.csdn.net/m0_75082707/article/details/140333128
本文将介绍如何使用STM32F103ZET6单片机与雨滴传感器进行简单应用开发。通过STM32CubeMX配置ADC通道,结合HAL库函数实现对雨滴传感器的检测,并通过串口输出检测结果。
一、雨滴传感器的基本原理
雨滴传感器是一种用于检测雨水的设备,当雨滴落在传感器表面时,改变了板间的介电常数,导致电容值发生变化。电子电路监测这些变化,并将其转换为相应的电信号输出。
主要的两种使用方法:
- 通过DO引脚输出的高低电平变化来检测是否有雨滴
- 通过AO引脚输出的ADC值观察数值的变化检测是否有雨滴
雨滴传感器的设计和选择应根据具体应用需求,如灵敏度、响应时间、工作环境等来确定。
二、STM32CubeMX的配置
以配置ADC为例:
- 配置RCC
- 配置时钟树(STM32F103ZET6主频72MHz)
- 配置AO引脚为ADC(另一种方式主要就是配置一个引脚为输入模式与DO相连)
- 配置串口(目的是将数据打印到串口调试助手上观察)
- 设置一下工程,最后生成一下代码完美
三、通过STM32单片机采集数值
配置完成后打开Keil5,编译一下这是常识。采集过程如下:
HAL_ADC_Start(&hadc1); // 开启ADC1这是必须的
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY); // 等待转换完成,可有可无
HAL_ADC_GetValue(&hadc1); // 获取ADC的值
最后将数值发送到串口观察即可,当然也可以将ADC的值转换成电压幅值观察。
可以看到在无水状态下时传感器输出的ADC值为4056左右,因为STM32单片机是12位ADC,当有水滴滴落时它会降低电阻,因为水是电的导体,并且水的存在使镍线并联连接,因此降低了电阻并降低了其两端的电压降。
四、整体代码
#include "main.h"
#include "usart.h"
#include "gpio.h"
#include "stdio.h"
#include "string.h"
char buf[100];
void SystemClock_Config(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
// 开始ADC转换
HAL_ADC_Start(&hadc1);
while (1)
{
// 等待转换完成
HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
// 获取ADC值
uint32_t adc_value = HAL_ADC_GetValue(&hadc1);
sprintf(buf,"rian value:%d\n",adc_value); // 也可以转换成电压幅值发送到串口上
HAL_UART_Transmit(&huart1,(uint8_t *)buf,sizeof(buf),10000);
memset(buf,0,sizeof(buf));
// 根据adc_value处理雨滴数据
if (adc_value > 2000) // 你可以根据需要调整阈值
{
// 没有检测到雨滴
sprintf(buf,"rian faild\n");
HAL_UART_Transmit(&huart1,(uint8_t *)buf,sizeof(buf),10000);
}
else
{
// 检测到雨滴
sprintf(buf,"rian successful\n");
HAL_UART_Transmit(&huart1,(uint8_t *)buf,sizeof(buf),10000);
}
}
}
/**
* @brief System Clock Configuration
* @retval None
*/
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/** Initializes the RCC Oscillators according to the specified parameters
* in the RCC_OscInitTypeDef structure.
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/** Initializes the CPU, AHB and APB buses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
{
Error_Handler();
}
}
DO方式:
// 读取PA0引脚的状态
GPIO_PinState State = HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0);
// 根据引脚状态处理雨滴检测
if (State == GPIO_PIN_RESET) // DO输出低电平,表示检测到雨滴
{
// 检测到雨滴
// 在这里执行相应的操作,例如点亮LED灯 方便观察水滴
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET); // PE5连接LED1
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); // PB5连接LED2
}
else // DO输出高电平,表示没有雨滴
{
// 没有检测到雨滴
// 在这里执行相应的操作,例如关闭LED灯
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_SET); // PE5连接LED1
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); // PB5连接LED2
}
HAL_Delay(1000); // 延迟1秒
热门推荐
从物理除锈到智能防腐:工业清洗技术新进展
15防14治:一文掌握冰箱防锈全攻略
除锈剂配方与制作工艺详解:两种配方及安全注意事项
贺知章:唐诗书法双绝,留下“金龟换酒”佳话
国内直飞古巴,Mojito、雪茄、棕榈树……乘彩色老爷车,穿越海滨大道
董仲舒和他的“天人感应”
天人感应:董仲舒如何将古老哲学转化为治国之道?
大自然的鬼斧神工——云南元谋物茂土林游记
神秘的北纬30度,贯穿四大文明古国,在恩施劈开一条绝美地心裂谷
玉佩摔裂了?这些创意修复让你眼前一亮!
高血脂患者如何吃最健康?最新指南给出六大建议
高脂血症饮食调理八大原则:从食材到运动全方位指导
专家解读:高胆固醇食物与血液胆固醇无直接关联
洗衣机清洗怎么做好?DIY+专人清洗步骤、保养方法一次看!
从岳阳楼记看范仲淹:不以物喜不以己悲的政治理想
《黑神话悟空》全变身获取及优缺点分析
校园安全知识宣传
交通安全进校园“小叮嘱”“护大安全”
麦乳精:健康饮品的新宠儿?
麦乳精:从国民饮品到小众选择,经典如何焕新?
寒性药材巧搭配,化解体内“火苗”
蒲公英根和什么搭配泡水喝好,蒲公英根的吃法与做法!
时柱正官:解读八字中影响女性晚年的关键星位
探秘蒲公英的植物分类:从草本植物到环境适应性
蒲公英可在48小时内杀死98%的癌细胞,科学还是谣言?
加拿大研究:蒲公英可在48小时内杀死98%的癌细胞,科学还是谣言
食品欺诈是什么?核科学如何检测食品欺诈?
警惕!新型电信诈骗手法揭秘:无需验证码,骗子也能轻易骗走你的钱!
员工防范网络钓鱼攻击的10个实用技巧
如何提出"好问题"?最重要的五个原则与提问技巧