Ich habe etwas mit Elektronik gebastelt. Es ist lange her, daß ich so etwas zuletzt getan habe, vielleicht 1982, ich weiß es nicht genau. Danach hab ich nur noch hin und wieder mal was repariert – einen DVD-Player/Recorder zum Beispiel oder meinen Dual-Plattenspieler, den ich mal auf Kleinanzeigen defekt erworben hatte, dem ich drei Transistoren wechseln mußte, damit er nicht mehr leiert. Aber das ist etwas anderes als etwas zu bauen, ein elektronisches Gerät herzustellen, Bauelemente auf eine Leiterplatte zu löten, und danach ist etwas da, das voher nicht da war. So etwas habe ich etwa 1982 zuletzt gemacht. Vielleicht war es der NF-Verstärker, den ich im FEZ in der Wuhlheide im Rahmen eines Ferienkurses für Schüler zusammengelötet hatte. Der Verstärker hatte eine Ausgangsleistung von 5 Watt. Zum Einsatz kam der in der DDR produzierte Leistungsoperationsverstärker A210D, der mit seinem Kühlkörper zusammen mit den Beinchen wie eine Libelle oder ein merkwürdiges Insekt wirkte. Vielleicht war es aber auch der lichtgesteuerte Schalter, den ich für den Vater meines Kumpels Dirk gebastelt hatte, der bei Sonnenaufgang einen Motor ansteuerte, damit die Tür des Taubenschlages sich öffnete und die Tür sich bei Sonnenuntergang wieder verschloß. Das Ding hatte irgendwann den Geist aufgegeben und die Tür nicht mehr geöffnet, wonach die Tauben völlig durchgedreht sind, bis der Fehler bemerkt wurde. Vielleicht war es auch die Mopedhupe, die eine Melodie spielen konnte, realisiert mit 74LS-Bausteienen, die in der DDR nicht 74LS…, sondern D…irgendwas hießen. Zum Beispiel das Schieberegister 74LS195 hieß in der DDR einfach nur D195.
Und nun habe ich tatsächlich wieder etwas gebastelt, einen TTL-Taktgeber, der sich von 0,1 Hertz bis 9990 Hertz regeln läßt und zudem über einen Single-Step-Modus verfügt. Sicher könnte man das auch als App für ein Telefon programmieren und man müßte sich nur mit etwas Elektronik drum kümmern, daß der Output vom Kopfhörer in TTL-konforme Pegel gewandelt wird, und eigentlich ist das, was ich hier gebastelt habe, auch nur ein kleiner Computer, realisiert durch einen 8‑Bit-Microcontroller, im Prinzip nichts anderes als ein sehr leistungsschwaches Smartphone, das zur Ausgabe ein vierstelliges Siebensegmentdisplay und eine Leuchtdiode hat, und als Eingabe einen Drehgeber und einen Taster. Was das Teil am Ende macht, wird durch die draufgespielte Software bestimmt.
Hier der Schaltplan:
Der Microcontroller ist ein STC15W408AS, den es, soweit ich weiß, nur in China über Ali zu kaufen gibt für etwa 90 Cent pro Stück. Der Controller ist vom Befehlssatz kompatibel zum Intel 8051, hat 8 Kilobyte Flash-Speicher für Prgrammcode, 256 Byte RAM und noch 512 Byte “externen” RAM, der aber im Chip bereits integriert ist. Der RAM wird nur externer RAM genannt, weil er wie externer RAM angesprochen wird, so wie beim original 8051-Chip, an den man externen RAM anschließen mußte, um externen RAM zu haben,
Eine Besonderheit des Microcontrollers STC15W408AS ist der interne Taktgenerator, der ohne zusätzlichen Quarz betrieben werden kann. Er ist dann zwar nicht ganz so frequenzstabil wie mit Quarz, aber das spielt bei vielen Anwendungen in der Praxis kaum eine Rolle.
Außerdem ist eine serielle Schnittstelle (mit TTL-Pegeln) im Chip integriert, über die sich der Controller flashen läßt (ISP-Schnittstelle).
Programme lassen sich mit SDCC erstellen, und flashen läßt sich der Chip mit STCGAL, einem Open-Source-Programm.
Vom Hersteler selbst gibt es noch eine proprietäre Software zum Flashen, die aber nur unter Windows läuft. Das habe ich nicht ausprobiert.
So sieht meine zusammengelötete Platine von vorn aus:
Die acht Widerstände für das Siebensegmentdisplay sind in einem Widerstandsarray untergebracht (das schwarze Ding unter dem Display).
Das nächste Bild zeigt das Gehäuse, in das ich die Aussparung für das Siebensegmentdisplay gefeilt und ein Loch für die Leuchtdiode gebohrt habe. Dazu der Drehgeber und der Taster für den Single-Step-Modus, die über Drähte bereits mit der Platine verbunden sind.
Die vier Kleckse Heißkleber dienen dazu, die Schrauben zum Befestigen der Platine aufzunehmen.
So sieht das Gerät mit der eingesetzten Platine aus, wo nun auch die Rückseite mit dem STC15W408AS-Chip sichtbar ist:
Und hier nun das fertige Stück:
Die Drähte, die links aus dem Gehäuse kommen, dienen der Stromversorgung mit 5 Volt (lila ist Plus, schwarz ist Minus) und zum Abgreifen des TTL-Taktes (weißer Draht).
Wie man sieht, habe ich die Aussparung für das Siebensegmentdisplay recht ungenau ausgefeilt, was ich aber leicht kaschieren könnte, indem ich eine dunkelrote Folie über das Display klebe. Das hätte dazu den Vorteil, daß die nicht leuchtenden Ziffern nicht mehr sichtbar sind. Nur habe ich solch eine Folie nicht zur Hand, doch um zu demonstrieren, wie das aussehen könnte, hab ich hier mal ein Stück einer blauen Mülltüte drüber gelegt:
Wenn das Gerät eingeschaltet ist, leuchten die Ziffern durch die Mülltüte hindurch:
Viel schlimmer als die ungenau gefeilte Aussparung für das Siebensegmentdisplay ist, daß der linke Knopf zu weit links ist und der rechte auch zu weit links, also daß das unsymmetrisch aussieht. Den linken Knopf habe ich 15 Millimeter vom linken Rand der Schachtel eingebaut und den rechten Knopf 15 Millimeter vom rechten Rand. Weil ich fand, daß es nach dem Einbau unsymmetrisch aussah, habe ich noch einmal nachgemessen. Dabei kam heraus, daß der linke Knopf 14 Millimeter vom linken Rand entfernt ist und der rechte Knopf 16 Millimeter vom rechten Rand. Ich weiß nicht, wie das passieren konnte.
Aber eigentlich geht es ja nicht um das Aussehen. Wichtig ist die Funktionalität.
Wozu ist das Gerät denn nun gut?
Zunächst sollte man sich der Leuchtdiode erfreuen, die mit der eingestellten Frequenz blinkt. Man kann zuschauen und herausfinden, bis zu welcher Frequenz man noch in der Lage ist, das Blinken wahrzunehmen. Ich selbst komme bis 50 Hertz, im Augenwinkel seitlich betrachtet kann ich sogar noch bei knapp unter 60 Hertz ein Flimmern wahrnehmen.
In folgendem Filmchen stellen sich die Dinge jedoch anders dar, denn der Film wurde mit 30 Bildern pro Sekunde aufgenommen, womit die Leuchtdiode immer bei durch 30 teilbarer Frequenz nicht zu blinken scheint. Bei anderen Frequenzen zwischen 30 und 100 Hertz gibt es Interferenzen, die das Blinken mal schneller oder langsamer erscheinen lassen. Ab etwa 100 Hertz ist auch im Film kein Blinken oder Flimmern mehr auszumachen, denn dann geht die Leichtdiode pro Frame schon mehr als 3 mal an und aus.
Doch woher weiß ich, daß die Leuchtdiode, die mir bei 1000 Hertz nur durchgängig zu leuchten scheint, tatsächlich 1000 mal pro Sekunde an und ausgeht? Wie kann ich herausfinden, ob das tatsächlich so ist?
Ich könnte zum Beispiel einen Lautsprecher anschließen, dann müßte ich einen Ton von einem Kilohertz hören. Ich könnte aber auch mit einem Oszilloskop nachschauen, ob der Strom 1000 mal pro Sekunde an und ausgeschaltet wird.
Ich habe mich für letzteres entschieden und erhalte bei einer Frequenz von 1250 Hertz das Bild eines wunderschönen, sauberen Rechtecksignals mit einem Tastverhältnis von eins zu eins:
Bei 5000 Hertz allerdings erhalte ich ein Rechtecksignal mit einem Tastverhältnis von 2 zu 3, wobei sich die “Einphasen”, die hier die Länge 2 haben und die “Ausphasen” mit der Länge 3 alle 5 Sekunden abwechseln und dann die “Einphasen” die Länge 3 und die “Ausphasen” die Länge 2 haben.
Die Ursache dafür ist, daß die Leuchtdiode in einer Interruptroutine, die 25000 Mal pro Sekunde aufgerufen wird, gesteuert wird. Soll die Leuchtdiode mit 5000 Hertz blinken, müßte sie nach 2,5 Interrupts eingeschaltet und nach 2,5 Interrupts wieder ausgeschaltet werden, denn eine volle “Schwingung” entspricht 5 Interrupts (25000÷5000 = 5).
Da aber nicht nach 2,5 Interrupts umgeschaltet werden kann, wird nach 3 Interrupts und dann nach 2 Interrupts gewechselt.
Der wesentliche Teil der Interruptroutine sei hier kurz wiedergegeben. (Die Variable hertz enthält die Frequenz mal 10, bei 5000 Hertz also 50000. Die Konstante IRQFREQ ist 25000)
void irqhandler() __interrupt 1 { ... clkctr-=hertz<<1; if (clkctr<0){ clkctr+=IRQFREQ*10-1; FLASHLED_PIN=!FLASHLED_PIN; // switch LED TTLCLK_PIN=!TTLCLK_PIN; // switch TTL pin } ... }
Und wozu ist das ganze denn nun wirklich gut?
Genau dazu, wie schon gesagt. Es ist ein TTL-Taktgeber, der einen Takt mit einer Frequenz von 0,1 Hertz bis 9990 Hertz geben kann.
Wenn es mir nicht mehr gefällt, könnt ich das Gerät auch umprogrammieren. Ich könnte eine Stopuhr daraus machen oder einen Besucherzähler oder ein Computerspiel, bei dem man einzelne Segmente des Siebensegmentdisplays jagen muß, was auch immer.
Jetzt ist das Gerät aber ein TTL-Taktgeber für Frequenzen von 0,1 Hertz bis 9990 Hertz, und so gefällt mir das Gerät sehr gut.
2 Kommentare
Gefällt mir.
Mir auch.
Schreib einen Kommentar