
I'm working on the drive electronics to actuate pins for an array of braille cells that can make up a full braille display.
I have been looking into the functioning of Flip-Dots, as they share many similar characteristics to each Braille-Cell dot.

Above: A single Flip dot toggles its position when the polarity of an electromagnet is changed.

Above: A single Braille dot toggles its position when the polarity of an electromagnet is changed.
Luckily, there are several projects on Hackaday to learn from (Hackaday community seems to love these). I found these amazing mechanical 7-Segment displays from AlfaZeta that are a perfect analogy for the Braille-Cell, each segment works just like an individual flip dot, and 7 segments of them are packaged into a module where each segment need to be energised only momentarily and then retains its state, similar to our 6-dot Braille Cell:

I found a project that just "Throws H-Bridges" at the module to drive them, but I wanted to be able to save on money and microcontroller pins to create a more elegant solution, and keep the cost lower than the 10$ per Braille-Cell goal I have for the project:
https://hackaday.io/project/162065-wifi-flip-clockyoutube-counter
I came across this video by YouTuber GratScott! that showed an array of these modules controlled by some interesting electronics:
The circuit on this is what Ive decided to reverse engineer as best as possible for a using 6-dot braille cells.

How the driver works (I think), taking the example of driving 5 Braille Cell Modules:
- On each 6-Segment Braille Cell, one end of the solenoid of each segment is connected together in common. Pictured below is the schematic, 1A and 1B are a single coil, 2A and 2B another, and so on. The A's of all coils of a single module are connected together.

- Each common connection of every Braille Cell is connected to a channel of a source type DMOS transistor array(TBD62783APG https://toshiba.semicon-storage.com/info/TBD62783APG_datasheet_en_20160511.pdf?did=30523&prodName=TBD62783APG) as well as a Sink type transistor array (TBD62083APG https://toshiba.semicon-storage.com/info/TBD62083AFG_datasheet_en_20160511.pdf?did=29893&prodName=TBD62083AFG , Similar to a ULN2003) creating a Half H Bridge circuit

- The inputs of both the source and sink transistor arrays are connected to two CMOS 3-to-8 Decoder ICs( (74HC2238D https://toshiba.semicon-storage.com/info/74HC238D_datasheet_en_20160804.pdf?did=37298&prodName=74HC238D ) . The inputs of both these decoder ICs are connected together to MOD_0, MOD_1, and MOD_2 which will go to the MCU pins. These will be responsible for selecting which module to select for driving.
- SET & RESET are connected to the Enable PIns of the decoder connected to the Source Transistor Array and the SInk Transistor array respectively. These will be responsible for connecting the common connection of each Braille Cell Module to the source or sink by activating the decoder-transistor IC pairs. SET and RESET Cannot be both HIGH or else the half H bridge will be in a "shoot-through" state, releasing magic smoke.
In a similar manner, the other end of each coil of each braille cell is connected in parallel with the respective coils of other braille cell modules.
These are in turn connected in a similar arrangement as the common connections for each module, connected to a source and sink transistor array, controlled with 3 to 8 decoder ICs
- The inputs of both these decoder ICs are connected together to PIN_0, PIN_1, and PIN_2 which will go to the MCU pins. These will be responsible for selecting which PIn to drive to select for driving.
- SET & RESET are connected to the Enable PIns of the decoder connected to the Sink Transistor Array and the Source Transistor array respectively. If SET was enabling the Source Transistor Array on the Common connection of the module, on the Pin side, SET would be connected to enable the decoder IC that enables the Sink Transistor Array, thereby completing the H-Bridge connection, with half an H-Bridge connected to the Common PIn, and the other half connected to each individual pin.

- Here is what the circuit looks like all together:

Download the Schematic above here: https://cdn.hackaday.io/files/1911818179487904/Braille%20V1.sch
Functioning:
- Consider all pins/modules to be in a RESET state to start, implying all dots are lowered, and the solenoids haven't been activated.
- MCU selects the Module whose pins to activate by settings MOD_1, MOD_2, and MOD_3.
- MCU Selects the Pin of the Module to activate by setting PIN_1, PIN_2, and PIN_3.
- The MCU will give a HIGH pulse ( long enough for the pins to be actuated/raised) on the SET pin, which activates the Source Transistor Array on the common side of the coil, and the Sink Transistor Array on the pin side, in turn driving the current in one direction in the selected pin.
- Other pins are sequentially activated by setting PIN_1, PIN_2, and PIN_3. and pulsing the SET pin.
- Before setting a module with a new pin arrangement, all the pins will need to be reset to the lower position
- MCU selects the Module whose pins to lowered by settings MOD_1, MOD_2 and MOD_3.
- MCU Selects the PIN of the Module to be lowered by setting PIN_1, PIN_2 and PIN_3.
- The MCU will give a HIGH pulse ( long enough for the pins to be Lowered ) on the RESET pin, which activates the Sink Transistor Array on the common side of the coil, and the Source Transistor Array on the pin side, in turn driving the current in the other direction in the selected pin than before.
- Other pins are sequentially lowered by setting PIN_1, PIN_2, and PIN_3. and pulsing the SET pin.
Questions/Doubts I have:
- Want to confirm that the input pins to the TBD62783APG & TBD62083APG are all active HIGH. I'm confused since usually on a source side Darlington, you need to give a LOW signal to actuate it. But that may not be the case as the equivalent circuit is different:

- Since I'm driving inductive loads Should I add flyback diodes in the circuit ( how and where? ) or rely on the Clamp diodes included in the transistor arrays
- Am I missing anything in the circuit? Is there anything I have not considered? Are components/connections missing to get this work?
- Is there a better way to do this driver circuit?
Download the Schematic above here: https://cdn.hackaday.io/files/1911818179487904/Braille%20V1.sch
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
First, double check that by connecting both high-side and low-side driver chips output together (TBD62783APG and TBD62783APG) it will not have the built-in clamping diodes accidentally shorting out the shared coil output signal to either the power or ground rails. The output clamp diodes will start to conduct regardless of the input signal to the driver chip any time they become biased to turn on. I'm having problems comparing your schematics to the data sheets at the moment, so I leave that check to you.
Second, the overall switching of the high and low side drivers will be complicated as you work through all of the combinations of energizing and de-energizing the 6 pins per display times 5 displays. By staggering each pin individually, you will keep overall current draw down, but the physical update time of each coil can start to add up to noticeable overall update delays, especially if the number of digits grows more in the future. Deciding on pulsing every coil during every update (even if it is not needed) or only pulsing the coils that need to change can affect the power being used (especially if battery powered). Skipping coils that should already be correct could also lead to output reliability issues in the case a single coil ever ends up in the wrong position compared to what you expect it to be..
Third, an integrated H-bridge driver such as the Texas Instruments DRV8212 may simplify the software logic and improve the electrical performance of the coil driver. There may be other devices that are cheaper or can drive more than one coil at a time. Or multiple the driver output to one of many coils. But this "fancier" chip may be a better solution compared to the "basic" switching of the current design which seems to be the go-to approach for many. If you can simply tell the driver to set or reset the coil, then move on to the next coil while the driver for the last coil automatically sets the last coil and then goes into standby would eliminate a lot of code, and very likely speed up how fast the entire display array could be updated.
Fourth, unless your SPICE skills are superb, I find that modeling analog loads such as solenoid switching is often misleading. I suggest building up a test circuit with a single coil for one display digit to verify that you can correctly and reliably switch that pin up and down. If it gets damaged, you still have 5 more pins left to test with. Once you get the one pin working well, you can expand to switching all 6 pins in one digit. Once that digit is working, then expanding your code to multiple digits. If you are relying on a lot of simulation to check this type of design because of a lack of physical test gear, then issues like varying coil switching times, unexpected clamping diodes becoming biased "on", or weird current draws as the coils are switching on and off affecting the stability of your overall power supply are all problems that SPICE modeling is usually not likely to identify.
Are you sure? yes | no
Looking at the TBD62783APG datasheet, it seems that the clamp diodes are specifically added so that inductive loads are driveable.
You might want to consider connecting RESET to !E1 and/or !E2 on the 3-to-8 source decoders (where SET is E3) to prevent the shoot-through condition.
Are you sure? yes | no
Great Idea, prevent any mistakes from happening, thankyou!
I tried simulating the circuit on SPICE, but it would give unpredictable behavior when I connected the Source and Sink array outputs on each of coil side. It works when I test the SET and RESET circuit in isolation, but it seems like you cant just connect these together like in a H-Bridge.
While researching today, I found another project that uses a similar circuit: https://cdn.hackaday.io/files/1594156820411360/Flipdot-Controller-Prototype-v1.pdf
The flip dot circuit it drives has additional components, mostly an array of dual-switching diodes : https://hackaday.io/project/159415-flip-dot-display-diy-controller/log/149305-matrix-layout-and-controllers-job
Adding these into the circuit seems to have got it to work on SPICE, to be seen what happens to it in real life.
Are you sure? yes | no