Google Analytics

30 oktober 2021

Bouw: Een LED Nixie klok

Deze keer een klein bouwproject die al enige tijd op het schap stond: De LED-Nixie-M klok van de website diamex.de, tegenwoordig te verkrijgen op ledgenial.de

Het is een 6 cijferige klok waarbij plexiglas plaatjes met behulp van leds aan de onderkant worden belicht zodat de juiste cijfers oplichten en daarmee de tijd of datum vormen. Het doel hierbij is om het op een Nixie klok te laten lijken.

De Nixie klok

Bij een Nixie klok worden Nixie buisjes gebruikt. Dit zijn glazen buisjes gevuld met een Neon gasmengsel. In deze buisjes zitten van metaal gevormde cijfers 0 t/m 9. Als er een hoge spanning van ongeveer 170 volt op zo'n metalen cijfer wordt gezet dan licht het neon rond het metaal op en worden de cijfers zichtbaar.

Dit is een display techniek uit de jaren '70 vooral gebruikt in calculators en meetapparatuur. led en LCD waren nog niet gangbaar en op grote schaal aanwezig. Ze waren in allerlei formaten en uitvoeringen verkrijgbaar. In de jaren '80 is de productie van Nixie buisjes gestopt, ze zijn dus alleen nog tweedehands verkrijgbaar.

Een in 2016 gebouwde Nixie klok met 4x Z566M (filter verwijderd) en 2x Z5730M buisjes.

De LED Nixie

Niets kan natuurlijk aan een echte Nixie klok tippen maar gezien de hoge prijzen van de Nixie buisjes tegenwoordig, is de led oplossing van dit bouwpakket een leuke alternatieve benadering.

De LED-Nixie-M klok van Diamex bestaat uit 6 modules (printplaatjes) die op een blok zijn geschroefd. In dit blok zitten rechthoekige uitsparingen waar de plexiglas plaatjes ingestoken kunnen worden en die vanuit het printplaatje eronder worden belicht.

Links het blok met de printplaatjes aan de onderkant en rechts
de led controller met een draaiwiel die ook kan worden ingedrukt.

De Plexiglas plaatjes voor de cijfers 0 en 1

Elk cijfer bestaat uit 10 Plexiglas plaatjes die per cijfer worden belicht met twee meerkleuren leds per plaatje. In totaal zijn er dus 120 leds aanwezig.


De Cronios-ESP controller is in staat om maximaal 256 leds aan te sturen.

Elke led module heeft drie in- en uitgangen die aan de onderkant met elkaar worden doorverbonden. Ik gebruik hiervoor bewaarde restanten draadjes die zijn afgeknipt van weerstanden.


De +5V, Data en Massa (GND) worden doorverbonden.

Nu kunnen de 60 Plexiglas plaatjes in de juiste volgorde worden geplaatst, maar eerst moet aan beide zijden het beschermende folie (in totaal 120 stuks!) worden verwijderd. Dit gaat vrij lastig. Waarschuwing: dit kost minimaal 1 nagel...

Om vinger afdrukken op de plaatjes te voorkomen
wordt met handschoenen gewerkt

De controller wordt op de led Nixie aangesloten en via een mini USB kabel van 5V voorzien. Via het controller wiel kan de datum en tijd worden ingesteld evenals de helderheid, kleur, alarm, speciale functies, etc.


Al met al wel veel werk maar zeker niet moeilijk, dus heel geschikt voor de beginnende elektronicus.

22 oktober 2021

Toepassing: Een computer op een liniaal

Wie kent ze niet, de goedkope printplaatjes (PCB rulers) in de vorm van een liniaal, met opdruk van componenten afmetingen, elektronica symbolen en informatie.


Waarom eigenlijk geen echte elektronica op dit soort liniaaltjes? Dat moet Bradley Slattery van Bradsprojects hebben gedacht voorafgaand aan de ontwikkeling van de Digirule.

De Digirule1 en 1A

De eerste Digirule was een interactieve "binaire" liniaal bedoeld om vertrouwd te raken met de werking van digitale elektronica, zoals logische poorten, flipflops, tellers, etc.
Met behulp van een op de liniaal aanwezige CR2032 batterij en een PIC18F45K20 microcontroller kunnen met behulp van 9 drukknoppen en 32 leds de werking van 7 logische poorten, 4 typen Flipflops en een 4 bit Teller worden gedemonstreerd.

Let op de juiste manier van het plaatsen van de batterij (zie beschrijving) anders kan de batterijhouder worden beschadigd.



Een grappig detail is dat de cm en inch waarden op de liniaal als binaire waarden zijn opgedrukt. Op de achterkant staat informatie over de logische poorten, Flipflops en andere zaken.

Via een ingebouwde "verborgen functie" zitten er ook nog eens 8 extra functies in, zoals een Gray teller, schuifregister, dobbelsteen, spelletje, etc.

De verborgen functies zijn als volgt op te roepen:
  • Zet de Digirule uit door middel van de schakelaar. 
  • Houd Knop A ingedrukt terwijl de DigiRule wordt aangezet totdat led B begint te knipperen. 
  • Selecteer met de "Up" en "Down" knoppen van de 4bit Counter de gewenste functie uit de tabel hieronder en druk op knop B.
Een tweede manier (zonder de liniaal uit en aan te hoeven zetten) is de volgende:
  • Houd de knoppen A en B tegelijk ingedrukt totdat alle leds gaan knipperen (Reset)
  • Druk meteen daarna knop A in.
Keuze Functie Opmerking
0001 Normale modus Standaard functionaliteit.
0010 Gray teller Zie Wikipedia voor uitleg.
0011 Flitsende LED' De snelheid kan worden ingesteld met de up/down knoppen.
0100 7 bit schuifregister Ingang te besturen met de knoppen A en B.
0101 Led test Alle leds lichten op.
0110 Persistence of Vision display Beweeg de liniaal snel in horizontale beweging heen en weer, je ziet dan tekst, smiley, etc.
0111 Dobbelsteen Het willekeurige getal 1 - 6 verschijnt als binaire waarde op de "Counter" leds.
1000 Spelletje "Catch the XOR" Druk op knop B zodra de XOR led oplicht. Als het raak is wordt de score verhoogd op de "Counter" leds en wordt de snelheid verhoogd. 1x mis en de teller gaat weer naar 0.
1001 4 bit logica unit Selecteer een functie met de "Logic Gates" knoppen, voer een combinatie van 4x 1 en 0 in via de up/down knoppen, druk op de A knop om de 1e 4 bits te bewaren, herhaal dit met de 2e combinatie en bewaar deze met knop B. Het resultaat verschijnt nu op de Flipflop selectie leds.

De 1A versie is een licht verbeterde versie met een betere kwaliteit drukknopjes en verbeterde firmware. Helaas zijn deze linialen niet meer leverbaar. Voor meer details en instructie video zie Tindie.

De Digirule2, 2A en 2U

Een 8 bits programmeerbare computer op een liniaal ! Hier zijn inmiddels 3 versies van uitgebracht. De eerste versie 2 uitgebracht in 2018 is evenals de Digirule 1 uitgevoerd met een PIC18F45K20 microcontroller. Deze bevat 33 instructies die met behulp van 8 invoer knoppen en 8 leds kunnen worden ingevoerd / weergegeven. Per programma is er ruimte voor 256 bytes geheugen en er kunnen 8 programma's worden opgeslagen (8 bit data en adres) Ook het adres wordt weergegeven met 8 leds.

De in 2019 vernieuwde Digirule2A is uitgebreid met 2 extra instructies en de Run / Stop leds zijn onder de knop geplaatst in plaats van er boven. Voor de rest is deze identiek aan de Digirule2.


De Digirule 2A

In 2020 verscheen de Digirule2U met maar liefst 54 instructies, een USB C aansluiting en een ingebouwde seriële debug monitor en assembler. Deze liniaal is uitgerust met een PIC18F46K20 microcontroller. Deze beschikt ten opzichte van de vorige controller over een dubbele hoeveelheid Flash en RAM geheugen (64kB / 3kB).
De mogelijkheden van deze 24 Euro kostende liniaal zijn vergelijkbaar met computers uit de jaren '70 zoals de Kenbak-1 ($750 bij de introductie in 1971), de 
Altair 8800 ($650 in 1975) of de Imsai 8080 ($440 als bouwpakket, eind 1975).


De Digirule 2U

De Digirule2U is prima te combineren met de Video Terminal emulator uit mijn vorige BLOG via de Rx en Tx op de Expansion Port, maar aansluiten op een PC met een USB C kabel en een terminal emulator kan natuurlijk ook.

Alle software en handleidingen zijn te downloaden op github.com 
Momenteel (oktober 2021) is alleen nog de Digirule2U leverbaar via Tindie. 

De linialen in actie

14 oktober 2021

Bouw: ASCII video terminal

Een Arduino Uno is een kleine computer die heel geschikt is voor aansturing en uitlezing van allerlei elektronische componenten, bij voorbeeld LED's, schakelaars, sensoren, stappen motoren, etc. 

Wat er -in tegenstelling tot een Raspberry PI- niet standaard op zit, zijn aansluitingen voor een beeldscherm en een toetsenbord. In sommige projecten is daar wel eens behoefte aan en Geoff's Projects heeft daar een leuke oplossing voor bedacht in de vorm van een bouwpakketje. Dit pakket is o.a. te bestellen bij BudgeTronics.eu.

Het betreft een bouwpakket voor een ASCII video terminal. In de jaren 70 werden terminals gebruikt bestaande uit een toetsenbord en beeldscherm waarvan een aantal op een grote centrale computer (mainframe) werden aangesloten. Deze terminals beschikten over een seriële RS-232 poort voor de communicatie en bevatte de hardware en geheugen voor het weergeven van ASCII tekst (25 regels van 80 tekens) en het uitsturen van het toetsenbord. Zelf heb ik nog een tijd een ADM-3A terminal in bezit gehad.

 
ADM-3A terminal © Sudo Null

Al met al een hele grote bak met elektronica en zoals de foto hieronder laat zien kan dit tegenwoordig veel compacter. Het bouwpakket bevat een printplaat niet groter dan een credit card. 

Op bovenstaande foto zijn de vier connectoren inmiddels al gesoldeerd en volgt nu de rest van de onderdelen.

Alles is nu gesoldeerd en de flux is verwijderd met IPA.

Het hart wordt gevormd door de al voorgeprogrammeerde PIC32MX250F128B IC links in het midden. Dit IC doet eigenlijk alles, het genereren van het VGA signaal, inlezen van een PS/2 toetsenbord en de seriële communicatie (RS-232 op TTL niveau).

Van links naar rechts: de VGA connector, de video output connector en de PS/2 toetsenbord connector.

Aan de achterkant links de aansluitingen voor de 3.3V voeding (afkomstig van de Arduino) en  de seriële transmit (TX) en receive (RX) en rechts een USB B aansluiting voor een externe 5V voeding die eventueel gebruikt kan worden in plaats van de 3.3V.

We sluiten een scherm en toetsenbord aan op de ASCII video terminal en verbinden de 3.3V en GND met de corresponderende aansluitingen op de Arduino. De TX van de terminal wordt verbonden met de RX (Pin 0) op de Arduino en de RX van de terminal met de TX (Pin 1).

Voor de Arduino heb ik voor de gelegenheid een CLI (Command Line Interface) programma geschreven die fungeert als een computer met een heel beperkte set commando's.

Eenmaal aangesloten blijkt er geen beeld op de VGA monitor te zijn. Na bestudering van het schema blijkt dat ik op de bovenkant van de printplaat nog een keus had moet maken voor de tekst kleur door een soldeerbrug aan te brengen. Ik kies voor groen omdat dat op de terminals in de jaren 70 ook gebruikelijk was.


Het werkt: de tekst wordt weergegeven op het VGA scherm en de via het toetsenbord gegeven commando's worden door de Arduino verwerkt.
De ASCII video terminal ondersteund de VT52 en VT100 terminal "escape codes" waarmee speciale commando's kunnen worden gegeven.

Een leuk detail is dat er ook escape codes zijn ingebouwd voor het tekenen van rechthoeken, lijnen en cirkels, iets waar de VT52 en VT100 terminals uit de jaren 70 niet over beschikten.

12 oktober 2021

Toepassing: C64 / C128 Userport breakout

Een van de minst gebruikte aansluitingen op de C64 / C128 is de zogenaamde Userport. Dit komt voornamelijk doordat er in de jaren 80 maar weinig commerciële toepassingen voor de Userport beschikbaar waren.

Denkbare toepassingen zijn onder andere een Centronics parallelle interface, een RS-232 seriële interface (bij voorbeeld voor gebruik van een modem) of aansturing/uitlezen van externe apparatuur. Ook zijn er tegenwoordig moderne hardware toepassingen te vinden zoals een Wifi modem of een USB interface.

Op de 24 polige userport connector zijn 8 datalijnen beschikbaar die als ingang of uitgang kunnen worden geprogrammeerd alsmede 2 seriële poorten, 2 tellers en een aantal in/uitgangen ten behoeve van besturing zoals bijvoorbeeld handshake signalen.

1
2
3
4
5
6
7
8
9
10
11
12
Massa
+5V
Reset
Teller1
SP1
Teller2
SP2
PC2
Serieel ATN  
9V AC
9V AC
Massa
A
B
C
D
E
F
H
J
K
L
M
N
Massa
Flag2
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PA2
Massa

Een 24 polige "edge connector" uit de 805 serie is nodig om deze aan te kunnen sluiten op de Commodore Userport. De onderlinge afstand tussen de contacten bij deze connector bedraagt 3.96 mm.

In deze Blog beschrijf ik een zogenaamde "breakout" printplaat van Syzygy Phobos te verkrijgen via tindie.com. Deze printplaat beschikt over de 805 connector en maakt een vertaling naar een (naar keuze) male of female header connector.

De header connector dient zelf gesoldeerd te worden.


De printplaat bevat tevens een reset knop, waarmee een soft reset op de Commodore kan worden uitgevoerd. Op de header connector kunnen Dupont jumper draden of Dupont connectoren worden aangesloten, bij voorbeeld naar een Breadboard om schakelingen uit te testen.


Als test heb ik 8 leds aangesloten op PB0 t/m PB7 met een 1 kOhm weerstand in serie.
De maximale stroom die de +5V aansluiting kan leveren is 100 mA. Wees voorzichtig met de aansluitingen want overbelasting en kortsluiting kan het 6526 IC in de Commodore beschadigen.

Hieronder volgt een BASIC programma, die de leds afwisselend laat oplichten, zoals bij de auto Kitt uit de televisie serie Knightrider.

10 POKE 56579,255
20 I=1
30 FOR J=1 TO 8
40 POKE 56577,I
50 I=I*2
60 FOR K=1 TO 30:NEXT
70 NEXT
80 I=64
90 FOR J=1 TO 7
100 POKE 56577,I
110 I=I/2
120 FOR K=1 TO 30:NEXT
130 NEXT
140 GOTO 20

29 september 2021

Bouw: PI1541 floppy drive emulator

In deze Blog beschrijf ik de bouw van de PI1541 floppy drive emulator met behulp van een de PI1541 print die op een Raspberry PI 3 gestoken kan worden. Met deze hardware en bijbehorende software wordt een VIC-1541 floppy drive exact geëmuleerd.

Als eerste voorzie ik de Raspberry Pi van koelblokjes omdat de IC's bij langdurig gebruik vrij heet kunnen worden. Zo'n koelset, bestaande uit 3 precies passende koelblokjes en voorzien van 3M thermisch geleidende plakfolie, kan bv. besteld worden bij Reichelt.

Hierboven zie je de Raspberry PI 3 met twee koelblokjes geplaatst aan de bovenkant van de print en één aan de onderkant.

De PI1541 is een IO adapter die op de 40 polige GPIO connector van de Raspberry PI kan worden aangesloten.

Aan de voorkant zitten twee DIN aansluitingen: 1 om aan te sluiten op de Commodore computer en de andere om een tweede floppy drive of printer door te lussen. Aan de zijkant zitten 5 knoppen die gebruikt worden om door de bestanden te navigeren die op de SD kaart aanwezig zijn.

Op de PI1541 zien we linksboven een jumper t.b.v. aan- uitschakelen van de ronde speaker eronder die de originele floppy drive geluiden nabootst. Daarnaast zit een aansluiting voor een externe speaker. Verder een rode en groene led voor de power en de disk activiteit. Voor de interface is een 74LS08 IC aanwezig (4 voudige AND gate) en het blauwe opsteekprintje is een bi- directionele level converter tussen de 5V van de Commodore en de 3.3V van de Raspberry PI. Rest nog een resetknop en in het midden een 4polige connector t.b.v. een 0.96 inch OLED scherm. Hierdoor is de module ook zonder beeldscherm te gebruiken. 

De PI1541 wordt op de Raspberry PI geplaatst zoals op de foto hieronder.

De PI1541 software wordt op de Micro SD kaart gezet zoals beschreven op: https://cbm-pi1541.firebaseapp.com/

Nu kan het geheel worden getest, mijn PI1541 blijkt te werken met uitzondering van het OLED display. Er is wel beeld via de HDMI uitgang van de Raspberry PI. Dit bleek twee oorzaken te hebben. De eerste was een fout in het configuratiebestand options.txt. Hieronder staat een gedeelte hiervan. De geel gemarkeerde instellingen zijn van belang voor het gebruikte OLED display en de aansluitingen van de PI1541 op de Raspberry PI.

// If you are using a LCD screen then specify it here
LCDName = ssd1306_128x64
//LCDName = ssd1306_128x32
//LCDName = sh1106_128x64
// If you are using a LCD screen and you would like PageUp and PageDown keys to work with it (rather than the HDMI screen) then specify this option
//KeyboardBrowseLCDScreen = 1
// change startup logo on oled - 1541ii or 1541classic
//LcdLogoName = 1541ii
LcdLogoName = 1541classic
//LcdLogoName = customfile.raw
// If you are using I2C LCD you can optionally change what pins it is connected to.
// (defaults to 0 for non-split lines (Option A) or 1 for split lines (Option B))
//i2cBusMaster = 0 //SDA - pin 27 SCL - pin 28
i2cBusMaster = 1 //SDA - pin 3 SCL - pin 5
i2cLcdAddress = 60 // I2C display address in decimal and shifted. 60 == 0x78, 61 == 0x7A

Ik heb de PI1541 printsporen van het OLED display voor de data (SDA) en de clock (SCL) gevolgd en deze kwamen uit op GPIO pin 3 en 5. In de configuratie stond i2cBusMaster default op 0 dus op pin 27 en 29. Aanpassing van deze instelling hielp echter niet.
Daarna heb ik het I2C adres van het OLED scherm bepaald m.b.v. een proefopstelling met een Arduino Nano waarbij ik de I2C uitgangen heb verbonden met het OLED display. Ik heb software gemaakt en geladen die alle I2C adressen scant en bij een reactie van het display het gevonden adres toont. Dit adres bleek te kloppen.

Tijdens de inspectie van de PI1541 print zag ik dat de soldeerbruggen aan de onderkant van de print waren gesoldeerd voor Bus 1 i.p.v. Bus 0. Nadat ik deze had aangepast werkte het OLED display.

Nu kan het geheel (m.u.v. het OLED display) worden ingebouwd in een 3D geprint kastje. Als laatste wordt het OLED display bovenop het kastje aangesloten en wordt nog een afdekkapje geplaatst.

Het opstart logo

Bestandsselectie d.m.v. de drukknoppen

De complete PI1541 in een 3D geprinte omhulling klaar voor gebruik

28 september 2021

Toepassing: SD2IEC floppy drive emulator

Oude Commodore computers zijn nog steeds populair en daarom vinden er ook moderne hardware ontwikkelingen plaats zoals oplossingen om programma's te laden via een SD kaart in plaats van de oude tape- of floppy drive.

In deze Blog beschrijf ik de SD2IEC oplossing van The Future Was 8 bit (TFW8b)

In de afkoring hierboven verwijst "SD" naar de Secure Digital geheugenkaart, "2" naar "to" en IEC naar International Electrotechnical Commission. Dit is een standaard die gebruikt is voor de seriële IEEE-488 bus die op de Commodore computers is toegepast voor floppy drives en printers.


Aan de voorkant is een sleuf aanwezig waar een full size SD geheugenkaart in past.

Aan de bovenkant zijn drie knoppen aanwezig waarvan 2 transparant met een rode en groene led die net als op een 1541 floppy drive de Power-on en diskactiviteit laat zien. De knoppen (vlnr) zijn voor "volgend bestand", "vorig bestand" en "reset" die ook meteen de hoofdmap selecteert. Als het volgend/vorig bestand een diskimage betreft kan hiermee een floppy wissel worden nagebootst.

Er zijn twee aansluitingen aanwezig, de blauwe connector wordt aangesloten op de cassettepoort (let daarbij op dat de markering "TOP" aan de bovenkant zit). Deze connector  levert de 5V voedingsspanning. Per ongeluk omgekeerd aansluiten levert geen schade op aan de Commodore computer. De andere aansluiting is de IEC DIN plug die in de floppy drive aansluiting wordt gestoken.

De software die op de SD moet worden geplaatst is te downloaden op thefuturewas8bit.com Als je er voor zorgt dat je op het geheugenkaartje als eerste bestand de filebrowser (fb) zet dan kun je deze direct laden en starten met LOAD"*",8:RUN
Je kunt nu op de Commodore met de pijltjes toetsen tussen bestanden en mappen navigeren en met een druk op de RETURN toets wordt het betreffende programma of disk image geladen.

Ook ondersteund deze SD2IEC oplossing diverse speed loaders zoals de al in een eerder blog beschreven JiffyDos en ook Geos, Final Cartridge III, Exos, Turbodisk, Epyx fastload, Speeddisk en Dreamload. Zie ook de sd2iec-info voor meer informatie.

Het standaard device nummer is 8. Aangezien deze al in gebruik is voor de VIC-1541 floppy drive, geven we deze nummer 9 m.b.v. het volgende commando:

OPEN 15,8,15:PRINT#15,"U0>"+CHR$(9):CLOSE 15

Deze wijziging kan nu permanent worden opgeslagen in het EEPROM geheugen m.b.v.:

OPEN 15,9,15:PRINT#15,"XW":CLOSE 15

Nu kunnen beide "floppy" drives naast elkaar worden gebruikt.