数码之家

 找回密码
 立即注册
搜索
查看: 3296|回复: 158

[Arduino] 用18B20配合热力学方程测算鱼缸参数,精准选择加热棒应对白点病(原创)

    [复制链接]
发表于 2023-8-21 04:58:36 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一切的孽缘,从邻居扔了一只玻璃鱼缸,又被我捡回家开始。

捡回来挺大个,清理消毒擦干净,2812光污染灯条扯上,滤水水泵搞起来:

eff1.gif


【水缸测温】

起初菜场买了几条小鱼,发现镇不住缸,索性花鸟鱼市场跑一趟。鱼终于是凑齐了,可问题随之而来:
回家没几天,鱼身鱼尾上开始出现小白点,并且有增多趋势。

img1.png

一查不要紧,就是传说的白点病。本质是一种鱼的皮下寄生虫,诱因是水温低,特点是会传染。
按照过来人的说法,能加热到 >30℃ 这个病症就能自行消退,反过来任其发展就会整缸吃席。

当晚没有合适的加热装置,只能强行换入热水,短暂提升到30℃+,计划天明后再去购入加热棒。

看着稍纵即逝的水温,觉着可以用 18B20 测个曲线啥的,说干就干:

img2.png

由于事出紧急,水温时刻都在下降,准备太久可能就测不到手动换热水的状态了。
索性拿 Arduino 和笔记本直接搞,读取 18B20 后直接丢给笔记本串口存储,连夜工作起来。

第二天拿到数据,画个曲线大致这样:

img3.png


【热力学推导】

养鱼小白对加热器没啥经验,但知道加热失控会进入【煮鱼】模式,一缸鱼分分钟变火锅涮肉。

为避免这种悲剧,打算先用数学方式解决一下,万一真搞坏了也不留遗憾。

考虑到水缸有 “气”、“泵” 以及 “鱼” 的循环工作,可以认为缸内水温大致是均匀的。
因而水缸和周围环境大致符合经典热方程,以拉普拉斯算符表示为:

eq1.gif

式中水温 T 随时间 t 的变化率,正比于 T 在空间中梯度的散度,即 ▽^2 T.
鱼缸置于室内,可认为四面环境温度 Tamb 近似一致,拉普拉斯算符可以退化为:

eq2.gif

至此热方程退化为一阶线性常微分方程:

eq3.gif

式中 T 为水温,Tamb 为室温,k 为比例常数。按照分离变量法搞一下:

eq4.gif

获得了经典的 exp 暂态解,一般将 1/k 写作时间常数τ,上述式子整理为:

eq5.gif

这与电容充放电暂态有着一样的数学表达。

Tamb+A 就是刚加上热水时刻(t=0)的水温,类似于电容的起始电压;
随着时间推移,水温高于环境而不停散热,类似于电容被电阻不停放电;
最终很长时间后(t=+∞)水温降至环境 Tamb,类似于电容放电完成。


【热力学回归】

理论上上述 18B20 测得的温度衰减过程,应该符合热方程的解,因而考虑进行回归运算。

然而 Excel 这个智障只给简单的线性回归、指数回归,趋势线(图中黑色)不堪入目:

img4.png

走到这里只能靠自己,那就对方程的解改造一下,传说中的曲线改直大法:

eq6.gif

在 Excel 当中手动微调 Tamb,使得 ln(T-Tamb) 与 t 的函数关系成近似直线,就相当于估算出了 Tamb 数值;
同时利用 Excel 的直线回归,就可以获得 τ、A 这些参数,整个回归运算就稳妥了。

为此在 Excel 当中设定一个可调的 Tamb,利用 Excel 自动运算,获取原始数据 T 的 ln(T-Tamb) 曲线。
当 Tamb 过低或过高时,ln 曲线都会偏离直线的样子,表现为再次回归 R^2 偏离 +1.0:

Tamb 偏低的样子:
img5a.png

Tamb 偏高的样子:
img5b.png

Tamb 正确回归的样子:
img5c.png

可以看到 Tamb 正确回归后,ln 曲线与趋势直线的符合度 R^2= 0.999,这是非常棒的线性关系。
利用 EXCEL 给出的回归方程 y= (-1.34e-4)x + 1.64,以及手调的 Tamb 就可以算出完整的鱼缸温度方程:

eq7.gif

式中 T 为鱼缸水温(℃),t 为热水注入后的时长(s)。可以看到时间常数 τ≈5hr,对应鱼缸热了5小时的量级。
把原始18B20的温度点(红)与上述温度方程(蓝)画在一起,这俩曲线就很符合了,证实分析与回归有效果:

img6.png


【功率参数推导】

至此获得了鱼缸的温度方程,配合鱼缸容量、水的比热,可以很方便的推导出鱼缸的散热功率:

eq8.gif

式中 C 为水的比热容(4.2kJ/kg℃),M 为水的质量(50L鱼缸对应50kg),进而推导出鱼缸与环境的等效导热系数:

eq9.gif

这个数值代表着鱼缸比室温每高 1℃,就会产生约 11.26W 的散热功率;
反过来代表着每使用 11.26W 的加热器,就可以把鱼缸水温抬高 1℃.

考虑到四季室温在 20-30℃ 区间变化,为使鱼缸都能有 30℃+ 的水温,最差情况需要抬升约 10℃,对应不小于 100W 加热器。

更进一步查询养鱼加热经验,一般要求每升水使用 1.5-2.0W 加热功率,即 50L 水缸需要 75-100W 加热器。
这与热力学计算结果相吻合,侧面证实了方程没跑偏、18B20 测试没跑偏。


【入手加热棒】

算到这里天还没黑,赶紧又跑去花鸟鱼市场入手一根 100W 加热棒,安装走起来。

img10.png

加热棒可调温,果断拧到 32℃ 附近启动自行恒温。为求稳妥,再次挂上 18B20 企图测温,然而开始蛋疼了:

使用 220V 的加热棒在水中产生了感应电压,这个电压与笔记本 220V 供电叠加为共模干扰,
导致 18B20 误码率、USB串口误码率明显上升,测量结果时好时坏。

虽然断开笔记本供电(即使用电池浮地测量)可以解决该共模干扰,但让笔记本电池续航十几个小时并不现实。

这要求必须搞一套浮地的测量+记录系统,并且要求电池续航 >10hr.


【浮地测温】

翻出早期组装的堆叠式 SD 扩展板,尝试把 SD 卡挂载在 Arduino 测量系统上:

img11.png

再扒出祖传 128M 小容量大卡,这些 SD 卡对传统 SPI 访问兼容性非常好:

img12.JPG

灌入程序,带 SD 卡存储的 18B20 温度采集器工作起来:

img13.png

10000mAh 的充电宝在 5V 模式下大约有 7.2Ah;按照显示电量(65%)计算还剩余 4.7Ah;
整套 Arduino+SD+18B20 工作电流大约 100mA,这样续航将近 47h 足够测试需求。

Arduino 框架对于 SD-FAT 文件系统的支持非常完善,可以直接 fopen-print-fclose 这样访问 SD 文本文件:

img13b.png

连续记录 10hr 的加热工作,只产生了 230 KB 的 TXT 文件,相比之下 128 MB 的卡容量简直太充足:

img14.png


【加热评估】

数据考出来再画个曲线,很明显看到了加热棒的开关恒温过程:

img15.png

温度被准确控制在 31.6-31.9 ℃ 之间的范围。拉宽横轴估算工作占空比约为 31% :

img16.png

水温平均为 31.8℃,室温大约 29℃,鱼缸平均散热功率:Pdis= (31.8℃-29℃)*11.26W/℃ = 31.5W;
在上述 31% 占空比下,可以估算加热器的峰值功率:Pmax= 31.5W/31% = 101.6W .

与购买的额定值 100W 相符,证实老板没坑我,同时也证实加热器控温正常。

另一方面,即使未来某天加热器控温失效,触点黏连导致 D=100% 全力加热,也只有 100W 的热功率。
对应到水温峰值不超过 Tamb +9℃,这样一来从物理上也就规避了【煮鱼】的风险,懒人表示很安心。


最后附上两次的测温固件: 温度测试固件.rar (30 KB, 下载次数: 5)

--------------------------------------------------------------------------------------------------------

目前 31.8℃ 保持了一周,鱼身小白点已基本脱落,终于可以安心养鱼了。

以上,用 DS18B20 配合热力学方程测算鱼缸参数,精准选择加热棒应对锦鲤白点病。
事后通过占空比测算,证实花鸟鱼市场的卖家很诚实:加热棒功率达标,恒温控制正常。

最终助力一众锦鲤成功摆脱小白点。

最后祝大家养鱼 / 摸鱼顺利!


打赏

参与人数 10家元 +297 收起 理由
cushion + 30 優秀文章
IlovePLC + 30 優秀文章
zzqqzzz + 30
zto中通快递 + 27
飞向狙沙 + 30 優秀文章
aping365 + 30 優秀文章
jf201006 + 30 優秀文章
zzy_85569381 + 30 謝謝分享
兔包公 + 30 認真發帖
铃兰花匠 + 30 养好鱼也是一门科学!

查看全部打赏

发表于 2023-8-21 07:21:48 | 显示全部楼层
完全看不懂什么意思,好复杂的样子,智能温度控制器不行吗
回复 支持 反对

使用道具 举报

发表于 2023-8-21 07:46:22 | 显示全部楼层
可以通过调压,使加热器持续工作在35W左右的样子,这样就算失控,鱼缸温度基本也不上升。
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-21 08:00:08 | 显示全部楼层
这真是一般人干不出来的,有点专业了!
回复 支持 反对

使用道具 举报

发表于 2023-8-21 08:06:40 | 显示全部楼层
搞这么多事情,最后还是买个加热棒放里面就解决了。
回复 支持 2 反对 0

使用道具 举报

发表于 2023-8-21 08:08:47 来自手机浏览器 | 显示全部楼层
捡了一个马鞭开始…
回复 支持 反对

使用道具 举报

发表于 2023-8-21 08:14:02 | 显示全部楼层
一看到数学公式就头大,小学水平表示完全看不懂啊。。。
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-21 08:15:11 | 显示全部楼层
看来要养好金鱼需要教授的级别。
回复 支持 2 反对 0

使用道具 举报

发表于 2023-8-21 08:23:14 | 显示全部楼层
你稿这么多 知道别人为什么扔缸了吧?你稿这么多 知道别人为什么扔缸了吧?你稿这么多 知道别人为什么扔缸了吧?
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-21 08:32:20 | 显示全部楼层
本帖最后由 muyan 于 2023-8-21 08:34 编辑

这测温过程的确专业,还以为做温控加热,原来是为了炫计算

温控失效只增加9度?网上搜一下图吧,直接炸管

我做了半导体加热和制冷,效果还可以,不过缺点是水管可能堵塞,然后结冰了


回复 支持 反对

使用道具 举报

发表于 2023-8-21 08:32:33 | 显示全部楼层
理论与实践相结合。
回复 支持 反对

使用道具 举报

发表于 2023-8-21 08:38:05 | 显示全部楼层
牛!这么多专业知识,看得我晕头转向.
回复 支持 反对

使用道具 举报

发表于 2023-8-21 08:38:41 | 显示全部楼层
我的妈耶,养个鱼都把数学整出来了,你现在还差哲学和神学方面的分析,希望你抓紧时间补充完整
回复 支持 反对

使用道具 举报

发表于 2023-8-21 08:46:07 | 显示全部楼层
程控专家养鱼记
回复 支持 反对

使用道具 举报

发表于 2023-8-21 08:50:14 | 显示全部楼层
一堆数学公式就很专业的样子
回复 支持 反对

使用道具 举报

发表于 2023-8-21 09:03:32 | 显示全部楼层
看到热力学公式直接跳过看结尾,即使你算得不对也没人知道,不知有几个和我一样
回复 支持 1 反对 0

使用道具 举报

发表于 2023-8-21 09:04:14 | 显示全部楼层
能不能帮我算一下,热水器恒温每增加一度消耗多少电
回复 支持 反对

使用道具 举报

发表于 2023-8-21 09:15:18 | 显示全部楼层
这么说吧,你要是养热带鱼我还仰慕你一下,你养金鱼加热,哈哈哈,不如你把钻研加热的这个劲学学养鱼吧,弄点甲基蓝进去杀杀菌就行了
回复 支持 反对

使用道具 举报

发表于 2023-8-21 09:24:45 | 显示全部楼层
搞这么复杂干什么,直接上温控器设置成32度不够简单
回复 支持 反对

使用道具 举报

发表于 2023-8-21 09:29:49 来自手机浏览器 | 显示全部楼层
看到这方程式,只好一脸蒙蔽的退出
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-30 04:24 , Processed in 0.327601 second(s), 16 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表