How I drive my Flipdots.
Recall the previous project log where I described how to drive them. The column drivers require N drivers, of which one is set high/low and the remainder are set to the complement.
In order to apply a pulse of current, we will say that the column drivers have to be enabled briefly to generate the pulse.
The row drivers operate in pairs, one for each of the H & L lines for each row.
My flipdots are 5 panels of 7 rows, each 5 columns, so a total of 7 rows by 20 columns. I decided to use the venerable L293 driver as I had several sticks left over from some project. These drivers are quad half bridges that are really intended for DC motors or two phases of a unipolar stepper, so whilst each half bridge can be driven high or low, the half bridges can only be enabled/disabled in pairs. But this is fine for the rows, as they operate in pairs anyway, and the columns are all enabled together.
So the driver circuit consists of a lot of L293Ds (the 'D' suffix is important, the 'E' variety don't have catching diodes, so are not protected against the inductive kickback of the solenoids). A little ATMEGA328P (as used on the Arduino Uno & Pro Mini) microcontroller drives the row drivers directly, and the column drivers via some HC595 shift registers. The schematics are too large to include as images, but they are in the files section, and also on github. I use Diptrace for electronic CAD, but I have included pdfs as well.I built the driver years ago on dot board, but never got it working properly, so I threw it in a drawer and only resurrected it last month. The only docs were in a bare netlist format that I invented myself that is self-documenting, and some notes in an old sketckbook. Both are in the github. There is not that much interesting about the schematic, except: R2 pulls COL_EN to inactive when the pin is not set to output, like when the processor is being held in reset whilst being programmed by ISP or DebugWire. Else an internal pullup is activated that turns on the column drive, and was blowing drivers by turning on all columns at once! I haven't investigated different means of driving the solenoids, such as with a constant current source or a chopper drive, which decrease the turn on time to an inductive load. I just found that a 24V supply with a 12ω power resistor limits the current adequately. Certainly the 24V drive makes the dots flip faster than a 12V drive, as the current builds twice as quickly There really should be a hardware watchdog with a relay controlling the 24V power as a safeguard against the processor going crazy and leaving the drive enabled. The COL_EN signal connects to all the column driver enable inputs, and to the STCP inputs of the HC595 shift registers. It latches the data in the shift registers onto the output registers in the HC595 on the rising edge, and the high level enables the drive onto the column busses. This saves a pin on a tight design.