news 2026/7/3 15:23:04

大棚环境控制:温湿度、光照、CO₂ 的全自动调节

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大棚环境控制:温湿度、光照、CO₂ 的全自动调节

大棚环境控制:温湿度、光照、CO₂ 的全自动调节

灌溉是最基础的,大棚环境控制才是真正的多变量系统——温湿度、光照、CO₂ 浓度相互耦合,开窗通风降了温也降了湿,补光灯升温还费电。这篇讲四套执行器的联动策略和 PID 控制算法。


大棚环控的四根操纵杆

执行器控制目标功率成本
顶通风扇降温、排湿100-200W80 元/台
遮阳网电机降光照、降温50W120 元/套
LED 补光灯补光(阴雨天)50-200W150 元/盏
CO₂ 气肥阀补 CO₂10W100 元/套

冲突与耦合——为什么不能各管各的

举个典型场景:中午 12 点,大棚温度飙到 38℃,天窗自动全开,遮阳网拉了一半——温度降下来了,但 CO₂ 浓度从 500ppm 跌到 300ppm(外面大气也就 420,大棚靠植物呼吸维持高 CO₂)。光合作用效率降了,蔬菜不长个。

这就是多变量耦合:降温← →CO₂ 流失← →湿度下降。不能分别设三个独立的 if-else。


策略一:优先级 + 状态机

给四种执行器排优先级,避免冲突:

触发条件 → 动作 优先级 ───────────────────────────────────────────── temp > 40℃ → 全部天窗 + 遮阳网全开 P0(紧急) temp > 35℃ → 天窗开 70%, 遮阳 50% P1 temp > 30℃ → 天窗开 30% P2 humidity > 85% → 天窗开 50%(排湿) P1 humidity < 40% → 天窗全关 + 微喷加湿 P2 light < 20000Lx(阴天) → 补光灯开 P3 co2 < 400ppm → CO₂ 气肥开 P3 降雨 → 天窗全关 P0 大风(>6级) → 天窗全关 P0

实现——状态机:

publicenumGreenhouseState{NORMAL,// 正常COOLING,// 降温中DEHUMIDIFYING,// 排湿中HEATING,// 加热中CO2_ENRICHMENT,// 补CO₂EMERGENCY// 紧急状态(极端天气)}publicclassGreenhouseController{privateGreenhouseStatecurrentState=GreenhouseState.NORMAL;publicvoidtick(SensorDatadata,WeatherInfoweather){// P0 紧急状态优先if(data.getAirTemp()>40||weather.isRaining()||weather.windLevel()>6){emergencyProtocol(data,weather);return;}// P1 高温/高湿if(data.getAirTemp()>35){transitionTo(GreenhouseState.COOLING);setWindow(70);setShade(50);setCo2(false);// 开了天窗,CO₂ 流失严重,别开气肥}elseif(data.getAirTemp()>30){setWindow(30);}if(data.getAirHumidity()>85){setWindow(Math.max(currentWindow(),50));// 取天窗开度最大值}// P3 补光(天窗不能全关,否则不透气)if(data.getLight()<20000&&data.getAirTemp()<35){setLight(true);}// P3 CO₂ 气肥(天窗开度<30%时才有效)if(data.getCo2()<400&&getWindowOpenPercent()<30){setCo2(true);}}}

策略二:PID 控制——精确到度

状态机适用于「到阈值就切」的大颗粒控制。如果想让温度稳定在 26℃ ± 2℃,上 PID:

publicclassPIDController{privatedoublekp,ki,kd;privatedoublesetpoint;privatedoubleintegral=0;privatedoubleprevError=0;/** * @param pv 当前值 (Process Value) * @return 输出 (0-100),表示天窗开度 */publicdoublecompute(doublepv){doubleerror=setpoint-pv;// 积分项限制(防止积分饱和)integral=Math.max(-100,Math.min(100,integral+error));// 微分项doublederivative=error-prevError;prevError=error;doubleoutput=kp*error+ki*integral+kd*derivative;// 输出限幅 0-100returnMath.max(0,Math.min(100,output));}}// 使用PIDControllertempPID=newPIDController(3.0,0.05,1.0,26.0);// 目标 26℃doublewindowOpening=tempPID.compute(sensorData.getAirTemp());setWindow((int)windowOpening);

PID 参数调试口诀:

  • kp 太大:来回震荡,降不下来就升回去
  • ki 太大:调节慢,过冲大
  • kd 太大:对噪声敏感,输出抖动

大棚场景的参考值:Kp=3.0, Ki=0.05, Kd=1.0(以天窗开度 0-100 为输出去调试)。


策略三:双 PID 级联——温度控制专用

温度-湿度耦合的终极解法是串级 PID:

┌──────────────┐ 温度设定(26℃) ──→ [温度PID] ──→ [天窗PID] ──→ 天窗伺服电机 ↑ ↑ 当前温度 天窗位置反馈

外层温度 PID 输出的是「期待的天窗开度」,内层天窗 PID 把天窗精准开到那个角度。这种结构抗干扰能力远超单 PID。

// 外环:温度 PIDdoubledesiredWindowPos=outerPID.compute(currentTemp);// 内环:天窗位置 PIDdoublemotorPwm=innerPID.compute(desiredWindowPos-currentWindowPos);setWindowMotorPwm(motorPwm);

硬接线:把四个执行器连上 ESP32

// 引脚分配#defineFAN_PIN12// 通风扇(PWM 调速)#defineSHADE_UP_PIN13// 遮阳网 升(继电器)#defineSHADE_DN_PIN14// 遮阳网 降(继电器)#defineLIGHT_PIN15// 补光灯(PWM 调光)#defineCO2_VALVE_PIN26// CO₂ 电磁阀// 遮阳网电机控制(正反转继电器)voidsetShade(intpercent){intcurrentPos=readShadePosition();// 用霍尔传感器或编码器读当前位置inttargetPos=map(percent,0,100,0,1000);// 0-1000 脉冲if(targetPos>currentPos){digitalWrite(SHADE_UP_PIN,LOW);digitalWrite(SHADE_DN_PIN,HIGH);// 下降 = 遮阳}else{digitalWrite(SHADE_DN_PIN,LOW);digitalWrite(SHADE_UP_PIN,HIGH);// 上升 = 收网}}// 通风扇 PWM 调速voidsetFan(intspeed){// speed: 0-100ledcWrite(0,map(speed,0,100,0,255));}

效果数据

部署前后对比(河北某番茄棚,面积 400㎡):

指标人工管理自动控制
日均温度波动22-38℃ (16℃振幅)24-30℃ (6℃振幅)
日均湿度波动40-95%55-80%
CO₂ 日均浓度350ppm550ppm
电费/月180 元220 元(补光灯多了)
产量/季约 1500kg约 1950kg (+30%)
人工巡检3次/天,30分钟0次(手机推送)

多出的 40 元电费换来 450kg 增产,ROI 超过 10:1。


下一篇:《畜牧养殖 AI:用摄像头数猪、测重、识别生病》——从大棚到猪舍,摄像头能干什么?

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 16:12:01

光电经纬仪测量中的坐标系体系及其应用

引言 光电经纬仪作为一种高精度光学测量设备,在靶场测试、卫星跟踪、导弹试验等领域发挥着不可替代的作用。其核心任务是将设备观测到的目标影像信息转化为具有明确物理意义的三维空间坐标。这一转化过程涉及多个坐标系的定义、转换与综合应用,构成了一个完整而严密的数学框…

作者头像 李华
网站建设 2026/7/3 16:10:44

074、GhostConv 中 Cheap Operation 比例消融:1:1/2:1/3:1 的参数量-精度权衡

074、GhostConv 中 Cheap Operation 比例消融:1:1/2:1/3:1 的参数量-精度权衡 一个让我熬夜到凌晨三点的bug 去年秋天接了个边缘端部署项目,客户要求模型参数量控制在1.5M以内,mAP还不能低于老模型的68%。我第一反应就是上GhostConv——这玩意儿在MobileNetV3时代就证明了自…

作者头像 李华
网站建设 2026/7/3 16:13:42

ComfyUI中文工作流实战指南:从零到精通的AI绘画创作深度解析

ComfyUI中文工作流实战指南&#xff1a;从零到精通的AI绘画创作深度解析 【免费下载链接】ComfyUI-Workflows-ZHO 我的 ComfyUI 工作流合集 | My ComfyUI workflows collection 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-Workflows-ZHO 你是否曾经面对…

作者头像 李华
网站建设 2026/7/3 16:12:55

面试官:为什么高性能场景选用 PostgresSQL 而不是 MySQL?

一、 数据库简介 TLDR1.1 MySQLMySQL声称自己是最流行的开源数据库&#xff0c;它属于最流行的RDBMS (Relational Database Management System&#xff0c;关系数据库管理系统)应用软件之一。LAMP中的M指的就是MySQL。构建在LAMP上的应用都会使用MySQL。MySQL最初是由MySQL AB开…

作者头像 李华
网站建设 2026/7/3 16:13:08

新版通达信多空主力拉升1主图2副1选股指标套装工具

新版通达信多空主力拉升1主图主力拉升主图指标源代码 SWL:(EMA(C,10)*7EMA(C,20)*3)/10; SWS:DMA(EMA(C,20),MAX(1,100*SUM(VOL,5)/(3*CAPITAL))),COLORWHITE,DOTLINE; MA5:MA(C,5),COLORWHITE,DOTLINE; DRAWBAND(SWL,RGB(255,50,50),SWS,RGB(64,204,208)); DRAWKLINE(H,O,L,C)…

作者头像 李华
网站建设 2026/7/3 16:56:38

keycloak~关于iframe方式对接keyclock的注意事项

keycloak作为统一的认证中心&#xff0c;提供了单点登录的能力&#xff0c;一般可以通过超链的方式打开keycloak登录页&#xff0c;这对于不同域名来说&#xff0c;是没有任何问题的&#xff1b;第二种对接方式是通过iframe方式&#xff0c;当你的网站与keycloak不同域名时&…

作者头像 李华