基于STM32单片机的智能鱼缸的设计
本次以STM32F103单片机为核心,设计了一款智能鱼缸,能够实现智能温控,智能换水,智能供氧,智能喂食等功能。利用单片机作为主控制器,使用Keil软件进行程序开发,除STM32F103C8T6最小系统外,系统还包含温度传感、水位传感、浑浊度传感等部分。
一、任务简介
本次以STM32F103单片机为核心,设计了一款智能鱼缸,能够实现智能温控,智能换水,智能供氧,智能喂食等功能。利用单片机作为主控制器,使用Keil软件进行程序开发,除STM32F103C8T6最小系统外,系统还包含温度传感、水位传感、浑浊度传感等部分。
二、总体设计
本文设计的智能鱼缸主要是在日常家庭中使用,成为一般家庭养鱼,改善生活品质的选择。此次设计的要求是完成对鱼缸中水质的自动检测控制,水位的自动检测控制,温度的自动检测控制以及对鱼缸内鱼类的自动喂食供氧功能。因此,智能控制的对象即为鱼缸内的水质,水温,水中含氧量以及鱼缸中的食物。但在实际操作过程中,温度和水质的检测较为容易,但是水中含氧量和鱼缸中食物数量的检测较为复杂。因此,在设计过程中,将智能鱼缸需要完成的功能设定为定时喂食,定时供氧,以及恒温控制,水质检测。
三、硬件设计
本设计的硬件部分主要是由STM32芯片进行控制处理,通过温度传感器DS18B20、浊度传感器TSW-30、以及用作水位检测的湿度传感器收集外部数据,将数据传输给STM32芯片,由芯片做出判断,控制继电器的开关,来控制外部的喂食、供氧、加热等设备的工作。
1、STM32F103C8T6介绍
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。实物如图2.2所示。
2、 DS18B20温度传感器
DS18B20是美国DALLAS半导体公司推出的一种智能温度传感器,它能够直接读出被测温度。而且DS18B20可使系统结构简单化,具有更高的可靠性。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。
3、浊度传感器
浊度传感器模块的组成如图2.7所示。该模块通过 3Pin XH-2.54 接头与浊度传感器进行连接。调节 10K 蓝色电位器的旋钮可以对数字量输出触发阈值进行调节。
4、水位传感器
土壤湿度传感器有两个裸露的叉形探针,其电阻根据土壤中的水分含量而变化。该阻力与水分含量成反比。土壤中的水分越少,电阻越高。传感器根据电阻产生输出电压,以此可以确定水分含量。当水分含量超过阈值时,将输出低电平,否则输出高电平。该传感器还具有两个LED,通电后,电源LED指示灯将点亮。当输出变为低电平时,状态LED将点亮。
三、软件设计
1、软件框图
2、代码展示
#include "stm32f10x.h"
#include "bsp.h"
extern int t1count;
extern int t2count;
int main()
{
int T1=1000,T1_last,flag1,flag2;
u16 adcx1,v10,v11,v12,v13,v14;
float volt1,adcy1;
int temp_target=30;
int temp,t1,t2,t3;
u8 tem,h1,h2;
BSP_Init();
OLED_Init();
OLED_Clear();
TIM_Cmd(TIM2, DISABLE);
while(1)
{
if(humi<humi_target)
{
PBout(1)=0;
}
else
{
PBout(1)=1;
}
adcx1=Get_Adc_Average(ADC_Channel_3,20);
adcy1=adcx1;
volt1=adcy1/4096*3.3;
v10=volt1*1000;
v11=volt1;
v12=v10%1000/100;
v13=v10%100/10;
v14=v10%10;
OLED_ShowString(4,3,"hh:",8);
OLED_ShowNum(41,3,v11,1,8);
OLED_ShowString(47,3,".",8);
OLED_ShowNum(54,3,v12,1,8);
OLED_ShowNum(61,3,v13,1,8);
OLED_ShowNum(68,3,v14,1,8);
OLED_ShowString(76,3,"v",8);
temp=DS18B20_Get_Temp();
t1=temp/100;
t2=temp%100/10;
t3=temp%10;
OLED_ShowString(4,1,"Turb:",8);
OLED_ShowNum(41,1,t1,1,8);
OLED_ShowNum(48,1,t2,1,8);
OLED_ShowString(54,1,".",8);
OLED_ShowNum(59,1,t3,1,8);
OLED_ShowString(66,1,"C",8);
OLED_ShowString(4,5,"High:",8);
OLED_ShowString(64,5,"Low:",8);
if(PBin(3)==1)
{
OLED_ShowNum(43,5,1,1,8);
}
else
{
OLED_ShowNum(43,5,0,1,8);
}
if(PBin(4)==1)
{
OLED_ShowNum(104,5,1,1,8);
}
else
{
OLED_ShowNum(104,5,0,1,8);
}
if(t1count==999)
{
t1count=0;
TIM_SetCompare1(TIM4,10000);
delay_ms(1000);
TIM_SetCompare1(TIM4,1);
delay_ms(1000);
}
OLED_ShowNum(10,7,t1count,3,8);
}
}
四、原理图
五、说明书内容
2.3.2 STM32F103C8T6单片机最小系统引脚及原理图
有问题,私聊。微信:lwfw123456789
更多推荐
所有评论(0)