If you’ve followed us for a while, you know that displaying ferrofluid vertically comes with challenges.
To counteract gravity, the electromagnets must be able to change how much force they apply on the ferrofluid - a problem we can solve with pulse width modulation. Previously we’ve implemented PWM in software, which is seriously ineffective. We’ve already made a whole video on how we optimized this to work at all ( • Making our code run 45,000% faster - Fetch #7 ).
The main idea of our new PCB design is to move PWM away from the microcontroller, simplifying the code a ton. We achieve this by abusing LED drivers. LED drivers are a type of ICs that typically aren't meant to provide any logic-signals and are not rated to sink enough current for an electromagnet to turn on (each channel can typically sink around 20mA, where closer to 200mA is necessary for an electromagnet (rough numbers)). The only LED driver we found that could satisfy our needs was PCA9685. It can be set up in a totem pole configuration, which allows us to use it more as a GPIO expander with PWM capabilities than as an LED driver. This means we can daisy-chain the PCA9685 with a ULN2803 Darlington Transistor array – which, in turn, has the capacity to sink enough current for the magnets.
--------------
Twitter: / appliedproc
Facebook: / appliedproc
Instagram: / appliedprocrastination
--------------
Open Source files and project details:
Code:
Github repos:
https://github.com/AppliedProcrastina...
https://github.com/appliedprocrastina...
https://github.com/appliedprocrastina...
PCB files & more details:
Github repo: https://github.com/appliedprocrastina...
Instructables: https://www.instructables.com/Mesmeri...
Hackaday.io: https://hackaday.io/project/167056-fe...
Hackster.io: https://www.hackster.io/AppliedProc/f...
Arduino project hub: https://create.arduino.cc/projecthub/...
--------------
Credits:
Intro/Theme song:
Nicklas Myhre: / myhre.nicklas