一:功能介绍:

1、系统组成:采用stm32f103c8t6核心板+PH传感器+浊度传感器+LCD1602显示屏+蜂鸣器+继电器+水泵+按键
2、通过PH传感器采集PH酸碱度值,显示到LCD1602上面;
3、通过浊度传感器采集水质浊度,显示到LCD1602上面;
4、通过按键设置PH阈值和浊度阈值,显示到LCD1602上面;
5、当PH检测值或者浊度检测值大于设置阈值,蜂鸣器报警提醒,并且打开继电器开启水泵进行换水;

二:实物演示视频

246-基于stm32单片机水质浑浊度PH值酸碱度检测

三:程序代码展示(采用C语言编写,使用keil5编译,代码有中文注释,新手容易看懂)

 

int main(void)
 {	 
	float adcx,adcx1;
float PH_Value=0;
	u8 ph_set=75;  	    
	u8 zd=0,zd_set=50;  	
		delay_init();	    	 //延时函数初始化	  
	 delay_ms(200);  
		LCD1602_Init();
	 	KEY_Init();				  //KEY初始化
		Adc_Init();		  		//ADC初始化
	 LED_Init();			     //LED端口初始化
	while(1)
	{	
if(KEY0==0)//按键设置
{
	ph_set++;
	if(ph_set>140) ph_set=140;
}
if(KEY1==0)
{
	ph_set--;
	if(ph_set<0) ph_set=0;
}
if(KEY2==0)
{
	zd_set++;
	if(zd_set>100) zd_set=100;
}
if(KEY3==0)
{
zd_set--;
	if(zd_set<0) zd_set=0;
}
		adcx=Get_Adc_Average(ADC_Channel_8,10);  		//得到ADC转换值	  
		adcx=(float)adcx*(3.3/4096);
	PH_Value=-5.7541*adcx+13.954;
	if(PH_Value<=0.0){PH_Value=0.0;}
	if(PH_Value>=14.0){PH_Value=14.0;}
		adcx1=Get_Adc_Average(ADC_Channel_9,10);  		//得到ADC转换值	  
		zd=100-((float)adcx1*(3.3/4096)*100-31)*2.38;
		LCD_Write_Command(0x80);//第一行的首地址
			LCD_Write_Date(' ');
			LCD_Write_Date('P');
			LCD_Write_Date('H');
			LCD_Write_Date('=');
			 LCD_Write_Date((int)(PH_Value*100)/1000+0x30);	//显示十位
			 LCD_Write_Date((int)(PH_Value*100)%1000/100+0x30);    //显示个位
			 LCD_Write_Date('.');
			 LCD_Write_Date((int)(PH_Value*100)%100/10+0x30);        //显示小数
			 LCD_Write_Date(' ');
			 LCD_Write_Date(' ');
			 LCD_Write_Date('Z');
			 LCD_Write_Date('D');
			 LCD_Write_Date('=');
		LCD_Write_Date(zd/100+0x30);	
		LCD_Write_Date(zd%100/10+0x30);
		LCD_Write_Date(zd%10+0x30);
		
		
		
		LCD_Write_Command(0x80+0x40);//显示第二行
		LCD_Write_Date('S');
		LCD_Write_Date('E');
		LCD_Write_Date('T');
		LCD_Write_Date(':');
		LCD_Write_Date((int)(ph_set*10)/1000+0x30);	//显示十位
		LCD_Write_Date((int)(ph_set*10)%1000/100+0x30);    //显示个位
		LCD_Write_Date('.');
		LCD_Write_Date((int)(ph_set*10)%100/10+0x30);        //显示小数
		LCD_Write_Date(' ');
		LCD_Write_Date(' ');
		LCD_Write_Date(' ');
		LCD_Write_Date(' ');
		LCD_Write_Date(zd_set/100+0x30);		
		LCD_Write_Date(zd_set%100/10+0x30);
		LCD_Write_Date(zd_set%10+0x30);

if(PH_Value*10>ph_set||zd>zd_set)//超过阈值蜂鸣器报警
{
	BEEP=Q=0;
}
else BEEP=Q=1;
}		
	
 }

四:原理图文件展示(采用AD(Altium Designer)打开)

 五:实物图展示:

六: 资料清单展示:

资料包百度网盘下载链接

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐