Animated "Flat Panel Ferrofluid Display" Using Electromagnets
by beastie486 in Circuits > Art
1624 Views, 0 Favorites, 0 Comments
Animated "Flat Panel Ferrofluid Display" Using Electromagnets


If you are wondering, "what is a ferrofluid display?", you are not alone! Ferrofluid is a liquid that is attracted to magnetic fields. The liquid is comprised of extremely tiny iron particles suspended in oil to prevent clumping. If you've ever played with iron filings and a magnet (like Wooly Willy), ferrofluid is similar but in liquid form. In order to make a display using ferrofluid, electromagnets are arranged in a grid and used to move the ferrofluid around a glass tank. The electromagnets are arranged in dots or "pixels" to form letters, numbers, or patterns. The display can even show animations but unlike any TV or computer monitor. The specific details of how the ferrofluid is manipulated will be covered in later sections. Just know the electromagnets can be selectively turned on or off to attract the ferrofluid where you want it.
A ton of credit needs to be given to Applied Procrastination for inspiring me to pursue this project. Make sure to check out their instructable about their awesome Ferrofluid Display and information on their mistakes to avoid and recommendations to achieve success. My display builds on their previous work and tries to improve it in a few fundamental ways.
The top priorities for this Ferrofluid Display is to focus on the overall build cost and simplify the assembly of the electronics. The estimated build cost for AP's display was about $2k-3k. The arbitrary build cost target for what I call my "Flat Panel Ferrofluid Display" was $500, though it ended up just under $700.
A word of caution about this instructable. It is not straightforward to replicate this display even with the design files and the details provided in the following sections. A few reasons for this. First off, ferrofluid is a very difficult substance to work with (more on that later). Second, despite my best effort to economize, it is still very expensive to create. Third, a lot of supporting equipment and tools were used to create this display. Included but not limited to a soldering iron, hot air rework station, microscope, 3D printer, oscilloscope, DMM, calipers, hand clamps, hot glue gun, and more.
Supplies


Solenoids - 20x15mm 12VDC 2.5KG - Quantity 200 for ~ $350 from this listing
Coil PCBs - JLCPCB - Quantity 15 for ~ $30
Coil Driver IC - DRV8908 - Quantity 24 for ~ $75
Miscellaneous Resistors/Capacitors - ~ $15
Aluminum Backer Drilled - 1mm 5052 Aluminum from SendCutSend - Quantity 1 for ~ $78
Ferrofluid - 60mL EF-H1 from this listing for ~ $60
Glass Panes - 2x of 11x14in and 1x of 12x16in ~ $20
Glass Cutter - a simple one ~ $8
Glass Sealant - Loctite Silicone ~ $7
Power Supply - 24V 14.6A ~ $30
Hot Glue
Misc Solder Supplies
3D Printed Parts
MCU - Arduino Nano Every, though almost any will do
Rough total as shown ~ $675
How Many "pixels"?


The primary cost driver for this display is the total number of pixels. This design is 16 x 12 (192 electromagnets total) though the PCB array is designed to be scaled up or down in increments of 4 rows and/or columns (16 electromagnets). If the cost of this project is out of reach, consider scaling down to 8 x 8 (64 electromagnets) to reduce the cost by over 50%. Scale down even further to 4 x 4 (16 electromagnets) for more of a proof of concept.
Whatever size display desired, it's worth visualizing the kind of animations possible using your favorite sprite editor before taking the plunge. Piskel is a free browser based editor I used due to the simplicity, freeness, and the ability to export in a C text array format.
If you are wondering, "why not offset each row like a honeycomb to get a higher density?" you are not alone. The Applied Procrastination instructable has an example of this honeycomb pattern and why it isn't recommended. TLDR: adjacent magnetic field polarity gets weird.
Ferrofluid. Stains. Everything.



Well, almost everything. I actually don't have much to contribute here other than emphasizing the importance of the glass preparation. After my first glass tank became thoroughly stained (due to insufficient cleaning) I tried every cleaner I had in my house with absolutely zero change to the stain. In my efforts to clean the stain, I ended up cracking the tank leading me to make a new one. Check out Applied Procrastination and many others for tips on glass and ferrofluid preparation.
I tried using Rain-X Water Repellent to make a hydrophobic coating with terrible results staining instantly. It's possible a better/different hydrophobic coating could work though I didn't try any others. Scrubbing the glass surface with OxyClean in very hot water has yielded the best results so far (though I'd like to try HCL if I can acquire some). Similar to AP, I used saturated kosher salt water as the suspension fluid. As suggested by AP, I left the salt water undisturbed in the tank for days before adding the ferrofluid. I don't know why this helps, but it has yielded better results.
Finally, WEAR GLOVES when working with the ferrofluid. It stains your skin very quickly and can take days to go away. Also, besides the staining, I'm sure whatever is in the ferrofluid isn't good for your skin anyways.
Life Is Pane




My first attempt to make a ferrofluid containment tank was with acrylic. I had seen suggestions that acrylic should work with a hydrophobic coating. Also, acrylic is really easy to fuse together with acetone so I gave it a try. As mentioned in the ferrofluid staining section, I tried Rain-X Water Repellant as the hydrophobic coating. I witnessed my acrylic tank stain instantly when ferrofluid was added. There is probably a hydrophobic coating that will work, but I abandoned acrylic and went to glass.
I've never cut glass before so I watched one of the many tutorials on how to make clean cuts. I started by making a much smaller tank to practice the cuts and try various adhesives to assemble together. I'm sure epoxy will work but I decided to go with Loctite Silicone Adhesive. Ferrofluid will stain any exposed adhesive so I went with silicone as it is very easy to scrape/cut off excess adhesive even after cured.
With my 12x16 array of 20mm electromagnets, a glass tank of 11x14in frames it perfectly. Luckily, Home Depot sells precut 11x14in sheets of glass saving me from having to make the trickiest cuts. To give the tank its volume, I sandwiched 2 11x14in panes with 2 layers of glass strips around the perimeter. I cut these strips from a bigger 12x16in sheet and made them as narrow as I could reliably cut. I found cutting these strips to be very tricky by hand. I ended up cutting at least twice as many strips as I actually needed and picked the best ones. Again, making smaller cuts for a smaller tank helps develop the technique for the larger one.
Finally, WEAR CUT RESISTANT GLOVES when working with the glass. I cannot tell you how many nicks/cuts I got from little shards created from the cuts.
DIY Electromagnets... You CAN, But Should You?















In order to save money on the build cost, I decided to wind my own electromagnets. I started out small making only 16 DIY electromagnets to build a proof of concept before committing to the full display. These DIY electromagnets consisted of 5 parts: plastic bobbin, magnet wire, center post core, metal collar, and steel backer plate (exploded model included above). For the plastic bobbin, I used class 15 sewing bobbins (the most common style) as they are cheap and approximately the dimensions I wanted. For the magnet wire, I settled on 34 AWG Polyamideimide as it is thin but not easily snapped when winding. Also, Polyamideimide has a higher temperature rating (200C) than standard enameled wire (150C) without getting too pricey. Low carbon steel or "mild steel" is a desirable material for the center post, collar, and backer due to its magnetic permeability. There are even more desirable materials (iron) but they aren't as easily acquired leaving low carbon steel as a good balance. For the center post, I originally cut steel rod stock by hand but produced inconsistent lengths. I ended up buying steel dowels with very tight tolerances to get everything flush. For the metal collar, I looked into buying something premade but I couldn't find anything with thin enough walls that is also made out of a desirable material (NOT aluminum). So, I chose steel banding straps and formed them into a ring. For the metal backer plate, I used 1008 Mild Steel (.048" thick) and had SendCutSend drill all the holes.
The proof of concept worked (GIF above) but needed modification to improve the magnetic field strength. I decided to add a metal sleeve to redirect the magnetic field and kicked into full scale production. To reduce the winding time for each electromagnet, I built an automated winder using two stepper motors. This reduced the time per electromagnet greatly, though winding 192 electromagnets still took 30+ hours.
The next step was to attach the center post cores to the steel backer plate. I settled on gluing the center post cores although other methods of attachment could work as well (ie spot welding). Accurate positioning is crucial as the gap between electromagnets is minimized. I 3D printed an alignment guide that uses the PCB mounting holes to register the position. I first used super glue as the adhesive which seemed to work ok at first. However, as I tried attaching the bobbins, I accidentally bumped several center post cores and sheared them clean off. In retrospect, super glue wasn't a great choice due to its very poor shear strength. I pivoted to E6000 which yielded much better results.
Next, the metal collars needed to be attached to the bobbins. I originally planned to hand form the collars from cut segments of the banding straps but quickly discovered the metal was far too stiff. I had some spare bearings and created a makeshift metal bender to form the ring (a DIY version of this). To attach the metal collar to the bobbin, I tried using E6000 as I had with the center post cores but it didn't consistently stay together. I then tried super glue which worked much better due to the mostly tension forces. I used spring clamps to form the band tightly to the bobbin and hold it in place for the glue to set. This ended up being a more delicate process than I anticipated mostly due to the imperfections in the ring shape from my DIY bender.
As I shifted back to attaching the bobbin + collar to the steel backer, I discovered the holes for the electromagnet leads get covered by the adjacent electromagnet. The original design didn't account for the extra width from the metal collar. I was able to mostly work around the overlap issue by assembling from top to bottom. I assembled about 80% of the electromagnets before I started testing the connections to the coil driver ICs. I deeply regret not testing earlier in to the assembly process.
When I started testing the connections, I discovered about 25% of the installed electromagnets had an unexpected short to GND. There seemed to be a few mechanisms causing the short. First, some of the electromagnets had a short through the metal collar. This shouldn't be possible as the magnet wire is insulated. However, I discovered I nicked some of the wires during the collar assembly thus compromising the insulation. Even though the metal banding was painted, the paint turned out to be electrically conductive. So, when the metal collar is mounted, it touches the steel backer plate and adjacent electromagnet metal collars. Another mechanism I discovered was at the hole where the electromagnet leads feed through the steel backer plate. In most cases, the magnet wire takes a sharp bend to enter the hole. This is where the overlap issue bit me again as the adjacent electromagnet metal collar presses on the magnet wire entering the hole. This presses the magnet wire into the sharp corner in the steel backer plate and compromises the insulation. There may be other mechanisms but I stopped looking after discovering this one.
Realizing I had a fundamental design flaw on my hands, I put this project in timeout and avoided thinking about it for a while. When I started working on it several weeks later, I contemplated several approaches to deal with the shorts. Every solution I could imagine involved redoing a huge amount of work (reassembly, rewinding bobbins, new PCBs, possibly more). With this prospect, I decided to reevaluate a fundamental assumption I hadn't questioned in the beginning.
Are DIY electromagnets actually that much less expensive than buying commercial?
After searching electromagnets on AliExpress extensively, the majority of listings very prohibitively expensive either due to the per unit cost or shipping costs. However, I eventually found a listing that worked out to about $1.75 each including shipping costs. The cheapest I could get the DIY per unit cost was about $1.50 not even considering the huge number of hours to produce them. Once I discovered the small price difference, I abandoned the DIY effort and started a new PCB design for the commercial electromagnets. All the project details in this Instructable (outside of this DIY section) are about this version 2.0 using the commercial electromagnets.
TLDR: DIY electromagnets ended up being only slightly cheaper and took dozens of hours to create. I wouldn't recommend DIY electromagnets for large displays.
One SPI Bus to Rule Them All



The two main requirements for the circuitry in this design were to limit the number of IO needed to drive the display and optimize cost per pixel. Similar to AP, the coil driving circuitry must be capable of local PWM to vary the magnetic strength attracting the ferrofluid. Coil driver chips with multiple channels tended to be the best cost per pixel and the TI DRV8908 H-bridge driver fit the bill. Each chip can drive 8 electromagnets with individual PWM control directly with integrated catch diodes. It also has diagnostics able to detect over-current, over-voltage, open-load, and over-temperature at the chip. The best feature of the DRV89xx chips is the ability to daisy-chain communication up to 63 chips per 4-wire SPI bus. No need to worry about unique addresses (like I2C) but instead count the chip position in the chain.
The communication protocol is very efficient writing to every chip in the chain all at once in the same data block. Additionally, each chip in the daisy-chain reports its status and read data all at once as well. This enables updating the entire display very quickly. If you desire more details on how this works, the DRV89xx datasheet explains all this very well. A word of warning about this single SPI bus approach: the clock and chip select lines are routed to every chip in the chain potentially leading to signal reflections causing glitched edges. The easiest way to mitigate this is to add a large series resistor at each chip to filter out any glitches on the edges. The SPI bus needs to run slower than normal to ensure data integrity with the slower filtered edges. Due to the reduction in needed IO and efficiency of the protocol, this tradeoff is well worth it. Also, if you want to refresh faster, you can use multiple SPI busses to reduce the time to update the entire display. I use one SPI bus as I find the update rate plenty fast.
An Absolute Unit (Test)


After populating the coil driving PCBs, I highly recommend testing each PCB separately before assembling into the display array. Due to the nature of daisy-chained communication, if even one chip or resistor has an issue in the chain, it is very difficult to pinpoint the issue. It is much easier to troubleshoot a single PCB with 2 chips than 12 PCBs with 24 chips. I used a chip clip with wires taped at the correct spacing to test each populated PCB. This proved much faster than soldering and removing testing wires. After the chip communication was validated, I tested each electromagnet site with a DMM ensuring no shorts or opens. I thoroughly recommend testing individual boards before full assembly!
Don't Cross the Streams

For this display to work properly, it is essential for neighboring electromagnets to be opposite polarity. The electromagnets I purchased did not have any indication of polarity on the wires. So, I needed to measure the polarity and mark the wires accordingly. You could do this prior to mounting the electromagnets but I opted to measure polarity after mounting. There are many ways to determine the polarity of the electromagnets though using a permanent magnet to feel the attraction or repulsion when energizing the electromagnet was not reliable. Instead I opted to use my smartphone's magnetometer to measure polarity. Other possibilities are using a compass, a "sensing" coil (AP used an extra electromagnet with an oscilloscope), or another magnetic sensing device.
Some Assembly Required













I focused on trying to minimize the mess of wires from all the the electromagnet connections. The assembly I ended up with is a PCB, aluminum backer, and electromagnet "sandwich" (see diagram above). This configuration minimizes the length of wire needed from the electromagnets as the PCB connection is immediately behind each electromagnet. I originally planned to install connectors on the PCB and electromagnet wires but opted for direct soldering with potting (hot glue) instead. The first reason for the change was how easy it was to accidentally shear connectors (and pads) off the PCB during assembly. I avoided any through hole components in the design so I didn't have to worry about shorting or interference when pressed against the aluminum backer plate. The second reason was how much extra time/effort all those connectors were taking. After some thought, I decided it was unlikely I would need the ease of connectors to disconnect the electromagnets once mounted in the display and ditched them.
The electromagnet mounting screws are what keep the entire assembly together. When starting the assembly process, it is important to get the PCB spacing correct. I accomplished this by loosely attaching one electromagnet per PCB and manually aligning an entire row of PCBs at once. The PCBs were designed to touch without any gap enabling direct edge to edge soldering of the power, ground, and communication signals. The PCBs are 4 layers with a solid ground and solid power plane layer to minimize voltage droop through the chain. These solid planes and the aluminum backer require a ton of heat to properly solder between adjacent PCBs requiring a large soldering tip and a heat gun. When mounting the electromagnets, it is very important to maintain consistent orientation of the wire connections through the backer plate. Otherwise you might get interference between adjacent electromagnets where the wires exit the can.
Keep Cool and Remember to PWM
Coming soon!
You Got Software in My Hardware
Coming soon!