内容发布更新时间 : 2024/11/6 0:42:25星期一 下面是文章的全部内容请认真阅读。
自动浇花系统
置的浇花时长停止浇花动作。
因考虑花卉的浇水时间各不相同,所以,需要进一步检测系统能否在设定的时间内执行浇花功能,在其他时间,是否会有错误动作。
5.4系统测量与误差分析
表 5-1 信号调理放大电路测试 单位:V
信号值 计算值 实测值 0 0 0 0.1 0.5 0.2 1 0.3 1.5 0.4 2 0.5 2.5 0.6 3 0.7 3.5 0.8 4 0.9 4.5 1 3.5 4 0.49 0.98 1.49 1.98 2.49 .2.98 3.47 3.96 3.97 通过测试我们得出数据的有效放大范围为0 ~ 0.8V ,即对应系统的测湿度范围。测量湿度范围:0~80% {vol% (m3/m3)}。虽然系统有待完善,但已经不影响系统功能的实现。通过误差计算,我们可以得出误差精度。 信号值 绝对误差
测湿误差主要来源于以下几个方面:
一、土壤湿度传感器与土壤的插入深度与探针将直接影响测量的精确值。 二、信号调理电路的设计,以及放大误差的计算不完善。
三、由于工具简陋,实际测量湿度也有误差。影响测量误差的因素很多,还包括现场环境干扰等。
四、系统循环检测时间上的偏差。 五、湿度检测的滞后。 七、显示位数的精度的误差。
八、在电路板与元件焊接做工不精细,有些元件焊接不好,所以造成某些地方接触不好,产生误差。
0 0 0.1 0.01 表 5-2 系统误差计算 0.2 0.3 0.4 0.5 0.02 0.01 0.02 0.01 0.6 0.02 0.7 0.03 0.8 0.04 22
自动浇花系统
6 总结
本设计自动浇花系统以单片机为核心,自动化程度高,测量速度快,精度高,实现了对土壤湿度的测量。充分考虑了各种花草的浇水时间有所差异,一般在早晚时间浇水,中午温度较高,不适合浇花。所以内置了时钟芯片,用于控制浇花时间,并有时钟日历显示。本系统硬件电路相对简单,熟悉单片机中基本理论,芯片控制,显示技术,传感器的原理及应用,A/D转换中的数字化,及弱电控制强电等知识都有所运用。此外程序的编写是电子产品设计的重中之重,是决定功能能否实现,自动化,智能化程度的高低,以及是否符合人性化的关键。此次设计,发挥了独立思考,独立解决问题,虚心学习。不断的调试,修改,完善是必要过程。过程虽然辛苦,但幸不辱命完成了自动浇花系统的要求,实现了设计目的。
通过对本课题的研究学习,也有了以下体会。 一、熟悉了单片机工作基本规律和必要的基本概念。
二、了解土壤湿度检测与其他学科的关系与应用,扩大了知识面。 三、培养了思维能力,分析问题和解决问题的能力。
四、掌握与人共同交流探讨的方法技巧,不断完善,发展自我。
23
自动浇花系统
附录
附录A 原理图
24
自动浇花系统
附录B PCB图
25
自动浇花系统
附录C 程 序
#include
unsigned char code tab1[]=\ %unsigned char code tab2[]=\ %unsigned char code tab0[]=\ %unsigned char code tab02[]=\ %unsigned char code tab01[]=%unsigned char cnt,ADtemp;
unsigned char code dis1[]={\ - - %unsigned char code dis2[]={\ : : %unsigned char code tab3[]={\TER TIME %unsigned char code tab4[]={\ TIME %unsigned char code digit[10]={\ unsigned char mode=0,k02;
unsigned char shidu=0,hour0,minute0,second1,minute1,hour3,minute3,second3; /*定义接口*/ sbit ADC_CS=P3^4; sbit ADC_CLK=P3^5; sbit ADC_DI=P3^6; sbit ADC_DO=P3^7; sbit shui=P2^7; sbit k1=P0^0; sbit k2=P0^1; sbit k3=P0^2;
sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit BF=P0^7; sbit DATA=P2^5; sbit RST=P2^3; sbit SCLK=P2^4;
/*****函数功能:延时若干微秒******/ void delaynus(unsigned char n) { unsigned char i; for(i=0;i /*函数功能:向1302写一个字节数据**/ void Write1302(unsigned char dat) { unsigned char i; 26