ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

【开源】基于STM32单片机控制的太阳能热水器

【开源】基于STM32单片机控制的太阳能热水器 项目编号STM32-T012项目名称基于STM32单片机控制的太阳能热水器【摘要】本设计基于 STM32F103C8T6 单片机实现对太阳能热水器的智能控制系统集成了水位传感器、水温传感器、继电器控制模块、OLED 显示屏以及蜂鸣器等功能模块。通过传感器实时采集水箱内的水位和温度数据并在 OLED 上直观显示用户能够及时掌握热水器的运行状态。当水位或水温超过设定阈值时蜂鸣器将发出声响报警以提醒用户采取措施避免溢水或过热等安全隐患。系统的供电部分设计为双电源模式当市电接入时优先由 220VAC 转 DC 模块提供能量保证系统的稳定运行在市电断开情况下系统能够自动切换至 5V 锂电池供电从而实现不间断工作。同时太阳能板结合充电控制板可对锂电池进行充电有效利用清洁能源提高系统的节能性与可持续性。继电器的加入使得系统能够根据控制逻辑自动完成上水与加热操作从而减少人工干预提高智能化程度。本设计在硬件选型上注重低功耗与高可靠性在功能实现上兼顾实用性与安全性整体方案不仅能够满足家庭对热水器的日常使用需求还体现了绿色节能与智能控制相结合的设计理念具有较高的应用价值与推广意义。【所用硬件】1、STM32F103C8T6最小系统板​STM32F103C8T6 最小系统板是基于意法半导体STCortex-M3 内核的微控制器开发板核心芯片为 STM32F103C8T6主频 72MHz具有 64KB Flash 和 20KB SRAM满足中等复杂度的嵌入式应用需求。该板集成 USB、USART、SPI、I2C 等通信接口支持多种外设扩展。最小系统板包含必要的外围电路如 8MHz 晶振、复位电路、电源管理3.3V 稳压并提供 GPIO 引脚引出方便连接传感器、显示屏等模块。其低功耗、高性能特性使其广泛应用于智能硬件、工业控制等领域。在本设计中它作为主控单元负责数据采集、处理及外设控制确保电子秤系统的稳定运行。2、OLED显示模块OLED有机发光二极管显示屏模块是一种自发光显示器件无需背光具有高对比度、宽视角和快速响应的特点。本设计采用的OLED模块通常为0.96英寸或1.3英寸分辨率为128×64像素支持I2C或SPI通信协议可直接与STM32等微控制器连接。其工作电压为3.3V~5V功耗低适合便携式设备。3、蜂鸣器模块蜂鸣器模块是一种常见的声音报警装置广泛应用于电子设备中用于提示或报警功能。该模块通常由一个蜂鸣器和驱动电路组成能发出高频的蜂鸣声。按照驱动方式可分为有源蜂鸣器和无源蜂鸣器两种类型。有源蜂鸣器只需提供直流电压即可发声控制简单适用于固定频率提示场景无源蜂鸣器则需要外部提供特定频率的驱动信号才能工作适用于需要调节音调或生成特定声音模式的场合。模块通常采用 5V 或 3.3V 供电可通过三极管或专用驱动芯片控制启停响应速度快可靠性高常用于智能设备、安防系统、工业仪表等场景中。4、水温传感器DS18B20是一款数字温度传感器采用单总线通信方式只需一根数据线即可实现与单片机的连接使用方便且节省资源。该传感器测量范围为-55℃至125℃精度可达±0.5℃具有低功耗、响应快和抗干扰能力强等特点。DS18B20内部集成了温度寄存器和非易失性存储器能够存储报警阈值实现超限报警功能广泛应用于智能家居、工业控制和环境监测等场景。5、水位传感器水位传感器是一种用于检测和测量液体高度的装置常应用于水箱、池塘、地下水井等场景。它通过电极、电容或压力等原理将液位变化转换为电信号供单片机或控制系统处理从而实现水位监测与控制。该传感器具有结构简单、安装方便、灵敏度高的特点能够有效防止水位过高或过低引发的设备损坏和安全隐患广泛应用于智能家居、农业灌溉和工业自动化领域。6、继电器继电器模块是一种常用的电气控制器件能够通过单片机等低电压信号控制高电压或大电流设备的通断实现弱电与强电之间的隔离和转换。其内部由电磁线圈、触点和驱动电路组成输入端接收控制信号后电磁线圈动作带动触点切换从而控制负载工作。继电器模块具有驱动能力强、使用安全可靠、寿命长等优点广泛应用于家电控制、工业自动化、电源管理等领域是嵌入式系统中常见的执行器件。7、充电控制板MH-CD42锂电池充电模块是一款基于TP4056芯片的智能充电管理模块主要用于单节锂电池的充电控制。该模块采用恒流恒压充电模式具备过充、过放和过流保护功能能够有效延长电池寿命并提升使用安全性。模块自带充电状态指示灯红灯表示正在充电蓝灯表示充电完成使用直观方便。其输入电压通常为5V可通过USB或直流电源供电广泛应用于便携式设备、电源管理和嵌入式系统中。8、太阳能板太阳能板模块是一种将光能直接转化为电能的装置通常由多片光伏电池组成通过光生伏特效应输出直流电。其输出电压和电流与光照强度和板面积密切相关具有效率高、无噪声、绿色环保的特点。太阳能板模块结构坚固适应户外长期使用可为电池充电或直接为低功耗设备供电。在智能家居、独立供电系统和可再生能源应用中被广泛使用是实现清洁能源利用的重要器件。9、3.7V锂电池3.7V锂电池是一种以锂离子为主要能量载体的可充电电池具有能量密度高、重量轻、体积小和循环寿命长等优点。其标称电压为3.7V充满电时电压可达4.2V放电截止电压约为2.75V。该电池在充放电过程中稳定性好内阻低适合为便携式设备、嵌入式系统和小型电子产品提供电源。由于具备安全性和可靠性3.7V锂电池被广泛应用于手机、智能穿戴设备、移动电源和各种物联网装置中。10、220VAC转5VDC充电头220VAC转5VDC充电头是一种常见的电源适配器能够将家庭市电220V交流电通过变压、整流、滤波和稳压等电路转换为稳定的5V直流电输出。该装置体积小巧输出电压稳定转换效率高并具备过流、过压和短路保护功能使用安全可靠。它常用于手机、平板、单片机系统等低压设备供电或充电是电子产品中最常见的电源接口形式之一具有通用性强和应用范围广的特点。【系统框架图】【软件流程图】【核心代码展示】#include app_task.h #include main.h #include m5310a.h #include delay.h #include usart.h #include timer.h #include esp8266.h #include io.h #include led.h #include oled.h #include sim800l.h #include rtc.h #include Encoder.h #include beep.h #include mpu6050.h #include inv_mpu.h #include adc.h #include key.h #include dth11.h #include ds18b20.h #include PAJ7620.h #include max30102.h #include stm32f10x_adc.h #include HCSR04.h #include rfid.h /******************************* 作者阿华学长 V 联系AHuaXueZhang32 微信公众号阿华学长单片机设计 持续分享更多单片机资料关注我 ******************************/ u8 str[100]; OLED oled; USER user; TaskControlBlock TaskList[MAX_TASKS] {0}; uint8_t RegisteredTasks 0; // 已注册任务数 uint32_t SystemTick 0; // 系统时间基准 // 任务注册函数 int8_t Task_Register(uint8_t id, uint32_t interval, void (*task_func)(void *), void *param) { if (RegisteredTasks MAX_TASKS) return -1; TaskList[RegisteredTasks].TaskID id; TaskList[RegisteredTasks].PollingInterval interval; TaskList[RegisteredTasks].TimerCounter 0; TaskList[RegisteredTasks].RunFlag 0; TaskList[RegisteredTasks].EnableFlag 1; TaskList[RegisteredTasks].TaskHook task_func; TaskList[RegisteredTasks].TaskParam param; TaskList[RegisteredTasks].Delay 0; RegisteredTasks; return 0; } // 任务使能控制 void Task_Enable(uint8_t id, uint8_t enable) { for (int i 0; i RegisteredTasks; i) { if (TaskList[i].TaskID id) { TaskList[i].EnableFlag enable; break; } } } /** brief LED 闪烁任务 param pt */ void Led_Task(void *pt) { LED1 !LED1; } /** brief OLED 显示任务 param pt / void OLED_Task(void pt) { if (oled.page PAGE_1) { / 太阳能热水器 */ OLED_ShowChinese(16, 0, 5, 16, 1); OLED_ShowChinese(32, 0, 6, 16, 1); OLED_ShowChinese(48, 0, 7, 16, 1); OLED_ShowChinese(64, 0, 8, 16, 1); OLED_ShowChinese(80, 0, 9, 16, 1); OLED_ShowChinese(96, 0, 10, 16, 1); /** 水温 */ OLED_ShowChinese(0, 16, 11, 16, 1); OLED_ShowChinese(16, 16, 12, 16, 1); OLED_ShowChinese(32, 16, 13, 16, 1); sprintf(str, %2.1lfC, ds18b20.temp); OLED_ShowString(48, 16, str, 16, 1); /** 水位 */ OLED_ShowChinese(0, 32, 14, 16, 1); OLED_ShowChinese(16, 32, 15, 16, 1); OLED_ShowChinese(32, 32, 16, 16, 1); sprintf(str, %2d%%, user.water); OLED_ShowString(48, 32, str, 16, 1); } OLED_Refresh(); } /** brief 水位获取任务 param pt */ void Water_Task(void *pt) { user.water Get_Adc(ADC_Channel_7) * 100 / 4095; } /** brief 水温获取任务 param pt */ void DS18B20_Task(void *pt) { DS18B20_Get_Temp(); } /** brief 控制任务 param pt */ void Control_Task(void *pt) { if (ds18b20.temp user.temp_hight_value || user.water user.water_hight_value) { BEEP 0; } else { BEEP 1; } if (ds18b20.temp user.temp_low_value) { JDQ1 1; } else { JDQ1 0; } if (user.water user.water_low_value) { JDQ2 1; } else { JDQ2 0; } } void Task_Init(void) { Task_Register(1, 1000, Led_Task, NULL); Task_Register(2, 200, OLED_Task, NULL); Task_Register(3, 500, Water_Task, NULL); Task_Register(4, 1000, DS18B20_Task, NULL); Task_Register(4, 500, Control_Task, NULL); } void Task_Run(void) { for (int i 0; i RegisteredTasks; i) { if (TaskList[i].RunFlag TaskList[i].EnableFlag) { // 执行任务函数 if (TaskList[i].TaskHook ! NULL) { TaskList[i].TaskHook(TaskList[i].TaskParam); } // 清除运行标志 TaskList[i].RunFlag 0; } } } void TaskTime(void) { static u32 tick_time 0; tick_time; // 遍历任务列表更新计数器 for (int i 0; i lt; RegisteredTasks; i) { if (TaskList[i].EnableFlag) { TaskList[i].TimerCounter; // 达到时间间隔时设置运行标志 if (TaskList[i].TimerCounter amp;gt; TaskList[i].PollingInterval) { TaskList[i].RunFlag 1; TaskList[i].TimerCounter 0; } } } }【原理图】【硬件实物图】【实物演示】实物演示视频以下是本项目的实物演示视频展示了太阳能热水器系统的实际运行效果。如果视频无法播放请直接访问https://www.bilibili.com/video/BV1hwg7z3EXb/
返回列表