新闻资讯
NEWS
新闻资讯
NEWS
联系我们
Contact us

联系人:

手机: 13800000000

电话: 400-123-6789

邮箱: admin@dlsmart.cn

地址: 广东省广州市开元体育·(中国)官方网站

行业资讯

开元体育·(中国)官方网站自动灌溉系统的设计

作者:小编 点击: 发布时间:2024-03-22 23:58:36

  开元体育·(中国)官方网站自动灌溉系统的设计免费在线 自动灌溉系统的设计 摘要: 随着农业灌溉技术的迅速发展,现代农业灌溉技术的发展趋势已经由传统的人力灌溉输水过程和田间引渠 灌水过程,转移到农作物精量控制灌溉以及自动化控制系统的科学管理。本文所设计的系统是一个基于 stm32103C8T6单片机的自动灌溉系统,该系统以土壤湿度传感器YL-69为土壤湿度检测装置,LCD1602液晶显示屏为 显示数据模块,用C语言对系统进行编程,实现对土壤湿度检测,在土壤湿度不足时,对所种植的作物进行自动化灌 溉,以保证作物的正常生长。该设计成本不高,运行稳定,可靠性较好,具有可移植性。该系统的设计为我国的水 资源短缺问题,节约人力资源以及保证作物质量方面具有重要意义。 关键词:单片机,土壤湿度,自动灌溉。 The design of automatic irrigation system Abstract:With the rapid development of agricultural irrigation technology, the development trend of modern agricultural irrigation technology has been transferred from the traditional process of human irrigation and field channel-based irrigation to the precision control of crop irrigation and the scientific management of automatic control system. The system designed in this paper is an automatic irrigation system based on STM32103C8T6 microcontroller. The system uses soil moisture sensor YL-69 as the soil moisture detection device and LCD1602 liquid crystal display as the display data module. The system is programmed with C language to realize the detection of soil moisture. Automated irrigation is carried out to ensure the normal growth of crops. The design cost is not high, the operation is stable, the reliability is good, has the portability. The design of the system is of great significance for Chinas water shortage, saving human resources and ensuring the quality of crops. Keywords :Single chip microcomputer; soil moisture; automatic irrigation. 目录 摘要I AbstractII 1 绪论1 1.1 研究背景及意义1 1.2 国内外研究现状2 1.3 主要研究内容4 2 总体方案设计5 2.1 设计思路分析5 2.2 工作原理7 3 硬件电路设计8 3.1系统总设计原理图8 3.2 主要元器件9 3.2.1主控芯片stm32103C8T6介绍9 3.2.2 土壤湿度传感器10 3.2.3液晶显示器芯片介绍11 3.3主控电路系统模块12 3.4 湿度采样模块16 3.5蜂鸣器报警模块17 4 系统软件设计19 4.1软件开发工具19 4.2主程序流程图设计19 4.3液晶显示程序设计21 4.4土壤水分检测系统设计22 4.5田间含水量与萎蔫系数24 4.6蜂鸣器报警模块设计24 4.7水泵驱动电路25 5 实物制作与调试27 5.1实物制作27 5.2硬件调试28 5.3 PCB板的制作31 4 6 结 论32 谢辞33 参考文献34 附录36 1 绪论 1.1 研究背景及意义 随着我国经济的快速发展和综合国力的提高,农业发展日趋成熟[1]。 农业强国一直是中国的标签,即使在高科 技飞速发展的今天,农业也永远是中国继续发展的前提和坚实条件。中国一直在不断探索农业发展之路。虽然在漫 长的发展道路上取得了巨大成就,但也面临着诸多风险和挑战。人口增长带来的压力是当今社会发展面临的棘手问 题。人口与资源的矛盾已成为我国农业发展面临的巨大挑战。现代农业也存在着生态、社会、经济等方面的问题。 我国农业发展普遍面临着生产成本高、质量差、肥料利用率低、环境污染严重、劳动效率低等问题,严重制约了我 国农业的发展[2]。 虽然中国是一个农业大国,但事实并非如此,它并非是一个农业强国。受传统农业生产方式的影响,我国农业 生产水平仍远远落后于世界发达国家。农业的发展需要高科技的支持。将高端科学技术应用于农业领域,应充分发 挥人类与自然和谐相处的智慧和能力,遵循自然的客观规律,将人文与科技、传统与现代相结合,走农业可持续发 展之路。根据西方发达国家农业工程技术提高劳动生产效率和粮食产量的经验,我国有必要加大对农业工程技术和 装备的投入,提高土地利用效率、劳动生产率和农业产量速率。 因此,我国农业发展的方式方法既要充分有效地利 用资源,不断改革创新,巩固技术实力,又要节约、保护和合理配置利用资源,大力发展可持续发展的中国特色现 代农业能够有效解决我国农业发展道路上的各种矛盾[3]。 相对于自动灌溉,灌溉设备跟不上我国农业发展需求。其主要存在以下方面不足。一:田间地势.有高有低,水 在重力的作用下使得灌溉后低处水分过多,高处缺水,会造成整个作业面积内作物的减产;二:在干旱缺水的情况 下,水资源少,没有把有限的水用在关键的地方,不能确保作物大面积上的稳产;三:同一块田内种植了不同的作 物,由于不同作物的需水情况不同,不能在灌溉过程中根据作物需要实现按需灌溉。 依据上述情况,应该在现有的 节水技术的基础上,研制和推广节水灌溉控制新技术使得农业灌溉更加科学,降低灌溉成本,提高农作物产量和质 量[4]。 1.2 国内外研究现状 上世纪50年代, 由计算机设备和程序控制的作物灌排系统在日本、英国和美国取得了长足的进步,并在西方发 达国家得到了广泛的应用[3]。 20世纪60年代,美国研制的一套农业自动灌溉系统采用模拟量输入、继电器板和闭锁 式田间处理机。该处理器由pc机控制,用户可以实时监控水泵的工作状态、作物周围的土壤湿度、阀门的开关状态 和水箱的水位。同时,用户还可以根据监测到的指标和数据修改当前灌溉方案,达到最佳灌溉状态。灌溉系统数据 库中的数据包括:水箱水位、降水量、灌溉用水量和土壤含水量。用户可以将这些数据与以前监测的数据进行比 较,通过比较作物灌溉面积的灌溉量和蒸发量,结合土壤水分、水泵出水量和相关作物的种类、习性等数据,进行 自动分析,从而自动生成符合当前环境条件的灌溉系统。近年来,随着农业科技的发展,作物自动灌溉系统已发展 成为集气象因子、土壤水分蒸发和作物根系周围水分含量于一体的综合灌溉控制系统。 但国外设备对于普通用户来 说价格太高,专业性强,很难在实际应用中得到广泛应用[5]。 近年来,许多发达国家开始将自动灌溉技术作为一个重要的研究课题,并在这一领域进行了大量的研究试验。 鲜切花大国荷兰的自动化技术相对成熟。他们的盆栽温室完全由电脑控制,方便快捷。与此同时,自动无人操作模 式在日本得到了广泛推广。他们研制的盆栽温室实现了作物灌溉、播种、施肥、育苗、喷施等方面的无人自动监控 模式。此外,英国伦敦大学农业学院开发的计算机远程控制技术可以实现温室内热、湿、温、肥、光的自动远程控 制,远程监控范围可达到惊人的50kmi1。目前,节水灌溉已成为世界各国农业领域关注的焦点。在作物灌溉设备和 控制仪器方面,德国、瑞士等国处于世界领先水平。 相比之下,在技术推广和应用方面,美国、以色列、荷兰等国 的节水灌溉技术和灌溉品牌影响了世界,发挥了主导作用[6]。 节水灌溉设备从灌水器、过滤器、施肥装备、到自动化控制系统设备,技术已经相当成熟并且早已形成标准 化。众所周知的美国亨特、托罗、雨鸟等品牌早已享誉全世界;以色列的伯尔梅特电磁阀、法国的DOSATRON肥料/农 药混合器在世界农业灌溉领域代表了当今国际最高水平1201;而远在南半球大洋洲的澳大利亚是世界上推广微灌面积 最大的国家之一,技术实力相当雄厚;另外,以色列的微灌控制技术也非常有代表性,作为严重缺水的国家,以色列 走出了自己的农业大国之路,他们的政府不惜余力耗费巨资在全国范围内铺设灌溉输水地下管道,因为有着强大技 5 术力量作为保障,以色列政府大力发展农业节水灌溉技术,并且他们的盆栽大棚已经全面实现了灌溉自动化控制管理 [7]。 我国也相继研发了应用于农业的各种自动灌溉控制系统。最早研究以传统8051单片机为核心的简单自动控制灌 溉系统、基于PLC单片机应用的自动灌溉控制系统等。几近年随着各种先进的控制技术在农业灌溉控制系统中的成功 应用,使得我国在节水灌溉技术的研究力度和水平迅速提升,并逐渐发展自动变量控制系统的应用。 随之智能模糊 控制算法、ZigBee以及网络技术研究设计了一种自动灌溉控制系统,系统利用传感器农田的各种环境数据采集回来 组合后通过无线网络发送到总系统的控制机上[8]。 将接收到的数据通过其他软件进行处理,系统根据相应设计好的 的预设参数和系统反馈回来的各项环境数据进行比较,并且根据比较结果做出判断,然后发送相应的控制命令给农 田中的分进行相应的管理,系统自动化程度较高。 该系统在农田实际种植应用中能够连续工作,并且系统没有发生故障,可实现自动灌溉并且监控农田的各项环 境因子的变化[9]。 另外设计了一种基于ARM9控制的自动灌溉系统,采用土壤湿度传感器随时采集土壤湿度状况,并 且将采集到土壤湿度情况发送给控制系统的核心进行计算。系统根据土壤湿度情况启动自动灌溉。系统以S3C2440为 控制核心,采用AQUA-TEL-TDR传感器的TDR原理,将输出的模拟信号转换为电信号,再将电信号转换为数字信号,控 制核心根据土壤湿度传感器反馈的土壤湿度计算出所需的灌溉的土壤水分含量以及灌溉时间,将计算结果输送给控 制系统,控制系统发送报警提示并开始启动灌溉设备进行灌溉。 全国很多地方广泛应用自动灌溉技术和节水设备 [10]。 1.3 主要研究内容 由于时间和成本有要求,且为了达到设计目标,用盆栽植物对该自动灌溉系统进行验证。 传感器得到的土壤湿 度信号,经模数转换为电信号,通过转换送到单片机进行数据处理,三极管驱动水泵进行灌溉,按键设置阀值,然 后送到显示部分进行显示。本文给出了系统硬件电路的设计和软件程序的设计,实现了土壤湿度的实时自动检测的 功能。实践证明该温湿度测量仪具有测量精度高、通用性强等特点,具有一定的实用价值。 (1) 根据实际情况, 设计了一种盆栽作物自动灌溉控制系统,对盆栽作物根系周围的土壤水分进行检测,并 根据检测数据对作物进行智能化自动灌溉。 (2) 选择了盆栽自动灌溉控制系统的硬件组成,制定了硬件的优化使用方案,建立了一套功能完善的自动灌 溉控制系统。 (3) 通过检测土壤湿度,超出设计范围时蜂鸣报警,进行对植物的自动灌溉。 (4) 通过三极管驱动水泵灌溉。 (5)画出相关设计图,能做出实物,写出设计和和总结报告。 2 总体方案设计 2.1 设计思路分析 本设计采用集成单片机主控制,在土壤湿度传感器收集土壤水分信号后,它通过自己的A / D转换模块和控制单 元,然后处理并发送到单片机。它将由单片机控制处理,结果发送到显示模块进行显示。 基于传感器的自动灌溉技术是整个自动灌溉系统的重要组成部分。没有传感器开元体育·(中国)官方网站,就不可能捕获和转换被测信 号。也就是说,无法实现所有的精确检测和自动控制。在基于传感器的工作模式下,系统通过湿度传感器测量土壤 湿度,对检测到的数据进行分析和处理,并将其传输给。在与预先设定的湿度数据进行比较后,向控 制继电器输出灌溉启停指令,实现灌溉的自动控制,最终实现土壤湿度的调节。 目前,在节水灌溉自动控制领域, 相关的传感器技术日趋成熟,基于传感器的灌溉自动控制系统得到了广泛的应用[11]。 传统的模拟传感器用电流、电压、电阻来表示被测参数的大小,可靠性差, 检测数据精度低,响应时间慢[9]。 数字传感器弥补了模拟传感器的不足,具有较强的抗干扰能力和良好的一致性,在工程应用领域得到了广泛的应 用,大大提高了生产效率。本文对单盆作物根系周围的土壤水分进行了测定。盆栽作物的土壤水分不受外界光照、 土壤类型、气候条件、环境温度等因素的影响,情况相对简单。 另外,数字土壤水分传感器成本高、价格高、功能 全面,主要应用于科研开发、工程应用、家电行业等领域[12]。 因此,选择经济实惠的模拟传感器更符合灌溉自动 控制系统的要求。综合考虑,本文选用土壤湿度检测传感器作为土壤水分检测模块。有以下两种方案可供选择。 方案一:可利用湿度传感器采样土壤中的湿度信号,以提供给显示电路部分,关于湿度含量可采用ADC的方法将 模拟信号转换成数字信号,然后再用译码器将转换后的数字信号提给显示电路实现显示,ADC转换电路所需脉冲由 555构成的多谐振荡器来提供。原理框图如下所示。 6 图2.1 方案一原理框图 方案二: 在本次设计中,以stm32单片机为主控芯片,各部分功能用外部电路来完成,主要包括时钟晶振电路, 湿度测量电路、温度采集,远程数据传输、液晶显示模块,报警模块,按键模块,水泵灌溉系统结构框图如图2.2 所示。 报警模块传输数据 传输设定 参 数传输显示数据传输命令 图2.2 方案二原理框图 最终方案选择:在以上两种方案中,方案一中的译码器74HC4321存在消隐状态,即当ADC转换后的数据超过1001 时,对于1010~1111六个代码,译码器输出均为低电平,显示器不能正常显示出每一单位下的湿度值。所以该方案的 精确度不及方案二,而且方案二中单片机除体积小、功耗低等特点外,最大的优势在于高性能价格比。单片机控制 速度远远快于方案一,这种方法的工作速率较高,而且精度较高。,再设计时,除了保持高性能外,简化外围硬件 电路,在系统性能和速度允许的情况下能使用软件功能取代硬件功能等。 所以最终选择方案二作为本次毕业设计的制作方案。 2.2 工作原理 本文设计的自动灌溉控制系统可分为stm32103C8T6单片机控制模块、LCD显示模块、土壤水分检测传感器数据采 集模块、蜂鸣器报警模块、手动开关灌溉模块。自动灌溉控制系统以stm32103C8T6单片机为核心部件,采用土壤水 分检测传感器检测盆栽作物根系周围的土壤水分,并通过LCD实时显示作物根系周围的土壤水分。然后将测得的水分 数据传输到单片机进行计算。同时,自动灌溉控制系统还配有报警装置。当检测到土壤水分值大于或等于萎蔫系数 时,控制系统绿灯始终亮,无需判断; 如果检测到土壤水分值小于萎蔫系数,控制系统红灯亮,蜂鸣器连续报警 [13]。 3 硬件电路设计 3.1系统总设计电路图 图 3.1 总电路设计电路图 7 上图为本设计的总电路设计电路图,包括单片机最小系统、土壤湿度传感器接口电路、LCD显示电路、电源接 口、蜂鸣器报警系统、数码管等。 3.2 主要元器件 3.2.1主控芯片stm32103C8T6介绍 对于本次设计,我们选择的单片机是STM32F103C8T6单片机。此单片机和51系列相比多了很多功能,不但运行速 度比51单片机要快很多,自带2个AD转换,方便我们在设计烟雾和CO的时候免去了需要加外部ADC进行转换,非常方 便; STM32有着很强大的通信功能和控制功能。这一点是51单片机无法比拟的。 因为51单片机只有1个串口进行通 信,而32单片机具有5个串口进行通信,所以对一些要求用串口进行通信的模块而且就不需要通过CD4052等双串口模 块来转换,所以这一点被市场上广泛的运用,32单片机因为本身可以进行多种不同的时钟模数来进行工作,所以在 功耗要求比较严格的产品中占有一席之地[14]。 STM32特点: 1.STM32C8T6系列的起振晶部分采用了RTC,低负载的方式,而没有像传统的比较廉价的圆柱晶振。 2.引脚个数为48个。 3.工作频率为72MHZ。 4.单片机具有3个普通定时器和1个高级定时器。 5.单片机具有2个2位/16通道的ADC模数转换。 6.使用了3.3V稳压芯片,可以保证最大输出300MA电流。 7.支持ST-LINK和JTAG调试下载。 8.存储资源为64kb byte FLASH和20byte Sram。 STM32实物图如图3.2所示 : 图3.2 STM32F103C8T6实物图 1、电源指示灯LED(PWR通常为红色):如果电源指示灯亮亮说明单片机正常运行,如果较暗或者闪烁,表示此单 片机可能存在故障。 2、用户LED(PC13):这个功能的使用大大的方便了我们进行一些比较简单的功能测试,如单片机的运行状态等, 方便初学者进行更好的测试。 3、单片机上采用了跳帽的方式,我们可以对stm32进行3种编程方式开元体育·(中国)官方网站。如用户的SARM、闪存和系统的存储器。 4、为单片机的复位电路。 5、8M晶振:主要是用于设置单片机系统的频率为72MHZ。 6、32.768KHz晶振:可供内置RTC使用,避免了需要专门的时钟芯片进行定时器处理等[15]。 3.2.2 土壤湿度传感器 8 土壤水分传感器是通过测定土壤含水量来确定土壤含水量的大小。当土壤湿度传感器的探头悬空时,电路中三 极管的底座处于开路状态,三极管的截止输出为0; 插入土壤时,由于土壤含水量不同,土壤的电阻值不同,三极管 的基极提供尺寸变化的导通电流,从三极管的集电极到发射极的导通电流由基极控制并通过发射极拉下电阻转换为 电压[16]。 图3.3土壤湿度传感器实物图 3.2.3液晶显示器芯片介绍 考虑到要显示的是湿度数据,所以只需要能够显示一到两行的显示器即可。我选择了LCD1602液晶显示器。它是 一款工业字符型液晶,可以显示两行数据,每行可以显示十六个符号、字母或者数字,刚好可以满足设计的需要。 它体积小巧,功耗较低,显示效果良好,是一款非常实用的液晶显示设备[17]。 LCD 1602有16个引脚,它的引脚介绍如下: 表3.1 LCD1602引脚介绍 引脚号 引脚名称 引脚功能 1 GND 电源接地端 2 VCC 5V电源正极 3 VL 调节显示器对比度 4 RS 寄存器选择端 5 RW 读写信号线 BL- 背光负极 LCD1602工作在3.5V~5V的工作电压下,它内部设计有复位电路,可以进行光标移动、清屏的操作。 显示的亮度 可以通过外部连接的电位计进行调节。内部带有存储器可以储存数据。它可以直接与单片机相连接,通过单片机程 序来控制液晶的显示。 LCD 1602有16个引脚,其中RS、RW的值控制单片机对它的读写: 表3.2 LCD工作状态介绍 RS RW 操作命令 0 0 写入指令寄存器(清清屏等) 0 1 读busy(DB7),以及读取位址计数器 (DB0—DB6) 的值 9 1 0 写入数据寄存器(显示各字符等) 1 1 从数据寄存器读取数据 LCD1602液晶显示在执行程序指令之前要进行模块标志位的忙信号,只有当它的忙标志位为低电平时才表示可以 执行指令。 3.3 stm32单片机概述 单片机也就是我们经常说的单片小型计算机。经常用在控制领域中。是微型计算机的非常重要的一部分。在我 们日常生活中经常用来进行控制。单片机主要是由内部单块集成电路构成。内部最为重要的就是包含了cpu处理芯片 也就是中央处理器、IO口和存储器。我们只需要用相应的编译器烧写程序就可以实现对外围器件的控制。对单片机 的选型设计是以STM32C8T6核心板。STM32单片机是一个低电压,高性能微处理和快速可擦除字节。它非常简单,方便, 易于使用。在医疗机构和工业生产中广泛应用于实时控制、停车场、计算机外围设备和通信设备等各个领域。 想要实现系统功能,就必须完成单片机与电路或外部功能信息交流。这时就需要用到管脚将它们相连接达到通 连的效果,同时我们也称管脚将单片机的外特性表现出来。科技的进步,单片机也更加注重体积和外观了,所以科 学家想出了让很多引脚是双功能或多功能的。就现在的情况来说,STM32单片机的封装形式是多种多样,本设计就以 40线双列直播式封装形式为例尽心详细介绍,如图3.1所示。 图3.1 STM32单片机管脚图 STM32特点: 工作频率 (MHz) 48 16-bit 定时器 8 32-bit 定时器 1 A/D 转换器 1x12-bit D/A 转换器 1x12-bit 通信接口 1xSPI/I2S;1xSPI; 2xI2C;2xUSART;CEC I/Os 39 电压 (V) 2 to 3.6 STM32F103是STM32f101的增强型单片机,在32位的MCU中性能最强;具有出众的控制和通讯,非常适合低电压/ 低功耗的应用场合。图3.2为STM32内核。 10 图3.2 STM32单片机管脚图 STM32103基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核。时钟频率达到 72MHz,是同类产品中性能最高的产品;内置32K到128K的闪存,闪存执行代码,STM32功耗36mA,是32位市场上功耗 最低的产品,相当于0.5mA/MHz。STM32有4个p口;SPI-NSS片选,使能。 SPI-MISO数据输出;SPI-SCK时钟线;SPI-MOSI数据输入。 STM32单片机复位:复位电路的作用是为了是系统恢复到初始状态的,单片机的复位方式也是存在好几种的:上 电复位,系统复位,备份区域复位。上电复位:其产生的条件是,当系统上电、掉电,以及系统从待机模式返回 时,发生电源复位。电源复位能够复位除了备份区域寄存器之外的所有寄存器的状态。系统复位:以下任一事件发 生时,均能产生一个系统复位: 1.NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWDG复位) 3. 独立看门狗计数终止(IWDG复位) 4. 软件复位(SW复位) 5. 低功耗管理复位 STM32单片机震荡电路:首先要明确的是STM32没有内部晶振,HSI是内部RC振荡器。HSI内部8MHz的RC振荡器的 误差在1%左右,内部RC振荡器的精度通常比用HSE(外部晶振)要差上十倍以上。没所谓优缺点,最重要的是根据应 用场合,对时钟要求不高时也是可以用HSI的,要注意的是当用HSI时,最高系统时钟的频率是达不到72MHz的。 STM32的ISP就是用(HSI)内部RC振荡器。 3.4 湿度采样模块 为了准确地检测盆栽作物根系周围的土壤水分数据,更好地抵抗外界的干扰,避免湿度传感器随温度梯度变化 而产生的误差,节省复杂的信号处理过程,最终选择土壤水分检测传感器作为数据源根据设计要求设计了盆栽自动 灌溉控制系统的采集模块。土壤水分检测传感器是一种体积小、重量轻、能耗少、响应快、测量准确、灵敏度高的 测量土壤水分的传感器。通过测量土壤的介电常数,可以直接、稳定地反映各种土壤的真实含水率。 适用于土壤监 测、科学试验、温室控制、植物栽培、精细农业等[21],土壤水分检测传感器性能指标,如下表 表3.5 土壤水分检测传感器性能指标 土壤水分检测传感器的电源电压为5V,电压输出为0~2V,对应土壤水分为0~100%重量含水率。换算关系为:0.5 x输出电压值=重量含水率。土壤水分检测传感器电路如图3.6所示. 11 图3.6 土壤水分检测传感器电路连接图 土壤湿度是模数转换,我们获取的是土壤的湿度模拟量,转换为不同的电阻值,然后通过单片机内部ad转换为 不同的电压值(数字量)最后通过lcd1602液晶显示,资料里面大家可能看到的是运用lm393,在本身设计中,因为 是获取的湿度大小不是有无湿度,所以不需要画lm393比较器电路。当土壤湿度越高,土壤湿度传感器输出的电阻就 越小,模拟量就越高(就相当于这个点的电压值越大),那么输出的电压就越高。比如当前土壤湿度是50%,那么输出 的电压值就是2.5V ,如果是20那么输出电压值就是1V。 3.5蜂鸣器报警模块 为了保证盆栽作物在最佳土壤水分环境中健康生长,作物根系周围的土壤水分应始终在田间持水量与萎蔫系数 之间的有效土壤含水量范围内。本文采用电蜂鸣器报警部分。当检测到土壤含水量低于萎蔫系数时,蜂鸣器报警, LED红灯亮,提醒操作人员注意,或采取应急措施;灌溉后,土壤含水量恢复到大于或等于田间持水量,当蜂鸣器停 止报警,LED绿灯亮时,控制系统恢复正常。 此设计是stm32单片机,单片机上电后引脚为高组态,所以我们不可以使用8550,因为8550 是低电平导通, 8050 是高电平导通,当我们想让蜂鸣器进行报警的时候,我们给三极管一个高电平 ,就实现了蜂鸣器报警。 三极 管本身具有的作用是放大电流(放大200倍)加1k电阻是为了进行限流[22]。蜂鸣器模块如图3.7 所示。 图3.7 蜂鸣器模块 4 系统软件设计 4.1软件开发工具 12 本系统的软件程序设计采用的是KeilμVision4软件[23],此款软件是一种专门编写单片机代码的软件,为 stm32单片机软件的开发提供了C语言环境。 图4.1为KeilμVision5集成开发环境。 图4.1 KeilμVision5集成开发环境。 4.2主程序流程图设计 总体设计方案是由信号采集模块、主控模块和执行模块三个模块组成的,系统的工作原理如下: 湿度传感器将 当前的湿度数据转换成二进制值通过三线制接口传送给单片机,单片机将采样芯片送来的数据进行补偿算法获得精 确实际采样值。然后根据需要将其送到液晶显示器显示。系统上电以后进行初始化,读取存在湿度上下限报警值。 进入主循环程序首先对按键是否触发进行判断,如有按键触发则进入设置上限报警值界面设置相应的上限报警值; 而后访问湿度采样芯片获取湿度采样二进制值经补偿处理转换成精确数据,接着判断当前湿度值是否超限,若湿度 超限,则水泵停止启动,直到环境的湿度都下降到湿度下线蜂鸣器继续报警。具体流程图如图4.2所示。 13 图4.2 软件设计流程图 选用C语言进行软件主程序设计,并将程序与硬件电路结合使用,利用计算机与硬件电路连接,将程序烧成硬件 电路,达到软硬件结合的目的。其主要思想是:芯片通电后,进行初始化,否则无法正常工作。初始化之后,它将 按照默认值开始运行。如果需要设置土壤湿度上限,按开关键设置湿度等级。每次按蜂鸣器时,蜂鸣器都会响,然 后空气压力会增加或减少。按开关键,光标将显示在各个位置,可以用加号键和减号键进行设置,再按开关键,光 标将被剪切到十位,依此类推。设定完成后开元体育·(中国)官方网站,再按一下开关键,即可继续检测实时气压,判断是否达到设定值。如 果到达,蜂鸣器不发出警报。如果未达到,蜂鸣器继续报警水泵持续抽水。这样的往复循环。 4.3液晶显示程序设计 LCD 1602有16个引脚[24],其中RS、RW的值控制单片机对它的读写: 表4.1 LCD工作状态介绍 RS RW 操作命令 0 0 写入指令寄存器(清清屏等) 0 1 读busy(DB7),以及读取位址计数器 (DB0—DB6) 的值 1 0 写入数据寄存器(显示各字符等) 1 1 从数据寄存器读取数据 LCD1602液晶显示在执行程序指令之前要进行模块标志位的忙信号,只有当它的忙标志位为低电平时才表示可以 执行指令。 LCD1602要显示字符时,就要获得该字符的现实的RAM地址。它内部的控制寄存器有11条控制指令,包括清屏, 光标移位等指令。 其显示程序流程图如下 14 图 4.3 液晶显示程序流程图 4.4土壤水分检测系统设计 当采集到当前的数据后,把模拟量传输给单片机ad引脚进行处理,进行初始化后,通过模数转换获取当前心电 值,本次设计选择的A10,然后进行读取数据,一个字节为8位,进行一位一位读取,把当前读取的信息转换为数字 量,换算成当前的电压值。先初始化adc引脚, adc开始读取数据ad_value_temp = Read_ADC (0); 读取转换后的数 据,从最高位开始依次输出(D7~D0)for(i = 0;i 8;i++) {dat = 1;//左移运算符,例如c=2就是 c=c2把 c左移2位得度到的值给c。dat=dat1,把dat左移1位得度到的值给dat; dat = ADDO;//C语言中的 = 意思为:按 位或后赋值.C语言中的 ^= 意思为:按位异或后赋值.C语言中的 &= 意思为:按位与后赋值, 判断AD是否转换完毕 返回 图4.4 土壤湿度检测流程框图 4.5田间含水量与萎蔫系数 田间持水量是指在地下水较深、排水良好的土地上,经过充分灌溉或降水后,土壤剖面保持相对稳定的土壤含 水量(土壤水势或土壤吸水率达到一定值),是大多数植物可利用的土壤水分上限。 不同土壤类型的田间持水量也 不同,一般为粘粒壤土砂土[25]。 是重要的土壤水分常数之一。指长期干旱后生长在湿润土壤上的作物,其叶片因吸水不足而萎蔫,以补偿蒸腾 消耗的土壤含水量。起初,树叶在下午或日落后会逐渐恢复膨胀,然后在日出前不会,最后甚至在灌溉或降水后也 不会。此时土壤水势一般为-15bar,大致相当于萎蔫叶片的水势。在这种情况下,作物被称为永久萎蔫,土壤含水 量被称为萎蔫系数。 表4.2 不同田土壤类型间持水量与萎蔫系数 15 4.6蜂鸣器报警模块设计 报警电路采用蜂鸣器报警电路,蜂鸣器与家用电气上的喇叭在用法上也有相似的地方,通常工作电流比较大, 电路上的TTL点评基本上驱动不了蜂鸣器,需要增加一个电流放大的电路才可以,即此一个管脚很难驱动蜂鸣器发出 声音,所以增加了一个三极管来增加通过蜂鸣器的电流。 蜂鸣器的正极性的一端联接到5V电源上面,另一端接到三极管的集电极,三极管的基极由单片机的一个管脚通 过一个与门来控制,当管脚为低时,与非门输出高电平,三极管导通,这样蜂鸣器的电流形成回路,发出声音。当 管脚为高时,与非门输出低电平,三极管截至,蜂鸣器不发出声音。其电路如图4.5所示。 图4.5 报警流程图 4.7水泵驱动电路 首先我们采用1k电阻r4对电平进行限制,只有当单片机给dj一个高电平的时候(8050是高电平导通)8050三极 管才被导通。这个时候VCC和gnd就导通了,10k电阻在这里只是用作上拉(如果不接vcc电流直接就可以导通8050就 无法进行控制),8550这个时候就可以正常工作,然后我们通过程序来控制水泵开启和关闭。 16 图4.6 水泵控制电路 5 实物制作与调试 5.1实物制作 本人综合了所需要的模块,最终采用了如下材料:万用板,陶瓷电容,电阻若干,杜邦线,电位器,电源,开 关,三极管,stm32103C8T6核单片机,LCD1602液晶显示屏,蜂鸣器,土壤湿度传感器和水泵等。 图5.1 系统实物图 5.2硬件调试 Stm单片机自动下载器接到电脑USB接口进行程序下载,下载成功后进行相关实验,实验结果如下所示。 1、接通电源, 打开开关,土壤湿度传感器检测土壤湿度信号。以下是当土壤湿度未达到下限时,蜂鸣器报警图。 17 图5.2 蜂鸣器报警图 2、不同土壤的湿度不同,对照田间持水量和萎蔫系数可以设置不同的土壤湿度上下限阈值,为方便实验直观 性, 设置土壤湿度下限为10%,土壤湿度上限为50%。当土壤湿度未达到10%时,蜂鸣器报警,水泵启动抽水,当达到 10%时系统继续抽水,当超过50%时,蜂鸣器停止报警,水泵停止抽水,这时土壤水分达到最大田间持水量。即低于 下限报警工作,高于上限停止报警和工作。图5.3是实物的土壤湿度设置界面。 18 图5.3 实物土壤湿度设置界面图 3、当土壤湿度处于10%-50%时,此状态最适于作物生长。图5.4为土壤湿度最适区间实物图。 19 图5.4 土壤湿度正常范围实物图 5.3 PCB的制作 图5.5 电路原理图 20 图5.6 PCB板制作 6 结 论 本次毕业设计在自己的努力,同学的帮助,老师的指点下已完成,结果固然重要,但过程也弥足珍贵,在做毕 业设计的过程中学到了好多,对这段时间的总结对自己将是一个质的提升。此次毕业设计的成果如下: (1)制定了一套严谨合理、科学有效的自动灌溉系统的设计方案。 (2)选用了合理的土壤湿度传感器及各相关模块。 (3)规划和构建了的硬件电路。 (4)完成了软件控制程序的高效化、准确化编写。 本设计不足之处和今后改进之处: 该系统虽然可实现对上下限值的调控,但不同作物的需水量不同以及影响作物生长的因素有很多,以及成本问 题,因此不能大规模使用,可以对高级花卉、珍贵中药等稀有植物进行精准灌溉。同时影响作物的因素有光照、温 度、土壤肥力等,因此可以在该系统的基础上增加一些功能,比如温度、光照检测装置。 致 谢 四年将不知不觉地过去。在这里,我要衷心感谢我们的老师们在过去四年里对我们的辛勤培养。今后,我将继 续努力,用自己的辛勤劳动和不懈奋斗回报母校和老师们! 感谢我的导师许会芳先生的毕业设计。感谢您在繁忙的教学工作和生活中给予的时间、指导和宝贵建议。在生 产过程中,总会出现一些问题。每当我解决不了的时候,我总是去积极问徐会芳先生。不管老师有多忙,他都会耐 心地帮我解决。正是老师刻苦的教学和严谨的工作作风,使我的作品和论文顺利完成。 当我所有的工作完成后,我感到非常兴奋。我很高兴看到我的作品达到了预期的效果。我觉得我最近几个月的 努力没有白费。不仅达到了预期的目标,在实现目标的过程中,还学到了书本上没有的知识,还锻炼了自己的动手 能力,把四年所学的理论知识付诸实践。 完成这篇论文不是我自己的工作,更体现了各学科导师和教师的心血和智慧。由于受时间、个人能力等相关因 素的影响,本文必然存在一些不足和缺陷。我希望在座的老师能批评指正我,再次向各位老师表示衷心的感谢 参考文献 [1] 贾亚飞,翟娟.道路温度报警与绿化浇水智能系统的研究[J].软件,2018,55-56 [2] 赵德安等.单片机原理与应用[M].北京:机械工业出版社, 2004,23-25 [3] 唐江.基于AT89S52单片机的自动灌溉系统设计[J].南方机农,2018,16-18 [4] 吴玉玉,杨瑞珍,马得秀,等.基于单片机的电子万年历设计[J].电子测试,2018,46-48 [5] 曹可欣.基于单片机的小型自动灌溉系统的设计与实现[J].通信电源技术,2018,95-97 [6] 李瑞福.基于单片机AT89C51的一氧化碳浓度检测仪设计[J].软件,2015,91-92 [7] 丁月林.基于STM32的低功耗温湿度采集器实现[J].软件,2015,63-66 [8] 陈晓燕,姚高伟,张鲲基于遗传算法的无线传感器节点定位在农业的应用[J].软件,2015,21-23 [9] 鞠永胜,李兴凯,包君.基于单片机的蔬菜大棚自动灌溉系统研究设计[J].农机化研究,2012,98-100 [10] 童超,罗坤,魏士博.基于单片机的屋面雨水回收自动灌溉系统设计[J].数码设计,2017。68-69 [11] 张.智能化灌溉.喷灌技术,2007,54-56 [12] 吴晓光.我国滴灌技术应用发展若干问题分析.节水灌溉技术,2004.6,68-70 [13] 李锐.单片机实现自动灌溉及施肥系统.计算机应用,142-143 21 [14] 周长城.数据采集与处理技术.信号处理应用,2006.8,135-136 [15] 袁军.单片机实现自动灌溉及施肥系统.中国电子技术,2009.123-126 [16] 冯晓波.灌溉自动化的基本原理.中国农村水利水电,2005.7, 45-48 [17] 王洪亮. 自动的设计与研究.中国农村水利水电,2005.7,35-36 [18] 汤广民.节水灌溉与农业可持续发展,2007.3,29-30 [19] 张正喜单片机应用系统的抗干扰软件设计.计算机信息,2007,24-25 [20] 张晓文,苏伯平,孙淑彬,等.设施农业精准灌溉监控系统的研究与开发[J].中国农机化学报,2005(1) : 30-32. [21] 钟诚,张军保,韩晓明,等.不同土壤质地田间持水量实验成果分析[J].东北水利水电,2014,32 (5) : 65-67. [22] 赵广建,樊贵盛.凋萎系数与土壤有机质含量的定量关系研究[J].山西水土保持科技,2008(1) :12-13. [23] 杨宝祝.我国农业信息技术与农业信息化发展战略研究[J].农业网络信息,2007(9) :4-8. [24] 李珍明, 自动化灌溉系统在上海郊区的应用[J].中国农村水利水电,2002(10) :20-22. [25] 周润景,蔡雨恬. Proteus入门实用教程.第二版[M].机械工业出版社,2011.36-38. 附录 #include sys.h #include delay.h #include usart.h #include led.h #include stm32f10x_tim.h unsigned char LedBuff[4] = {16,16,16,16}; unsigned char LedChar[] = { //数码管显示字符转换表 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E,0xff }; #define coefficient 0.0214 int flage1s = 0; float humidity; void Write_595(unsigned char dat); void Timer6_Init(uint16_t Prescaler,uint16_t Period); void Refresh_Led(void); void Adc_Init(void); u16 Get_Adc_Average(u8 ch,u8 times); int main() { int adcx; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应 优先级 uart_init(115200); //串口初始化为115200 BEZZ_Init(); Adc_Init(); //ADC初始化 delay_init(); //延时函数初始化 LED_Init(); //初始化与LED连接的硬件接口 Timer6_Init(7200,10); while(1) { 22 if(flage1s==1) { flage1s=0; adcx=Get_Adc_Average(ADC_Channel_1,10); humidity=adcx*coefficient; } if(humidity=60) { BEZZ=1; } else { BEZZ = 0; } Refresh_Led(); } } void Write_595(unsigned char dat) { unsigned char i; for(i=8;i=1;i--) { if (dat&0x80) IO=1; else IO=0; dat=1; SCL = 0; SCL = 1; } } void Refresh_Led() { unsigned char *led_table; // 查表指针 unsigned char i; //显示第1位 LedBuff[0] = (uint16_t)humidity%10; LedBuff[1] = (uint16_t)humidity/10%10; led_table = LedChar + LedBuff[0]; i = *led_table; Write_595(i); Write_595(0x01); RCK = 0; RCK = 1; //显示第2位 led_table = LedChar + LedBuff[1]; i = *led_table; Write_595(i); Write_595(0x02); RCK = 0; 23 RCK = 1; //显示第3位 led_table = LedChar + LedBuff[2]; i = *led_table; Write_595(i); Write_595(0x04); RCK = 0; RCK = 1; //显示第4位 led_table = LedChar + LedBuff[3]; i = *led_table; Write_595(i); Write_595(0x08); RCK = 0; RCK = 1; } void Timer6_Init(uint16_t Prescaler,uint16_t Period) { TIM_TimeBaseInitTypeDef TIM_Time; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE); TIM_Time.TIM_ClockDivision=TIM_CKD_DIV1; TIM_Time.TIM_CounterMode=TIM_CounterMode_Up; TIM_Time.TIM_Period=Period-1; TIM_Time.TIM_Prescaler=Prescaler-1; TIM_TimeBaseInit(TIM6, TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE); TIM_ClearITPendingBit(TIM6,TIM_IT_Update); NVIC_InitStruct.NVIC_IRQChannel=TIM6_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2; NVIC_InitStruct.NVIC_IRQChannelSubPriority=2; NVIC_Init(&NVIC_InitStruct); TIM_Cmd(TIM6,ENABLE); } void TIM6_IRQHandler(void) { static int i=0; if(TIM_GetITStatus(TIM6,TIM_IT_Update) != RESET) { i++; if(i=1000) { i=0; flage1s = 1; } TIM_ClearITPendingBit(TIM6,TIM_IT_Update); 24 } } void Adc_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA RCC_APB2Periph_ADC1, ENABLE ); //使能ADC1通道时钟 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M //PA1 作为模拟通道输入引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//模拟输入引脚 GPIO_Init(GPIOA, &GPIO_InitStructure); ADC_DeInit(ADC1); //复位ADC1,将外设 ADC1 的全部寄存器重设为缺省值 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;//ADC工作模式:ADC1和ADC2工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE;//模数转换工作在单通道模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//模数转换工作在单次转换模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换由软件而不是外部触发启动 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//ADC数据右对齐 ADC_InitStructure.ADC_NbrOfChannel = 1;//顺序进行规则转换的ADC通道的数目 ADC_Init(ADC1, &ADC_InitStructure);//根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器 ADC_Cmd(ADC1, ENABLE);//使能指定的ADC1 ADC_ResetCalibration(ADC1);//使能复位校准 while(ADC_GetResetCalibrationStatus(ADC1));//等待复位校准结束 ADC_StartCalibration(ADC1); //开启AD校准 while(ADC_GetCalibrationStatus(ADC1)); //等待校准结束 //ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的ADC1的软件转换启动功能 } u16 Get_Adc(u8 ch) { //设置指定ADC的规则组通道,一个序列,采样时间 ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );//ADC1,ADC通道,采样时间为239.5 周期 ADC_SoftwareStartConvCmd(ADC1, ENABLE);//使能指定的ADC1的软件转换启动功能 while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束 return ADC_GetConversionValue(ADC1);//返回最近一次ADC1规则组的转换结果 } u16 Get_Adc_Average(u8 ch,u8 times) { u32 temp_val=0; u8 t; 25 for(t=0;ttimes;t++) { temp_val+=Get_Adc(ch); } return temp_val/times; } void WFI_SET(void) { __ASM volatile(wfi); } //关闭所有中断 void INTX_DISABLE(void) { __ASM volatile(cpsid i); } //开启所有中断 void INTX_ENABLE(void) { __ASM volatile(

  原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者


相关标签:
热门产品