基于单片机的太阳能热水器控制系统设计

随着我国经济水平的不断提高,民众对生活质量的追求也在不断进步,对于现代家庭而言,热水器成为了必备的生活电器。目前市面上的电器主要是电热水器、燃气热水器以及太阳能热水器。就能源节约性能而言,太阳能热水器占据了绝对优势,这也将其功能单一且操作繁琐的劣势暴露出来。为解决这些现象,我们对基于单片机的太阳能热水器进行分析研究,在控制系统设计方面寻找更好的设计方案。
引言:太阳能热水器设计是以单片机AT89C52为核心控制器,通过该控制器将监测的水位、水温等信息进行运算处理,传送到单片机中。单片机的工作机制会生成两方面的工作指令。一是将检测到的基础信息在可视化框中显示出来,使使用者直观的了解到水温与存水量。二是将现有的水温水量等数据进行运算比较,根据运算的结果与标准值比对后下达工作指令,保证热水器的正常工作。

1 系统设计

1.1 系统的设计理念

针对单片机的太阳能热水器,我们采取自动控制系统,对水温、水位等数据进行监测,以确保其正常工作。
1) 水温显示
针对常规的太阳能热水器而言,一般会在点阵型液晶模块中显示水温,水温的标准范围一般在0 摄氏度到 99 摄氏度之间,而针对这种电子类产品,我们没有办法十分精确,所以允许存在几摄氏度的误差。
2) 水位显示
与水温显示相同的,热水器的存水量也是可以检测的。对目前市面上的太阳能热水器控制系统产品,本设计精度更高,水温、水位显示更详细。

1.2 硬件设计

太阳能热水器因利用节约型能源太阳能进行工作被认可,另外因其有无污染、使用方便、节约能源且经济成本低的优势,所以许多家庭选择太阳能热水器作为家庭使用的重要电器。本文中,单片机的太阳能热水器通过单片机AT89C52 为核心控制器将监测的水位、水温等信息进行运算处理,传送到单片机中。单片机的工作机制会生成两方面的工作指令。一是将检测到的基础信息在可视化框中显示出来,使使用者直观的了解到水温与存水量。二是将现有的水温水量等数据进行运算比较,根据运算的结果与标准值比对后下达工作指令,保证热水器的正常工作。

1.3 系统总体结构框架图的布局

太阳能热水器控制器主要由温度水位数据采集模块、单片机控系统和键盘显示电路及电机控制部分组成。我们选择性价比较高的单片机进行实验设计,制作软件核心控制系统。除作为主要控制系统的单片机外,我们还需选择性价比较高的传感系统,将水压产生的信号转化为电信号,最终转化为数据显示在点阵型液晶模块上。系统框图如图1 所示。

2 控制系统设计

基于单片机的太阳能热水器控制系统设计主要包括以下几部分:

2.1 温度监测电路设计布局

对于太阳能热水器而言,温度的管控是十分重要的。若想实现自动控制系统发布指令性内容对水温进行调节,必须确保水温的精准度以确保使用者的安全。温度监测部分的性能好坏直接影响系统的性能,基于单片机的太阳能热水器控制系统设计的温度检测部分,采用的是温度传感器DS18B20 ,通过温度检测电路对温度进行检测后,可以进一步对温度进行控制,利用电阻的大小来模拟相应 的温度,通过调节电阻的大小来模拟温度的高低,利用ADC0831对电阻值的大小进行转换,转换后降数据传递至单片机,调节滑动电阻器改变电阻的大小,利用电阻的大小来模拟温度的高低。

2.2 水位控制电路设计

在水位控制电路中,利用电阻的大小来模拟水位的高低,对于电阻值的A/D转换,选用的是 ADC0803 ,和温度控制电路一样,也是通过调节滑动电阻器来改变电阻的大小,利用电阻值的大小来模拟水位的不同档位。

2.3 基于单片机控制系统的太阳能热水器

单片机作为节约型的太阳能热水器的核心控件,在选 择时需要考虑各方面因素。目前市面上的单片机中种类众多,但时能够兼顾低成本、高体验且实用效果较强的高性价比机器确实不容易。部
分单片机虽然上手友好且实用较强但其经济成本颇高,有些价格优惠但使用体验较差,如 8301 单片机的电路复杂,便不符合便捷体验的要求。鉴于此,基于单片机控制系统的太阳能热水器以性价比较高的单片机AT89C52为核心控制器,进行广泛应用。

3 软件部分设计程序流程图设计

软件程序设计主要有 A/D 转换程序设计以及LCD1602 液晶显示的程序程序设计。其中,LCD1602 的程序设计包括写命令程序、写数据程序、初始化程序以及显示程序,现主要介绍DS18B20 的初始化程序、1602 的初始化程序和显示程序。系统主程序流程图如图2 所示。

4 基于单片机的太阳能热水器控制系统设计的分析

基于单片机的太阳能热水器是一款软硬件相适配的电子系统,他启用较为低配版的核心处理器,对热水器的水温进行实时监控,对不同水位挡位进行跟踪检测,点阵型液晶模块面板同步显示数据。针对上文中的分析,我们得出:
首先,基于单片机的太阳能热水器控制系统设计采取低配置但高性 价比的核心单片机进行工作,其运行速度高、却小巧不占用空间,但在市场终端的表现良好,在众多太阳能热水器中,既能实现水温的可控可视化,又能对存水档位进行手动控制,满足绝大多数消费者的需求。其次,单片机是以较高的性价比为优势,只要环境不是过于不好的区域,均可以使用这款热水器。再次,太阳能热水器一般都具有操作复杂、功能单一的不足,但是该款基于单片机的太阳能热水器简化了电路设计,在保障安全系数的同时,提升了软件的便利度,便于操作,体验友好。最后,就是该太阳能热水器还增添了许多模块,不仅能够看到水温水量,还能进行自动化控制,可以使太阳能热水器的智能化大大提高。

5 总结

基于单片机的太阳能热水器控制系统设计是利用单片机为核心,控制水温、水位以及可视化模块,具有结构合理、操作方便、性能可靠、运行稳定等多方面的优点。这与说明我国的技术水平正在不断攀升,站在资源节约的角度上,该热水器是我国绿色环保型产业开端,以后会有更多的能源型系统为环保事业做出贡献。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/43222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java | Leetcode Java题解之第223题矩形面积

题目: 题解: class Solution {public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth Math.min(ax2, bx2) -…

开源高效在线电子表格解决方案:Luckysheet

Luckysheet:体验幸运,掌握高效数据表格编辑!- 精选真开源,释放新价值。 概览 Luckysheet 是一个功能强大、配置简单且完全开源的在线电子表格工具,它类似于我们熟知的 Excel,但更加灵活和易于集成。它是一…

windows环境下部署多个端口Tomcat服务和开机自启动设置保姆级教程

前言 本文主要介绍了 windows环境下,配置多个Tomcat设置不同端口启动服务。其实在思路上Linux上也是适用的,只是 Linux 上没有可视化客户端,会麻烦些,但总体的思路上是一样的。 注:文章中涉及些文字和图片是搬运了其他…

OpenGL3.3_C++_Windows(28)

Demo演示 demo 视差贴图 视差/高度/位移贴图(黑--白):和法线贴图一样视差贴图能够极大提升表面细节,使之具有深度感。第一种思路(置换顶点):对于一个quad ,分成约1000个顶点&#x…

C语言 | Leetcode C语言题解之第223题矩形面积

题目: 题解: int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth fmin(ax2, bx2) - fmax(ax1, bx1), overlapHei…

Visual Studio Code 教程 VsCode安装Live Server以服务形式打开html

搜索Live Server 插件,然后安装 选一个html文件,右键点击 Open with live server,然后就自动弹出来了

使用paddleOCR训练自己的数据集到ONNX推理

一、环境安装 1、安装paddlepaddle; https://www.paddlepaddle.org.cn/ 这里安装2.6.1的话使用onnx会出现swish算子报错的问题 python -m pip install paddlepaddle-gpu2.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple验证是否成功安装 python import paddl…

Mysql Workbench的使用

本篇内容:对Mysql Workbench的常规使用学习 一、知识储备 1. Workbench 可以做什么 是mysql数据库可视化管理的一款免费工具,除了平常的通过sql语句,进行创建数据库表、增删改查外,还可以利用其进行建模创建数据库表。通过创建…

人工智能的新时代:从模型到应用的转变

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Linux】记录一起网站劫持事件

故事很短,处理也简单。权当记录一下,各位安全大大们手下留情。 最近一位客户遇到官网被劫持的情况,想我们帮忙解决一下(本来不关我们的事,毕竟情面在这…还是无偿地协助一下),经过三四轮“谦让…

Conda修改默认环境创建路径

conda安装好后默认将新建环境安装在C盘 修改.condarc 配置文件 注 : Windows操作系统创建的 .condarc 文件通常在 C:\Users\User_name 这个目录下; 注 : Linux操作系统创建的 .condarc 文件通常在/home/User_name 这个目录下。 在.condarc文件中添加以下内容 有…

SpringBoot整合MongoDB文档相关操作

文章目录 SpringBoot整合MongoDB文档操作添加文档查询文档更新文档删除文档 SpringBoot整合MongoDB 创建项目&#xff0c;添加依赖&#xff0c;配置连接 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-dat…

Python 数据容器的对比

五类数据容器 列表&#xff0c;元组&#xff0c;字符串&#xff0c;集合&#xff0c;字典 是否能下标索引 支持&#xff1a;列表&#xff0c;元组&#xff0c;字符串 不支持&#xff1a;集合&#xff0c;字典 是否能放重复元素 是&#xff1a;列表&#xff0c;元组&#…

遥感分类产品精度验证之TIF验证TIF

KKB_2020.tif KKB_2020_JRC.tif kkb.geojson 所用到的包&#xff1a;&#xff08;我嫌geopandas安装太麻烦colab做的。。 import rasterio import geopandas as gpd import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.metrics import c…

【零基础】学JS之APIS(基于黑马)

喝下这碗鸡汤 披盔戴甲,一路勇往直前! 1. 什么是事件 事件是在编程时系统内发生的动作或者发生的事情 比如用户在网页上单击一个按钮 2. 什么是事件监听? 就是让程序检测是否有事件产生&#xff0c;一旦有事件触发&#xff0c;就立即调用一个函数做出响应&#xff0c;也称为 注…

如何用java语言开发一套数字化产科系统 数字化产科管理平台源码

如何用java语言开发一套数字化产科系统 数字化产科管理平台源码 要使用Java语言来开发一个数字化产科系统&#xff0c;你需要遵循一系列步骤&#xff0c;从环境搭建到系统设计与开发&#xff0c;再到测试与部署。 以下是一个大致的开发流程概览&#xff1a; 1. 环境搭建 Jav…

从Docker 网络看IaC

【引子】近来&#xff0c;老码农又一次有机会实施IaC 了&#xff0c; 但是环境有了新的变化&#xff0c;涵盖了云环境、虚拟机、K8S 以及Docker&#xff0c;而网络自动化则是IaC中的重要组成&#xff0c;温故知新&#xff0c;面向Docker 的网络是怎样的呢&#xff1f; Docker …

C++相关概念和易错语法(16)(list)

1.list易错点 &#xff08;1&#xff09;慎用list的sort&#xff0c;list的排序比vector慢得多&#xff0c;尽管两者时间复杂度一样&#xff0c;甚至不如先把list转为vector&#xff0c;用vector排完序后再转为list &#xff08;2&#xff09;splice是剪切链表&#xff0c;将…

指数增长远大于nlgn

在学习算法导论的时候&#xff0c;遇到了这么一行字把我难住了。我不理解为什么叶节点代价总和就为Ω(nlgn)了&#xff0c;后来经过学习之后了解了&#xff0c;因为n的指数严格大于1&#xff0c;只要指数函数的指数大于1就是指数增长&#xff0c;那么就远大于nlgn。

C++ | Leetcode C++题解之第22题完全二叉树的节点个数

题目&#xff1a; 题解&#xff1a; class Solution { public:int countNodes(TreeNode* root) {if (root nullptr) {return 0;}int level 0;TreeNode* node root;while (node->left ! nullptr) {level;node node->left;}int low 1 << level, high (1 <&…