Alle Beiträge von ingmarsretro

MIDI DB50XG – ein Interface für das Daughter Board

Beim Stöbern in einer Kiste mit meinen alten Bastelarbeiten ist das folgende Kästchen zum Vorschein gekommen.  Es stammt aus der Zeit als ich noch mit Amgia, aber auch schon mit PCs zu tun hatte – ich schätze so ca.  um 1996. Das Kästchen beschriftete ich mit „DB50XG MIDI – Wavetableprozessor“.

Das Fundstück aus der Kiste

Darin befindet sich eine Platine von Yamaha, die sich eben DB50XG nennt. Diese Platine war als Tochterplatine für PC-Soundkarten mit „Waveblaster“ Erweiterungsport konzipiert. Sie erweiterte die Soundkarten um einem polyphonen MIDI – Wavetable – Sampler. So konnte der General Midi Standard und der Yamaha XG Standard wiedergegen werden.  Heute macht sich darüber niemand mehr Gedanken. Wenn man damals mit einem PC aus Midi – Daten Sounds erzeugen wollte, dann war entweder eine externe Hardware notwendig, oder eben eine Soundkarte mit einem OnBoard Midi Synthesizer oder Wavetable Chipsatz. Der PC übernahm dann die Steuerung, das Senden und Empfangen der Midi Daten über eine Sequenzer Software. Heute werden die Midi Sounds direkt am PC generiert und die Samples und Tonmodelle in die Software eingebunden. Damals reichte die Leistung der PC-Hardware dazu nicht aus. Wenn sich jetzt jemand gerade fragt, worüber ich hier palavere – was ist Midi und wofür benötigt man das? – dann sei hier kurz gesagt: Midi ist die Abkürzung für „Musical Instrument Digital Interface“ – also eine digitale Schnittstelle – ein Datenprotokoll für Musikinstrumente. Es dient – grob erklärt – dazu, elektronische Musikinstrumente untereinander zu vernetzen und zu steuern. So kann zum Beispiel über ein einziges Keyboard eine Vielzahl von klangerzeugenden Geräten gesteuert werden. Wie der Midi Standard funktioniert, wie die Datenpakete aussehen und das elektrisch aussieht, werde ich hier nicht erläutern. Dazu findet man, wie immer, reichlich Informationen im Netz.

Im Inneren des Kästchens

Zurück zum selber gebastelten Kästchen. In die Plastikbox habe ich damals das DB50XG gepackt und vom „Waveblaster“-Port, einer 26poligen Buchsenleiste, die notwendigen Leitungen zur Inbetriebnahme der Midi Platine nach Außen geführt. Und das war ziemlich simpel. Die Platine benötigt eine Spannungsversorgung von +/-12V und +5V. Es gibt einen Midi-IN und einen Midi-OUT (Through) Pin, einen Reset-Pin und zwei Analog Audio Out Pins – je einen pro Kanal. Die untenstehende Tabelle zeigt die Pinzuordnung des Steckers:

Pin Nummer Zuordnung
1 Digital Masse
2 nicht verbunden
3 Digital Masse
4 nicht verbunden
5 Digital Masse
6 Versorgung +5V
7 Digital Masse
8 nicht verbunden
9 Digital Masse
10 Versorgung +5V
11 Digital Masse
12 nicht verbunden
13 nicht verbunden
14 Versorgung +5V
15 Analog Masse
16 nicht verbunden
17 Analog Masse
18 Versorgung + 12V
19 Analog Masse
20 Audio out rechts
21 Analog Masse
22 Versorgung -12V
23 Analog Masse
24 Audio out links
25 Analog Masse
26 Reset

Der ganze Aufbau war damals eher sehr spartanisch gestaltet. Die Stromversorgung musste über ein, oder mehrere externe Netzteile hergestellt werden. Es gab keine galvanische Signaltrennung mittels Optokoppler. Da musste ich mich auf den ordentlichen Aufbau des Midi-IO-Controller verlassen, den ich an den Amiga angeschlossen hatte. So durfte das natürlich nicht bleiben. Und das schöne DB50XG Board nicht mehr zu verwenden, oder dem Elektronikschrott zuzuführen, bringe ich nicht über´s Herz. Der Plan der daraus entstand, war, ein neues Interfaceboard zu entwickeln – oder basteln, das möglichst universell einsetzbar werden sollte. 

DB50XG

Diese Idee ist nun schon wieder einige Jahre her und immer wieder einmal habe ich ein wenig daran gearbeitet. Folgende Punkte, so habe ich mir ausgedacht, sollte das Interfaceboard erfüllen:

  • eine einfache Spannungsversorgung soll das Yamaha Board mit Energie versorgen. Idealer Weise soll ein USB-Port und optional ein Anschluss für ein Universalnetzteil vorhanden sein. Alle benötigten Spannungen sollen auf dem Interfaceboard aus den 5VDC generiert werden.
  • Das DB50XG soll, wie seinerzeit, auch als „Huckepack“ Platine aufgesteckt werden können
  • Das Midi-in Signal soll über die 5polige DIN Buchse und auch über einen Pinheader eingespeist werden können – natürlich schön entkoppelt (Damit kann auch ein Microcontroller wie Arduino und co. ganz ohne Aufwand angeschlossen werden)
  • Der Ton, also das Audiosignal soll pro Kanal über je eine Chinch-Buchse und auch als 3.5mm Klinkenbuchse und über einen Pinheader zur Abnahme bereitstehen.
  • Wortwiederholungen SOLLTEN vermieden werden, ist mir aber egal 🙂

Daraus entstand schlussendlich der folgende Schaltplan. Die 5VDC Versorgung der USB Quelle wird direkt zur 5V Versorgung des Midi Boards geführt. Die ebenfalls benötigten +12V/-12V erzeugt ein DC/DC Converter (TMR0522). Dieser wird eingangsseitig vom 5V Netz versorgt. Der optionale „Externe“ Spannungseingang gelangt an einen LM2596ADJ. Das ist ein Step-Down Voltage-Regulator der mit Eingangsspannungen bis zu 40V arbeiten kann. Die geregelte Ausgangsseite ist in vielen Bereichen verfügbar. Ich habe hier den ADJ (Adjustable) Typ in die Schaltung integriert, da ich davon einige Stück im Sortiment Kasten habe. Durch einen Jumper am Board ist, die Spannungsquelle wählbar.

Auf Basis dieses Schaltplanes habe ich ein Layout erstellt und es vorerst einmal im eigenen Ätzbad hergestellt. Heraus kam die folgende Platine, die als Testaufbau diente. Technisch funktionierte das Board einwandfrei, jedoch die Anordnung der Komponenten hat mir nicht gefallen. Den Step-Down Converter samt Spule hatte ich auf der Rückseite platziert. Auch war mir der Abstand zwischen den Anschlussbuchsen zu eng beieinander. Und wie man das als PCB Layouter so macht – man macht immer ein zweites Design. So auch dieses Mal.

Der Testaufbau mit bestücktem Midiboard ist im nachfolgenden Bild zu sehen. Das Midi-Signal als Testquelle kommt vom PC und wird durch einen USB-Midi Adapter aus Fernost generiert.

Also noch einmal vor den Rechner gesetzt und das Layout umgezeichnet. Heraus gekommen ist dann die folgende Version. Diese Ausführung habe ich dann bei einem Leiterplattenhersteller bestellt.

Die schlussendlich gefertigte Platine in bestücktem Zustand sieht dann so aus. Darunter ist sie  mit dem aufgesteckten DB50XG Board zu sehen.

 

Wenn der Spiegel nicht mehr klappt

Immer öfter höre und lese ich von nicht mehr richtig funktionierenden elektrisch einklappbaren Außenspiegeln bei Fahrzeugen des deutschen Herstellers mit den vier Ringen. Das Problem tritt bei vielen Modellen auf, die schon ein paar Jährchen in Betrieb sind und in unserem hiesigen Klima betrieben werden. In Internetforen findet man einige User, die dieses Problem kennen. Auch in meinen Bekanntenkreis gibt es ein paar Ringe-Fahrer die einen klemmenden elektrischen Außenspiegel haben. Als Lösung wird vom Hersteller natürlich immer der Austausch der kompletten Einheit empfohlen. Wer sein Erspartes aber nicht sinnlos für neu produzierten Restmüll ausgeben möchte, kann sich selbst dieses Problems annehmen. Es ist sogar eine ziemlich kleine Ursache, die dieses Problem verursacht. Und das Beste – es lässt sich ohne Materialaufwand reparieren. Auch ist die Langlebigkeit der Reparatur mittlerweile bewiesen…

Der Fehler zeigt sich durch folgendes Verhalten:

  • der Spiegel macht quietschende, knarrende Geräusche beim Aus – Einklappen
  • der Spiegel bleibt an falscher Position stehen und lässt sich nur durch manuelles Bewegen einrasten
  • das Klappverhalten ist abhängig vom Wetter

 

Man liest darüber viele Beiträge mit möglichen Ursachen – von defekten Motoren und defekten Türsteuergeräten. Am besten sollte man gleich die Spiegeleinheit erneuern und dazu ein neues Türsteuergerät – ja klar …

Die Lösung des Problems ist einfacher: ein kleiner Stahlbolzen, der von einer kleinen Feder rausgerückt werden soll, bleibt in seiner Führung stecken. Der mechanische Bereich des Spiegels ist natürlich auch den Umweltbedingungen ausgesetzt und so kommt der Bereich mit Regen, Spritzwasser – im Winter Salzwasser in Kontakt. Im Laufe der Zeit verlieren die Schmierstoffe ihre Eigenschaften oder werden sogar ausgewaschen und das ganze „Werkl“ wird schwergängig. Also was hilft? Komplett zerlegen, reinigen neu schmieren und wieder zusammenbauen.

Ich habe für diesen knapp eineinhalbstündigen Eingriff damit begonnen, den Spiegel aus der Tür auszubauen und in der gemütlichen Werkstatt zu untersuchen. Dazu ist die am einfachsten die Innenverkleidung der Türe abzunehmen (je nach Fahrzeug ein paar Schrauben und viele Klipse…) Der Spiegel ist dann mit einem Kabel am Türsteuergerät angesteckt und mit Torx-Schrauben befestigt.

Das Spiegelglas lässt sich am einfachsten mit einem Plattenheber (Saugnapf) ausklicken. Dann sind vorsichtig – falls vorhanden- die beiden Flachstecker von der Spiegelheizung abzuziehen (unbedingt die Kontakte auf der Heizfolie gegenhalten). Als nächstes können beiden Kunststoffhälften des Spiegel Gehäuses entfernt werden. Hier hilft ein wenig Beobachtungsgabe, welche Schrauben zu entfernen sind und wie die Hälften zusammengehalten werden.

Jetzt liegt das Kernstück des Spiegels da. Die beiden Druckgussteile sind über eine hohle Achse miteinander verbunden. Durch die Achse führt das Anschlusskabel zum Spiegelverstell-Antrieb und zur Heizung. Über der Achse sitzt eine große Stahlfeder die mit einer Distanzscheibe und einem Spannring (keine Ahnung, ob das die korrekte Bezeichnung ist) befestigt. Die Feder übt einen ordentlichen Druck zwischen den beiden Teilen aus- und das ist jetzt der einzige etwas schwierigere Teile – die Feder muss raus. Dazu ist der Spannring auszuhebeln, während die Feder auf Spannung gehalten wird. Heraus geht sie einfach – aber das wieder einbauen wird zur Herausforderung, wenn man kein geeignetes Werkzeug hat.

Auf dem Bild ist die schon entspannte Feder zu sehen. Jetzt können die beiden Teile auseinandergenommen werden.

Hier sind die Teile in zerlegter Form zuerkennen. Um nun das Corpus Delicti zu erreichen, muß das kleine Getriebe mit dem Motor abgeschraubt werden. Darunter ist der Bolzen zu erkennen, der in diesem Fall fest in seiner Bohrung steckte, sodaß es der Feder nicht mehr gelungen ist, ihn heraus zu drücken.

Deckel des kleinen Getriebe
Bolzen ist links neben dem Befestigungsloch zu erkennen

Bolzen mit Feder
auch die Führung des Bolzen ist zu reinigen

Die Prozedur ist ziemlich einfach – alles reinigen, die Korrosionen entfernen und mit Schmierstoffen neu abschmieren. Danach wieder alles zusammenbauen sich freuen. 🙂 Die meiste Zeit der ganzen Arbeit bnimmt das Reinigen in Anspruch.

Übrigens: der hier beschriebene Spiegel stammt von einem A5…

UV-Sensor Logger selbstgebastelt

Kommt der Sommer, kommen neue Ideen. In den Sommermonaten ist ja bekanntlich die Sonnenscheindauer länger und auch die Intensität der Sonnenstrahlen höher. Viele nutzen diese Eigenschaft der Sonne, um ihre Vitamin-D Produktion des Körpers anzutreiben, andere wiederum legen sich unter die Strahlenquelle um durch den hohen UV Anteil ihrer Hautfarbe abzudunkeln. Dies wiederum steigert vermeintlich deren Attraktivität und regt die Hormonproduktion und die Paarungsbereitschaft an… Leider hat der nicht sichtbare UV Bereich im Spektrum des Sonnenlichts bekanntlich auch negative Auswirkungen auf den menschlichen Körper. Auch technisch kann das Sonnenlicht genutzt werden. Durchschnittlich wird die Leistung der Sonne pro Flächeneinheit mit 1000W pro m² angenommen. Großflächige P-N Übergänge in Halbleitermaterialien schaffen mittlerweile mit einem Wirkungsgrad von bis zu 22% daraus elektrische Energie zu erzeugen.

Man kann die Energie aber auch noch anders nutzen, bzw. den UV-Anteil. Vielen Retrosammlern ist sicherlich das Problem mit den vergilbten alten Kunststoffgehäusen bekannt. Um das in den Griff, bzw. wieder in den Ursprungszustand von vor 30, 40 Jahren zu bekommen, verwendet man H2O2 also Wasserstoffperoxid und UV Licht um so einen Bleichprozess in Gang zu bekommen. Und so kam ich zur Idee für folgendes Projekt.

Bei einem online-Elektronik-Laden fand ich im Abverkaufs Angebot ein UV-Sensor Board des Herstellers Waveshare. Darauf befindet sich ein LITEON OPTOELECTRONICS LTR390 Chip samt Levelshifter-Schaltung. Als Interface steht ein I²C Bus zur Verfügung. Ein Blick ins Datenblatt verriet mir, dass der Sensor zwei Wellenlängenbereiche erfasst und separat ausgibt.  Der ALS (Ambient Light Sensor von 500-600nm) und der UV (Ultra Violett Bereich von 300-350nm).  Damit kann man doch schnell ein einfaches Logging Board basteln – dachte ich mir.  So habe ich mir gedacht, das Board sollte folgendes können:

  • Spannungsversorgung von einer 18650er Zelle oder USB
  • USB soll den Akku auch laden können
  • einen Micro-SD Slot zum Aufzeichnen der Sensordaten
  • einen RS-232 Port, zum direkten Loggen am PC
  • ein cooles OLED Display
  • zwei Taster zum Bedienen des Loggers (Intervall, Start/Stop etc.)

Die Steuerung soll natürlich wieder einmal ein Chip von Atmega – der 328er übernehmen. Davon befinden sich einfach noch genügend Stück in meinen Sortiment Kästchen. Damit man sich schneller einen Überblick über den Aufbau verschaffen kann, habe ich das folgende Blockdiagramm gezeichnet:

Im nächsten Schritt habe ich aus dem Blockschaltbild einen Schaltplan erstellt, um aus dem dann wiederum ein Layout erstellen zu können.  Parallel zur Schaltplanerstellung habe ich einzelne Bereiche per „Luftverkabelung“ auch gleich probeweise zusammengeschaltet und getestet, ob das alles auch so funktioniert, wie ich mir das vorstelle. Und vor allem sollte auch alles im Flashspeicher des Microcontrollers Platz haben.

Im Bild oben ist der „luftige“ Aufbau bestehend aus fertigen Komponenten zu erkennen. Für die ersten Tests mit dem Sensor und dem OLED Display reichte ein Arduino vollkommen aus. Damit war es mir möglich, die gewünschten Funktionen zu testen. Somit stand der Erstellung des Schaltplanes nichts mehr im Weg. Eine 18650er Lithiumzelle soll als primäre Energiequelle dienen. Alternativ wird auch ein USB-Port vorhanden sein, der die Zelle laden kann bzw. den Sensor betreiben kann. Dafür, weil ich faul bin und auch ziemliche Bauteil Lieferengpässe ein großes Problem sind, verwende ich zum Laden des Akkus eine fertiges Wemos-D1-Mini Board. Das wird genauso wie das OLED Displayboard und das Sensorboard als fertige Komponente auf dem Design der Platine Platz finden.  Als Controller kommt wieder, wie schon erwähnt, ein Atmega328 im TQFP Gehäuse zum Einsatz. Dieser wird über die I²C Schnittstelle mit dem OLED Display (SBC-OLED01 mit SSD1306 Controller) und dem LTR390 UV-Sensorboard kommunizieren. OLED und Sensor sind 5V kompatibel. Die SD-Karte wird aber mit 3.3V betrieben. Dafür benötigt die Schaltung noch einen Spannungswandler von 5V auf 3.3V für die Versorgung und einen Levelshifter für den SPI-Datenbus, über den die SD-Karte mit dem Atmega die Daten austauscht. Da der Atmega dann auch mit seiner Firmware programmiert werden möchte, habe ich einen 2×4 Pinheader für den Anschluss eines Programmers vorgesehen. Sechs Pins davon (GND,5V, MOSI, MISO, SCK und RESET) benötigt der Programmer und die zwei verbleibenden Pins sind für die serielle Schnittstelle vorgesehen. Die beiden Interrupt-Eingänge des Atmega werden mit je einem Taster beschalten, der dann die Software bedienbar macht. Die Batteriespannung wird über einen Teiler an einem der ADC-Eingänge gemessen bzw. auch mitgeloggt. Das Ergebnis dieser Gedanken ist der folgende Schaltplan:

Ein Layout ist danach der nächste Schritt.  Bei einer Größe von 12 x 4,5 cm ist die Platine einigermaßen „handlich“. Die Leiterbahnführung findet auf beiden Seiten statt und die Module (Ladeschaltung, Display und UV-Sensor) sind über Pinheader steckbar ausgeführt.

Die beiden Bilder oben zeigen die Vorschau der „Top-“ bzw. „Bottom-“ Seite des Layouts. Aus den so erstellten Produktionsdaten konnte eine Platine erstellt werden.

Nach einiger Lötarbeit war die Hardware dann soweit fertig. Um diesem „Lötwerk“  letztendlich auch Leben einzuhauchen, bedurfte es einer Software, die auf dem Microcontroller ihre Arbeit verrichtet.

Beim Basteln der Software bediente ich mich der kostenlosen „Arduino IDE“ Entwicklungsumgebung.  Die Dokumentation des LTR390 beschreibt genau über welche Register welche Funktionen des Sensors zu bedienen sind. Es gibt aber auch schon für ganz Bequeme eine fertige Library – so wie für fast alle Sensoren und Aktoren, die an Microcontroller angeschlossen werden sollen. In der Arduino IDE findet man über den Boardmanager die „Adafruit LTR390 Library“ über die man einfach mit dem Sensor kommunizieren kann.  Die Ansteuerung des OLED Displays übernimmt in meinem Fall die SSD1306Ascii Library. Die Buskommunikation übernehmen die „Wire“ und “ SPI“ Library und die „SD“ spricht mit der SD – Karte.  Die Includes sehen dann so aus:

#include <LTR390.h>
#include <SD.h>
#include <SPI.h>
#include <Wire.h>
#include „SSD1306Ascii.h“
#include „SSD1306AsciiWire.h“

Den gesamten Code kann ich bei Bedarf gerne hier veröffentlichen. Er ist allerdings kein Hexenwerk, sondern simples und sicher nicht optimiertes Codezeilen Geschreibe 🙂 In der derzeitigen Code- (Firmware) Version 1.3d gibt es ein kleines Auswahlmenü, das es ermöglicht, das Logintervall der SD-Karten-Aufzeichnung einzustellen und natürlich auch die Aufzeichnung zu starten bzw. zu stoppen. Geloggt wird in ein Textfile. Die aufgezeichneten Daten sind UV-Index, Umgebungshelligkeit und die Akkuspannung.

Einen Auszug aus dem Datalog habe ich unten eingefügt:

 Ambient[lx], UV-indx, Batt[V], Loggingintervall[s]  
 691.60,0.01,3.77,20  
 691.60,0.03,3.76,20  
 1184.00,0.03,3.77,20  
 1184.00,0.03,3.75,20  
 1191.00,0.03,3.77,20  
 1191.00,0.03,3.75,20  
 1198.60,0.03,3.76,20  
 1198.60,0.03,3.73,20  
 1211.60,0.03,3.76,20  
 1211.60,0.04,3.75,20  
 1223.00,0.04,3.75,20  
 1223.00,0.04,3.76,20  
 1234.20,0.04,3.76,20  
 1234.20,0.04,3.74,20  
 1243.60,0.04,3.76,20  
 1243.60,0.04,3.76,20  
 1252.00,0.04,3.75,20  
 1252.00,0.04,3.73,20  
 1261.20,0.04,3.74,20  
 1261.20,0.04,3.72,20  
 1269.60,0.04,3.76,20  
 1269.60,0.04,3.76,20  
 1278.40,0.04,3.76,20  
 1278.40,0.04,3.75,20  
 1288.40,0.04,3.76,20  
 1288.40,0.04,3.75,20  
 1298.20,0.04,3.76,20  
 1298.20,0.04,3.74,20  
 1305.80,0.04,3.73,20  
 1305.80,0.04,3.73,20  
 1313.20,0.04,3.73,20  
 1313.20,0.04,3.75,20  
 1321.60,0.04,3.74,20  
 1321.60,0.04,3.75,20  
 1331.80,0.04,3.75,20  
 1331.80,0.04,3.75,20  
 1341.60,0.04,3.74,20  
 1341.60,0.04,3.76,20  
 1349.40,0.04,3.76,20  
 1349.40,0.04,3.76,20  
 1358.20,0.04,3.72,20  
 1358.20,0.04,3.76,20  
 1365.60,0.04,3.74,20  
 1365.60,0.04,3.73,20  
 1374.20,0.04,3.72,20  
 1374.20,0.04,3.75,20  
 1380.60,0.04,3.75,20  
 1380.60,0.04,3.76,20  
 1386.60,0.04,3.75,20  
 1386.60,0.04,3.76,20  
 1394.80,0.04,3.75,20  
 1394.80,0.04,3.75,20  
 1401.40,0.04,3.73,20  
 1401.40,0.04,3.74,20  
 1408.60,0.04,3.75,20  
 1408.60,0.04,3.74,20  
 1414.20,0.04,3.73,20  

 

Diese Daten lassen sich jetzt sehr einfach weiterverarbeiten und grafisch darstellen. Als Office-Nutzer kann man zum Beispiel auf Excel zurückgreifen und die Daten dort importieren und als Graphen darstellen. Es geht aber noch einfacher und auch sehr schnell mit Tools wie Matlab. Mit einem Script wie dem nachfolgenden kann man die Logdatei dann visualisieren.

 

 %% Setup the Import Options and import the data  
 opts = delimitedTextImportOptions("NumVariables", 4);  
 opts.DataLines = [3, inf];  
 opts.Delimiter = ",";  
 opts.VariableNames = ["Ambientlx", "UVindx", "BattV", "Loggingintervalls"];  
 opts.VariableTypes = ["double", "double", "double", "double"];  
 opts.ExtraColumnsRule = "ignore";  
 opts.EmptyLineRule = "read";  
 opts = setvaropts(opts, ["Ambientlx", "UVindx", "BattV"], "TrimNonNumeric", true);  
 opts = setvaropts(opts, ["Ambientlx", "UVindx", "BattV", "Loggingintervalls"], "DecimalSeparator", ",");  
 opts = setvaropts(opts, ["Ambientlx", "UVindx", "BattV"], "ThousandsSeparator", ".");  
 datalog = readtable("F:\ingmarsretro\datalog.txt", opts);  
 clear opts  
 x=size(datalog); % groesse der tabelle  
 measurement=x(1); % anzahl messungen   
 uvi=datalog{1:measurement,2};  
 ambient=datalog{1:measurement,1};  
 messzeit = linspace(0,(measurement*datalog{1,4}),measurement); %zeitvektor von 0 bis zeitintervall aus datalog spalte4 * messungen  
 figure(1);  
 title('UV - Index');  
 subplot(2,1,1);  
 plot(messzeit,uvi);  
 title('UV - Index');  
 xlabel('Zeit [s]');ylabel('UV - Index');  
 subplot(2,1,2);  
 plot(messzeit,ambient);  
 title('Beleuchtungsstärke');  
 xlabel('Zeit [s]');ylabel('Beleuchtungsstärke [lux]');  

Wird das Script ausgeführt, dann erhält man einen Plot, der die Messdaten visualisiert.

Die technischen Informationen zum Sensor sind dem Datenblatt des Herstellers zu entnehmen. Hier ein paar kurze Eckdaten:

Der LTR390 besteht aus zwei Fotodioden, einer für das sichtbare Spektrum des Lichtes und einer, die im UV-Bereich empfindlich ist. Der Strom der Photodioden wird in internen ADCs digitalisiert. Eine Interne Logic steuert die ADCs und über eine I²C Schnittstelle wird die Verbindung zur Außenwelt hergestellt. Die Auflösung von ALS und auch UVS ist in 13,16,17,18,19 und 20 Bit konfigurierbar. Der Sensor Chip ist in einem 2x2mm 6pin Gehäuse untergebracht. Die Detektoröffnung hat eine Kantenlänge von 280×280 µm.

Quelle: Datenblatt LTR-390UV https://optoelectronics.liteon.com/en-global/Led/LED-Component/Detail/926
Quelle: Datenblatt LTR-390UV https://optoelectronics.liteon.com/en-global/Led/LED-Component/Detail/926

 

 

Eigenbau Nixiuhr

Das in den letzten Jahren das Thema Retro immer mehr zum Trend wurde, ist auch mir nicht entgangen. Auch der „Industrial“- und „Steam“-Style hat in vielen Haushalten Einzug gehalten.  Man(n) stellt sich wieder viele Dinge ins Regal, die die robuste Technik und das Aussehen der vergangen Jahrzehnte repräsentieren. So flackern LED-Leuchtmittel in den Räumen, die optisch den Glühbirnen der Gründerzeit nachempfunden wurden. Die Messing Lampenfassungen werden von einem mit Stoffgeflecht ummanteltem Kabel gehalten. Anstelle der Kohle- oder Wolframglühfäden in den Birnen arbeitet modernes LED-Filament. Thematisch diesem Stil entsprechend, sind beispielsweise auch mechanische Uhren und elektrische Uhren mit Leuchtanzeigen aller Art wieder gefragt. Passend zu diesem Trend, habe ich in älteren Blogbeiträgen schon über die VFD-Uhren berichtet. (VFD = VaccumFLuoreszenzDisplay) Diese Anzeigetechnologie verwendete man zum Beispiel bis Ende der 90iger Jahre noch häufig in Videorecordern, HiFi Geräten und diversen Radioweckern. Danach war die LED und LCD Technologie Standard. Heute halten überall die kleinen OLEDs Einzug. Im Rahmen des Retro Revivals werden VFD´s in Form von Einzelziffer-Anzeigeröhren zu Uhren zusammengebaut. Diese Uhren gibt es als Fertiggeräte oder auch als Bausätze (grother.de).  Da diese Anzeigeröhren mittlerweile nicht mehr hergestellt werden und nur Altbestände (new old stock) verfügbar sind, steigen auch die Preise. Aber es geht preislich noch schlimmer – eine technische Entwicklung aus den 1920er Jahren ist eine Anzeigetechnologie nach dem Prinzip der Glimmlampe.  Hierbei wird in einem, mit Edelgas gefüllten, Glaskolben eine aus Draht gebogene Ziffer als Kathode, vor einem dünnen Metallgitter als Anode angebracht. Legt man eine Spannung an, so beginnt das Edelgas entlang des als Ziffer geformten Drahtes zu glimmen. So entsteht, von außen betrachtet, der Eindruck einer leuchtenden Ziffer. In einer solchen Röhre sind meistens die Ziffern von 0-9 untergebracht und für jede Ziffer ist natürlich auch ein separater Anschluss vorhanden. Viele von den Lesern werden diese Art von Röhre sicherlich kennen. Sie nennt sich NIXIE – Anzeigeröhre (stammt von der der Bezeichnung „Numeric Indicator eXperimental No. 1“

Eine Uhr mit solchen Anzeigeröhren fehlt noch in meiner Sammlung. Also möchte ich eine solche haben. Aber kaufen ist einfach – und außerdem auch sehr teuer. So habe ich mir vorgenommen, eine Nixieuhr selber zu bauen. Begonnen hat alles mit einer langwierigen Suche nach den Röhren, denn auch für diese muss man mittlerweile schon einiges hinlegen. Und ich benötige mindestens sechs Stück, da meine Uhr auch eine Sekundenanzeige haben soll. So habe ich also im Internet auf verschiedensten Plattformen gesucht – und in der Bucht wurde ich fündig. Dort wurde ein Board bestückt mit Nixieröhren angeboten, das aus irgendeinem alten Gerät herausgebrochen wurde. Die Funktion des Boards wurde als „unbekannt“ angegeben – dafür war es sehr günstig. Der Verkäufer hatte zwei davon. Also riskierte ich es und kaufte die beiden Platinen bestückt mit je fünf Nixies.

Die Röhren waren dann auch mit einiger Vorsicht erfolgreich ausgelötet. Die Type der Röhre ist die Z574M, zu der man im Netz auch die Datenblätter findet und somit auch die Sockelbeschaltung hat.

Mit Hilfe der Beschaltung lässt sie sich dann auch einfach kontaktieren und so Ziffer für Ziffer jeder Röhre überprüfen. Die Kenndaten der 574 sind:

  • Anodenzündspannug: 150V
  • Anodenbrennspannung: 140V
  • Anodenlöschspannung: 120V
  • Max Anodenspannung: 170V
  • Kathodenstrom min: 1.5mA
  • Kathodenstrom max: 2.5mA

Mit einem geeigneten Netzgerät konnte ich die notwendigen Versorgungsspannungen für den Funktionstest schnell einstellen.

Man sieht hier, dass die Röhre bei einer Brennspannung von knapp 140V einen Strom von 2.8mA zieht. Das entspricht einer Leistung von 392mW. Wenn ich also hochrechne und alle sechs Ziffern der Uhr dauerbestromt werden, dann muss die Spannungsversorgung für die Röhren ca. 2.3W bringen.

Die Röhren funktionieren also schon mal. Jetzt kann ich mir Gedanken machen wie die Uhr aussehen soll und noch mehr, wie ich sie konstruieren will.

Die Idee ist, dass ein Mikrocontroller alle sechs Röhren ansteuern soll.  Das will ich mit 8-Bit 4094er Schieberegistern realisieren, wovon je vier Bit für eine Röhre verwendet werden. Diese vier Bit aus dem Shift-Register sollen dann über Binary Coded Decimals (also BCD) die Röhren ansteuern. Da die Röhren aber für jede Ziffer einen Anschluss haben, müssen aus den vier BCD-Leitungen zehn separate Zifferansteuerungen generiert werden. Das wird ein CD4028 erledigen. Der IC CD4028 ist ein „BCD to Dezimal Decoder“. Um die relativ hohen Spannungen der Nixies zu schalten, wird der BCD-Dezimal Decoder einen geeigneten Transistor ansteuern. Hier wird der MPSA42 seinen Dienst verrichten. Das ist ein NPN Bipolar Transistor mit einer Kollektor-Emitter Spannungsfestigkeit von 300VDC bei einem maximalen Kollektorstrom von 500mA.  Um die Röhren möglichst flexibel einsetzen zu können, habe ich mir ausgedacht, für jede Röhre eine eigene Platine zu gestalten. Diese einzelnen Anzeigeplatinen sollen dann auf eine Hauptpatine gesteckt werden. So kann man, sollte ein Digit einmal defekt sein, das betreffende Board einfach herausziehen und es reparieren. Dann muss nicht am Mainboard herum gelötet werden.

Am Mainboard soll der Microcontroller Platz finden. Auch die Nieder- und Hochspannungsversorgung und die Schieberegister sollen am Mainboard untergebracht werden. Die Display-Platinen tragen lediglich die Nixieröhre samt deren Treibertransistoren und den BCD-Dezimal Decoder. Mittels Pfostensteckverbindern sollen sie einfach in das Mainboard einsteckbar sein. Um diese Formulierungen ein wenig einfacher darzustellen habe ich diese Skizze angefertigt:

Auf Basis dieser Idee begann ich nun, die Schaltpläne zu zeichnen. Mit dem Displayboard, auf dem sich die Röhre befindet fing es also an. Der Schaltungsaufbau ist sehr einfach. Über zwei gegenüber liegende Pfostensteckverbinder sollte das Board auf dem Mainboard einen stabilen Halt bekommen. Einer der Steckverbinder versorgt den BCD-Dezimaldekoder (CD4028N) mit den vier Dateneingängen und der 5V Versorgungsspannung für die Logik. Auf der anderen Seite des Boards wird die „Hochspannung“ für die Röhre bereitgestellt.

Daraus konnte ich dann einfach ein Layout erstellen und dieses dann als Prototyp als Platine herstellen.

Nach dem Ätzen und Bestücken der ersten Platine und fünf Weiteren war der erste Schritt der Nixieuhr getan:

Um den ersten Teil des Machwerks zu testen, hatte ich an meiner Arbeitsstelle ein DEB100 Digital-Experimentierboard zur Verfügung. Das folgende Kurzvideo zeigt das Testergebnis:

Nachdem dann alle sechs Boards bestückt und getestet waren, hatte ich mich mit der Planung des Mainboards beschäftigt. Zu Beginn stand natürlich wieder die Erstellung eines Schaltplanes. Aus einer externen einer 12VDC Quelle, die idealer Weise ein simples Steckernetzteil sein sollte, mussten die Versorgungsspannungen generiert werden. Zum einen benötigte ich eine 5VDC Versorgung für den Microcontroller, die Schieberegister und die BCD Decoder und zum anderen eine „Hochspannung“ von 140VDC für die Nixieröhren. Die 5V waren schnell erledigt – hier sollte ein 7805 Längsregler seinen Dienst verrichten. Da die Stromaufnahme der digitalen Komponenten relativ gering ist, bedurfte es hier keiner aufwendigen Maßnahmen. Die 7V Differenz am 7805 bei den paar Milliampere packte er ohne großartige Verlustleistungswärmeabgabe. Für die Erzeugung der 140V bastelte ich einen Step-Up – Konverter mit einem MC34062 (Inverting Regulator – Buck, Boost, Switching) Controller, der über einen FET eine 220uH Induktivität schaltet. Über einen Spannungsteiler mit Trimm Poti am Ausgang lässt sich eine Spannungsrückmeldung an den Komparator Ausgang des Controllers senden und somit die Ausgangsspannung einstellen. Als Microcontroller nehme ich für die meisten meiner Projekte (aufgrund des Lagerstandes 🙂 ) immer Atmega328 und Ähnliche. So auch hier. Das Ergebnis ist folgender Schaltplan:

Daraus habe ich wieder ein Layout gebastelt und wieder ein Board geätzt und bestückt. Allerdings wurde dieses Prototypen Testboard nur eine Version mit vier Digits. Der Grund war auch, dass ich keine größere Roh-Platine zur Verfügung hatte 🙂

Daraus habe ich wieder ein Layout gebastelt und wieder ein Board geätzt und bestückt. Allerdings wurde dieses Prototypen Testboard nur eine Version mit vier Digits. Der Grund war auch, dass ich keine größere Roh-Platine zur Verfügung hatte 🙂

Nach diversen erfolgreichen Tests mit dem Prototypen Board, bestellte ich mir beim Platinen Herstellers meines Vertrauens professionell gefertigte Boards. Nach dem Bestücken derselben erstellte ich mir dann ein Testprogramm das alle Digits ansteuern konnte. Ein kurzes Testvideo ist unten verlinkt:

Wie die Uhr dann mit den „schön“ gefertigten Boards aussieht, zeigen die folgenden Fotos. Um das ganze Werk noch etwas nostalgischer zu gestalten, hatte ich die Idee die Boards auf einer gefrästen Holzplatte zu montieren. (Danke an Gebhard für die Holzarbeiten). Um die Uhrenelektronik auch dauerhaft staubfrei zu halten, ließ ich mir eine transparente Plexiglashaube anfertigen.

Skizze für die Arcylglashaube

Die Software habe ich wie so oft mit der Arduino IDE gebastelt. Zum Flashen des Microcontrollers verwende ich den AVRISP mkII Programmer.  Wenn jemand am Code interessiert sein sollte kann ich ihn hier im Blog auch posten.

 

Ich suche EINE Taste vom Commodore Plus4

Der Titel sagt ja schon alles. Ich bin auf der Suche nach der RUN/STOP Taste für einen Commodore Plus 4 Computer. Das Modell, das ich herrichte ist bis auf eben diese fehlende Taste schon fertig. Ich habe in der Bucht und auf Flohmärkten gesucht, aber niemand kann mir da helfen, bzw. man bekommt ganze Tastaturen, aber leider zu einem unfairen Preis. Falls also irgendjemand einen Plus4 zum Schlachten herumstehen hat und mir mit der Taste zu einem fairen Preis helfen kann – das würde mich sehr freuen.

Sprachausgabe in den 80igern – Speak and Spell

Viele der Leser dieses Beitrages kennen vielleicht den Hollywood Film E.T. (The Extra-Terrestrial), in unseren Regionen in der übersetzten Version: „E.T. – Der Außerirdische“.

Zumindest die älteren unter den Lesern werden ihn kennen. Der Film lief 1982 in unseren Kinos und ich hatte damals auch die Möglichkeit, ihn mir anzusehen. Als Kind tauchte man (zumindest ich) immer in die Geschichten ein und lebte darin mit. Kurz erzählt handelt die Geschichte von einem kleinen Außerirdischen, der versehentlich auf der Erde zurückgelassen wurde, während seine Artgenossen auf der Flucht vor Regierungsagenten mit ihrem Raumschiff davonflogen. So versteckte sich der kleine E.T. in einem Schuppen, in dem er von Kindern des Ortes gefunden wurde. Die freundeten sich mit ihm an und halfen ihm dabei mit dem Raumschiff Kontakt aufzunehmen. Dazu konstruierte er aus Dingen des alltäglichen Lebens eine Art Funkanlage. Die Antenne bestand beispielsweise aus einem Regenschirm, einem Plattenspieler mit einem Sägeblatt einer Kreissäge, einem Kleiderbügel mit Speisegabel und einem Kinderspielzeug, das synthetische Stimmen erzeugen konnte. Dieses Spielzeug nennt sich „Speak & Spell“ als „Spreche und Buchstabiere“ und wurde von der Firma Texas Instruments entwickelt.

Der Speak & Spell ist ein Handheld Kindercomputer von TI (Texas Instruments), der aus einer Tastatur, einem Display und einem kleinen Lautsprecher besteht. Das Herzstück des Gerätes ist ein Sprachsynthesizer IC, der es ermöglicht, eine künstliche Stimme zu erzeugen. Per LPC (linear predictive coding – also linearer Vorhersagecodierung) wird eine, der menschlichen Sprechstimme ähnlichen Audioausgabe erreicht. Mit einem internen Rom und optional auch externen Rom-Modulen, können verschiedene Aufgaben (Buchstabieren, Wortratespiele etc.) realisiert werden. Die Auswahl und Eingabe erfolgen über eine Tastatur.

Der Speak & Spell Kindercomputer stammte ursprünglich aus einer dreiteiligen Spielzeugserie mit „sprechenden“ Computern. Es gab noch ein Speak & Math und ein Speak & Read. Man findet gelegentlich auf Videoplattformen im Netz noch Sammler, die ihre Geräte präsentieren. Verkauft wurden die Geräte anfangs in den USA, Großbritannien und Japan. Je nach Auslieferungsland gab es auch noch unterschiedliche ROM-Module mit Minispielen, wie Mystery Word, Letter oder Secret Code. Gedacht waren diese Computer für Kinder ab dem 7. Lebensjahr. Später wurden weitere Sprachbibliotheken in sieben Sprachvariationen veröffentlicht. So soll es unter andren auch ein Modul für die deutsche Sprache gegeben haben.

Der erste Speak & Spell wurde auf der Consumer Electronics Show 1978 als einer der ersten tragbaren Geräte mit visuellem Display und steckbaren ROM Spielekassetten vorgestellt. Dieses Modell wurde auch durch den Einsatz im Film E.T. bekannt. Es unterscheidet sich von späteren Gerätegenerationen optisch lediglich durch die Tastatur, die in der Urversion noch aus „richtigen“ Tasten bestand. In seinem inneren arbeitet der TMC0280 Synthesizer Chip. Dieser wurde einem kleinen Team von Technikern unter Paul Breedlove † (1941-2021), Ingenieur bei Texas Instruments in den späten 1970er Jahren entwickelt. Diese Entwicklung begann 1976 als Ergebnis der TI-Forschung zur Sprachsynthese.

Zu Anfang der 1980iger Jahre kam eine überarbeitete Version des Gerätes auf den Markt. Hier hat man die Tasten durch eine Folientastatur ersetzt. Auch eine Speak & Spell Compact Version hat man veröffentlicht. Bei dieser hat man auf das optische VFD Display verzichtet und die Größe halbiert. Ende der Achtziger Jahre gab es erneut eine Auflage. Diesmal wurde das VFD durch ein LC-Display ersetzt und die Tastatur bekam ein QWERTY Layout. Im Rahmen der Retrowelle (so meine Vermutung) hat die Firma „Basic Fun“ 2019 den Klassik Speak&Spell wieder auf den Markt gebracht. Er ähnelt vom Aussehen der 80iger Version, ist jedoch technisch auf dem aktuellen Stand (so wird alles in einem kleinen Chip generiert der direkt auf die „Miniplatine“ gebondet wurde. Auch die Anschlüsse zur Außenwelt gibt es bei der Version nicht mehr.

Auf dem Mainboard der vor 1980 verkauften Version sind folgende Chips verbaut:

  • TMC0271 (Microcontroller und VF-Display Controller für 9 Digits zu je 14 Segmenten)
  • TMC0530 (oder TMC0351, TMC0352) 128kBit ROM
  • TMC0281 (Sprachsynthesizer IC der TMC0280 Serie

Das Modell, das sich in meiner Sammlung befindet, ist eine der nach 1980 verkauften Versionen. Hier sind folgende IC´s verbaut:

  • TMC0271 ( Microcontroller und VF-Display Controller für 9 Digits zu je 14 Segmenten)
  • TMC0281 (Sprachsynthesizer IC der TMC0280 Serie)
  • CD2304 und CD2303 (ROM)

Das VF-Display hat acht Digits zu je 14 Segmenten. Die Versorgungsspannung von 6V wird aus vier in Reihe geschalteten C-Zellen gewonnen. Die 9V und 21V für die Versorgung von VFD und Microcontroller macht ein diskret aufgebauter DC/DC Converter, der sich auf einer eigenen Platine befindet. Die Folientastatur ist in einer 13poligen Flexiprint-Buchse angesteckt. Für die Wiedergabe des Tons gibt es einen kleinen Lautsprecher oder auch die Möglichkeit, über einen 3.5mm Klinkenstecker einen Kopfhörer anzuschließen. Der Ton wird direkt aus dem Synthesizer Chip gewonnen. Um die Ausgangsimpedanz an den Lautsprecher anzupassen hat man einen kleinen Audio-Übertrager direkt neben der Klinkenbuchse verbaut. Eine weitere Buchse dient als externe Spannungszuführung. Ein Trimmpotentiometer ändert die Wiedergabegeschwindigkeit/Tonhöhe der Audioausgabe.

Der TMC0280, später TMS5100 genannt ist der Single Chip Sprachsynthesizer, der ein LPC Modell 10. Ordnung unter Verwendung von pipelined elektronischer DSP-Logik verwendete.  Die Phonem Daten für die gesprochenen Wörter werden im PMOS-ROMs gespeichert. Die enorme Kapazität von 128 Kbit war damals das größte noch bezahlbare ROM. Über eine Aussparung im Batteriefach kann man zusätzliche Speichermodulkassetten einstecken. Der Inhalt der Speichermodule ist über eine Taste am auf der Tastatur anwählbar. Die Datenrate der Audioausgabe beträgt etwas weniger als 1kBit pro Sekunde.

DC/DC Converter Platine

 

 

Die Wetterkugel – oder das Goethe-Glas

Immer wieder halte ich Ausschau nach einfachen, interessanten Dingen. Dieses Mal hat mich ein Messgerät- oder eher „Anzeigegerät“ fasziniert, dessen Funktionsprinzip äußert einfach und doch sehr effektiv ist. Zudem ist es aus meiner Sicht auch noch ein Hingucker – Es handelt sich um das so genannte Goethe-Barometer. Die bekannteste Form ist wohl das an der Wand hängende, bauchige Glas mit einem Schnabel, ähnlich einer Gießkanne, in dem der Wasserstand den Luftdruck anzeigt. Eine etwas anders konstruierte Version dieses Glases habe ich im Netz gefunden…

Ein wenig zur Geschichte dieses Aufbaues:

Einem Herrn namens Evangelista Toricelli (1608-1647), einem italienischen Physiker und Mathematiker verdanken wir die Erkenntnis und den Nachweis, dass der Luftdruck Schwankungen unterliegt. Er baute 1643 das erste nach ihm benannte Barometer. 1644 entwickelte er das Quecksilberthermometer.

Ein kleiner Ausgleichsbereich im Anzeigerohr schützt vor Überlauf

Der deutsche Dichter Johann Wolfgang Göthe, beschäftigte sich auch mit den Naturwissenschaften. Er machte selbst viele naturwissenschaftliche Experimente und entwickelte später ein einfaches, aber wirkungsvolles Barometer auf den Grundlagen des Toricelli.

Die Funktionsweise:

Das Barometer zeigt schnell und präzise Luftveränderungen an. Bei steigendem Luftdruck fällt die Wassersäule im Anzeigerohr und bei fallendem Luftdruck steigt sie. Möglich ist dies durch die im Glas eingeschlossene Luft. Das Volumen der Luft bleibt bei gleichbleibender Temperatur immer gleich. Steigt oder sinkt der äußere Luftdruck, so wird die eingeschlossene Luft über die Wassersäule zusammengedrückt oder eben ausgedehnt. Da sich das Wasser nicht komprimieren lässt, ist es das ideale Medium um die Druckunterschiede sichtbar zu machen. Die Höhe der Wassersäule zeigt somit den Luftdruck an. Ist der Luftdruck bei schönem Wetter hoch, so ist der Außendruck gegenüber dem Druck der eingeschlossenen Luft höher und die Wassersäule sinkt, da die eingeschlossene Luft verdichtet wird. Bei niedrigem Luftdruck kann sie sich ausdehnen und der Stand der Wassersäule steigt.

die Höhe des Wasserstandes im Rohr zeigt den Luftdruck an

Dieses kurze Zeitraffervideo zeigt die Änderung des Wasserstandes bei Luftdruckänderung:

Geigerzähler – Bausatz aus Fernost

Immer wieder fasziniert mich das Thema Radioaktivität. Genauer gesagt ist es das Messen oder Detektieren dieser ionisierenden Strahlung, die durch den Zerfall und von Atomkernen unter Abgabe von Energie entsteht. Dabei unterscheidet man prinzipiell die aus der Bewegung der zerfallenden Teilchen (also Teilchenstrahlung) ausgesandte Energie (Alpha- und Beta- Teilchen) und der Strahlungsenergie, die als elektromagnetische Welle transportiert wird (Gammastrahlung und auch Röntgenstrahlung). Diese Strahlungsarten haben unterschiedliche Energiedichten und Reichweiten. Je nach Art sind sie mehr oder weniger einfach abzuschirmen. Alphastrahlung ist eine Teilchenstrahlung, die von Materie (Luft, Wasser) stark abgebremst wird und ein Blatt Papier gar nicht mehr durchdringt. Allerdings geben diese Teilchen auf ihrer sehr kurzen Distanz die Energie ab. Das ist besonders gefährlich, wenn diese Partikel eingeatmet werden, oder an den oberen Hautschichten strahlen. Gammastrahlung wiederum durchdringt wie eine Funkwelle Materie sehr leicht und lässt sich am wirkungsvollsten mit Blei abschirmen. Das auch diese Strahlungsart alles andere als ungefährlich ist, braucht man wohl nicht zu erwähnen.

Diese Strahlung kann man nicht sehen, riechen, schmecken oder sonst irgendwie direkt wahrnehmen, aber die Gefährlichkeit ist trotzdem vorhanden. Mit relativ einfachen Techniken kann man diese Zerfallsprozesse aber sichtbar, bzw. hörbar machen und zählen. 

Das bewerkstelligt man schon seit langem mit einem sogenannten Zählrohr oder dank der modernen Technik auch mittels Halbleiter. Ein P-N-Übergang wird in Sperrrichtung betrieben und unter Ausschluss von Licht (also abgedunkelt) der ganz kleine Sperrstrom gemessen. Trifft nun energiereiche Strahlung auf diesen P-N-Übergang dann wird der Stromfluss kurzzeitig erhöht und kann detektiert werden.

Immer wenn sich die Möglichkeit ergibt, sehr günstig zu einem Detektor zu kommen, greife ich natürlich zu. So auch dieses Mal. Einen einfachen Bausatz, basierend auf der Detektion mittels Zählrohrs musste ich mir ansehen. Der Bausatz stammt aus Fernost und besteht aus einer Basisplatine, einem aufgesteckten Arduino Nano und einem ebenfalls aufgesteckten LC-Display.

Alle für die Detektion notwendigen Komponenten befinden sich auf dem Mainboard. Dazu zählt unter anderem die Hochspannungserzeugung für das Zählrohr, die mittels einfacher Boost-Konverterschaltung, angetrieben von einem 555er, realisiert wird. Um das Zählrohr auf dem Mainboard zu befestigen hat der Designer dieses Boards einfache Glasrohrsicherungshalter gewählt. Die passen zwar nicht ganz exakt, lassen sich aber soweit ausdehnen, dass sie das Zählrohr gut festhalten. Das Zählrohr ist übrigens ein J305. Es ist ca. 90mm lang und hat einen Durchmesser von knapp einem Zentimeter.

Das Zählrohr arbeitet bei einer Anodenspannung von 350V bis 480V. Nachstehend habe ich die Spezifikationen aus dem Datenblatt aufgelistet:

  • Anodenspannung: 350 v bis 480 V
  • Typ: J305 Geiger-Zählrohr
  • Kathodenmaterial: Zinnoxid
  • Wandungsdichte: 50 ± 10 cg/cm²
  • Betriebstemperaturbereich: -40 °C bis 50 °C
  • Durchmesser: 10 mm (±0,5 mm)
  • Länge: 90 mm (±2 mm)
  • Eigenhintergrundstrahlung: 0,2 Impulse/s
  • Empfindlichkeit gegenüber γ-Strahlung: 0,1 MeV
  • Stromaufnahme: 0,015 mA bis 0,02 mA
  • Arbeitsspannung: 380 V bis 450 V
  • γ-Strahlung: 20mR/h ~ 120mR/h
  • β-Strahlung: 100 ~ 1800 Pulse/min.
  •  100 ~ 1800 Pulse/min.

Die Signaldetektion sowie die Aufbereitung des Signals erfolgt auch auf dem Mainboard. Die erkannten Impulse werden über einen kleinen Piezolautsprecher wiedergegeben. Um sie auch zählen zu können, muss man nicht mit einer Stoppuhr vorm Lautsprecher sitzen und im Minutenabstand die Pieptöne zählen – nein – das übernimmt ein Microcontroller, der wie heute üblich, aus einem fertigen Board besteht. Hier hat der Designer einen Arduino Nano (oder auch Nanonachbau) gewählt. Auf dem wiederum läuft ein Programmchen, dass das Zählen der Impulse übernimmt und auch gleich schön auf einem zweizeiligen LC-Display anzeigt und idealerweise auch noch in µSievert/h umrechnet. Um die Pulse dem Arduino zu übergeben, wird der Pegel des Signals auf TTL-Level gebracht und an den Interrupt-Eingang des Arduino geschaltet. Das LC-Display benutzt den I2C Ausgang des Arduino. Die Leitungen dafür werden lediglich von der Buchsenleiste, in die der Arduino gesteckt wird, über das Mainboard zur Buchsenleiste für das Display geführt. Um das ganze System mit Spannung zu versorgen, werden direkt die 5V vom USB-Anschluss des Arduino verwendet. Optional kann man die 5V auch über eine Steckerleiste am Mainboard anschließen.

Ist alles zusammengebaut und die USB-Versorgung angesteckt, dann gibt es zuerst einmal eine kurze Wartezeit in der die Hochspannung aufgebaut wird. Hier hat sich der Programmierer eine Animation ausgedacht, die am Display „Boot…“ anzeigt.

Und dann geht es auch schon los. Der Geigerzähler ist betriebsbereit und beginnt zu zählen. Als Test habe ich lediglich eine alte Uhr, deren Zeiger mit Radiumfarbe bemalt sind, zur Verfügung. Hier ist zumindest eine deutliche Änderung der Anzahl der detektierten Zählimpulse festzustellen, wenn man die Uhr in die Nähe des Zählrohrs bringt.

Neumann KH-120

Diesmal hat ein defektes Aktivlautsprecherpaar zu mir gefunden, das aus der professionellen Ecke der Schallerzeugungsgeräte stammt. Auch diese Geräte haben gelegentlich Probleme, oder fallen aus. Recherchiert man ein wenig in den Foren im Internet, so sind die KH-120 Boxen sehr robust und langlebig. Die einzigen Probleme, über die ich gelesen habe, sind Ausfälle des Netzteils. Gelegentlich gibt es auch Meldungen über ein deutliches Rauschen bis Pfeifen auch wenn kein Signal angelegt ist.

Genau dieses Problem zeigten diese Exemplare. Nach dem Einschalten war ein Zischen, Rauschen bis zu leichten Pfeiftönen zu hören. Diese konnten mit den Filter- und Verstärkungsschaltern beeinflusst, aber nicht behoben werden. Wenn die Lautsprecher für längere Zeit in Betrieb waren – so in etwa nach einer halben Stunde, dann verringerte sich das Rauschen.
Leider habe ich es nicht geschafft, im Netz brauchbare Infos über diese Fehler zu finden, geschweige denn einen Schaltplan des Boards. Es bleibt daher nichts übrig, als selber auf die Suche zu gehen, das Board zu analysieren und Systematisch nach dem Fehler zu suchen.
Beginnend mit dem Entfernen der vier langen Inbus-Schrauben können die beiden Gehäusehälften vorsichtig auseinandergezogen werden. Darin offenbaren sich dann zwei weiße Dämmstoffblöcke. Diese können einfach herausgenommen werden. Die Drahtverbindung zu den Lautsprechern lässt sich über einen vierpoligen Stecker von der Platine lösen. Ebenso die Verbindung zum kleinen LED-Logo Board.

KH-120 ist geöffnet und der Dämmstoff entfernt
Im Bild ist der Steckverbinder mit den Drähten zu den Lautsprechern zu sehen

Als nächstes kann die Platine vom Gehäuse losgeschraubt werden.  (hier ist ein Torx Bit zu verwenden) Es sind alle Schrauben, bis auf die beiden schwarzen Kreuzschlitzschrauben zu lösen. Danach ist das Board vorsichtig aus dem Gehäuse zu entnehmen.

Platine des Neumann KH-120

Optisch sieht die Platine sehr gut aus. Alle Bauteile, die durch den Schall in mechanische Schwingungen und evtl. Resonanz versetzt werden können, sind mit elastischem Kleber gesichert. Das Boardlayout ist schön und übersichtlich. Man erkennt links unten im Bild den Netzeingang und den Netzfilter. Darüber ist der große Elko für die Glättung der, aus der Netzspannung erzeugten Gleichspannug zu sehen.

Das Netzteil ist ein Schaltnetzteil. Der über einen Controllerchip angesteuerte Mosfet taktet den Übertrager. Auf der Sekundärseite wird wieder gleichgerichtet und die symmetrischen Spannungen +Ub und -Ub für den Leistungsteil der Endstufen, sowie +15V und -15V für die Versorgung der Vorverstärkung und Signalaufbereitung erzeugt. Ub liegt dabei bei -42 bzw. +42V. Die Leistungsendstufen sind zwei TDA7293 ICs. Hierbei steuert einer den Hochtöner und der andere den Tieftöner Lautsprecher an.

Rückseite der Platine

Um nun nach der Ursache des Problems zu suchen, geht man systematisch vor. Mit einem Multimeter habe ich zuerst die Versorgungsspannungen überprüft. Die sind natürlich da. Aber die Wahrheit sieht man erst wenn man sie etwas genauer ansieht. Hier reicht das Multimeter nicht mehr aus. Ein Oszilloskop offenbart auch den AC-Anteil oder Restwelligkeit.

Auf dem Bild ist der AC-Anteil der -15V Spannungsversorgung dargestellt. Mit ca. 800mV ist der jedoch verdächtig hoch. Die Periodendauer dieser Spitzen mit 30µs weist auf das Regeln des Übertragers hin, wenn das Netzteil kaum Leistung abgeben muss. Innerhalb der Impulse ist die Schaltfrequenz des Übertragers zu erkennen. Was aber noch zu erkennen war und auf dem Standbild nicht zu erkennen ist, sind niederfrequentere, unsymmetrische Anteile mit einer ebenso hohen Amplitude. Demnach scheint ein Problem bei der Glättung der Spannung vorzuliegen. Also untersuchte ich den Aufbau der -15V Versorgung. Und siehe da, die +/-15V werden mit einem Längsregler realisiert. Für die +15V wird ein 7815 und für die -15V ein 7915 Regler im TO220 Gehäuse eingesetzt. In der Applikation Note werden für den IC am Eingang sowie am Ausgang Kondensatoren gegen Masse vorgeschrieben. Und genau diese habe ich mir zuerst genauer angesehen. Ein Elko mit 100µF/35V und 105° wird am Eingang des 7915 verwendet. Dieser Elko musste raus zum Messen. Gleich nach dem Ausbau kam mir vor, das Gewicht des Bauteils ist zu leicht – das fühlte sich so nach nichts an. Also ran an die LCR-Brücke und siehe da, die Kapazität lag irgendwo bei 1.4µF.

der Verursacher

Ein neuer Elko war schnell eingebaut und die erneute Messung der Spannungen offenbarte wieder ein schönes Signal. Der AC Anteil war nun wesentlich geringer und die unregelmäßigen Störungen waren verschwunden. Lediglich das Schalten des Übertragers war noch zu sehen. Was aber noch auffiel, bzw. nicht mehr auffiel, waren die Geräusche aus den Lautsprechern – das Rauschen war weg.

hier war der Verursacher verbaut

 

 

LEGO Mindstorms EV3 mit Matlab und Simulink

Wer mit Matlab und Simulink arbeitet oder lernt und einen LEGO EV3 Brick samt Sensoren und Aktoren besitzt, kann diese Systeme miteinander verknüpfen. Rund um den EV3 Brick gibt es natürlich eine Community und etliche Plattformen, über die man mit dem Brick kommunizieren kann. Doch dazu später.

Der Lego EV3 Brick ist im Wesentlichen ein Einplatinencomputer der mit einem LC-Display und vier Input- sowie vier Output-Ports (Schnittstellen für Sensoren und Aktoren) ausgestattet ist. Als Datenschnittstellen gibt es einen USB Port als HOST und einen MiniUSB Port als Interface zum PC und den diversen Softwaretools.

Will man mit dem Brick wireless kommunizieren, so ist dies über WiFi, beziehungsweise über Bluetooth möglich. Allerdings ist die Hardware zur Funkübertragung nicht im Brick verbaut und muss als USB Dongle in den Host-Port gesteckt werden.

Folgende USB Wifi Sticks sind lt. Internetrecherche mit dem EV3 und der originalen Legofirmware ab 1.08 kompatibel: (Quelle: Internet)

  • tp-link WL0084E
  • EDIMAX EW-7811Un mit dem Chipsatz RTL8188CUS
  • LogiLink WL0084W auf der Vertriebsseite (Conrad) angeblich mit dem Chipsatz Railink RT5370 jedoch das Herstellerdatenblatt gibt den Chipsatz RTL8188EUS an.

Im Test hat sich gezeigt, dass lediglich Dongles mit dem Realtek RTL8188CUS Chip im embedded Linux des EV3 Driver mäßig implementiert sind. Der Nachfolger von Realtek der RTL8188EUS funktioniert hier nicht.  Und die meisten Hersteller von Wifi USB Dongles (Stand 2021) vertreiben ihre Sticks mit dem 8188EUS Chip, sei dies TPLink, Edimax, LogiLink und wie sie alle heißen. Erkennbar ist das bei manchen an der Typenbezeichnung V2, oder 7811UN V2 (bei Edimax) oder V.02, V.03 bei TPLink. Ist diese Kennzeichnung beim Stick oder dessen Verpackung dabei dann wird das nix. Zumindest nicht, wenn mit der originalen Legofirmware gearbeitet werden will.

Vergleich edimax 7811un und 7811un v2
edimax 7188un mit RTL8188CUS chip
edimax 7188un V2 mit RTL8188EUS chip

Nun weiter zum EV3 Brick:

Auf diesem Einplatinencomputer läuft ein auf Linux basierendes embedded Betriebssystem das auf einem internen Flash- Speicher abgelegt ist. Dieses Betriebssystem wird in Form einer Firmware von LEGO zur Verfügung gestellt und ist zur Zeit in der Version 1.10 verfügbar. Diese Firmware ist beinhaltet sämtliche Partitionen der Laufwerke und deren Inhalt und wird im Rahmen eines Updates in einem „.bin“ File verpackt in den Flash geladen. Mit den Softwaretools „binwalk“ ist es unter Linux möglich, die Struktur der Partitionen aus dem Firmware File wiederherzustellen, zu ändern und wieder als „.bin“ Firmware Image auf die Hardware hochzuladen.

Es gibt aber auch Custom Firmware und Betriebssysteme die per SD-Card gebootet werden können. Welche Treiber hier mitgeliefert werden ist auf den Seiten der entsprechenden Custom OS Hersteller nachzulesen.

Folgende Betriebssysteme habe ich für den EV3 auf die Schnelle gefunden:

  • ev3dev (https://www.ev3dev.org/)
  • leJOS (https://sourceforge.net/projects/lejos/files/lejos-EV3/)

Man kann den EV3 mit folgenden (und ich nenne hier auch nur die gängigen die auch mir eingefallen sind) Tools bzw. Programmiersprachen programmieren:

  • LEGO EV3 Originalsoftware
  • NI Labview bist Labview Fall2016 ? (Unterstützt bzw. EV3 Plugins implementiert)
  • Matlab und Simulink (Harware Supportpackage für EV3 notwendig) link
  • MicroPython EV3 link

Fakt ist jedoch: der in die originale Lego EV3 Firmware (1.08H , 1.09D) integrierte Treiber für WLAN-Sticks unterstützt nur den Chipsatz RTL8188CUS. Und den benötigt man, wenn man über SIMULINK im „Monitor und Tune“ Modus mit dem Brick arbeiten will. Denn interessanter Weise klappt das NUR über eine WiFi Verbindung und NICHT über einen direkten USB Link zwischen PC und EV3.

Es ist auch NUR mit der Firmware 1.08H möglich mit Simulink zu kommunizieren da hier TELNET und SSH als Kommunikationsprotokoll genutzt werden. Und nur in der 1.08H ist eine ungeschützte Verbindung der Weg zum Erfolg. Ab der Version 1.09D ist ein Login notwendig.

Da die Firmware Versionen mittlerweile schwer zu finden sind, stelle ich hier einen Link zum Download herein.

Download EV3 Firmware 1.08H
Download EV3 Firmware 1.09D

Was benötigt man nun, um über Simulink mit dem EV3 sprechen zu können ?

  • zunächst muß Matlab und Simulink installiert sein
  • dann muss man das Support Package EV3 für Matlab und EV3 für Simulink herunterladen und installieren
  • auf dem EV3 Brick solltedie originale Firmware 1.08H vorhanden sein. Ist dies nicht der Fall kann die Version über den Firmwaredownloader in der orginalen EV3 PC Software auf das Gerät übertragen werden.
  • im EV3 Brick muß ein USB Wifi Dongle mit dem „CUS“ Chipsatz stecken
  • der PC muß idealerweise im selben Netz hängen wie auch das Wifi-Funknetz mit dem sich der Brick verbindet. Ein DHCP Server muß die IP Adressen für die Funkgeräte verteilen
  • jetzt kann der Brick gestartet werden. Danach muß er mit dem WLAN Netz verbunden werden (es sollten WPA2 Passwörter ohne Sonderzeichen festgelegt sein, da der EV3 Brick diese nicht zur Verfügung stellt)
  • ist der EV3 mit dem Netz verbunden, dann ist unter dem Menu „Brick Info“ die aktuelle IP Adresse des Bricks und die Brick ID zu notieren. Diese Infos werden gleich im Simulink Setup benötigt
  • nun zu Simulink: dort ist im Menu „configuration Parameters“ unter „Hardware Implementation -> Hardware board“ Mindstorms EV3 zu wählen 
  • das Setup wird im selben Menu unter „Hardware board settings“ -> Target hardware resources -> Groups -> Host to Target Connection festgelegt. Hier ist „Ethernet“ als Connection Type einzustellen. Die vorher ermittele IP Adresse und ID des Brick sind hier auch einzugeben.Das war´s dann auch schon. Nun sollte es möglich sein eure Simulink Modelle mit der EV3 Hardware zu nutzen und auch die Tune Infos während der Simulation am PC zu sehen …