I’m extremely interested in this project, and am attempting to do the same thing. How are things working out for you?
Here are my goals:
Somehow “read” the condition of each loop from my security system (a Honeywell Vista 20P, self-installed) to detect if loop is faulted or not.
Upon identification of fault, send e-mail to phone.
I’m hoping to use Arduino to do this (Uno, or Mega if necessary). I have an Uno, and am trying to tackle the first mini-project involved here: “Reading” a security system loop for faults.
My security system uses the “zone doubling” feature of the Vista 20P. A brief overview. In a standard zone (non-zone doubled) you run a wire from an input terminal on the security system board to a string of serially-connected, normally-closed sensors (mine included magnetic reed switches, or motion detectors). Each loop is terminated with a 2K resistor. When a sensor “opens”, the loop opens, and a fault occurs (and alarm sounds, if system is armed).
When zone doubling, you run two loops in parallel to a single pair of input terminals on the panel, terminating one with a 3.2K resistor, and the other with a 6K resistor. The panel can discern which loop is faulted by observing the voltage across the input pins. I’ve measured the resulting voltages under each permutation, and here’s what I get (two doors, each wired on their own loop, using the zone-doubling feature):
Door 1 closed, Door 2 closed: 4.9V (no fault)
Door 1 open, Door 2 closed: 5.9V (would cause fault for Door 1 zone)
Door 1 closed, Door 2 open: 7.6V (would cause fault for Door 2 zone)
Door 1 open, Door 2 open: 10.3V (would cause fault for both Door 1 zone and Door 2 zone)
I need to somehow read these voltages with an Arduino … as you can see, the max voltage exceeds Arduino’s built-in analogread() max of 5VDC, so I need to seek an off-Arduino solution. Assuming I can figure out how to read the voltages, with some simple logic I can detect the appropriate fault condition (and later, if / when I figure out how to get Arduino to send e-mails, send appropriate notification to my phone). (insert wise-crack about underestimating complexity of Arduino e-mail project)
My worry about “reading” voltage from the board is that my detection circuitry will somehow interfere, negatively influencing the ability of my Vista 20P to operate normally. My options for reading voltage, as I understand them include:
Voltage comparator (bought some LM339 chips to play around with … but they seem to require 18VDC or 36VDC to operate … my security panel can provide 13.7VDC of auxiliary power … I’d like to keep it simple and leverage this if possible) … I may have misunderstood the LM339 spec sheet too (been a looooonnnnggg time since my electrical engineering classes). If I can get the chip powered, I’d still need to provide reliable “reference” voltages to the device (which I could easily do using some resistors and the on-board auxiliary power from my security panel) … but the LM339 seems to require 1.5VDC of “space” between the reference voltage, and the voltage which is being tested (before the output will go from high to low). As you can see, I only have ~1VDC between two of my voltages. I’m sure it can be done, but it leaves little room for error.
Voltage divider: If I put two very large, serially-connected resistors in a parallel loop to the alarm loop (to get the voltage down below Arduino’s 5VDC maximum), I should be able to do an analogread() of the voltage drop across one of those resistors, then compute the voltage drop across the entire loop, and thereby identify the state of each loop, right? I’m not sure I could do this without interfering with my panel’s performance though …
Does anyone have any ideas on a simple, but robust way to use Arduino to unobtrusively read / sniff the voltage of a secondary circuit?
Looking forward to working this through … I know it can be done … many many thanks in advance. This is a very cool forum!
***UPDATE: 3/28/2013 - I managed to get the LM339 chips wired and running last night (I guess you need to connect ALL of the pins in order for it work?) And I was way off on the 18VDC / 36VDC input requirement … I fed 5VDC in from the Arduino’s power supply, and things worked perfectly. Anyway, I followed the tutorial http://www.ehow.com/how_12044471_diy-pr … cator.html, and it did the trick to prove basic functionality … I modified the tutorial’s intent a bit to feed variable voltage into the “-” pins via a potentiometer, which allows me to spin the rheostat and sequentially light up each of four LEDs attached to the outputs of the four comparators … pretty cool.
With that proof of concept tackled, I will now identify the resistor values required to knock down the 13.7VDC auxiliary voltage (from my security panel) to the appropriate reference voltages corresponding to each state (referenced above). These reference voltages will be fed into the LM339 comparators in a live test on my actual security panel … not sure how this will go, but if I understand the LM339 chips correctly, they will not interfere with the circuitry they will be “observing”. I’ll start by using potentiometers (instead of hard-value resistors) and LEDs to literally “dial in” the resistance value that will split the four states I want to “flag” on each security system loop. It will look something like this:
Open both doors: Dial in potentiometer 1 (increasing resistance from zero) until comparator 1 output goes high (as evidenced by LED lighting up)
Close door 1, open door 2: Dial in pot 2 (increasing resistance from zero) until comparator 2 output goes high
Etc.
Etc.
I’ll read the resistance values of each pot at this point, and then replace the pots with appropriately sized resistors.
Then I’ll move on to exploring the e-mail capabilities of Arduino. Leaning towards utilizing my HP Mediasmart server to run a Python program to send an e-mail … but ideally, I’d rely only on the Arduino (LOTS to learn here yet).
Cool thing about the comparator approach is that I don’t need to worry about damaging the Arduino analog inputs as the highest voltage Arduino will ever see is the voltage that I’ve sourced to the LM339 chips (which comes from the Arduino’s onboard 5VDC power supply). Cool stuff.