本设计的硬件构成:
STM32F103C8T6单片机最小系统板(包含+3.3V稳压电路+时钟晶振电路+复位电路(上电自复位,手动复位)),温度传感器、水位传感器、红外人体传感器、红外反射传感器、超声波测距模块、LCD液晶显示屏、按键、蜂鸣器、LED指示灯、继电器等电路而成;
功能介绍:
1、温度传感器采集水温,按键设置水温阈值,人体感应检测人体信号,当发现有人时并且水温低于阈值时,进行加热(继电器A),否则不加热。
2、接水口为固定区域,红外传感器检测是否有水杯,超声波传感器检测水杯里的水位高度。当有水杯时(检测到红外信号),开始加水(继电器B启动),当超声波距离小于预设值(程序中设定),停止加水。
3、水位传感器检测饮水机内水位,当饮水机水位较低时,发出蜂鸣器提示储水不足。
4、显示屏幕显示数据信息(超声波距离、 水温、水位)。
5、通过按键设置水温,按键1:设置键;按键2:加一键;按键3:减一键。
主要物料清单及型号:
显示屏:LCD1602-5V;
单片机:STM32F103C8T6;
超声波测距模块:HC-SR04;
红外人体传感器:SR602;
继电器:SRD-05V;
蜂鸣器:5V有源蜂鸣器;
原理图:
实物图1:
设计资料:
元器件清单:
程序:
int main(void)
{
u8 key_value;
delay_init(); //延时函数初始化
uart_init(9600); //串口初始化为9600
TIM3_Cap_Init(1,72-1); //以1Mhz的频率计数,第一个选项,最小只能是1
TIM2_Int_Init(499,7199);//10Khz的计数频率,计数到1000为100ms
// LED_Init(); //初始化与LED连接的硬件接口
BEEP_Init();
KEY_Init(); //初始化按键
RELAY_Init();
Adc_Init();
Lcd_GPIO_init(); //初始化lcd引脚
Lcd_Init(); //初始化lcd屏幕
UltrasonicWave_Configuration(); //初始化超声IO
delay_ms(200);
cool_relay=0;
while(1)
{
key_value=KEY_Scan(0);
key_Handle(key_value);
APP_Handle();
if(PEOPLE==1)
{
people_flag=10;
}
if(disFlag>10) //显示标志
{
disFlag = 0;
if(people_flag>0)
people_flag--;
ceju(); //获取水位
water=Get_Adc_Average(9,10)/40;
temperature=(float)DS18B20_Get_Temp()+7; //缩小10倍为实际值
if(settemp>temperature&&people_flag>0)
{
heat_relay=0;
}
else
{
heat_relay=1;
}
if(S>10&&HR==0)
{
cool_relay=0;
}
else
{
cool_relay=1;
}
if(water<10)
{
BEEP=!BEEP;
}
else
BEEP=1;
if(set==0)
display();
}
}
}