lakeshore温度传感器cernox,通过python转换阻值和温度(K)

在深低温区通常所用的cernox传感器可测量4K到325K,阻值对用大概在8k欧姆到100欧左右

一般使用lakeshore的224或者240采集表,通过仪表连接传感器

如果要获得温度值,再通过上位机或者PLC等通信方式连接采集仪表

cernox传感器的价格较高,目前1w+每个,而且仪表也挺贵,一般可通过其他多通道的采集表将

采集到的电阻值通过上位机再计算转换成温度,通常labview用的挺多,通过labview也可将温度值在发送到例如epics服务器

这次使用python,简单的将R 转换成 K,在linux中可编写python脚本,将epics中caget PLC采到电阻值,计算成温度,再caput到相应寄存器,当然也可以在plc中编程,直接将阻值转换成温度

计算方法,安照官方文档,下图,是8079欧姆到1068欧姆的相关参数和计算方法

代码如下

import math
A1 = [11.914012, -11.168188, 3.527771, -0.774741, 0.097367, 0.002411, -0.002589, -0.000505, 0.000633]
ZL1 = 2.97836114172; ZU1 = 3.98178349557
A2 = [64.579437, -53.054449, 10.861361, -1.351038, 0.101114, 0.002076, 0.001321, 0.001239, -0.000301, 0.002233]
ZL2 = 2.31054980063; ZU2 = 3.08532268559
A3 = [194.594496, -115.197393, 17.512445, -2.293093, 0.373435, -0.058385, 0.007811]
ZL3 = 1.88181372612; ZU3 = 2.45169572968
R_Range = [77.37, 243.4, 1068, 8079]
def cal(resistance, A, ZL, ZU):
    i = 0
    temp = 0
    Z= math.log(resistance,10)
    k = ((Z-ZL)-(ZU-Z))/(ZU-ZL)
    for Ai in A:
        temp += Ai*math.cos(i*math.acos(k))
        i += 1
    return temp
def RtoK(resistance):
    if R_Range[0] <= resistance <= R_Range[3]:
        if R_Range[2] <= resistance <= R_Range[3]:
            return cal(resistance, A1, ZL1, ZU1)
        if R_Range[1] <= resistance <= R_Range[2]:
            return cal(resistance, A2, ZL2, ZU2)
        if R_Range[0] <= resistance <= R_Range[1]:
            return cal(resistance, A3, ZL3, ZU3)
    else: return '666'

R = 1772.00
print(RtoK(R))

运行结果

C:\Users\zhangke\AppData\Local\Programs\Python\Python312\python.exe C:\Users\zhangke\Desktop\X97935\计算.py 
14.23965581215788

进程已结束,退出代码为 0

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值