Een analoge computer?

In tegenstelling tot een digitale computer die discrete binaire waarden manipuleert, verwerkt een analoge computer data die worden weergegeven door continue fysische grootheden, zoals elektrische spanningen of mechanische bewegingen. Analoge computers kunnen complexe differentiaalvergelijkingen oplossen en fysische systemen in realtime simuleren. Ze werden gebruikt in vroege ruimtevaart- en militaire toepassingen, waar ze hielpen om complexe dynamische systemen en controletheorieën te begrijpen.

De complexiteit, beperkte precisie en beperkte flexibiliteit van analoge computers maken ze moeilijk te gebruiken. Daarom zijn ze in de meeste toepassingen verdrongen door digitale computers. En dit is waar het in Berlijn gevestigde bedrijf Anabrid om de hoek komt kijken. Hun (zelfopgelegde) missie is om de analoge computer opnieuw te introduceren als aanvulling op de digitale computer om de wet van Moore in leven te houden, energie te besparen en de veiligheid te verbeteren. Een van hun middelen om hun missie te bereiken is The Analog Thing (afgekort THAT).

Een intrigerende gebruikersinterface (IUI)

The Analog Thing is een platte, rechthoekige (20 bij 24 cm) sandwich van twee witte printen (PCB's) met een hoogte van ongeveer 38 mm. De onderste print bevat alle elektronische componenten. De (dikke) bovenste print vormt de gebruikersinterface met intrigerende symbolen die in het zwart zijn opgedrukt. Ongeveer de helft van het oppervlak is gereserveerd voor een 17 × 10 patchpanel. Elk patchgat bevindt zich in het midden van een grafisch symbool: een cirkel, een ruit of een driehoek. Driehoeken zijn wit, cirkels zijn wit of zwart en ruiten zijn er in wit, zwart en half-wit/half-zwart (zie figuur 1).

user interface symbols
Figuur 1. Vreemde symbolen in zwart-wit die op het patchpanel zijn gedrukt, bieden een leidraad bij het programmeren van THAT.

Het patchpanel is onderverdeeld in 17 rekenelementen waarbij elk element een wiskundige functie voorstelt, zoals integrator (5×), vermenigvuldiger (2×), opteller (4×), inverter (4×) en comparator (2×). Er zijn ook acht coëfficiënten en vier ±1 constanten.

Onder het patchpanel zitten nog twee rijen gaten met condensatoren (5×), diodes (4×), zenerdiodes (2×) en vier signaaluitgangen.

Het patchpanel wordt van het bedieningspaneel gescheiden door de naam van het apparaat, die van links naar rechts in grote letters is afgedrukt. Het bedieningspaneel bestaat uit negen potentiometers (COEFF 1 tot 8 en OP-TIME) en twee draaischakelaars (COEFFECIENT en MODE). Er is ook een numerieke LCD-paneelmeter terwijl drie LED’s wat statusinformatie geven.

Aan de bovenkant van THAT vinden we alle aansluitingen: voeding (USB-C, alleen een kabel wordt meegeleverd, geen voeding), uitgangen (RCA, een stereokabel wordt meegeleverd) en verlenging (pinheaders, een 2 × 5 flatcable is meegeleverd).

Patchkabels

Net als digitale computers doet THAT niets zonder een programma. Het laden van software is echter geen kwestie van het aansluiten van een USB-stick of een microSD-kaart. Programmeren doet men door patchkabels met 2mm-banaanstekkers in de gaten van het patchpanel te steken. The Analog Thing wordt geleverd met 30 patchkabels in vijf kleuren.

Display niet inbegrepen

The Analog Thing produceert analoge signalen in de vorm van spanningen in het bereik van –1 V tot +1 V (de precisie van THAT is ongeveer 1%). Een signaal kan toegankelijk worden gemaakt op vier uitgangsconnectoren X, Y, Z en U. Om ze zichtbaar te maken is een oscilloscoop of een computer met geluidskaart (of andere analoge ingang) nodig. In veel gevallen wil men een XY(Z)-weergave, dus moet de oscilloscoop een XY(Z)-modus hebben. Voor optimale resultaten moeten deze ingangen DC-gekoppeld zijn. Daarom is een geluidskaart niet de beste optie.

THAT kan tot vier signalen uitvoeren, en dus is een vierkanaals oscilloscoop ideaal. Het is daarom een beetje jammer dat de uitgangsconnectoren RCA-typen zijn en geen BNC. Dit is waarschijnlijk gedaan om de kosten laag te houden en alles passend te maken. RCA/BNC-adapters worden niet meegeleverd.

De paneelmeter is een 3,5-cijferige (±1.999 counts) voltmeter (figuur 2). Voor zover ik kon vaststellen, kan deze echter niet worden aangesloten op signalen die door de rekenelementen van de unit worden geproduceerd. Hij wordt gebruikt om de waarden van de coëfficiënten weer te geven en om de uitvoeringssnelheid te tonen.

lcd panel meter
Figuur 2. De paneelmeter dient om de waarden van de coëfficiënten in te stellen, niet om de signalen van het analoge programma weer te geven.

Master/minion-keten

Een laatste opmerking voordat we ingaan op het programmeren van THAT is de uitbreidingsoptie. Als er meer rekenelementen nodig zijn dan er beschikbaar zijn op de THAT, is het mogelijk om een of meer units in serie te schakelen. De eerste zal de master zijn, terwijl de anderen de ‘minions’ zijn. Het aantal elementen in een keten is in theorie onbeperkt.

Terzijde: ik ben andere pogingen tegengekomen om het master/slave-paradigma uit de elektronica te verwijderen, maar nog nooit deze. Ook al vind ik het best aardig, ik weet niet zeker of ik het wel moet overnemen, omdat master en minion allebei met een ‘m’ beginnen. Op een SPI-bus bijvoorbeeld zouden MISO (Master In Slave Out) en MOSI (Master Out Slave In) allebei MOMI worden. Misschien master hernoemen naar ‘Gru’?* Dat zou GIMO & GOMI opleveren...

* Felonius Gru is de superschurk die weer een held wordt, geholpen door een leger gele volgelingen die populair zijn geworden door de “Despicable Me”-filmserie.

Wat kunnen we ermee doen?

Het programmeren van The Analog Thing gebeurt niet door vreemde commando’s in een terminal of teksteditor te typen, maar door kabels in het patchpanel te steken. Het is vergelijkbaar met visueel programmeren waarbij functionele blokken worden verbonden met virtuele draden.

Een analoog programma is een wiskundige uitdrukking die een dynamisch systeem beschrijft, dat wil zeggen een systeem dat in de tijd evolueert volgens bekende relaties. Om THAT iets nuttigs te laten doen, moet men dus eerst een geschikt wiskundig model bedenken. Dit alleen al maakt analoog rekenen bijna ontoegankelijk voor de meeste stervelingen. Geloof het of niet, maar differentiaalvergelijkingen zijn gewoon niet zo populair als Python of TikTok.

Voorbeeldprogramma’s

Om de gebruiker op weg te helpen met analoog programmeren op THAT, bevat de handleiding negen voorbeelden, van wiskundige rariteiten tot toepassingen uit de echte wereld. Elk voorbeeld legt uit welk model het implementeert, presenteert de wiskundige vergelijkingen en het bijbehorende signaal-stroomdiagram, het bekabelingsdiagram (de patch) en de te verwachten uitvoergrafiek.

Om een patch aan te brengen, sluit men de patchkabels aan op THAT volgens het bekabelingsschema. Voor degenen die oud genoeg zijn om dat gedaan te hebben: dit moet met dezelfde zorg gedaan worden als het kopiëren van een BASIC-programma uit een computertijdschrift in de jaren tachtig. Eén fout en het programma werkt niet. Het gevaar is hier niet zozeer om een kabel in het verkeerde gat te stoppen, aangezien de veelkleurige patchdiagrammen heel duidelijk zijn, maar om een kabel te vergeten. Het is niet eenvoudig om de spaghetti van patchkabels door te spitten om erachter te komen welke draad verkeerd is of ontbreekt (figuur 3).

analog thing figure 3
Figuur 3. Zoals het gezegde luidt: ‘chaos in, chaos uit’. Deze chaotische patchkabel-spaghetti implementeert een Lorentz attractor, de ‘Hello World!’ van de chaostheorie.

Instellen van de coëfficiënten

Nadat THAT is gepatcht, moet men de coëfficiënten instellen die in de patch worden gebruikt. Een coëfficiënt is gewoon een ‘volume’-potentiometer die zijn ingang heeft in de COEFF-sectie. Om de waarde van een coëfficiënt in te stellen, zet u de COEFFICIENT-schakelaar op het nummer van de coëfficiënt (1 tot 8) en de MODE-schakelaar op COEFF. Het LC-display toont nu de waarde van de coëfficiënt. U kunt deze aanpassen door aan de bijbehorende potentiometer te draaien. Precisie tot op drie decimalen is haalbaar (met wat geduld). Merk op hoe in het voorbeeld van de Lunar Landing twee coëfficiënten in serie worden gezet om een nog hogere precisie te krijgen.

Een analoog programma uitvoeren

Nu is het tijd om de patch uit te voeren. Draai hiervoor de MODE-schakelaar naar de OP-positie. De OP-LED gaat aan. Sluit een geschikt weergaveapparaat aan op de uitgangen van THAT. Het voorbeeld van de Lunar Landing heeft drie uitgangssignalen (X, Y en U), dus een driekanaals display zou het beste zijn.

In de OP-modus wordt de patch één keer uitgevoerd. In REP-modus wordt de patch herhaaldelijk uitgevoerd. REPF-modus herhaalt 100× sneller dan REP-modus. Merk op dat elke herhaling voorafgegaan wordt door een herstart van de patch, omdat de integratoren gereset moeten worden naar hun begintoestand. Dit maakt het ingewikkeld om een soepel herhalende patch te maken. Geïnteresseerden die THAT willen gebruiken in bijvoorbeeld muzikale toepassingen zijn waarschijnlijk beter af met continu evoluerende patches dan met herhalende patches.

Hallo, analoge wereld!

Het eerste voorbeeld uit de handleiding, Radioactive Decay, kan waarschijnlijk worden beschouwd als het equivalent van het ‘Hello World!’-voorbeeld in digitale computerprogrammering. Het implementeert een eerste-orde differentiaalvergelijking die welbekend is bij elektronicaliefhebbers, omdat deze ook van toepassing is op het ontladen van een condensator C via een weerstand R:

first order difference equation

Het voorbeeld gebruikt λ in plaats van 1/(RC) en V wordt N genoemd, maar dat verandert er niets aan.

De patch heeft zes draden nodig en werkt in REP-modus. De oscilloscoop toont een mooie exponentiële curve die radioactief verval voorstelt (of een condensator die zich via een weerstand ontlaadt, zie figuur 4). Potentiometer 1 regelt de amplitude, potentiometer 2 de steilheid.

analog thing figure 4
Figuur 4. De ‘Hello World!’ in analoog rekenen is de uitvoer van een eerste-orde differentiaalvergelijking. Let op het horizontale deel, dat wordt veroorzaakt door de initialisatie-sequentie.

Als tweede voorbeeld probeerde ik de Lorenz Attractor, gerelateerd aan het bekende vlindereffect (een minuscule verandering in een vroege systeemtoestand kan resulteren in enorme verschillen in latere toestanden). Deze complexe patch verbruikt 22 draden (zie figuur 3), en zes coëfficiënten moeten zorgvuldig één voor één worden aangepast. Een tweekanaals (analoge) oscilloscoop in XY-modus geeft de beste resultaten. Ik slaagde erin het programma zonder fouten te patchen en werd vervolgens gehypnotiseerd door de continu veranderende grafiek.

Voornamelijk een educatief hulpmiddel

De kwaliteit van The Analog Thing is uitstekend. Hij is mooi gemaakt en goed doordacht. De patchgaten, zij het eenvoudige vergulde gaten, zorgen voor een goed contact, zelfs met soms wiebelige banaanstekker-patchkabels. De uitlezingen op het LC-display zijn stabiel en de potentiometers draaien soepel.

Elektronica-ingenieurs kunnen zich aangetrokken voelen tot THAT omdat ze gewend zijn aan schakelingen met integratoren en andere rekenelementen die erop te vinden zijn. Het omzetten van een eenvoudig model in een patchdiagram moet voor bepaalde enthousiastelingen te doen zijn, maar hoe men de vergelijkingen van de Euler Spiral van voorbeeld 9.5 moet omzetten heeft wat meer uitleg nodig dan in het ‘First Steps’-boekje staat. Het willekeurig insteken van draden zal hoogstwaarschijnlijk resulteren in frustrerend vlakke uitgangen die clippen bij de min- of max-waarde.

Misschien wordt The Analog Thing op een dag wel de Arduino van de analoge computers, ondersteund door duizenden zelfgemaakte modellen en patchdiagrammen. De initiële voorwaarden voor een enorme populariteit zijn gezet. Net als Arduino is THAT open source en de ontwerpbestanden zijn te vinden op GitHub . Tot op dit moment is THAT echter vooral een educatief hulpmiddel en een curiositeit voor mensen die geïnteresseerd zijn in het spelen met wiskundige modellen. Hoe dan ook, wat men er ook mee doet, het is een geweldig gespreksonderwerp.