我有一个HIH-5031湿度传感器和一个连接到我的树莓派的MCP9700。
我在python中的部分代码:
getSensorVsupply = adc.read_voltage(1)
getSensorTemp = (((adc.read_voltage(2)*1000)-459)/10)
getSensorVout = adc.read_voltage(3)
calcRH = ((getSensorVout/getSensorVsupply)-0.16)/0.0062
calcTrueRH = calcRH/(1.0546-0.00216*getSensorTemp)
SensorVsupply,是传感器3.31V
的电压SensorTemp,是温度传感器MCP9700的输出值,以摄氏度表示,让我们说25 459的值是在浸入35摄氏度的水中时计算的偏移量。是的,我知道它应该在25C时参考测量,但是这里我所用的参考仪表的问题可能会在30C以下具有良好的容差。
SensorVout,是HIH-5031湿度传感器。它是辐射测量的,如果我理解正确,这意味着如果我提供3.3V并且输出是1.65,这意味着50%的湿度。现在显示1.11V
calcRH,我对%RH的计算,在这种情况下为1.11 / 3.31-0.16 / 0.0062 => 28.28% 最后一个是真正的%RH,由温度补偿。 28.28 / 1.0546-0.00216 * 25 => 28,26%
我把这些传感器放在车库的一个盒子里。当我用水喷洒盒子并将其密封时,20分钟后它的温度上升到RH 34%以上。我的传感器代码是否正确计算RH和TRH?
知道在gnd和senor输出之间,我安装90kohm而不是65的最低要求可能会有用。
产品MCP9700:http://ww1.microchip.com/downloads/en/DeviceDoc/20001942F.pdf
答案 0 :(得分:0)
所以,我找到了这个网站:https://www.ghielectronics.com/community/codeshare/entry/136
它确认我的算法没问题。从HIH-5030的数据表中可以看到:
//#Honeywell HIH-5030 Formula Sensor Voltage Output (1st order curve fit)
//#Vout = Vsupply(0.00636(Sensor RH%)+ 0.1515), (Typical at 25 'C)
现在数学(如何实际获得%RH):
//y = z(mx + b) = mxz + bz = y =>
//y/z = mx + b = -b + (y/z) = mx =>
//-b/m + y/(zm) = x = -b/m + (1/zm)y
//y = Sensor Vout
//z = Vsupply = 3.3 V <--- A/D ref. voltage
//m = 0.00636
//x = Sensor RH% (0-100%)
//b = 0.1515
//x = -23.82075472 + 47.64627406y - Recompute formula above for different supply voltages.
//http://www.algebrahelp.com/calculators/equation/
然后进行温度补偿:
//xt = Sensor RH% (0-100%) temperature compensated
//xt = (x*1.0546)-(0.00216*getSensorTemp)
希望这比我更有帮助!干杯!! :)