目录
一、热敏电阻传感器介绍
热敏电阻传感器是一种依赖于温度变化来改变电阻值的传感器。当温度升高时,热敏电阻的电阻值会下降;当温度降低时,电阻值则会上升。这种特性使得热敏电阻广泛应用于温度测量和控制领域。
热敏电阻通常由氧化铁、镍、铜、锰等材料制成,其电阻特性可以分为两类:PTC(正温度系数)和NTC(负温度系数)。NTC热敏电阻在温度升高时电阻值下降,而PTC热敏电阻则在温度升高时电阻值上升。
热敏电阻传感器可以用于测量环境温度、物体表面温度,也可以被应用于温度控制系统中。它们通常与微控制器或模拟电路结合使用,通过测量电阻值的变化来获取温度信息。热敏电阻传感器具有灵敏度高、响应速度快、结构简单等优点,因此在各种应用中得到了广泛的应用。
二、热敏电阻传感器接线说明
VCC(+):电源正极接口,外接电源3 ~ 5V电源正极,接单片机的5v或者3v引脚
GND(-):电源负极接口,外接电源负极或地线GND,接单片机的GND
AO :模拟信号输出口,接单片机的PA1采集引脚
三、测试说明、热敏电阻传感器驱动代码
编译环境:keil5
测试单片机: STM32F103C8T6
功能:功能1:设定阈值,超过阈值触发蜂鸣器报警
功能2:发送数据串到口调试助手上进行显示
RMDZ.c文件编写热敏电阻传感器驱动代码如下:
#include "RMDZ.h"
#include "OLED.h"
#include "FMQ.h"
#include <stdio.h>
#include "Serial.h"
u8 times;
void Adc_Init()
{
GPIO_InitTypeDef GPIO_Initstructre;
ADC_InitTypeDef ADC_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ʹÄÜio¿Ú
GPIO_Initstructre.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Initstructre.GPIO_Pin=GPIO_Pin_1;
GPIO_Initstructre.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_Initstructre);
GPIO_SetBits(GPIOA,GPIO_Pin_1);//½ÓÏß¿ÚA1
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
ADC_DeInit(ADC1);
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;
ADC_InitStruct.ADC_NbrOfChannel = 1;
ADC_InitStruct.ADC_ScanConvMode = DISABLE;
ADC_Init(ADC1,&ADC_InitStruct);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
}
u16 Get_Adc(u8 ch)
{
ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
return ADC_GetConversionValue(ADC1);
}
u16 Get_Adc_Average(u8 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
Delay_ms(5);
}
return temp_val/times;
}
RMDZ.h文件,对驱动函数经行了声明:
#ifndef __RMDZ_H
#define __RMDZ_H
#include "stm32f10x.h" // Device header
#include "Delay.h"
void Adc_Init(void);
u16 Get_Adc(u8 ch);
u16 Get_Adc_Average(u8 ch,u8 times);
#endif
四、串口调试助手把采集的热敏电阻数据发送出来
printf("热敏电阻= %d ",RMDZ_Value);
五、串口调试助手软件下载
六、源代码
STM32单片机+热敏电阻传感器+OLED屏幕+蜂鸣器报警+热敏电阻数据发送到串口调试助手+源代码资源-CSDN文库