Sunday, April 10, 2016

Watchdog Timer

So after I fixed all my lamp matrix problems, I kind of ran into another, luckily I was prepared for this one.  See as I use a lamp matrix with 8 columns, any given lamp is only energized 1/8th of the time.  For this reason I decided to use 18v to power the lights, to keep them nice and bright.  This isn't too bad for the lights - I believe 'real' pinball machines do the same.  Problem is, if I stop the program, whatever lights were previously lit will stay lit.  This hammers the lights with a full 18v which isn't very good for a 12v globe and will likely burn it out before long.
I'm also expecting to have a similar issue with my coils.  If I stop the program or it crashes for whatever reason, a coil may stay stuck on.  For a flipper this isn't much of an issue, but for anything else this is a very bad thing, as they can burn out in a short amount of time.  This is why i need a watchdog timer.  There are a bunch of good resources about this around the place but basically its a circuit that keeps it's output high if it receives a pulse every so often.  If the pulses stop (i.e. the program stops or crashes), then the output goes low after a short time (milliseconds).  

There are a bunch of circuits around 555 chips that can are mainly used for rebooting an arduino if a program crashes.  I tried this but the output actually pulses when the program stops, which is fine if you're rebooting a thing, but not so much if you are using it to drive a relay for high voltages.  I found a great example of one from Ben Heck's spooky pinball which I adapted for my own needs.  You can check it out from here:  It's based on a 74HC123 chip and works a treat.  There's even a pot on it to adjust the time.  I hooked it up to one of my column drives on my lamp matrix and bammo - all good.

After some tidying up of my wiring my boards so far look like this:
The watchdog is the yello perfboard thing.  I'm using automotive relays to turn the high voltages on and off.

1 comment:

Anonymous said...

looking to use this circuit, can you post a diagram and components used? Thanks