基于stm32单片机的多功能水杯设计
本设计的硬件构成:
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(); } } }
全部0条评论
快来发表一下你的评论吧 !