胯下之屎
“专栏内容应品质良好。专栏经办者应对专栏内容(包括回复和评论)进行把关。” 把关,当代生活可太惨啦,淋漓尽致。
文号D884357
10256
18
收藏
编辑文章

搭个了温度记录仪


去年五月份写的文章,快一年了,终于才有时间给翻出来了。。。



长晶体,想搞一个温度记录仪。最开始想要个分辨率 0.01K 的,搜了一圈淘宝发现带记录功能的产品似乎不是很多,找到一个最便宜的是 YET-720L,要¥1200+,只能记录 20000 笔数据,根本不够用(而且太贵了没钱买。后来逛闲鱼的时候发现有不少便宜的工业设备可以实现我想要的功能。虽然支持分辨率 0.01K 的比较少,但还是非常幸运地捡了个聚英公司的 JY-DAM-Pt08 温度采集器。24 位 ADC,淘宝详情上写的分辨率可以达到 0.01K,但是手册里写只有 0.02K。因为后来搜了不少资料发现 0.01K 的可靠产品可能不是一两千块能搞定的,我也就放弃了,心想着这个 Pt08 加几十块钱的 Pt100 应该应该能达到 0.05K 分辨率吧,实在不行,能有 0.1K 我也能接受(我们穷人的底线就是 —— 没有底线!


温度信号采集器是个非常成熟的产品,设计上也不存在什么特别的难点,市场上的产品和方案不计其数,但是因为我自己完全不懂电子电路,没有能力用开发板进行开发制作,只好买现成的产品来做采集,我只需要搞定信号传输和数据处理及存储就可以了。但就是这两项也让我折腾了好一段时间请教了好几个朋友才搞定。。。


用到的东西不是很多:

1. JY-DAM-Pt08 温度采集器,闲鱼二手淘的拆机货,¥100

2. A 级 Pt100 铂热电阻温度传感器(-50~200C),全新淘宝货,四根,两根¥50+ 的,两根 ¥20+ 的

3. USB 转 RS485 转接头,¥10+

4. 12V 直流电源,仓库里翻出来的,普通的淘宝货,价格不记得了


产品手册以及调试软件在聚英公司官网上都有提供下载。按手册上的说明把线接好,软件上设置好通讯波特率,正常就能连接上了。他们的软件有提供温度记录及数据导出功能,但是用起来有点麻烦。反正不是很合我的使用习惯,不知道怎么回事我一直查看不到温度曲线,就懒得搞了,自己重新弄了一个可以直接输出时间戳和温度记录的脚本。


IMG_4845.jpg


数据采集及温度记录 bash 命令:


sudo chmod 777 /dev/ttyUSB0

#Ubuntu 里要先改一下那个 USB 转 RS485 接头端口的权限,因为插上之后默认的用户组是 root,不改的话普通用户访问不了。对了,这条命令之前还得先确认一下端口文件是不是 /dev/ttyUSB0,具体方法网上搜一下,有很多


stty -F /dev/ttyUSB0 raw speed 9600 min 0 time 10

#设置端口的通讯参数,波特率是重点,一定要把手册看清楚。最好加上 min 0 time 10,不然接收到的数据经常会出问题,但不知道是不是我电脑/系统的问题,反正我加上之后就没问题了


for i in {1..99999}; do echo -e -n "\xFE\x04\x00\x00\x00\x04\xE5\xC6" > /dev/ttyUSB0; sleep 1; cat /dev/ttyUSB0 | od -t x1 | grep "fe" | awk '{print "0x"$5,$6,",0x"$7,$8,",0x"$9,$10,",0x"$11,$12}'| sed 's/ //g'| awk -F "," '{print systime(),strtonum($1),strtonum($2),strtonum($3),strtonum($4)}' ; done

#这部分是真正与信号采集及数据处理直接相关的代码

#for 循环里主要是一大串管道命令,因为实际上只有两三条语句,语句也比较简单,所以我就懒得分行写了,直接把整个循环代码贴到终端按个回车执行就完事了(其实最好把这个改成脚本,设置一些用于指定循环次数及采样频率之类的参数变量。存成 sh 文件,然后在终端里执行 sh 文件,这样会完善一点)

#echo 命令是向采集设备发送温度采集指令,具体的指令产品手册上有详解。具体的指令可对着手册根据自己需求和配置来给出。

#sleep 1 命令是让程序等待 1 秒钟后再执行下一条命令,我直接用来调节采样频率了。最好不要设置成 0 秒,可能是因为端口发送和接收数据或者后面的命令执行起来需要一定的时间,我在平时自用的电脑上设成 0 可以正常运行,但在另一台十几年前的电脑上运行的时候把这个设成 0 秒就会导致接收到的数据不完整,设成 1 之后就正常了

#cat 命令就是从 RS485 端口接收数据。回来的数据是十六进制的,od -t x1 命令就是把十六进制的数据转成可显示的字符串(还有其它的命令也可以实现该转换,但在我的系统这个命令转换出来的比较正常)。后面的 grep awk sed 命令都是用于进行字符串处理,目的是传递给最后的 strtonum() 函数把十六进制数转成十进制的温度数据。

#按说这个最好用 C 语言来写,但因为我不需要什么运算或也不在乎程序运行效率,所以就直接用 bash 脚本来处理了。效率不高,但是够用。


运行得到的数据应该是下面这样的:

1682251359 2888 2920 2902 2887

1682251363 2884 2915 2897 2880

1682251367 2878 2909 2891 2875

1682251371 2873 2902 2885 2869

1682251376 2868 2897 2878 2863

1682251380 2862 2892 2873 2857

1682251384 2856 2886 2866 2851

1682251388 2850 2880 2860 2845


第 1 列是时间戳,单位是“秒”,2-4 列是温度数据,实际的温度是表上的数据乘 0.01,绘图的时候要注意这个。


记录了两天时间内的室内温度变化,看了下温度数据记录情况。至少从收到的数据来看,这个数据采集器和 Pt100 传感器似乎是能达到 0.01K 的分辨率的,但第三个图上看这个数据这么好,总觉得哪里情况不太对。暂时还没搞清楚怎么回事,有时间了再来研究吧。

test1.png test2.png test3.png




记录一下我自己掉的几个坑:

1. 硬件连接:因为我对这个是完完全全的不懂,第一次接触串口通讯,所以我刚开始便按照产品手册的说明一步一步去做。手册里给的示例是用 RS232 进行通讯,因为我电脑上没有 232 接口,便买了个 USB 转 RS232 的转接头,但是接上之后发现转接头发热特别严重,芯片很烫,手指差点被烫伤。然后请教朋友被告知设备的用电是 12V 的话 RS232 不能这样直接接线,因为电流会反涌什么的。实在是找不到还留有 232 接口的电脑,只好改用 RS485 进行连接,然后才知道其实这两个的指令是完全一样的,瞎了


2. 软件连接:RS485 接上之后还是怎么也无法通讯,自己折腾了三四天还是没搞定。找了另一个住附近懂电子电路的朋友,虽然对方不做工业设备,还是抱着侥幸心理问了对方一下。那天带过去给他看,然后折腾了三四个小时终于是连上了。折腾这么久的原因也非常无语:转接口背面印着波特率 115200,我们也没多想就把通讯波特率设为了 115200,然后死活也连不上。最后是意外把波特率改成 9600 连上了。后来我回家看手册,人家产品手册第一页就写清楚了所支持的通讯波特率有哪几个,里面没有 115200!崩溃


3. 自己的知识水平问题:在朋友那边能正常连上之后我回家自己写脚本的时候发现又连不上了,不过这次我确信绝对是我自己的问题。苦思冥想了一天之后突然想到说会不会是我用 echo 发送指令的时候发送是设备不认识的指令。然后把 echo 后面的指令全部加了十六进制转义(就是字符前面加\0x),最后果然好了(泪水都流出来了。。。其实之前就一直有所怀疑,但是我用 cutecom 调试的时候明明在软件界面上选择了用 Hex 进行发送,但设备还是没响应,也不知道是不是我哪里没用对,总之感觉还是被 cutecom 给坑了一把,气死了


18
古法造轮 作者
7个月9天前 修改于 7个月9天前 IP:浙江
D884441
引用大仙发表于1楼的内容
想要高精度,可以改成PT1000传感器,这种算能买到的传感器里面精度最高的了。如果长期工作建议用cp2102的串口线,别的芯片的有各种bug,不能长期稳定工作。

稳定性还不知道呢,之前最长记录过一周左右,倒是没出过什么问题。最近回去把东西带过来了,有时间再试试看。

PT1000 更别想了,数据采集器买不起,传感器也买不起。而且 PT1000 一般都带校正的,普通的一根都大几千上万的哪有那钱(穷

古法造轮作者
7个月8天前 IP:浙江
D884490
引用大仙发表于4楼的内容
没你说的那么贵,pt1000的咸鱼有卖2.5一个的,热量表上面用的,485采集模块1路的最便宜40块。

咦。。。我去,有道理哦,我怎么没想到买个二手量热计哦。我来搜一搜,研究一下,感谢

古法造轮作者
7个月8天前 修改于 7个月8天前 IP:浙江
D884492
引用BSP发表于5楼的内容
前段时间刚巧跟楼主一样对PT1000有点兴趣,想自己搓一个,结果查了查资料也如楼主一般放弃了(即使我比楼主懂点电子也没辙)想要0.01K的系统精度,做个能拿得出手的设计,预算紧张的情况下完全搞不定,就...

确实难度不小,我之所以一下买了四根传感器也是想看看精度和系统漂移情况。结果果然很差,只要升温速度稍微快一点,几根传感器的曲线立马就会出现交叉,线性也不好,漂移很严重,粗略估计了下,至少有 0.1K 以上。所以搭出来的这个也就是自己玩玩,真拿来测温是不靠谱的。


我主要是想用来监测晶体生长恒温溶液的温度变化情况,体系温度变化速度很慢很慢,这样测出来的温度变化还是有一定参考性的

古法造轮作者
7个月8天前 IP:浙江
D884495
引用BSP发表于6楼的内容
如果氪金买,可以买到Fluke的二等标准铂电阻5615-12和便携式测温仪1529配合,Fluke的这套测温系统的准确度可以达到±0.012°C@0°C,完全满足楼主的目标,1529好像只要千把块,但...

校准源我原来还想手搓个管子来找水三相点校准呢 哈哈哈哈,不过现在很多工具都没了,以后有机会再说吧

(1529 哪有那么便宜哦,贵滴很!更别说标准铂电阻了,没钱!

古法造轮作者
7个月7天前 IP:浙江
D884549
引用footlog发表于11楼的内容
可以找个机器装个influx时序数据库,用curl写入,再装个grafana,可以直接显示曲线,我现在就是这么用的,dht22,ds18,还有多功能传感器。

数据库。。。这个对我来超冈了。。。我现在用着一个超笨的办法:在 bash 里重定向把数据存到文件里去,然后用另一个脚本调用 Gnuplot 读取文件内容实时绘图😂

古法造轮作者
7个月7天前 IP:浙江
D884552
引用BSP发表于12楼的内容
哈哈,我也是前段时间才突发奇想开始查这方面资料,1529也是淘宝看价,刚又查了一下确实一千不是实价,得要几万块,真是贵啊,看来我还是说少了,长晶体的话,真的要那么高精确度吗,误差±0.25这个量级大约...

我也不知道需不需要这么高精度的,但看论文上用的设备都至少是这个级别的,我也就想当然了。。。先试试吧,反正我也没那么高精度的 PID 恒温控制器,目前这个测温精度比系统高一个数量级,应该足够了

古法造轮作者
7个月4天前 IP:浙江
D884630
引用footlog发表于17楼的内容
influxdb很方便,用脚本就可以写入,在脚本中调用curl就可以了下面是一个写电脑temp的脚本,我现在有想看的数据就直接写入influxdb中pdt=`date +%s`ptemp=0while...

我就说超冈了嘛。。。别说 influxdb 了,我连 curl 都觉得太复杂了,一直只能用 wget 😂

不过还是感谢先了,等我哪天搭个复杂点的再来请教你!

想参与大家的讨论?现在就 登录 或者 注册

主体信息
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:福建
 文章分类
 内容统计
2024年04月
2 篇
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
ID: {{user.uid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
回复
设为精选取消精选
评学术分
鼓励
编辑
查看历史
通过审核
移动文章
加入收藏取消收藏
退修或删除
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
回复
加入收藏取消收藏