I have a Vaisala HMP45DUS (not HMP45D) T/RH sensor. The information that I have on the sensor is it has a thermistor installed instead of the RTD (that is installed in the HMP45D.) It was designed primarily to replace the former Handar 435C RH/AT sensor used with the 555 DCP systems (both discontinued.) The Vaisala MAWS120 was designed to be a "drop-in" replacement for the Handar 555B.
The sensor has 5 wires: Yellow = Temp +, Black = Temp -, Blue = DC +12V, Brown = RH Sig + and Violet = Ground.
The RH is 0-1 volt so that should be pretty easy with something like: VoltSe (rh,1,mV2500,2,False,0,_60Hz,.1,0)
However, the Temperature measurement is stumping me. The sensor range is -50 to +60 °C and the output information shows 440K - 2.8k (10k at 25 °C). It also notes that when connected to a Vaisala datalogger that a particular voltage divider is required.
I would appreciate it if anyone has thoughts on how to connect this to a CR800/CR1000.
Many thanks!
resistor needed??
'Vaisala Handar 435E Temp / RH Sensor
'20k ohm precision resistor, between VX3 and SE3
BrHalf (TC_435E,1,mV2500,3,Vx3,1,2500,True ,0,_60Hz,1.0,0) 'get "X" SE Channel 3 - (2H)
TC_435E = Rf * (TC_435E / (1 - TC_435E)) 'get Rs = Rf * X / (1-X)
TC_435E = (1 / (A + (B * LN(TC_435E)) + (C * (LN(TC_435E))^3))) - 273 'calc Temp in Celsius using Steinhart-Hart
'Convert Celsius Temperature to Faherenheit Temperature
TA_435E = TC_435E * 1.8 + 32
VoltSe(RH_435E,1,mV2500,4,0,0,_60Hz,0.1,0) 'measure RH (1000mV = 100%) SE Channel 4 - (2L)
If (RH_435E > 100) AND (RH_435E < 108) Then RH_435E = 100
Thank you very much!!! I will try this as soon as I get my hands on the 20 kohm resistor.
I'm halfway there. The RH works. I obtained a resistor as noted but the Temp is no where near correct. Everything that I found about the HMP45DUS indicates it is an odd beast. I have a Vaisala wiring diagram depicting 5 connections to a Vaisala QML201A datalogger with wiring (plus a noted regarding the need for a QLA005 voltage divider) as follows:
Temp + (plus) to CH 7 E, Temp - (minus) to CH 7 C, DC +12V to CH 0 E, RH Sig + (plus) to CH 0 H and GND to CH 0 C.
I have determined that the 6 pin connector is wired as follows:
A corresponds to Temp + CH 7 E above, B corresponds to Temp - to CH 7 C
C is power ground, D is (RH?) signal ground, E is the RH signal corresponding to RH Sig + (plus) to CH 0 H above, and F is +12 Volts. The test connection to a CR800 has C and F to power ground and 12V, respectively, E to SE2 and D to 1 GND. As noted, the RH works in this configuration.
I attached A to VX1 and B to 1H with the resistor from VX1 to SE1 as noted in the code from MFreitas with the appropriate code changes from SE3 to SE1 and VX1 to VX3 in the BrHalf function.
One other issue from the code was the variables Rs, A, B and C are required but not shown in the code. I searched for and found a Vaisala Handar 435E manual and also obtained Steinhart-Hart (code comment) information. Based on the S-H information and the Temp vs resistance info in the 435E document, I computed A, B and using resistance values at -45C, 0C and 45C. As for the Rs value, I made an assumption that might be 10000 (resistance at 25C). Nevertheless, the Temp C was nowhere close.
I'm quite sure that my wiring is not correct. Should the only connection at SE1 be the resistor and should the wire indicated as Temp - be on the SE gnd? I did not have the opportunity to test this.
Got it working, thanks to some similar Vaisala sensor docs but, first and foremost, to MFreitas' response above. So here is a recap of connections in case it helps someone else down the road:
Vaisala (Handar) HMP45DUS T/RH sensor connected to CR800. Sensor is very similar to 435E T/RH sensor but the pinout is different. Below is my wiring (of course use whatever SE and VX you want). The comments to the right of the pinouts are from a Vaisala 10/23/2009 wiring diagram I acquired.
Pin A to SE5 (TEMP +)
Pin B to SE5/6 signal ground (TEMP -)
Pin C to Analog (power) ground (not depicted in diagram)
Pin D to SE5/6 signal ground (GND)
Pin E to SE6 RH signal (RH SIG +)
Pin F to 12V (DC +12V)
20 Kohm precision resistor from SE5 to VX1
Below is my CRBASIC code as modified from MFreitas' code above. A, B and C were computed using Vaisala (Handar) resistance values at -45C, 0C and 45C using an online thermistor calculator at URL: http://www.thinksrs.com/downloads/programs/Therm%20Calc/NTCCalibrator/NTCcalculator.htm
Variable definitions:
Public X, Rs, RH, TEMPC
Const Rf As Double = 20000.0 ' This is the value of the precision resistor
Const A As Double = 1.029685e-3
Const B As Double = 2.390556e-4
Const C As Double = 1.568572e-7
Working code:
' Vaisala HMP45DUS Temp/RH Sensor modified from MFreitas' CS Forum example
BrHalf(X,1,mv2500,5,VX1,1,2500,True,0,_60Hz,1.0,0) ' Get "X" value
Rs = Rf * (X / (1.0 - X)) ' Get Rs = Rf * X / (1 - X) (See CR800/850 Table 66, approx page 321, top 3 horizontal boxes)
TEMPC = (1.0 / (A + (B * LN(Rs)) + (C * (LN(Rs))^3))) - 273.15 ' Temp in Celsius using Steinhart-Hart (for thermistors)
VoltSe(RH,1,mV2500,6,False,0,_60Hz,0.1,0) ' Measure RH (1000 mv = 100%)
If (RH > 100) AND (RH < 108) Then RH = 100
If this helps someone else, great. At the very least it documents the successful solution to my question. Many thanks to MFreitas for the help and the education!