The death of my SmartUPS 700

My SmartUPS 700 finally died after about 10 years & two sets of batteries. One day it simply stopped working -- no power output at all. Of course, this happened just a couple of months after I replaced the batteries. Since I've been playing with my robot I thought there might be something of value in taking this apart. If nothing else, the two 12V 7.5AH batteries are still good.

The SmartUPS controller board

The SmartUPS 700 controller board looked to be the perfect addition to my 'bot. It contains:
  • Two rows of 5 small green LEDs (setup for a bar graph). These are D49..53 and D38..42 respectively.
  • three large yellow LEDs (D46, D48, D44)
  • two large red LEDs (D43, D45)
  • one large green LED (D47)
  • two push buttons (SW2 & SW3)
All I needed to do was figure out how it all worked. There are two ICs marked ``UCN5821A'' so I figured that was a good place to start. Sure enough, it's an 8-bit serial-input latched driver from Allegro Micro (see here for details). These can be easily chained together where the first one responds to bits 0..7, the second to 8..15, etc.

OK, now the fun begins. At the bottom of the controller board there's an 8 wire ribbon cable, so logically all I need to do is figure out which wire goes where. Given the IC info, I know I need the following:

+5, Gnd, Clk, Sin, Strobe

So already 5 wires are accounted for. There are two switches, each requiring a wire, that's 7 of the 8 that I already know about.

Next I scanned the back of the board, flipped it, & printed the result. This way I could look at both sides at once while tracing the wires. Here's the result (starting at the leftmost wire with the black stripe):
  1. +12V (this took a while)
  2. Ground
  3. +5V
  4. Sin
  1. 5. Clk
  2. 6. Switch 2
  3. 7. Switch 3
  4. 8. Strobe
Some notes about this: the process was easy enough, but wire #1 threw me for a bit of a loop. First go it looked like this was +5V and wire #3 was unused but when I wired it up, nothing happenned. So, I reworked the whole thing it suddenly it didn't look like wire #1 was in any way connected to the UCN5821. The reason is, it's not! At least, not directly.

Testing the Result

I wired the result to my PIC16F877 using B0..B2 for Sin, Clk and strobe respectively. At this point I still didn't know what wire #1 was all about so I left it dangling. Working with the UCN5821 is trivial : set everything low, then strobe out the bits like this:
    set strobe low
    set clock low
    for all bits (16 in this case)
      set Sin
      set the clock high
      set the clock low
    set the strobe high
    set the strobe low
I do this first assuming bit 0 = off, bit 1 = on. Lights D45 and D38 are both lit unless bit 5 or 11 are set which turns them off. OK, the logic is reversed, so now I get D45 & D38 to blink. So far so good.

Another long look at the board & it seems like wire #1 needs to be connected to a positive supply. I start it out +5V. Sure enough other lights start to come on. Keeping off one bit at a time I can now light all of the lights except D50..53 and D40..42. These are the top four & three lights on the bar graphs. Obvisouly these must be wired in series. Sure enough, when I attempt to light D49 it works, D49 + D50 it works but get dim D49 + D50 + D51 -- no luck.

So, I change the voltage on wire #1 to +9. This gets me D49 + D50 + D51 + D52 though again with each new light the whole strand dims. Well, since the batteries are +12V it makes sense that maybe that's what's needed. Sure enough, +12V on wire #1 works. So, here's the result:
0 D49 +12 Lowest light on left bar
1 D50 +12
2 D51 +12
3 D52 +12
4 D53 +12 Highest light on the left bar
5 D45 +5 top-right RED
6 D43 +12 bottom-right RED
7 D46 +12 bottom-left YELLOW
8 D48 +12 top-left YELLOW
9 D44 +12 middle-right YELLOW
10 D47 +12 middle-left GREEN
11 D38 +5 Lowest light on right graph
12 D39 +12
13 D40 +12
14 D41 +12
15 D42 +12 Highest light on the right bar

Misc. Notes

I find this layout very peculiar, but I'm also not a hardware guy so maybe it makes perfect sense.
  • The controller board is symetrical, so I'd have expected all of the lights on the left side would be controlled by one of the chips, and all on the right by the other. This is not the case (D46 & D44 are controlled by the opposite chips).
  • Why use two supply voltages (+5 & +12 for the leds)? I suppose 5V isn't enough to light the LEDs with everything else that it must do, but that leads to:
  • Given the previous question, why would one element of the bar graph be powered by +5, while the remainder are powered by +12?

What am I going to do with this?

Everyone likes blinkenlights. A robot could do hand-stands, back-flips, ironing, whatnot, but without blinkenlights no one cares. I'm thinking the two rows can show the power going to the left & right motors, ot the results of the front & right sensors. I'm not sure about the switches or the remaining 6 lights. I'm sure something will present itself.