内页banner
当前位置: 首页 > 新闻资讯

基于STM32设计的太阳能热水器

2024-02-13 01:29:35 新闻资讯

  本项目使用 STM32F103C8T6 微控制器作为核心处理器,结合多个传感器和执行器,实现了太阳能热水器的自动控制。通过对光照、温度、水位等各种参数的监测和分析,对水泵、电磁阀等设备做自动控制,以此来实现太阳能热水器的高效、安全、可靠运行。

  温度传感器模块:用于检测太阳能集热器表面和水箱内的温度,并根据气温变化调整水泵、电磁阀等设备的运行状态。

  液位传感器模块:用于检测水箱内的液位,并根据液位高低控制水泵和电磁阀的启停。

  其中,光敏传感器模块、温度传感器模块和液位传感器模块通过 ADC 接口与 STM32F103C8T6 微控制器进行连接;水泵模块和电磁阀模块则通过 GPIO 口控制。

  光敏传感器模块:将光敏传感器输出口与 ADC1 通道10 连接,并用一个电位器调整 ADC 的参考电压,使其范围在 0-3.3V 之间。

  液位传感器模块:将液位传感器输出口与 ADC1 通道11 连接,并用一个电位器调整 ADC 的参考电压。

  水泵模块:将水泵正极接到 GPIOB 的 PB1 引脚,将负极接到电源的负极。

  电磁阀模块:将电磁阀正极接到 GPIOB 的 PB0 引脚,将负极接到电源的负极。

  整个项目采用 FreeRTOS 系统来进行开发,实现数数的监测和控制,开发以下几个任务:

  光敏传感器任务:定时读取光敏传感器输出口的电压值,并进行数据处理,得到当前的光照强度。

  温度传感器任务:定时向 DS18B20 温度传感器发送温度采样请求,接收并解析响应数据,得到当前的太阳能集热器表面温度和水箱内温度。

  液位传感器任务:定时读取液位传感器输出口的电压值,并进行数据处理,得到当前的水箱水位高度。

  控制任务:根据光照强度、温度和水位高度等参数,决定是不是需要启动水泵或电磁阀等设备。

  在函数中,声明一个变量 adc_value 用于存储读取到的 ADC 值。使用 if 条件语句检查 ADC 是否成功启动,并且使用 HAL_ADC_PollForConversion() 函数判断当前转换是否完成,如果转换完成,就获取 ADC 值,并且通过简单的计算公式将 ADC 值转换为光照强度值,最后将结果存储在 light_intensity 变量中。

  在函数中,声明变量 adc_value 和 voltage,分别用于存储读取到的 ADC 值和计算得到的电压值。使用 HAL_GPIO_WritePin() 函数初始化液位传感器 GPIO 口,将启用传感器的引脚设置为高电平。使用 if 条件语句检查 ADC 是否成功启动,并且使用 HAL_ADC_PollForConversion() 函数判断当前转换是否完成,如果转换完成,就获取 ADC 值,并且通过简单的计算公式将 ADC 值转换为电压值,并将结果存储在 voltage 变量中。

  由于需要用电压值计算液位高度,使用 if 条件语句检查电压是否小于低液位警戒电压 0.5V 或者大于高液位警戒电压 2.5V,如果是则分别将液位高度设置为 0% 或 100%,否则使用简单的线性关系计算液位高度。

  (1)定义参数和变量,包括设定温度值、设定液位高度值、温度 PID 控制器的参数、液位高度 PID 控制器的参数等。使用 while 循环处理控制逻辑,循环开始时,计算温度 PID 控制器输出。

  (2)计算当前误差,并将误差累积到积分项中。计算误差变化率,并使用 PID 参数计算出输出值,将结果存储在 temperature_output 中,并将当前误差存储在 last_temperature_error 中以便于下一次计算,计算液位高度 PID 控制器输出。

  (3)根据控制器输出值通过 PWM 控制加热器和水泵电机的运作时的状态。如果输出值大于 0,则启用电机或加热器并设置对应的 PWM 占空比,否则关闭电机或加热器并将 PWM 占空比设为 0。

  1、为何引入链表 在程序中经常面临一个问题,我们应该保存少数的对象,但是对象数目是不确定的,或是说随时增加或减少的。这时候最简单的方法是创建一个足够大的数组,用来存储这些对象。我最近开发一个项目就遇到类似的问题,下面我把问题简化一下。 需求:通过PC下发一些矩形的坐标和宽高信息,每个区域有个ID编号,并在这些矩形内填充一定的数据。 通常情况下,最简单易懂的做法是,限制最多5个区域,每个区域存储1K数据。因此设置了这样的一个结构体(类似于面向对象语言里说的成员属性)。 typedef struct Area_Inf { uint8_t ID; uint8_t X; uint8_t Y; uint8_t Wi

  中的应用 /

  配置流程: 1:系统时钟初始化,包括系统时钟和要开放的IO口和串口的时钟配置,要打开串口的时钟!!! RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOARCC_APB2Periph_USART1,ENABLE);。 2:IO口初始化,包括引脚,速率,输入输出模式等。 3:配置USART的波特率,数据位等。 4:串口的初始化包括两部分。一部分是串口使用的IO口初始化调用GPIO_Init(),另一部分是串口功能的初始化调用USART_Init(),同样注意结构体数据类型的定义。 注意: 1:USART的IO口也需要配置 配置流程如下: //USART1 IO初始化

  一、简介 本文介绍STM32系列怎么样去使用timer1的第TIM1_CH2N通道(PB14)产生PWM。 二、实验平台 库版本:STM32F10x_StdPeriph_Lib_V3.5.0 编译软件:MDK4.53 硬件平台:STM32开发板(主芯片stm32f103c8t6) 仿真器:JLINK 三、版权声明 原文地址:四、实验前提 1、在进行本文步骤前,请先阅读以下博文: 1)《STM32之timer3产生PWM》:

  有了STM32,使用串口简直就是玩游戏的感觉。这里鄙人就不谈STM32串口的happy了,直接上代码,读者从代码中体会乐趣。发送接受均采用查询方式,串口调试工具使用超级终端或者这货--SecureCRT 5.5(传说比超级终端还超级),在中端里面输入什么,同步接受与发送,感觉就像是在文本框里面打字。 还是甩一张工程结构图正面: 代码鄙人偷懒,所有代码在main.c里面一锅煮:

  在GPS部分有用到DMA,接下来看一下它的使用。 一、DMA简介 直接存储器存取(DMA) 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据能够最终靠DMA快速地移动,这就节省了CPU的资源来做其他操作。 两个DMA控制器有12个通道(DMA1有7个通道, DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。 二、DMA主要特性 ● 12个独立的可配置的通道(请求): DMA1有7个通道, DMA2有5个通道 ● 每个通道都直接连接专用的硬件DMA请求,每个通道都同样支持软件触发。这些功能通过软件来配置。 ● 在同一

  开发 -- Git的详细使用 /

  程序莫名复位,经检查是如下原因引发,访问了未知的空间! 这个1不应该加,改正后就没有复位了,所以在编程和测试中,一定要注意边界条件。

  我们都知道硬件看门狗的目的:是用来监测系统,防止系统死机,并在死机的情况下使系统复位重启。 在RTOS操作系统中,如果任务(线程)较多,出现高优先级任务长时间占用CPU资源,低优先级任务长时间得不到执行这种想象,那么我们的系统就是具有Bug的系统。 如上描述,假如我们的线程没有死机,只是长时间得不到执行。在这种不正常的情况下,我们又不希望系统复位,只希望执行特定代码,那我们该如何来避免这种问题呢? Ⅰ 关于看门狗 硬件看门狗:利用一个定时器计数电路,其定时输出连接到电路的复位端,程序在一段时间范围内对定时“喂狗”。 因此程序正常工作时,定时器总不能溢出,也就不能产生复位信号。如果程序发生故障,不在定时周期内

  、FreeRTOS实现硬件看门狗+软件看门狗监测多任务的方法 /

  在项目开发过程中,经常会面临“用内部晶振还是外部晶振”的问题。如何明智的选择?关键还是看应用! 如果产品附加值比较高,并且产品对温度,电磁环境等可靠性要求严格的时候,需要仔细考虑使用外部晶振。 毕竟,内部晶振受环境影响比较大(内部晶振的叫法不是很严谨,准确的说内部是RC振荡器,鉴于阻容器件尤其电容大小受温度影响较大,因此温度、电压等对其影响较大,如下图技术手册中所指出的)。 话说回来,在MCU上如果不使用外部晶振,那么引脚OSC_IN和OSC_OUT如何接才比较好呢? ▲技术手册 我们以STM32为例说明,若使用内部RC振荡器而不使用外部晶振,请按照以下方法处理: (1)对于100脚或144脚的产品,OSC_IN应接地,

  使用内部晶振还是外部晶振 /

  MP1在光伏逆变上的应用

  不完全手册_寄存器版本_V3.3

  -Mini的多路PWM

  H7B3I-DK的步进电机闭环控制器

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  MPS电机研究院 让电机更听话的秘密! 第一站:电机应用知识大考!跟帖赢好礼~

  电源小课堂 从12V电池及供电网络优化的角度分析电动汽车E/E架构的趋势

  【下载】LAT1362 利用STM32 TIMER触发ADC实现分组转换

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【下载】LAT1347 基于STM32CubeIDE移植ClassB 4.0

  【下载】LAT1340 STM32H5读取温度传感器校准值时进HardFault的原因分析

  【生态】使用STM32CubeMX在STM32U5上配置LPBAM应用程序

  【MPU】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【新品】降本增效这事儿,就看STM32C0,低至0.24美元” ,开机即可物联世界

  【GUI开发】TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!

  【边缘AI】突破边缘AI应用的次元壁:首届意法半导体边缘人工智能峰会举行

  【生态系统】STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【无线携手创新微MinewSemi共创低功耗模块,引领中国智能连接未来

  新款STM32U5片上集成矢量图形加速器及大容量SRAM存储器2024年2月5日,中国 - 意法半导体推出了集成新的专用图形加速器的STM32*微控制器(M ...

  水果种植业是我国农业发展的重要组成部分,果树病虫害防治作业也慢慢变得被重视。当下我国施药水平总体偏低,主要体现在自动化技术落后、作业 ...

  一、运算器运算器以完成二进制的算术 逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。 ...

  1、引言弹簧是机械行业的通用零部件,用途十分广泛。工业的发展,刺激了弹簧的需求,同时也对弹簧加工设施提出了更高的要求。以往的加工设 ...

  单片机的基本结构包括中央处理器(CPU) 、存储器、定时 计数器、输入输出接口、中断控制管理系统和时钟电路六部分。一、基本组成中央处理器( ...

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程

请留下您的联系方式以便于我们即可与您取得联系

电磁阀线圈厂家

联系我们