How can I bring in a wired 0 - 10v signal?

project_power

(Allan) #1

I have a high accuracy outdoor temperature and humidity sensor (Vaisala HMS82) that is used in building automation systems. It outputs both values as individual 0 - 10v or 4 - 20ma signals. I would like to bring these into SmartThings since they are more accurate then any local weather value I could get. Is there any easy way to do this? I cannot find any device that will do this. I attempted to look at the ThingShield but I couldn’t really tell if it could do a ranging input either.

-Allan


(ActionTiles.com co-founder Terry @ActionTiles; GitHub: @cosmicpuppy) #2

The ThingShield works in concert with an Arduino (Atmel processor based MCU).

Arduinos have Analog to Digital converters which aren’t bad if calibrated. You then run a small program (in C++ called a “sketch”) which uses a library to send text message packets over the ZigBee based ThingShield, to a simple, but custom, SmartThings Device Type Handler.

There are variations and alternatives, but I think this is a good solution.


(Dan) #3

Yes, you could use an Arduino + ThingShield to read the 0-10V signal and then transmit to SmartThings. You will need to scale the value from 0-10V down to 0-5V so the Arduino’s analog input can handle the voltage properly. A simple voltage divider (i.e. 2 resistors) will handle the scaling for almost not cost.

You should be aware that the Arduino’s analog inputs are 10 bit resolution. That means you’ll have 1024 possible values for your temperature reading. Assuming a 100 degree range (i.e. 0-100 degF over a 0-5V range), your looking at about a 0.1 deg F resolution.

Let me know if you need any help.

You could also use a NodeMCU ESP8266-based board and send data directly to the ST cloud over WiFi. Others have been successful at using these cheap little boards, but I have no experience with them. Not sure whether or not they have decent analog input capabilities or not.

Dan


(Allan) #4

Most of the ThingShield examples were for doors and windows to take over a existing alarm system so I didn’t see much on analogs. If I can use one of those to calibrate the analog inputs to my temp and humidity range then I might as well look into it. I’ve done some very simple modifications to default device types…I feel I can probably figure out scaling in one.

I would need these two inputs along with a binary input (heater status). What model board would I need for these three inputs? Also do the inputs do resistance for standard thermistors (temp sensors)? If so I would want 4 inputs.

-Allan


(JBrown) #5

MODEMCU ESP8266 only has one analogue input 0-1V.


(Dan) #6

Check out my project below for a examples of how an Arduino can be integrated to support various SmartThings “Capabilities”.

My “water sensor” device class utilizes an analog input, as does my “luminance sensor”. The “contact sensor” utilizes a digital input. This should get you started.

You could also take a look at my “Temperature/Humidity” class as it handles everything, however it is designed for a DHT series sensor. You could hack it to use 2 analog inputs instead.

Since your needs are simple, I would use an Arduino UNO R3 board. However, if you want more flexibility, get an Arduino MEGA 2560 board as it has 4x the RAM and three extra Hardware Serial UART ports. Either route, you’ll probably want my version of the ThingShield library as I have made optimizations and enhancements to it.


(Dan) #7

Allan,

Just re-read your post and saw the question about a thermistor… Yes, those are trivial to integrate with an Arduino as well. Check out my luminance sensor device class as it uses a photo-resistor. You’d just need minor tweaks to make it into a temperature resistor (thermistor) device class.

Dan


( I hate Mondays) #8

Any particular reason a smart sensor would not work? The cost of all devices required, the mcu with ADC on board, resistors, enclosure, etc would overrun the cost of a zwave/zigbee sensor. Plus, regardless of how precise the sensor is, you are introducing errors with the resistor tolerances, the ADC sensitivity, etc. I would use the precise sensor to calibrate a zwave sensor via DTH, if precision is what you need…


(Allan) #9

I have the ability to do this if needed. I.e. I have calibrated sensors I can use for a comparison so if it’s just tweaking numbers it shouldn’t be too hard to get the proper range down.

I was looking at the MEGA and it seems overkill for this project. If I ever decide to pull in my alarm panel then that would be the one to go with but for these four total sensors your suggestion probably makes the most sense.

I’m sure it’s just changing the range for the resistance. I’ll check it out.

I need a outdoor temperature and humidity that can withstand -22* F through 101* F which is the range we’ve seen here in the last year. The sensor I have does this, it’s just made for more commercial/industrial building automation (which is the field I work in) and I have yet to find anything with this range rated for outdoors. The closest is a Aeotec Gen 6 but it doesn’t go down that low. So if I can get it brought in accurately I would like to. I already have a enclosure within the garage where the outdoor sensor wires into which has power so I just need the interface at this point.


( I hate Mondays) #10

Well, then, that makes sense. You need a MCU that can read from an ADC (analog to digital converter). Use the best resistors, the ones with the lowest tolerance. Use shielded cable from the sensor to the board, shortest distance possible too. And an ADC with as many bits as possible. 10 bits seems to be good enough, what is the sensors range? What is 0V and what is 10V? Divide the range of temperature by 1024 to get the precision.


(Allan) #11

-40* through +140* F, 0 - 10v. Wire from sensor is less then 5 feet and already shielded to a earth ground. So 180 degrees total that will be going through a 0 - 5v signal…my math works out to .18 degrees of resolution which is plenty accurate enough if I can get it dialed in.


(ActionTiles.com co-founder Terry @ActionTiles; GitHub: @cosmicpuppy) #12

Do a bit of Googling regarding the “accuracy of the Analog-to-Digital conversion on Arduinos”. There will be folks who relay their exact experiences and suggestions. For example, there is a “reference voltage pin” which I think is not needed for general Analog input measurement, but increases accuracy considerably. “Real” Arduinos are likely more accurate than cheap clones, since the MCU chip is the same, but the voltage regulators and even the quality of soldering can make big difference.

One example link:

And yes… you won’t need a Mega for this project, as far as I can tell.