Die Röhre
D7-16 GJ
Als Röhre habe ich mich für die D7-16 GJ entschieden, was unterschiedliche Gründe hat: Sowohl die Röhre als auch ihr Datenblatt sind leicht zu beschaffen; die D7-16 hat eine schön kurze Bauform (≈16cm), ist preiswert, einfach anzusteuern und begnügt sich mit einer Anodenspannung von nur 800 Volt. Die Nachleuchtdauer "mittel" des GJ-Schirms ist weder zu kurz noch zu lange und passt zur geplanten Anwendung mit einer Bildwiederholrate von 30...40 Bilder pro Sekunde.
Zudem lässt das ursprüngliche Einsatzfeld der Röhre darauf schliessen, dass sie vergleichsweise robust ist — wichtig, wenn ein Bastler Hand anlegt... Verwendung fand die D7-16 GJ in Datensichtgeräten der Bundeswehr. Vermutlich wurde sie in großen Stückzahlen als Ersatzteil eingelagert und ist daher gut als Neuware zu bekommen. Als Preis kann man ca. 20€ rechnen, der Beschaffungspreis für die BW lag einstmals angeblich bei über 300 DM. Gekauft habe ich bei Flick Elektronik, wo je nach Angebotslage Neuware und/oder Altröhren, Fassungen aus alten BW-Geräten sowie Schirmungen aus MU-Metall verfügbar sind.
Die Röhren-Fassung
mit PWM-Spannungssteller für Ohm'sche Last
Für meine D7-16 konnte ich keine passende Fassung finden, daher habe ich eine kleine Platine entworfen. Zum Bau der Fassung eignen sich 11 der Einzelkontakte FAS901 sehr gut, die man bei Jan Wüsten bekommt. Die Platine enthält einen integrierten Spannungssteller, der für eine gleichbleibende und langsam anfahrende Heizspannung sorgt.
Für die Heizung der Kathode der D7-16 wird eine Spannung von 6.3 Volt benötigt. Die verwendete Spannungsquelle ist nicht geregelt, liefert also eine Spannung, die über 6.3 Volt liegen kann. Die Röhren soll jedoch weder unter- noch überheizt werden, damit sie keinen Schaden nimmt und möglichst lange lebt.
Ein Linearregler wäre die einfachste Lösung für diese Aufgabe, hätte jedoch den Nachteil, dass die Leistungsdifferenz zwischen Eingangsleistung (zB 12V·90mA) und Ausgangsleistung (zB 6.3V·85mA) in Wärme umgewandelt wird. Das wäre sehr ungünstig, weil die Heizspannung auf Kathodenpotential bei ca. -600 Volt liegt und mühsam über eine Drossel übertragen werden muss.
Der PWM-Spannungssteller hat diesen Nachteil nicht. Durch schnelles Ein- und Ausschalten der Eingangsspannung (PWM) wird die Röhrenheizung immer mit einer Effektivspannung von 6.3 Volt versorgt. Am Schalttransistor entsteht praktisch keine Verlustleistung, und der als PWM-Controller eingesetzte AVR ATtiny25 ist mit 2 mA zufrieden.
Die Schaltung ist in die Röhrenfassung integriert und erledigt die Aufgabe mit minimaler Verlustleistung. Zudem ermöglicht sie ein langsames Anheizen der Röhre, falls gewünscht. Mit einem Jumper kann der Spannungssteller überbrückt werden, wodurch die Heizspannung ±UB dann unbeeinflusst zugeführt wird.
Der Effektivwert der erzeugten Spannung soll der Nennspannung des Verbrauchers entsprechen. Weil in beiden Fällen die gleiche Leistung ausgenommen werden soll – was auch bedeutet, daß die Temperatur und damit der Widerstand der Heizwendel gleich bleiben soll – muss gelten:
Dabei bezeichnet UTr die Spannung, die am Schalttransistor abfällt. Damit gilt für das Tastverhältnis δ (duty cycle) der PWM:
Die mittlere Spannung an der Last, wie man sie zum Beispiel mit einem Voltmeter angezeigt bekommt, ist
Je höher die Eingangsspannung, desto kleiner ist also die Spannung, die ein Voltmeter (auf "Gleichspannung" bzw. "DC" eingestellt) anzeigt!
Beispiel
Die Heizung mit der Nennspannung von 6.3V soll an 10 Volt betrieben werden. Als Schalter dient ein npn-Transistor: BC517. Es ergibt sich δ = 0.46 = 46%, und ein DC-Voltmeter zeigt eine Spannung von ca. 4.25 Volt an. Bei der Rechnung wurde ein Spannungsabfall von 0.7 Volt über der Collector-Emitter-Strecke des Transistors angenommen.
Download
Projekt als zip-Archiv (2009-01-18, 75 kByte)
- C-Quelle (avr-gcc) + Makefile
- hex- und elf-Datei
- Schaltplan, Layout für eagle
Inzwischen wird die Heizungsplatine über einen kleinen Blocktrafo versorgt, also nicht wie urspünglich geplant über einen Aufwärtswandler. Der Spannungssteller bleibt aber weiterhin im Einsatz, auch wenn sich die Spannung und das Anheizen etwas einfacher über einen Linearregler und eine analoge Power-Up Schaltung realisierbar wären.
Die Hauptplatine
nach der ScopeClock von Sascha Ittner
Im Internet habe ich Sascha Ittners ScopeClock mit D7-16 und Atmel-Controller gefundene, von der ich die Ansteuerung der Ablankplatten übernommen habe. Meine Platine enthält jedoch zwei wesentliche Änderungen:
Zum einen ist der Mikrocontroller kein Atmel AT89C4051, wie er auch in meiner Baumann-Uhr zum Einsatz kommt, sondern ein etwas leistungsfähigerer Atmel AVR ATmega168, der sich mit avr-gcc bequem in C programmieren lässt.
Zum anderen sind auf der Hauptplatine keine Netzteile; weder für die Niederspannung- noch für Hochspannungs-Versorgung. Die Netzteile für die verschiedenen Spannungen sind weitere Teilprojekte.
Der µC ist mit 24 MHz leicht übertaktet, was bei Raumtemperatur und satter Spannungsversorgung absolut kein Problem ist. Er funktioniert einwandfrei und zeigt keine Erwärmung.
Weitere, kleine Erweiterungen sind ein Infrarot-Empfänger zur Bedienung über eine handelsübliche IR-Fernbedienung (RC6), eine UART-Schnittstelle zu Kommunikation mit dem PC und ein kleiner Piezo-Beeper, der bei Snake zum Einsatz kommt; hier zu hören in einem youtube-Video.
Insgesamt sind die Bauteile etwas dichter arrangiert damit die Platine nicht größer wird als 100 cm2. Sie ist ca. 11 cm × 8.5 cm groß und zweiseitig geroutet.
- Wichtiger Hinweis:
- Der Steckverbinder zum Anschluss der Röhre hat eine andere Belegung als bei Sascha Ittners Uhr!
Die Software
in GNU-C99 für avr-gcc
Zurzeit hab ich Spaß mit Snake :-) Zum Rumprobieren gibt's sogar eine PC-Version zum selber compilieren. Die PC-Version kann einzelne Frames als PPM-Grafik erstellen. Damit habe ich über ein Shell-Skript auch die Animation auf der Startseite erzeugt. Wie das geht, steht im Makefile. Du brauchst eine richtige Umgebung wie Linux oder MSYS+MinGW sowie ImageMagick.
Metriken der momentanen Software:
- Sprache: GNU-C99 mit etwas Inline Assembler
- C-Module: ca. 20–25
- RAM-Verbrauch: 85% von 2 KiB
- Flash-Verbrauch: 75% von 16 KiB
- EEPROM-Verbrauch: 0%
- Pixelrate: 48000 pos/s
- Taktrate: 24 MHz
- Compiler: avr-gcc 4.7.2+
Ein Vorberechnen und Zwischenspeichern kompletter Frames ist aufgrund der begrenzten RAM-Resourcen von 1 kByte nicht möglich. Die Koordinaten der einzelnen Pixel müssen also immer wieder neu gewonnen werden! Bei einer Pixel-Rate von 48 kHz bleiben zur Berechnung und Ausgabe eines Pixels also 500 CPU-Ticks bzw. rund 20 µs. Dennoch ist die Pixel-Engine schnell und klein genug, um einen Asteroids-Clone zu implementieren.