IR-Thermokamera an Raspberry PI

Lepton Camera Module

Ein vielleicht interessantes kleines Projekt ist, ein Lepton Kameramodul mit einem Raspberry zu betreiben.  In meinem Fall verwende ich ein Lepton Modul mit 80×60 Pixeln bei einer Pixelgröße von 17µm und einer spektralen Empfindlichkeit im langwelligen Infrarot Bereich von 8µm bis 14µm. Die Framerate beträgt maximal 8,6 Hz. Das Kameramodul wird in ein Breakout-Board gesteckt und dieses mit dem Raspberry PI verbunden. Die Infos dazu gibt‘s weiter unten. Es gibt auch im Entwicklerbereich der Website flir.lepton.com eine Anleitung wie das Breakoutboard mit dem Raspi betrieben wird.

Camera Module mit Breakout Board V1.4

Benötigt wird ein Raspberry PI (in diesem Beispiel habe ich einen Raspberry PI4 verwendet), ein Lepton Thermal Kamera Breakout Board V1.4 und ein wenig Drahtwerk für die Verbindungsleitungen. Die genaue Teileliste (um auch alles Aufbauen und in Betrieb nehmen zu können) ist unten angeführt:

  • Raspberry PI (Modell 2,3 oder 4)
  • Micro SD-Karte (ab 8GB)
  • USB-Steckernetzteil mit Micro USB (oder USB-C) Kabel (je nach Raspberry PI Modell)
  • LAN-Kabel und Zugang zu einem Switch oder Router mit bestehender Internetverbindung
  • Idealerweise einen Rechner mit (SD-Karten-Slot) um das Image für den Raspberry vorzubereiten
  • Ein Monitor für den Raspberry PI mit HDMI oder MINI-HDMI-Kabel
  • USB-Tastatur, Maus
  • Lepton Thermal Kamera Breakout Board

Ist alles vorhanden, dann ist die Verdrahtung des Kamera Moduls mit dem PI herzustellen. Am einfachsten verwendet man die Jumper-Kabel (Female-Female) die in der Modulbastelwelt sehr beliebt sind. Ein Lötkolben ist für viele Demo- und Testaufbauten nicht mehr notwendig… Die folgende Skizze zeigt die herzustellende Verdrahtung:

Klicken zum Vergrössern

Das Pinning ist hier nochmals angeführt:

  • Raspi GPIO PIN01 (3V3)     –>    Lepton Pin VIN
  • Raspi GPIO PIN03 (SDA)    –>     Lepton Pin SDA
  • Raspi GPIO PIN05 (SCL)      –>    Lepton Pin SCL
  • Raspi GPIO PIN06 (GND)   –>     Lepton Pin GND
  • Raspi GPIO PIN19(MOSI)  –>     Lepton Pin MOSI
  • Raspi GPIO PIN21(MISO)  –>     Lepton Pin MISO
  • Raspi GPIO PIN23(CLK)      –>     Lepton Pin CLK
  • Raspi GPIO PIN24(CEO)     –>     Lepton Pin CS

Als Betriebssystem für den Raspberry Pi habe ich Raspbian installiert. Das geht entweder über den Download des RASPBIAN Images von der Webseite https://www.raspberrypi.org/downloads/raspbian oder auch über den NOOBS Installer. Mit dem Tool „etcher“ oder „win32diskimager“ kann die Image Datei auf die SD-Karte geschrieben werden. Wer mit NOOBS arbeitet braucht nur die zip-Datei auf die FAT32 formatierte SD-Karte zu entpacken. Ist das erledigt, dann einfach die SD-Karte in den Raspberry stecken, Monitor, Keyboard und Maus an den PI anstecken und zum Schluss die Stromversorgung aktivieren. Wenn NOOBS auf der Karte ist, dann wird nach dem Start eine Auswahl an zu installierenden Betriebssystemen angezeigt. Hier am besten auch RASPIAN auswählen und die Installation starten. Ist das abgeschlossen, dann ist je nach gewähltem Image entweder nur eine Konsole oder eben ein Desktop zu sehen. Im letzten Fall ist dann ein Terminal zu öffnen, damit in der Konsole weitergearbeitet werden kann.

Mit sudo raspi-config ist nach dem login in die Konsole das Raspberry PI Config – Tool zu öffnen. Darin sind folgende Services zu aktivieren:

  • SPI (unter Advanced Options)
  • SSH (unter Advanced Options)
  • I2C (unter Advanced Options)
  • Enable Camera (im Hauptmenu des raspi-config tools)

Danach ist der Raspberry zu rebooten. Nach dem erneuten Start und login (als User pi mit default Passwort raspberry) muss das Paket openCV installiert werden. Mit sudo apt-get install python-opencv ist das erledigt.

Auf GitHub habe ich eine Python Library von brandoncurtis und kekiefer für das Lepton Board gefunden. Die Library nennt sich pylepton und ist auf https://github.com/groupgets/pylepton zu finden.

Mit git clone https://github.com/kekiefer/pylepton.git legen wir das Repository  an und wechseln danach in das Verzeichnis cd pylepton. Jetzt kann das Setup Skript ausgeführt werden: sudo python setup.py install.

Mit dem folgenden kleinen Codebeispiel wird die Lepton Kamera ausgelesen, das 80×60 Pixel große Bild auf 800% skaliert und angezeigt.

 

 import numpy as np  
 import cv2  
 from pylepton import Lepton  
 with Lepton() as lepi:  
  a,_ = lepi.capture()  
 cv2.normalize(a, a, 0, 65535, cv2.NORM_MINMAX) # extend contrast  
 np.right_shift(a, 8, a) #daten in 8bit anpassen 
 cv2.imwrite("thermobild.jpg", np.uint8(a)) #bild schreiben 
 img=cv2.imread('thermobild.jpg')  
 cv2.imshow('Thermobild', img)  
 print('Originalabmessungen: ',img.shape)  
 scale_percent = 800  
 width = int(img.shape[1] * scale_percent / 100)  
 height = int(img.shape[0] * scale_percent / 100)  
 dim = (width, height)  
 resized = cv2.resize(img, dim, interpolation = cv2.INTER_AREA)  
 print('Achtfach vergroessert: ',resized.shape)  
 cv2.imshow("Thermobild 8x", resized)  
 cv2.waitKey(0)  
 cv2.destroyAllWindows()  
 exit()  

Das Ergebnis sieht dann zum Beispiel so aus:


 

 

Homematic Aktor Schnellreparatur

Das bekannte und beliebte Smarthome System HomeMatic von eQ-3 ist mittlerweile auch schon in die Jahre gekommen und bei vielen Usern schon lange im Einsatz. Viele Komponenten sind, wie der im Bild dargestellte Aktor, meist in Unterputzdosen unter Schaltern oder umgeben von reichlich Drahtwerk eingebaut. Damit die sie auch jederzeit einsatzbereit sind, müssen sie natürlich permanent mit Energie versorgt werden. So kann es schon vorkommen, dass die in dem Aktor verbauten Komponenten aufgrund der Alterung auch einmal den Geist aufgeben. Ist der Aktor beispielsweise seit drei Jahren in Betrieb, so bedeutet das, er hat schon 26280 Betriebsstunden hinter sich. (24h * 365Tage * 3Jahre). Und welche Komponenten hier am anfälligsten sind, kann sich der geübtere Elektroniker sicher schon vorstellen.

Eigentlich wollte ich diesen Aktor eines Kollegen nur schnell begutachten und wenn rentabel reparieren, aber dann dachte ich mir, dass ja sehr viele von diesen Teilen im Umlauf und verbaut sind. Selbst in meinen vier Wänden laufen seit Jahren einige dieser Module. Und irgendwann werden auch diese ihre Probleme bekommen. Also macht es sicher Sinn, die Erfahrungen der Reparatur hier zu posten.

Im konkreten Fall handelt es sich um einen Dimm Aktor HM-LC-Dim1T-FM. Ein Ein-Kanal Aktor für den Einbau in Unterputzdosen. Das Fehlerbild: Die LED am Aktor beginnt nach Anlegen der Spannung zu Blinken – sonst keinerlei Funktion. Er lässt sich weder in den Anlernmodus versetzen noch auf Werkseinstellung zurücksetzen. Die Blinkfrequenz ist in etwa 2x pro Sekunde.

HM-LC-Dim1T-FM mit gelöstem Deckel

Zuerst ist der Deckel des Aktors zu lösen. Er wird mit vier Rastnasen gehalten und lässt sich recht einfach heraus Klicksen. Jetzt sind zwei übereinander liegende Platinen zu erkennen. Zwischen den Platinen liegt eine Kunststoffplatte. Die elektrische Verbindung zwischen den beiden Platinen wird durch Drahtbrücken hergestellt. Das „Platinen Paket“ lässt sich einfach aus dem Kunststoffgehäuse herausziehen. Jetzt sind alle Drahtbrücken entlang der Kanten zu entlöten. Es genügt natürlich, die Brücken nur an einer Platine zu lösen ;).

In den beiden, oben dargestellten Bildern ist die Controller-Platine zu erkennen. (Das ist die mit dem BidCos-Modul) auf dieser befindet sich auch der Atmel Mikrocontroller. Dieser Platine benötigt jetzt ein wenig Zuwendung. Man muss vielleicht noch wissen, wie die Spannungsversorgung für die Niedervoltelektronik des Aktors erzeugt wird. Aus der Netzspannung wird mit Hilfe eines Spannungsteilers aus Kondensator und Widerstand und einer Diode eine Zenerdioden-Stabilisierung erzeugt und mit Hilfe eines Kondensators geglättet. Diese daraus gewonnene Gleichspannung ist die Quelle für die Niedervoltelektronik. Diese ist natürlich nur in einem sehr schmalen Band belastbar. Und genau in dieser Schaltung liegt das altbekannte Problem. Der Elko. Er verliert durch Alterung und Austrocknung seine Kapazität. Eine saubere Gleichspannung am Controller ist dann nicht mehr möglich. Die Elektronik geht in einen undefinierten Zustand.

In diesem Fall habe ich gleich vier Elkos erneuert. Um diese zu erreichen muss zuerst das Funkmodul von der Stiftleiste abgelötet werden. Mit ein wenig Löterfahrung sollte das kein Problem darstellen. Die Lötaugen lassen sich dann mit einer Entlötlitze einfach wieder reinigen. Jetzt sind die vier Elkos mit den folgenden Positionsnummern zu erneuern. (Es sind zwar nicht alle defekt, aber es kann nicht schaden, sie zu tauschen, wenn das Funkmodul schon einmal herunten ist)

  • C3 mit 10µF 16V  105°
  • C7 mit 10µF 16V  105°
  • C10 mit 100µF 16V  105°
  • C21 mit 100µF 16V  105°

Bei den Bauformen sollte man sich unbedingt an die Größe der originalen Kondensatoren halten, da das Platinen Paket sonst nicht mehr in das Gehäuse passen könnte. Sind die Kondensatoren erneuert, dann war es das (in diesem Fall) auch schon. Das Platinen Paket zusammengelötet – und ein schneller Test – und siehe da, der Aktor bootet wieder wie gewohnt. Der Zeitaufwand für die Reparatur ist mit ca. 30min und für die Kondensatoren mit etwa einem Euro zu rechnen…

Ergebnisse zur Blogstatistik

Vor einigen Monaten habe ich das kleine Umfragetool zur Erfassung der Altersgruppen der Besucher meiner Blogseite eingerichtet. Da jeden Tag ein paar Mails mit Umfrageergebnissen eintrudeln, dachte ich, es ist an der Zeit, einmal einen Status zu veröffentlichen. In der Umfrage gibt es vier Altersgruppen (unter 20, 21 bis35, 36 bis 50 und größer 50 Jahre), sowie die Möglichkeit das Geschlecht bekanntzugeben.

Das Ergebnis sieht mit heutigem Tag, wie folgt aus:

An der Umfrage haben insgesamt 378 Personen teilgenommen. Im Detail verteilen sich die Altersgruppen wie folgt:

  • Gruppe „kleiner 20 Jahre“       41 Personen
  • Gruppe „21 bis 35 Jahre“      129 Personen
  • Gruppe „36 bis 50 Jahre“         99 Personen
  • Gruppe „größer 50 Jahre“    109 Personen

Der Anteil der weiblichen Blogleser sieht wie folgt aus:

  • Gruppe „kleiner 20 Jahre“       36%  (15 Personen)
  • Gruppe „21 bis 35 Jahre“           0%   (  0  Personen)
  • Gruppe „36 bis 50 Jahre“        10%   (10 Personen)
  • Gruppe „größer 50 Jahre“      18%   (18 Personen)

Anzumerken ist noch, dass das Statistiktool auch von einigen Spammern benutzt wurde um im Kommentar Feld Spam-Links zu posten. Diese wurden jedoch von den Filtern entfernt und scheinen in der Statistik nicht auf.

Homematic Nachrichten pushen mit Telegram

Mit der Homematic CCU ist es ja schon lange möglich, Nachrichten aus Systemereignissen heraus zu generieren und per E-Mail zu versenden. Ein einfaches Beispiel hierfür ist die Bestätigung der Alarmanlage. Wird diese scharf oder unscharf geschaltet, so kann der Status als Email versendet werden. Oder hat man Umweltdatensensoren verbaut, so kann man sich auch die Daten, wie Temperatur, Luftfeuchte etc. senden lassen. Dazu muss einfach nur das Email-Plug-In unter Zusatzsoftware installiert und eingerichtet werden. Die Nachrichten werden dann per Script Aufruf versendet. Jedes Mal, wenn der Ziel-Email-Client, zum Beispiel am Smartphone, die Nachrichten abruft, ist man wieder informiert.

Es muss aber nicht unbedingt die E-Mail-Lösung sein um Nachrichten zu versenden. Eine weitere Möglichkeit ist der Messenger „Telegram“. Er ist den Nachrichten Messengern WhatsApp, Signal, etc. ähnlich und versendet per Push-Service. Der Versand unterschiedlichster Daten ist hier möglich. Bilder, Videos und Audiodateien können genau so einfach wie Textnachrichten versendet werden. Um einen den Telegram Dienst mit der Homematic nutzen zu können, muss man sich der freien Telegram API bedienen. In den folgenden Zeilen zeige ich, wie ich ein für mich funktionsfähiges System aufgebaut habe, um von der Homematic CCU Nachrichten und IPCam-Bilder an ein Smartphone mit installiertem Telegram Messenger zu senden.

In dem Beispiel beschreibe ich die Installation und Einrichtung auf einem Android System. Beginnend mit dem Download der APP „Telegram Messenger“ aus dem Google Appstore kann derselbe dann installiert und gestartet werden. Nach dem registrieren der Telefonnummer sollte die Software dann auch schon bereit sein.

Einrichten des Bots:

In der rechten, oberen Ecke des Bildschirms ist das Lupensymbol für die Suche zu sehen. Das ist anzuwählen, um ein Eingabefeld zu erhalten. In dieses Feld ist nun BotFather einzugeben. Das ist quasi das Administrationstool für das Erstellen und Einrichten von Bots. Unter einem Bot (von englisch robot ‚Roboter‘) versteht man ein Computerprogramm, das weitgehend automatisch sich wiederholende Aufgaben abarbeitet, ohne dabei auf eine Interaktion mit einem menschlichen Benutzer angewiesen zu sein.( Quelle: Wikipedia)

Suchen des BotFather

Ist der BotFather gefunden, dann kann der einfach angeklickt werden und es öffnet sich ein Fenster.  Um die Einrichtung des eigenen Bots zu starten, ist in der Nachrichtenzeile folgendes Kommando einzutippen:

/start

Jetzt kommt als Antwort eine Liste mit Befehlen, die für die Bot-Einrichtung und Konfiguration nützlich sind. Um nun einen neuen Bot zu erstellen ist

/newbot

einzugeben. Als nächstes ist ein Name für den Bot auszuwählen. Hier habe ich als Beispiel CCU gewählt. Sollte der Name bereits vergeben sein, dann einen anderen wählen. Das gilt ebenso für den Benutzernamen, der mit „_bot“ zu enden hat. Hier habe ich iretro_bot gewählt.

Ist der Name gewählt und gültig, so kommt als Antwort eine Meldung mit einem Token, der in der Regel 45 Zeichen lang ist. Dieser Token ist zu kopieren oder abzuschreiben. Er ist der Schlüssel für den Bot. Die Arbeiten am Smartphone sind nun soweit abgeschlossen und es geht am PC weiter. Im Browser (am besten Firefox) ist die Telegram Website aufzurufen. web.telegram.org ist der Link zu Website. Diese Schritte dienen dazu, neben dem Token auch noch die ChatID zu erhalten, die in weiterer Folge in den Homematic Skripten benötigt wird. Um sich im Webbrowser anmelden zu können, ist die zu Anfang in der App registrierte Telefonnummer einzugeben. Ist die Nummer eingegeben wird auf das Smartphone ein Anmeldecode gesendet. Mit dem kann die Telegram Session im Browser gestartet werden. Jetzt sollte im Browser Telegram auch der iretro_bot per Suche zu finden sein. Ist er gefunden, dann ist er mit „STARTEN“ zu öffnen und irgendeine beliebige Nachricht einzugeben. Das Eingeben einer beliebigen Nachricht ist wichtig um dann auch die ChatID erhalten zu können. Ist das geschehen, dann ist in der Adresszeile desselben Browserfensters der folgende Link einzugeben:

https://api.telegram.org/hier_den_45_Zeichen_langen_APItoken_eingeben/getUpdates

und mit Enter bestätigen. Jetzt sollte im Browser in etwa folgendes zu sehen sein: (Tab JSON ausgewählt) Den Inhalt der Website habe ich in die untenstehende Tabelle kopiert. (die originale ID wurde natürlich geändert…)

Nun kann durch Eingabe in die Browserzeile eine Testnachricht vom PC an das Smartphone gesendet werden.

https://api.telegram.org/botAPITOKEN/sendMessage?chat_id=123456789&text=Hallo das ist ein Test

Nach Bestätigen erscheint die Nachricht in der Telegram App am Smartphone und alles hat geklappt. Für alles Weitere wird nun nur mehr der API-Token und die chatID benötigt.

Homematic und Telegram

Jetzt ist soweit alles für den Einsatz von Telegram mit der Homematic vorbereitet. Meine Beispiele hier beziehen sich auf eine CCU2. Als Addon muss die aktuelle Version des CUxD auf der CCU installiert sein. (Zum Zeitpunkt des erstellen des Blogbeitrages ist es 2.3.0). Der CUx-Daemon ermöglicht es unter anderem, per Skript auf das Linux System der CCU zuzugreifen und stellt somit eine universelle Schnittstelle zu anderen Systemen dar.

Die einfachste und am schnellsten realisierbare Anwendung mit Telegram ist, ein von der Homematic getriggertes Skript zu starten, das eine PUSH-Nachricht versendet. Dazu erstellt man in der CCU ein neues Programm und wählt zuerst unter Bedingung einen „Trigger“ aus. Mit „Trigger“ ist zum Beispiel eine Tastereingabe, eine Bewegungserkennung des Bewegungsmelders, oder auch einfach nur das Auslösen eines beliebigen Sensors gemeint. Das sollte für einen HomeMatic Benutzer auch kein Problem darstellen. Dann wählt man als Aktivität Skript aus und öffnet das Scripteingabefenster.  Das folgende Code-Beispiel sendet eine Nachricht an das Handy wenn bei der HomeMatic der gewählte Trigger ausgelöst ist und das Script gestartet wird:

!Variablen definieren
string msg = "Das ist eine Testnachricht von der CCU";
string chatid = "123456789"; !das ist die chatid
string botAPI = "987654321:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi"; !und das ist die BOT API id

!Textnachricht versenden
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendMessage -F text='"#msg#"' -F chat_id="#chatid);

 

Die ChatID in dem Beispielscript und auch die botAPI ist hier nur symbolisch angeführt. Wären da reale IDs angeführt, dann würden eure Versuche alle als Nachrichten auf meinem Handy landen. 🙂 Diese beiden IDs sind also durch die vorher ermittelten zu ersetzen.

 

Versenden von Kamerabildern

Es geht aber noch besser. Viele User haben neben der HomeMatic CCU auch noch IP-Kameras im Einsatz. Da bietet es sich doch an, den Trigger der HomeMatic und seine Webanbindung für das Versenden der IP-Kamera Bilder zu verwenden. Denn Telegramm kann neben Textnachrichten auch Bilddateien versenden.

Um das zu realisieren muss die IP Kamera in der Lage sein, einen Snapshot per http – Aufruf zu erzeugen. Das sollte bei den meisten Kameras möglich sein. In diesem Beispiel habe ich eine Dlink DCS-932 und eine Vivotec FD81xx Domkamera getestet. Es klappt mit beiden.

Hier die grundlegenden Snapshotaufrufe der Kameras:
DLINK:
https://benutzername:passwort@ip_der_kamera/image/jpeg.cgi

VIVOTEK:
https://benutzername:passwort@ip_der_kamera/cgi-bin/viewer/video.jpg?

Als nächstes muss sichergestellt sein, dass die HomeMatic nach dem Aufruf der Snapshot-Links die von der Kamera gelieferten Bilder auch irgendwo im Dateisystem der CCU speichern kann. Hier hilft der CUx-Daemon wieder weiter. Ich speichere im /tmp Ordner das Bild der Kamera unter dem Dateinamen „cambild.jpg“

CUxD Startbildschirm

Nach dem Aufruf desKameralinks über das unten gelistete Script sollte die Datei im /tmp Ordner zu sehen sein.

/tmp Ordner

Eine Kontrolle des Inhaltes der Datei „cambild.jpg“ kann einfach durch Doppelklicken durchgeführt werden. Das Bild sollte dann im CUxD Fenster zu sehen sein.

Kamerabild im CUxD Fenster

Das folgend gelistete Script in einem neu erstellten HomeMatic Programm kann nun durch Aufruf das Kamerabild abholen und versendet es als Telegram Push Nachricht.

string picture = "/tmp/cambild.jpg";  !das ist der Pfad in dem die Bilddatei erzeugt und gespeichert wird
string chatid = "123456789";        !das ist die chatid
string botAPI = "987654321:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi";  !und das ist die BOT API id

!Kamera aufrufen und snapshotdatei in /tmp/ anlegen und als datei cambild.jpg speichern
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget --auth-no-challenge -O /tmp/cambild.jpg 'https://user:passwort@000.000.000.000:80/image/jpeg.cgi?profileid=1'");

!Kamerabild per Telegram versenden
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot"#botAPI#"/sendPhoto -F chat_id="#chatid#" -F photo='@"#picture#"'");

Basketball bambino Spielekonsole

Aus dem Jahr 1979 stammt dieses Exemplar, eine Spielekonsole mit dem Titel „BASKETBALL“.  Es handelt sich dabei um ein Tabletop-Gerät mit einem VFD (Vakuum-Fluoreszenz-Display) als Bildschirm für die Spielfeldanzeige. Das Gerät trägt das Label „bambino tm“ als Logo. Bambino ist (oder war) ein Japanischer Hersteller, der hauptsächlich elektronische Handheldspiele hergestellt hat. Zu den Titeln zählen unter anderen: Baseball, Basketball, Black Jack, Boxing, Football, ICE Hockey, Safari, Soccer, UFO Master Blaster und Horse Racing. Die Firma bambino wählte dabei immer ein auffälliges und eher unübliches Gehäusedesign. Diese Spielekonsole habe ich mit zwei weiteren Geräten aus der Rubrik „Retro Spielzeug“ wieder einmal nach einer online Recherche auf Flohmarktportalen gefunden.

Im Inneren des Gerätes sind Platinen mit dem Aufdruck „EMIX-CORP ET-05“ verbaut. Insgesamt sind drei Platinen verbaut:

  • ein Board mit den Kontaktflächen für die Tasten, die über Gummimembrane betätigt werden
  • ein kleines Board mit den Aus/Ein und Spielemodus Wahlschaltern
  • die Hauptplatine, auf der die Spannungserzeugung, das VFD Display und die CPU verbaut sind
4Bit Prozessor

Das Herz dieser Spielekonsole ist der HD38750A08 ein Mikrochip von Hitachi Semiconductor. Dieser Mikrochip ist ein 4Bit PMOS Mikrocomputer, mit eingebautem ROM, RAM, Timer/Counter und I/Os. Durch die eingesetzte PMOS Technologie sind die I/Os im Stande, direkt die Hochspannungseingänge der VFD – Anzeigen anzusteuern. Die Logik des ICs wird mit 10V versorgt und die insgesamt 32 Ein- und Ausgangspins können maximal 49V schalten ohne zerstört zu werden. Der Takt für den Prozessor wird mit einem internen RC – Oszillator erzeugt. Das RAM hat eine Kapazität von 80 Digits bei 4 Bit pro Digit, also 320 Bit. Der ROM Bereich besteht aus dem Programm-ROM und dem Pattern-ROM. Der Programmspeicher ist 1024 Worte bei 10bit pro Wort, also 10240 Bit groß und der Pattern – Speicher kann 64 Worte bei 10 Bit pro Wort, demnach also 640 Bit halten.

Spannungsversorung für die CPU

Den Strom bekommt die Konsole von vier Stück AA-Zellen mit je 1,5V oder optional auch von einem extern anschließbaren Netzteil. Eine kleine Wandler-Schaltung am Mainboard sorgt für die Betriebsspannungen des Prozessors und der VFD-Anzeige.

Sogar Töne kann die Konsole beim Spielen von sich geben. Auch wenn es nur die Piep-Töne eines Piezo Lautsprechers sind. Am Display sind die Spieler in allen Positionen als ansteuerbare Elemente vorhanden. Die „Körbe“ des Basketball Spiels sind, sowie auch Spielfeldmarkierungen, in der Gehäuseeinfassung des Displays dargestellt.

Spieler und Bälle als ansteuerbare Displayelemente

Im Rahmen der Reinigungsarbeiten konnte ich auch die Elektronik überholen und die teils gebrochenen Gehäusekomponenten instand setzen. Seife, warmes Wasser und eine Bürste leisteten hervorragende Dienste um den Schmutz der Jahre zu entfernen.

geöffnetes Gehäuse
Platine mit Tastaturkontakten

Das Video zeigt das Gerät in Funktion:

Schuco Micro-Racer

Schuco 1043 Micro-Racer

Ein weiteres Exemplar vom Flohmarkt aus der Rubrik altes Spielzeug, ist das Modell Nr.1043 des Herstellers Schuco. Es handelt sich dabei um einen Rennwagen (Micro-Racer Miniaturrennwagen).  Dieses Modell wurde ab dem Jahr 1967 hergestellt und vertrieben und stellt einen Mercedes Benz 2.5L4 dar. Es ist mit einem Federspeicher Antrieb (Werkantrieb) ausgestattet, der mit einem kleinen Steckschlüssel aufgezogen wird. Über einen Hebel (Bremshebel) in der „Fahrerkabine“ ist das Aktivieren des Werkantriebes nach dem Aufziehen möglich. Mittels einer Gewindestange, die gleichzeitig den Auspuff des Modells darstellt, kann ein sehr feiner Lenkwinkel eingestellt werden. Somit ist es möglich mit dem Modell Präzisionsfahrten zu machen. Die Front des Audtos besteht aus einem Anstoßdämpfer aus Gummi. Ebenso sind sie Reifen aus Gummi.

Das Modell habe ich in einem „gut gebrauchten“ Zustand bekommen. Das bedeutet, der Lack ist ziemlich ab. Leider fehlt auch der Schlüssel zu Aufziehen des Federwerkes. Das gute Stück hat also gelebt und somit auch reichlich „Patina“.

Ich habe mich entschlossen, den Micro Racer ein wenig aufzufrischen und zu restaurieren. Zumindest der Lack sollte in einem schöneren Glanz erscheinen und den Zustand und die Funktion der Mechanik konnte ich mir dann auch ansehen. Die zwei Metallhälften werden von zwei Schrauben zusammengehalten und sind schnell entfernt.

Im Bild oben ist zu erkennen, dass die Zähne des kleinen Getrieberitzels schon stark beschädigt (eingelaufen) sind. Das ist nur durch einen Austausch der Welle mit den Zahnrädern zu beheben. Durch Einfügen einer Unterlegescheibe habe ich versucht das Spiel der Welle in axialer Richtung zu nutzen und die Welle soweit zu verschieben, dass die Zahnräder im nicht beschädigten Bereich ineinandergreifen. Das funktioniert zwar, ist aber sicherlich keine langlebige Lösung, wenn man mit dem Auto auch spielen wollte. Für den Aufenthalt in der Vitrine ist es aber allemal ausreichend. Als nächste kümmerte ich mich um die Optik und habe dafür die Einzelteile der Karosserie zuerst einmal mit Wasser und Seife und einer Bürste und danach mit Isopropanol gereinigt. Dann habe mit den drei Farben, Silber, Schwarz und Rot die Teile nachlackiert.

Technische Informationen zum Modell:

Hersteller: Schuco
Kategorie: Blechspielzeug, Micro_Racer
Baujahr: ca 1967
Modell /Artikel Nr: 1043
Abmessungen: 9x5x3,5 cm
Bereifung: Gummireifen
Antrieb: Werkantrieb mit Aufziehkurbel /- schlüssel

Blechspielzeug Motorrad

Blechmotorrad

Dieses Stück, ein Motorrad aus Blech, ist mir bei einem Flohmarktbesuch aufgefallen. Ich kenne mich zwar mit Blechspielzeug nicht aus, aber es sah alt und interessant aus, der Preis passte – also musste ich es mitnehmen.  Nach einigen Recherchen im Netz, wurde ich ein wenig schlauer und habe zumindest herausgefunden, dass es sehr viele Blechspielzeughersteller gibt, bzw. gab. Die Herstellung von Blechspielzeugen begann offenbar schon im 19. Jahrhundert und wurde bis nach dem zweiten Weltkrieg betrieben. Auch heute gibt es noch Firmen, die dem Nostalgie-Boom folgen und wieder Blechspielzeuge im Retrostil herstellen. Wobei „Schuco“ und „Wilesco“ wohl zu den bekanntesten Fabrikanten zählen.

Das Modell, das ich erworben habe, ist mit einem Friktionsmotor, also nichts anderes als einem Schwungrad mit Untersetzungsgetriebe ausgestattet. Wird das Spielzeugmodell geschoben, so wird die Energie, die über die Reibung (Friktion) der Gummiräder in eine mechanische Drehbewegung umgesetzt wird, in das Schwungrad übertragen. Beendet man das „Anschieben“ des Modells, so sorgt wiederum die im Schwungrad gespeicherte kinetische Energie für das Antreiben der Gummiräder und somit das Weiterfahren des Modells.  Umständlich erklärt was eigentlich jeder kennt…

Markierung „L“ evtl. Herstellerlogo ?

Leider konnte ich keine genaueren Informationen zu dem Modell hier finden. Die Markierung „L“ könnte ein Herstellerlogo sein. Aber ich vermute, dass es sich um einen Nachbau (evtl. aus China) handelt und auch nicht besonders alt ist. Falls jemand zu dem Modell oder Hersteller oder auch zum Alter genauere Informationen hat, würde ich mich sehr freuen und könnte den Beitrag erweitern.

 

 

Reparatur am Handymainboard

Dieser kurze Beitrag ist keine Reparaturanleitung. Er zeigt nur, wie ich in diesem einen Fall ein IPhone Smartphone vor der Mülltonne bewahrt habe. Es handelt sich also um ein Apple IPhone, genauer gesagt um ein älteres IPhone 6. Die Fehlerbeschreibung war folgende: „Das IPhone findet kein Netz, egal mit welcher SIM-Karte“.

Über diesen Fehler findet man viele mögliche Ursachen und Meinungen im Netz, von schlecht kontaktierten BGA-ICs bis hin zu verstaubten und somit schlecht leitenden Kontaktflächen ist alles zu finden. Also, dachte ich, schau´ ich einfach einmal nach und demontierte das Gerät. Als das Mainboard dann frei lag konnte ich ein auf das Mainboard aufgestecktes Platinchen entdecken, das laut Netz die WLan Antenne sein sollte. Dieses Platinchen sollte mit vier Koaxialsteckern auf dem Mainboard befestigt sein.

 

neuer IPhone 6 Antennenprint mit vier Koaxialbuchsen

Jedoch war hier etwas eigenartig. Eine der vier Anschlussleitungen war verdreht und unter dem Mikroskop betrachtet, konnte man einen Riss in der Platine erkennen. Bei weiterer Betrachtung war auch zu erkennen, dass das Gegenstück des Koaxialsteckers vom Mainboard abgerissen war und Teile davon im Stecker der Antenne steckten. Also ein ziemlich eindeutiger Fall, dass hier etwas nicht mehr funktionieren kann. Und noch eindeutiger, dass hier schon jemand herumgebastelt hat und scheinbar mit einem Werkzeug auf die Antennenplatine gedrückt hat. Eine vom Mainboard abgerissene Buchse ist allerdings keine gute Ausgangssituation, denn wenn auch Stücke der Leiterbahnen abgerissen wurden, wird eine Reparatur nicht mehr vernünftig möglich. Also habe ich zuerst einmal vorsichtig die verbleibenden Antennenstecker gelöst und die Antenne entfernt.

Abgerissene Koaxialbuchse (rechts oben im Bild) links auf der Platine sind die Lötpads der Buchse zu erkennen

Im Bild ist im linken Bereich der Platine zu erkennen, wo die Koaxialbuchse befestigt war. Unter dem Mikroskop habe ich die restlichen Teile des Steckers entlötet und den Bereich gereinigt. Glücklicherweise waren keine Lötpads abgerissen oder fehlten. Eine neue Buchse konnte also eingebaut werden. Aber schon tauchte das nächste Problem auf. Woher sollte man die neuen Koaxialbuchsen bekommen? Meine schnellste Quelle für ein Ersatzteil war ein anderes defektes IPhone Mainboard das als Spender diente.

Koaxialbuchsen im Größenvergleich (Kantenlänge der Buchse ca. 1x1mm)

Die Teile waren schnell entlötet – das geht am besten mit einem fein dosierten Heißluft Lötkolben und etwas Flussmittel – und konnten auf wieder auf dem Mainboard platziert und festgelötet werden. Mit einem geeigneten Mikroskop lässt sich das problemlos realisieren.

Koaxialbuchsen in der Vergrößerung
Stereomikroskop
Mainboard am „Operationstisch“
die neuen Buchsen sind montiert

Der Sicherheit halber habe ich beide Buchsen im Bereich des Defektes ausgetauscht. Jetzt musste nur noch die gebrochene Antennenplatine erneuert werden und schon stand dem Zusammensetzen des Smartphones nichts mehr im Weg. Die Antennenplatine ist über das Netz auf diversen Versandseiten einfach und für wenige Euros zu finden.

Nach dem Zusammenbau und der Inbetriebnahme war schnell ein positiver Reparaturerfolg zu erkennen. Das Phone buchte sich in die Provider Zelle ein und funktionierte wieder. So wurde wieder ein Gerät vor der Mülltonne gerettet…

Universum SK992

Wieder ein Stück aus meiner Jugendzeit ist die Radio- Fernseher Kombination von Universum.  Das Modell nennt sich SK992 und wurde im Jahr 1968/69 hergestellt und vermutlich bis Mitte der 70iger Jahre verkauft. Diese zwei Modelle hat meine Lebensgefährtin aufgespürt und mir geschenkt, nachdem ich das Gerät in einem Museum in einer Vitrine gesehen und ihr gleich von meinen Erinnerungen mit diesem Modell erzählt habe. Die beiden Geräte waren teilweise defekt und sanierungs- bzw. reparaturbedürfig. Aber, so dachte ich mir, wenn zwei Geräte vorhanden sind, dann wird die Chance geeignete Ersatzteile aus einem der beiden als Spender zu entnehmen, doch ziemlich groß sein.

Kurz zu den technischen Daten des SK992:

  • er wurde in Deutschland im Auftrag der QUELLE GmbH (Universum) Fürth und Nürnberg hergestellt. Der Hersteller ist das japanische Unternehmen Asahi Radio Mfg. Co., Ltd., der das Gerät auch selbst unter der Bezeichnung Crown 7TV-4 verkaufte.
  • Herstellung / Verkauf von 1968 bis ca. 1975
  • abgesehen von der Bildröhre ist das Gerät volltransistorisiert und ist mit 33 Transistoren ausgestattet.
man beachte die Bezeichnung „Volltransistorisiert“ 🙂

 

  • Der TV-Empfänger wird mit einem Trommeltuner abgestimmt und kann analoge PAL Signale im VHF und UHF Band empfangen. VHF CCIR Band I + III Norm B
    UHF-Abstimmrad nach CCIR G(H), TV-Kanäle: VHF: Ch 2-12; UHF: Ch 21-68;
  • die SW – Bildröhre 190CB4 hat eine Diagonale von 18cm. Sie ist indirekt mit einer Heizspannung von 12V beheizt.
  • der Radioempfänger arbeitet nach dem Superheterodyn Prinzip. Per Umschalter kann zwischen TV und Radio hin- und hergeschaltet werden. MW 520 – 1605 kHz mit Ferritantenne
    UKW 88 – 108 MHz mit Teleskopstabantenne
  • ein dynamischer Oval Lautsprecher sorgt für die Tonausgabe und ist mit 1W belastbar
  • die Energieversorgung kann entweder über 220V Netzspannung oder über eine 12VDC Buchse durchgeführt werden. An die 12VDC Buchse kann ein separates Akkupack angeschlossen werden, das mit einer einfachen internen Ladeschaltung aufgeladen wird. (Umschaltung an der Geräterückseite zwischen Netz/Batt und Laden)
  • das Material des Gehäuses besteht aus thermoplastischem Kunststoff und hat die Abmessungen 240 x 200 x 210 mm bei ca. 4.8 kg
  • die Leistungsaufnahme beträgt 14 W bei Netzbetrieb und 10,5 W bei Batteriebetrieb

Nun zur Reparatur bzw. Restauration:

Seitenansicht des Innenlebens

Eines der beiden Geräte war vom optischen Zustand des Gehäuses noch sehr gut in Form. Jedoch technisch zeigte das Gerät keinerlei Funktion. An der Netz-AC Versorgung war bei 240V AC ein Strom von knapp einem Ampere zu messen. Das war eindeutig zu viel, denn das Gerät sollte eine Nennleistung von in etwa 14W bei Netzbetrieb haben. Es zeigte sich, dass der Verbraucher an der Primärseite des Netztransformators einen Kurzschluss hatte. Das bestätigte sich auch im Versuch, das Gerät über eine 12V DC Quelle zu versorgen. Das zweite Gerät funktionierte technisch teilweise (Radio und TV startete, aber die Bildgeometrie und Helligkeit war katastrophal. Auch das Gehäuse war in einem schlechten Zustand. Die Gehäuseteile waren stark verbeult und gerissen. Die innenliegenden Platinen waren teilweise auch an den Befestigungspunkten gebrochen. Dieses Gerät hatte mit ziemlicher Sicherheit schon einen Sturz überstehen müssen, oder es ist etwas darauf gefallen. So stand der Beschluss schnell fest -> das wird der Teilespender.

Die Fehler waren schnell gefunden. Der Netzgleichrichter hatte einen Kurzschluss und die Schaltung des Längsreglers arbeitete nicht. Grund dafür waren die Transistoren T30 und T31 (ein 2SB337 bzw. ein 2SB77)

Treibertransistor für den Zeilentransformator

Auch die Ansteuerung des Zeilentransformators arbeitete nicht, da auch der Treiber (2SB468) defekt war. Dank des Spenders waren diese Teile zum Großteil auch noch funktionstüchtig vorhanden und konnten eingebaut werden.

Spannungsregegelung

In weiterer Folge habe ich die Elektrolytkondensatoren im Bereich der Spannungsregelung und Stabilisierung erneuert. Auch die Elkos der Schalkreise der Bildröhrenansteuerung und -ablenkung wurden getauscht.

die 50 Jahre alten ELkos
die nagelneuen Elkos

Nach dem Reparieren und tauschen der defekten Komponenten wurde ein kleiner Probelauf gestartet und das Gerät einmal in Betrieb genommen. Im ersten Anlauf habe ich die 12V DC mit einem Labornetzgerät mit einstellbarer Strombegrenzung bereitgestellt. Sowohl im TV und Radiomodus gab es keine Kurzschlüsse mehr und es „rauchte“ auch nichts. Die Stromaufnahme im TV Modus lag bei 12V und bei mittlerer Helligkeit des Bildrohres bei ca. 600mA was nach Ohm einer Leistung von 7.2 Watt entspricht. Das ist weniger als die Werksangabe, aber auch einfach nachzuvollziehen, denn die Bildgröße und -geometrie stimmte auch noch nicht.

erster Probelauf

Der nächste Schritt war das Überprüfen und Einstellen der internen Spannungen. Die Bild Lage und Geometrie sollte danach folgen. Also habe zuerst den Spannungsregler auf seinen Nennwert eingestellt. Im Bild oben war die Betriebsspannung bei ca. 9.5V – daher auch das „kleine“ Bild am Schirm. Um die Schräglage des Schirmbildes zu korrigieren habe ich einfach die Ablenkeinheit am Röhrenhals gerade gedreht und wieder fixiert.

Bildröhre 190CB4
Bildröhre mit Ablenkeinheit

Bei dieser Gelegenheit konnte ich die Röhre auch ordentlich reinigen und sie optisch wieder in einen Neuzustand versetzen. Das habe ich übrigens auch während der Reparaturarbeiten mit allen Platinen, Rahmen und Gehäuseteilen gemacht. Jetzt fehlte noch die Justage der Bild Geometrien. Dafür habe ich in meinem Fundus noch einen alten PAL-Bildmustergenerator, der auch einen RF-Modulator eingebaut hat, mit dem vom VHF Band 1, Band 3 bis UHF durchgestimmt werden kann. Also ist das das ideale Gerät um einen alten Fernseher ohne externen Videoeingang zu prüfen. Hierbei werden auch gleich die Tuner des TV-Gerätes auf Funktion geprüft.

Bildmustergenerator

 

Eingestellte Bildgeometrie am Universum SK992

Nach einer finalen Reinigung der Bedienknöpfe kann das Gerät dann als „funktionstüchtig“ in der Vitrine die vielleicht nächsten 50 Jahre verbringen 😀

 

 

Diodenkennlinie mit Sourcemeter und Matlab aufnehmen

Dieses Mal gibt es hier keinen Bericht über die Restauration oder die Vorstellung eines alten Gerätes. Im Rahmen meiner beruflichen Tätigkeit muss ich immer wieder Messaufbauten realisieren und diese nach Möglichkeit automatisieren, um die Messzeiten zu minimieren. Auch die Datenauswertung und das Postprocessing möchte ich immer gerne automatisieren. Dafür gibt es sehr viele unterschiedliche Lösungsansätze. Der Grundansatz ist aber immer gleich. Ein, oder mehrere Messgeräte sind über eine Schnittstelle mit einem Rechner oder Controller verbunden. Auf dem Rechner oder Controller läuft eine Software, die das Messgerät steuert und die gemessenen Daten an den Rechner zurücksendet. Auf dem Rechner werden die Daten dann gespeichert, den Anforderungen entsprechend aufbereitet und ausgegeben.

Die Schnittstellen zwischen Rechner und Messtechnik können je nach Ausstattung des Messgerätes dabei RS232, GPIP, IEEE1394, USB oder LAN sein. Bei vielen Geräten wird der einfache SCPI-Befehlssatz im ASCII Code zum Befehle senden und empfangen über das entsprechende Protokoll der gewählten Schnittstelle verwendet. Die Software am Rechner oder Controller muss in der Lage sein die Hardware anzusprechen und schon kann eine Datenkommunikation hergestellt werden. Als Software oder Skriptsprache kann hier beispielsweise NI-LabVIEW, Matlab, C-Code, C++ Code, C#, Python, etc. verwendet werden. Und die Rechner- oder Controllerhardware kann ein Windows, Mac, oder LinuxPC sein, aber auch ein einfacher Arduino, RaspberryPi, oder ein programmierter Mikro-Controller, der eine der benötigten Schnittstelleninterfaces besitzt.

Bei meiner Arbeit wird das gerne mit Matworks Matlab gemacht (bzw. ich mache es gerne mit Matlab, weil ich Programme und Skripten lieber tippe als sie zu zeichnen 😀 ), einer skriptorientierten Software. Im konkreten Beispiel habe ich ein SOURCEMETER des Herstellers Keithley, das Keithley2400 über die RS232 Schnittstelle an einem WIN10 PC mit Matlab 2017b angesteuert. Das Sourcemeter hat die Aufgabe eine Diodenkennlinie aufzunehmen. Das Sourcemeter ist imstande einen Strom zu sourcen, also eine steuerbare Stromquelle zu sein und gleichzeitig den gesourcten Strom und die an den Klemmen anliegende Spannung zu messen. Umgekehrt wiederum kann es auch als steuerbare Spannungsquelle eingesetzt werden, die Spannung an den Klemmen und den Strom durch den DUT (Device Under Test) messen.  Und das geht in allen vier Quadranten, also Stromquelle oder -Senke, oder Spannungsquelle oder -Senke sein.

Genau das benötigte ich in diesem supereinfachen Beispiel um die Kennlinie eines PN-Überganges aufzunehmen und zwar vom Diffusionsbereich bis in den Durchlassbereich und natürlich auch wenn der PN-Übergang unter Photonenbeschuss steht 🙂

Die folgenden beiden Matlab-Skripten ermöglichen diese einfache Kennlinienaufnahme. Der Messaufbau selbst besteht lediglich aus einer, an die Klemmen des K2400 angeschlossenen Diode (in diesem Fall eine Photozelle). Dabei stellt das erste Skript eine gesteuerte Stromquelle dar und im zweiten Skript wird die Spannungsquelle durchgesteuert und jeweils die Daten aufgezeichnet und zum Schluss als Plot dargestellt.

 Matlab Code stromgetrieben:

% IV Logger PN Kennlinie
% 2.05.2019 ingmarsretro
% der supereasysimple-code
% drive current and measure voltage
% with sourcemter über RS232 

 serialObject = serial('COM4','BaudRate',19200, 'DataBits',8);   

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Sourcemeter 2400 setup                             %
    % serial config: 8N1, 19200, termchar CR+LF          %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
    fopen(serialObject)
    s.InputBufferSize = 6000;
    fprintf(serialObject,'*RST');
    
    mincurr = -15E-3;  % maximaler negativer strom (load an der Zelle) 
    maxcurr = 10E-4;   % maximaler positiver strom 
    step = 1E-5;       % schrittweite
    

    %%%%%%%%%%%%%%%%%%%%%%%%%%
    % Messgeraet einstellen  %
    %%%%%%%%%%%%%%%%%%%%%%%%%%
    % SOURCING ->  CURRENT
    %
    %fprintf(serialObject,':INIT:CONT OFF;:ABOR');
    fprintf(serialObject,':FORM:DATA ASCII');
    fprintf(serialObject,':SOUR:FUNC CURR');
    fprintf(serialObject,':SOUR:CURR:MODE FIX');
    fprintf(serialObject,':SOUR:CURR:RANG 10E-2'); % -> 000.000mA
    fprintf(serialObject,':SOUR:CURR:LEV 0.0'); % -> Starteinstellung 0 A
    
    % MEASUREMENT -> Spannung 
    fprintf(serialObject,':SENS:FUNC "VOLT:DC"');
    fprintf(serialObject,':SENS:VOLT:PROT 8');     % -> compliance 8V
    fprintf(serialObject,':SENS:VOLT:RANG 10E-1'); % -> 0.00000 V
    fprintf(serialObject,':TRIG:COUN 1');
    
    %fprintf(serialObject,':CONF:VOLT:DC');
    
    fprintf(serialObject,':OUTP ON');

        %% Messen und Daten abholen
    count = 1; 
    v(1)=0; i(1)=0;  %init der arrays 
   
       for curr = mincurr:step:maxcurr
           
          strom=num2str(curr);
          command = strcat(':SOUR:CURR:LEV ',{' '},strom);
          fprintf(serialObject,char(command));
         

          fprintf(serialObject,':READ?');
          data=fscanf(serialObject);  % gesamten buffer des device einlesen
          c = strsplit(data,',');          % gelesenen string nach ',' in zellen zerlegen
          i(count) = str2num(cell2mat(c(2)));                 % stromzelle 
          v(count) = str2num(cell2mat(c(1)));                 % spannungszelle
        

        count = count +1;
       end
   
    
    figure(1);
    plot(v,i);
    grid on; hold on;
    xlabel('voltage [V]'); ylabel('current [A]')
    title('IV - Kennlinie ');
    
    %% instrument in local mode schalten
    fprintf(serialObject,':OUTP OFF');
    fprintf(serialObject,'SYSTEM:LOCAL');
    fclose(serialObject);

 

Matlab Code spannungsgetrieben:

% IV Logger PN Kennlinie
% 3.05.2019 ingmarsretro
% der supereasysimple-code
% drive current and measure voltage
% wit sourcemter über RS232 

 serialObject = serial('COM4','BaudRate',19200, 'DataBits',8);   

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % Sourcemeter 2400 setup                             %
    % serial config: 8N1, 19200, termchar CR+LF          %
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
    fopen(serialObject)
    s.InputBufferSize = 6000;
    fprintf(serialObject,'*RST');
    
    minvolt = -1;      % maximale negative spannung  
    maxvolt = 0.5;       % maximale positive spannung
    
    %mincurr = -20E-3;  % maximaler negativer strom (load an der Zelle) 
    %maxcurr = 10E-4;   % maximaler positiver strom 
    
    step = 1E-2;       % schrittweite
    
    % 
    %%%%%%%%%%%%%%%%%%%%%%%%%%
    % Messgeraet einstellen  %
    %%%%%%%%%%%%%%%%%%%%%%%%%%
    % SOURCING ->  VOLTAGE
    %
    %fprintf(serialObject,':INIT:CONT OFF;:ABOR');
    fprintf(serialObject,':FORM:DATA ASCII');
    fprintf(serialObject,':SOUR:FUNC VOLT');
    fprintf(serialObject,':SOUR:VOLT:MODE FIX');
    fprintf(serialObject,':SOUR:VOLT:RANG 10E-0');    % -> 00.0000 V
    fprintf(serialObject,':SOUR:VOLT:LEV 0.0');       % -> Starteinstellung 0 V
    
    % MEASUREMENT -> CURRENT 
    fprintf(serialObject,':SENS:FUNC "CURR:DC"');
    fprintf(serialObject,':SENS:CURR:PROT 40E-3');     % -> compliance 10.0000 mA
    fprintf(serialObject,':SENS:CURR:RANG 10E-2');     % -> 0.00000 mA  (muss kleiner als complience sein)
    fprintf(serialObject,':TRIG:COUN 1');
    
    %fprintf(serialObject,':CONF:VOLT:DC');
    
    fprintf(serialObject,':OUTP ON');


        %% Messen und Daten abholen
    count = 1; 
    v(1)=0; i(1)=0;  %init der arrays 
   
       for volt = minvolt:step:maxvolt
           
          spannung=num2str(volt);
          command = strcat(':SOUR:VOLT:LEV ',{' '},spannung);
          fprintf(serialObject,char(command));
           


          fprintf(serialObject,':READ?');
          data=fscanf(serialObject);  % gesamten buffer des device einlesen
          c = strsplit(data,',');          % gelesenen string nach ',' in zellen zerlegen
          i(count) = str2num(cell2mat(c(2)));                 % stromzelle 
          v(count) = str2num(cell2mat(c(1)));                 % spannungszelle
        
        

        count = count +1;
       end
   
    
    figure(1);
    plot(v,i);
    grid on; hold on;
    xlabel('voltage [V]'); ylabel('current [A]')
    title('IV - Kennlinie ');
    
    %% instrument in local mode schalten
    fprintf(serialObject,':OUTP OFF');
    fprintf(serialObject,'SYSTEM:LOCAL');
    fclose(serialObject);

 

Das Ergebnis der beiden Skripten ist der folgende Kennlinienverlauf: