FLIP Fluid op Flip Dots

Het werd gebouwd als een installatie voor EMF2026. Deze tekst richt zich hoofdzakelijk op de technische details.

Vloeistofsimulaties op flipdots

De afgelopen jaren heb ik allerlei vloeistofsimulaties gebouwd, hoewel ik hierover weinig video's heb gemaakt. Een gemeenschappelijk tekort van deze projecten is dat de "LED-vloeistof" volkomen stil is. Ik vroeg me af of ik het gesuis van vloeistof kon simuleren, waarna het me occurred dat een elektromechanisch display, zoals flipdots, dat geluid voor ons zou maken. Het besef dat dit ook een geweldige woordspeling zou opleveren, bezegelde de deal.

Flipdot-displays zijn echter extreem duur. Voor zover ik weet is er nog maar één fabrikant in het bestaan, en zij hebben exclusieve deals met een klein aantal kunststudio's. Breakfast Studio is waarschijnlijk de bekendste, maar zij zijn niet geïnteresseerd in gesprekken met iemand die een budget van minder dan $50.000 heeft.

Toevallig heb ik op een gegeven moment contractwerk gedaan voor een bedrijf dat een groot flipdot-display bezat. Ik probeerde hen te overtuigen mij ermee te laten spelen en bood zelfs aan mijn salaris op te offeren in ruil voor het plaatsen van een vloeistofsimulatie op hun display. Tot mijn verbazing wezen ze me af. Dat was het teken: ik zou het op de harde manier moeten doen.

De zoektocht naar panelen

Door rond te vragen, vooral op hackercamps, ontstonden er interessante gesprekken. Veel mensen zijn geïnteresseerd in flipdots. Er was zelfs sprake van het vormen van een collectief om nieuwe flipdot-panelen uit China te bestellen. De fabricage is echter verbazingwekkend ingewikkeld. Zelfs de schijfjes zelf zijn een sandwich van misschien wel zes verschillende materialen.

Het is niet zo eenvoudig als een spoel die een magnetisch onderdeel beweegt. De dots zijn non-volatiel, wat betekent dat ze hun positie behouden wanneer de stroom wordt uitgeschakeld. Er zijn twee permanente magneten (één in de dot, bovenaan, en één in de basis) en twee kernen die gepolariseerd kunnen worden om de status van de dot in te stellen.

Uiteindelijk kwam ik in contact met Sam (ook bekend als Look Mum No Computer). Zijn museum voor verouderde technologie heeft hem in de bevoorrechte positie gebracht dat hij af en toe coole donaties van vreemde oude tech ontvangt, en een van deze donaties was een enorme stapel oude flipdot-displays. Veel van hen waren in slechte staat, maar Sam was blij me een paar panelen te laten hebben, met de belofte van meer als ik een goede manier zou vinden om ze aan te sturen.

Een van de panelen had een resolutie van 13 bij 28. De dots op dit paneel waren gefabriceerd in groepen van zeven, waar de 28 vandaan komt. De 13 is waarschijnlijk het resultaat van de affiniteit van de ontwerper voor priemgetallen.

De dots verbinden

De panelen hebben twee grote problemen:

  1. De printplaat steekt over de randen uit, waardoor ze niet naadloos naast elkaar kunnen worden geplaatst.
  2. De bestaande aansturingscircuits zijn erg traag en doen er ongeveer een seconde over om het display bij te werken. Het hele paneel is bedraad als één grote matrix.

Uit onderzoek naar hoe de dots werken, bleek dat hoewel het ongeveer 60 milliseconden duurt voordat een dot omklapt, er slechts een zeer korte puls nodig is om de kernen te polariseren, maximaal een milliseconde.

De matrix-aanpak

De matrix-layout werkt als volgt: om de eerste dot in te stellen, zet je de eerste kolom hoog of laag en geef je vervolgens een puls op de relevante rijlijn.

Het zou mogelijk zijn om een snellere matrix te bouwen door alle dots in de kolom in slechts twee stappen te pulseren. Als de pulsen één milliseconde duren, zouden we potentieel alle 28 kolommen in slechts 56 milliseconden kunnen bijwerken.

Dit brengt echter twee problemen met zich mee:

  • Stroomverbruik: Elke spoel heeft een weerstand van ongeveer 18 ohm (666mA bij 12V). Voor snellere pulsen bij 15V, 20V of 24V kan dit oplopen tot meer dan een ampère per spoel. Een circuit dat 13 ampères per kolom kan leveren is lastig te bouwen.
  • Visuele artefacten: Als dots niet synchroon omklappen, ontstaat er een visuele glitch (een soort schaakbordpatroon) terwijl de matrix wordt bijgewerkt.

Het desolderen van alle dots en het monteren op nieuwe printplaten zou te veel tijd kosten en riskant zijn vanwege de delicate magnetische draden en het smeltbare plastic.

Circuitontwerp en iteraties

De H-brug oplossing

Een alternatief was om een nieuwe printplaat direct op de achterkant van de bestaande platen te solderen. Er zijn goedkope H-brugchips (zoals de MX6208, BE6208, en LK6208) die ontworpen zijn voor kleine elektromotoren. Deze zijn SOIC-8 en geschikt voor 0,5A continu, wat voldoende is voor onze pulsen. Het nadeel is dat alle kolomsporen op de bestaande PCB moeten worden doorgesneden om interferentie te voorkomen.

De serie-condensator techniek

Een andere techniek maakt gebruik van een serie-condensator. Het voordeel is dat je geen volledige H-brug per dot nodig hebt, maar slechts een half-brug. Wanneer de brug hoog gaat, wordt er een puls door de condensator gestuurd die de dot omklapt. De condensator blijft dan opgeladen totdat de brug hem weer laag trekt, wat een inverse puls creëert die de dot terugklapt.

Ik zocht naar een kleine, goedkope half-brug. Gate-drivers waren te duur. Sommige shift-registers hebben ingebouwde output-FET's, maar die konden niet genoeg stroom leveren.

Uiteindelijk ontdekte ik dat ik de goedkope H-brugchips in een "single-ended" modus kon gebruiken door één van de uitgangen te negeren. Door de signalen specifiek aan te sturen (bijv. AIN hoog houden en het signaal naar BIN sturen), kon de output correct schakelen.

Door deze methode te combineren met een serie-condensator kon ik acht dots aansturen vanaf één shift-register, wat de hoeveelheid data en het aantal registers halveerde.

Een belangrijk punt was de keuze van de condensator. Grote keramische condensatoren pasten niet op de PCB. Na tests concludeerde ik dat twee 10µF condensatoren in parallel (in 0805-behuizing) voldoende zouden zijn.

Ontwikkeling in KiCad

De flipdot-panelen hebben een pin-pitch van 15,24 mm. Omdat KiCad niet erg goed is in repetitieve ontwerpen, moest ik worstelen met annotaties. Ik heb uiteindelijk een oplossing gevonden met een hiërarchisch schema: één bestand dat één rij dots beschrijft, en een hoofdbestand dat kopieën van die rij koppelt.

Voor de fysieke voorbereiding maakte ik een 3D-geprinte geleider voor een Dremel met een diamantschijf, zodat ik de oude aansturingselementen efficiënt kon wegsnijden.

Eerste resultaten en problemen

De eerste resultaten waren wisselend. Individuele dots klappen wel om, maar wanneer alle dots tegelijk worden omgeklapt, zakt de spanning van de voeding weg. In plaats van de kernen te polariseren, worden ze gedemagnetiseerd en gaan de dots "slap" hangen.

Daarnaast trokken de ingangen van de H-brugchips aanzienlijk veel stroom (omdat het BJT's zijn en geen CMOS). Een simpele GPIO-pin kon dit niet aan, dus ik heb een P-kanaal mosfet (FDN338P) toegevoegd om de stroom te versterken.

De tweede circuitversie

Zes maanden later kwam ik terug naar het project. De stroomproblemen werden opgelost door het circuit te voorzien van een grote hoeveelheid elektrolytische condensatoren. Deze presteerden bovendien beter als serie-condensator voor de dots dan de keramische varianten.

Ik ontwierp een nieuwe PCB met:

  • 47µF condensatoren.
  • Een 3,3V regulator.
  • Testpads aan de rand om panelen in een keten te plaatsen (daisy-chaining) zonder kabels.
  • Een polyfuse op de 12V-lijn voor veiligheid.

Ik monteerde de panelen op laser-gesneden multiplex platen met messing afstandhouders. Omdat de panelen erg fragiel zijn, maakte de montage op multiplex het werken veel makkelijker.

Mechanische constructie en framework

Het prototype bestond uit twee panelen (resolutie 28x26). Voor een grotere installatie had ik acht panelen nodig. Ik overwoog verschillende montagemethoden:

  • Een gimbal voor interactie (te complex/duur).
  • Een tafel met variabele pootlengtes (Stewart platform).
  • Ophangen aan een touw (gevaarlijk).
  • Monteren op een grote elastische gymbal (een "Gym ball").

Uiteindelijk koos ik voor een stevig frame van multiplex. Omdat het multiplex krom was, moest ik het met stukken schrootijzer platdrukken tijdens het lasersnijden. Ik voegde M8-montageplaten toe in een VESA-patroon, zodat het paneel op een standaard televisiewandbeugel geplaatst kon worden.

Decoder-boards en communicatie

Voor de aansturing van acht panelen is RS485 gekozen vanwege de robuustheid tegen ruis, wat essentieel is bij duizenden pulserende spoelen.

Elk board heeft een eigen ID via een DIP-switch. De data bestaat uit een header, een blok pixeldata en een footer. Alle boards ontvangen alle data, maar pas bij de footer worden de shift-registers gelockt (latched). Dit zorgt voor perfecte synchronisatie tussen de panelen.

De decoder-boards worden gevoed via 3,3V regulators op de panelen. Om te voorkomen dat de dots demagnetiseren bij een spanningsval, is er een low-voltage cutout ingebouwd: er wordt niet gepulst als de spanning onder de 9V zakt.

Voeding

Voor de stroomvoorziening zijn 3S LiPo-batterijen met XT60-connectoren gebruikt voor tests. Voor de definitieve installatie is er een 12V 40A voeding gebruikt, ingesteld op 13V voor betere prestaties.

Om het geluid van de flipdots niet te overstemmen, heb ik de standaard ventilator van de voeding vervangen door een Noctua-ventilator, die aanzienlijk stiller is.

De Joystick

Omdat bijna alle arcade-joysticks digitale D-pads zijn, was het vinden van een analoge joystick lastig. Uiteindelijk vond ik een potentiometer-gebaseerde joystick van het merk SJ@JX op Aliexpress.

De joystick is aangesloten op een eigen microcontroller (CH32V003) die de analoge waarden digitaliseert en via UART naar het moederbord stuurt. Om ruis te voorkomen, wordt de voeding voor de potentiometers via een eigen regulator op 3V gestabiliseerd.

Moederbord en stroombus

Het hart van de installatie is een STM32H7R3, die op 600MHz draait. Het bord bevat:

  • Een buck-converter voor de 5V voeding.
  • Een MAX485-chip voor de communicatie met de panelen.
  • Een accelerometer voor het detecteren van de rotatie van het paneel.
  • Een BOOT0-schakelaar voor eenvoudiger debuggen.

De stroomverdeling is gerealiseerd met Wago-klemmen, wat flexibel is en veilig bij hoge stromen.

Logo en finishing touches

Als laatste is er een logo toegevoegd van laser-gesneden multiplex (zilver op zwart). Er is een gelamineerd label geplaatst om uit te leggen waar de joystick voor dient. De gehele constructie is geplaatst op een industrieel speakerstatief.

Het evenement (EMF2026)

De installatie werd geplaatst in de "lounge" tent van EMF, de enige plek waar het stil genoeg was om het mechanische klikken van de dots te horen.

Tijdens het event bleek het erg warm, waardoor ik ter plekke server-ventilatoren uit de swap-shop heb toegevoegd om de voeding en de coils te koelen. De installatie draaide vier dagen lang zonder fouten. De vloeistofsimulatie reageerde intuïtief op de joystick, en wanneer de joystick een uur niet werd aangeraakt, verspreidde de vloeistof zich langzaam in een nul-zwaartekracht patroon.

Conclusie

De totale kosten voor het grote paneel (exclusief donor-onderdelen en tijd) waren minder dan £500, wat neerkomt op ongeveer £0,17 per dot. Dit verklaart waarom commerciële oplossingen zoveel duurder zijn; de hoeveelheid handmatig soldeerwerk is enorm.

Toekomstige ideeën voor dit paneel zijn:

  • Het gebruiken als "core-memory" waarbij de status van de dots uitgelezen kan worden.
  • Het bouwen van een flipdot-arcadekast met games zoals Tetris of Snake.