Taschenradio SANYO Solid State

Loading

DSC_0045Ein Taschenradioempfänger, der auch schon einige Jahre sein Dasein fristet, ist das kleine Gerät des Herstellers SANYO.  Das Gerät dürfte aus den späten sechziger- (1965 ??) bis frühen siebziger Jahren stammen.

Es handelt sich dabei um einen AM/FM Empfänger, mit den kompakten Abmessungen von 7cm Breite, 11,5cm Höhe und einer Tiefe von 3,5cm. Er nennt sich SANYO SOLID STATE. Ein Lautsprecher mit 5,5cm Durchmesser und eine 3,5mm Mono- Klinkenbuchse geben den Klang wieder.

Das Gerät trägt die Modellbezeichnung 8F-891 und hat einen Frequenzbereich von 87-108MHz im FM-Band und 530-1600kHz im Mittelwellenband. Die Energie bezieht der Empfänger aus einer 9V Blockbatterie.

Seitlich am Gehäusedeckel ist eine ausklappbare Teleskopantenne angebracht. Ebenso ist die Lautstärken- und Sendereinstellung von hier zugänglich. An der Rückseite ist ein Schiebeschalter für die Umschaltung zwischen den Empfangsbändern angebracht.

DSC_0050

Das Innenleben besteht aus einer sehr dicht gepackten Platine. Bestückt ist die Platine mit 8 Transistoren. Der Lautsprecher hat eine Impedanz von 60Ohm und eine Leistung von 0.3Watt. Trotz der langen Zeit ist dieses kleine Radio heute noch voll funktionstüchtig. Zum Lieferumfang gehörte auch eine Lederimitat-Schutzhülle.

DSC_0047Vorderseite ohne Schutzhülle

Untitled-1

Rückseite ohne Schutzhülle

DSC_0046

Seitenansicht

Nachlöten von BGA-Chips

Loading


DSC_0002
Immer wieder kommt es vor, dass bei Rechnern, vorwiegend bei Notebooks und Laptops, nach einiger Betriebszeit Systemabstürze und Graphikfehler entstehen. Diese Graphikfehler äußern sich meistens als farbige Linien am Bildschirm, oder ungewöhnlichen Zeichen und Artefakten, die plötzlich auftreten. In sehr vielen Fällen ist das auf einen Fehler der GPU (Graphic Processing Unit) also den Graphikprozessor zurückzuführen. Da der je nach Bildschirmauflösung und Komplexität seiner Rechenoperationen thermisch sehr heiß wird, kann es zu Problemen kommen. Folgende Punkte verursachen diese Probleme:

  • die Kühlung des Rechners ist durch verstaubte und blockierte Luftwege eingeschränkt
  • die Wärmeleitpaste zwischen dem Prozessor und der Heatpipe ist vertrocknet und spröde und kann die Wärme der Die-Cores nicht an die Pipe übergeben
  • der Rechner ist falsch aufgestellt (z.B. auf Polstern oder Decken), sodass Lüftungsöffnungen blockiert sind

All das führt zu einer starken Erwärmung bzw. Überhitzung der GPU. Die ist ja meist intern mit einem Schutz versehen und schaltet sich ab, bevor sie stirbt.  Der Chip besteht aber aus einem Substrat (einem Trägermaterial mit den vielen Anschlüssen BGA (BallGridArray) und dem eigentlichen Chip, dem Die, also dem Halbleiter). Um die unzähligen Anschlüsse von so einer GPU nun auch nach außen führen zu können, muss das Substrat um einiges größer sein als der Die. Und genau da entsteht das Problem. Der Die, also der Kern erwärmt sich und den Bereich des Substrats auf dem er liegt, nun erheblich mehr, als den restlichen Bereich des Substrates. Dieses Erwärmen und Abkühlen verursacht auch eine thermische Längenänderung des Substratmaterials. Diese ist aber nicht homogen. Jetzt kann man sich vorstellen was mit den hunderten Balls (also den Zinnbällen mit denen das Substrat elektrisch zum Mainboard verbunden ist) passiert. Die werden durch die ständige thermomechanische Beanspruchung auch gestresst und beginnen irgendwann zu brechen. Dabei genügt es oft schon, wenn ein Ball keine saubere Verbindung mehr zum Mainboard herstellt. Dann führt das zu Ausfällen und Graphikfehlern.

Man findet im Netz oft viele Tipps und Tricks, solcher Probleme Herr zu werden. Manche Leute nehmen einen Haarfön und braten mit heißer Luft auf den BGA Chip, in der Hoffnung, ein Neuverbinden der Zinnverbindungen auszulösen. Manche legen das ganze Mainboard in den Pizzaofen und backen es.  Wenn man es etwas professioneller angehen will, so kann man, wie in diesem Fall, mit einer Rework-Lötanlage den BGA nachlöten.

Die besten Varianten sind allerdings, den Chip zu reballen, also den Chip auszulöten und jegliches Zinn von Mainboard und Chip zu entfernen, danach den BGA-Chip mit neuen Zinnballs versehen und dann wieder auf das Mainboard zu löten. Die allerbeste Variante ist es, die GPU komplett zu erneuern. Jedoch sind diese beiden Möglichkeiten eine Preisfrage und bei älteren Laptops und Notebook sicher nicht mehr rentabel.

Also stelle ich hier das Nachlöten (resoldern) des BGA Chips mit Hilfe der Rework-Lötstation von ERSA (IR550) vor.

DSC_0005Zuerst muss der Rechner zerlegt und das Mainboard freigelegt und ausgebaut werden. Hierbei ist es besonders wichtig, vorher alle Energiequellen (Akku) zu trennen und zu entfernen!

 

DSC_0006Hier ist das Kühlsystem schon demontiert. Man sieht die trockene und spröde Wärmeleitpaste an den DIEs der CPUs und Bridge IC´s.

DSC_0007Ein klassisches Beispiel für einen schlechten Airflow 😀

DSC_0012Ist das Mainboard nun ausgebaut, wird der betroffene Baustein entlang seiner Kante mit Flussmittelgel bestrichen. Das wird später beim Erhitzen dünnflüssig und durch die Kapillarwirkung unter den Baustein gesogen. Dort sorgt es dann wieder für einen verbindungsfreudigeren Lötprozess.

DSC_0011Jetzt kann das Mainboard in der Lötanlage platziert und ausgerichtet werden.

DSC_0014Der Lötvorgang wird vollständig vom Rechner gesteuert. Hier ist es wichtig, ein Temperatur- und Zeitprofil zu erstellen, das den Erwärmungs- und Abkühlvorgang entsprechend der Baustein-Lötspezifikation erfüllt.

DSC_0015Während des Lötprozesses kann man das Verhalten des Flussmittels und der Balls mit Hilfe eines Macrokamerasystems verfolgen.

DSC_0020Ist der Lötprozess vollendet, kann man nach dem Reinigen sämtlicher, mit der Kühlung zusammenhängenden Teile, mit dem Zusammenbau beginnen. Ebenso muss die alte Wärmeleitpaste vorsichtig entfernt und durch neue ersetzt werden.

Das Video zeigt den hier beschriebenen Lötprozess.

 

Hier ein allgemeiner Film zur ERSA IR550 Lötanlage

Schatz Drehpendeluhr

Loading

DSC_2159Das neue Jahr hat gerade erst begonnen und schon ist wieder eine kleine Arbeit der letzten Tage online. Dieses Schätzchen habe ich wieder als „überholungsbedürftig“ günstigst ergattert. Die Uhr war in einem relativ guten Zustand.  Auf den ersten Blick fehlte nur ein Stück der Torsionsfeder, bzw. war sie abgerissen und die Reste total verdrillt und geknickt. Die Befestigungsteile der Feder waren glücklicherweise da.

Die Uhr dürfte einst in einem starken Raucherhaushalt gestanden sein, denn sie roch wie ein voller Aschenbecher und die Glasscheiben waren mit einer gelblichen Nikotinschicht überzogen. Also, wie üblich nach der ersten Sichtung erstmal alles zerlegen und mit Reinigungsbenzin und Pinsel bzw. auch Glasfaserpinsel die Einzelteile von den verharzten Ölresten und Nikotinschichten befreien. Leider meinen manche Besitzer, dass viel Öl im Räderwerk auch viel hilft und alles wieder flutscht. Deshalb wird anscheinend gern und viel mit allem was griffbereit ist, geschmiert. Das gibt dann bald eine schöne, klebrige Schicht, die dann genau das Gegenteil eines leichtlaufenden Rades bewirkt. Auch ist die Zugfeder interessanterweise immer bis auf den allerletzten Anschlag aufgezogen … Also zuerst immer Feder entspannen und dann mit dem Demontieren beginnen.  Die Reinigung war diesmal recht mühsam und langwierig… ich werd´mir echt einmal ein Ultraschallbad organisieren müssen (in den Foren liest man immer wieder davon – scheint ja ein perfektes Reinigungsgerät zu sein…)

DSC_2154Doch irgendwann war alles gereinigt und ich konnte das Werk wieder zusammenbauen. Es handelt sich übrigens um eine „Schatz 400“ mit der 53 auf der Rückenplatine. Das Ziffernblatt  hat einen Druckmesser von 80mm. Die Uhr ist in einem Laternengehäuse mit drei Glasscheiben untergebracht und hat die Gesamtabmessungen von: 13x11x20cm (BxTxH). An der Bodenplatte befinden sich drei in der Höhe einstellbare Schrauben um die Nivellierung durchzuführen. Ein Hebel an der Bodenplatte fixiert bei Bedarf das Pendel.

Nach dem Zusammenbau fehlte jetzt nur noch eine neue Pendelfeder. Da ich hier keine Ahnung hatte, welche Federstärke für diese Uhr notwendig ist, habe ich in den Foren gesucht – und Dank eines sehr hilfsbereiten Forenmitgliedes – die passende Info und gleich einen Bestell-Link bekommen. Die Schatz 400 53er benötigt eine ‚Horolovar 0.0023″ = 0.058mm‘ Feder.  Zufälligerweise hatte ich noch genau die passende in meiner Sammlung und konnte die Uhr komplettieren. Im Uhrenfedern habe ich eine Liste mit gängigen Uhren und den dazu passenden Federn.

Jetzt kam die sehr zeitaufwendige Einstellarbeit. Die richtige Position des Ankers und die Nulllage des Mitnehmers auf der Feder sowie dessen Position ist ausschlaggebend für ein fortlaufendes Werk. Ansonsten pendelt die Uhr aus und bleibt nach einiger Zeit stehen. Läuft das Werk dann einmal, kann mit der Ausladung der Pendelgewichte die Ganggenauigkeit eingestellt werden. Ich mache das immer im „Eintagesrythmus“ und sehe um wieviel schneller oder langsamer sie in 24 Stunden läuft und stelle dann tageweise nach. Nach ca. einer Woche läuft sie dann schon ziemlich genau…

DSC_2160

DSC_2156

 

DSC_2157

DSC_2155

 

Und hier ein kleines Video von der fertig restaurierten und wieder laufenden Uhr:

 

Röhrenradio Eigenbau – Der Anfang

Loading

IMAG1370
Ein Projekt, das schon seit einigen Jahren in der Werkstatt herumliegt und bei dem ich mich nie zum Weitermachen motivieren konnte, ist ein selbstgebastelter UKW Radioempfänger mit einer Röhrenendstufe. Da ich aus Kindertagen noch einiges an gesammelten Elektronenröhren aufbewahrt habe, ist mir irgendwann einmal in den Sinn gekommen mit diesen Röhren etwas zu basteln. So habe ich vor nun schon fast 15 Jahren begonnen, aus 2 Stück Endpentoden EL84 und einer Doppeltriode ECC83, einen AB Verstärker aufzubauen. Als Grundplatte habe ich ein Stück Pertinaxplatte zugeschnitten, darauf die drei Röhrensockel montiert und auf der Unterseite alles fliegend verlötet.

 

 

schaltplan
LT-Spice Schaltplan des Verstärkers

Die Verschaltung der Komponenten habe ich nach folgendem Schaltplan aufgebaut. Der Schaltplan ist mit der freien Schaltungssimulationssoftware LT-Spice erstellt worden. Um die hohe Anodenspannung von 250 bis 300V bei knapp 48mA an den Lautsprecher zu bringen, bedient man sich eines Impedanzwandlers in Form eines Transformators. Es gibt Berechnungstabellen, nach denen man einfach einen Transformator dimensionieren und wickeln kann. Während meiner Schulausbildung habe ich die Berechnung und Dimensionierung von Übertragern und Transformatoren einmal ziemlich ausführlich erlernt, doch mangels Anwendungsbedarf auch wieder ziemlich schnell verlernt oder vergessen. (oder doch ein Problem des Alterns??) So hat sich der Griff zu den Dimensionierungstabellen und -rechnern als sehr praktisch und zielführend erwiesen… In meinem Fall habe ich einen EI78 Kern mit 2×0,5mm Luftspalt ermittelt und mit knapp 6000Windungen bei 0,2mm Cu auf der Primärseite und knapp 200 Windungen bei 0,7mm auf der Sekundärseite gewickelt.

Dann ging´s an den Zusammenbau der Komponenten: Zuerst habe ich die Pertinax-Platte zugeschnitten und Löcher für die Röhrensockel gebohrt.

IMAG1361Jetzt können die Röhrensockel eingebaut werden. Die großen Siebelkos habe ich auch durch die Grundplatte gesteckt und auf der Rückseite mit einem „Drahthaken“ verankert, um sie später einfach anlöten zu können. Der Brückengleichrichter soll die Anodenspannung gleichrichten…

IMAG1368Das Drahtgewirr im folgenden Bild zeigt die fertig verlöteten und mit Bauteilen bestückten Sockel der Trägerplatte.

IMAG1367

Von der anderen Seite sieht das ganze schon ein wenig aufgeräumter aus… Hier ist die Trägerplatte und der Impedanzwandler schon in ein formschönes, handgefertigtes Holzgehäuse (an dieser Stelle vielen Dank an Patrick und seinen Onkel für das Bauen des Holzgehäuses) eingebaut. IMAG1371Nun konnte ein erster Funktionstest des Verstärkers stattfinden. Jetzt musste ich provisorisch die Spannungsversorgungen für das Röhrensystem herstellen. Für die 6.3V Heizspannung der Röhren war ein DC Labornetzgerät ausreichend. Die Anodenspannung erzeugte ich mit dem einstellbaren Trenntransformator, den ich für den ersten Versuch auf ca 170VACeff einstellte. Das ergibt eine Gleichspannung von ca 240VDC an den Anoden. Ein kleiner 8Ohm Lautsprecher an der Sekundärseite des Impedanzwandlers sollte dann für den Hörgenuss sorgen… Die Audioquelle war einfach der Kopfhörerausgang des Mobiltelefons… Und siehe da, es tönte aus dem Lautsprecher und sogar gar nicht so schlecht…

Jetzt, oder zumindest wenn die Zeit es wieder erlaubt, sind folgende Punkte zu lösen bzw. zu bauen:

  • Stromversorgung (Anode und Heizung) … habe hier noch keine andere Lösung als selbst wieder einen Trafo zu wickeln, der zwei Sekundärwicklungen hat … (wird aber viel Kupfer)
  • Das Empfängermodul (hier habe ich geplant mit dem TDA7000 IC und einer Schaltung mit Kapazitätsdiode im Parallelschwingkreis die Senderabstimmung zu machen, um mit einem Poti die Sender einzustellen) Danke an Matthias für die Spende der TDA7000er
  • Eine Anzeigeeinheit für die Frequenz (hier stelle ich mir einen Punktearray aus Leds vor … )

 

Frohe Weihnachten

Loading

baumFrohe Weihnachten an alle Besucher des Blogs!

Ein Jahr ist nun vergangen seit ich mit dem „Technik- und Retroblog“ begonnen habe und es sind doch einige Beiträge entstanden.

Der eine oder andere hat sich auch hierher verirrt und vielleicht auch einen interessanten Beitrag entdeckt. Auf jeden Fall wird es mit dem Bloggen weitergehen und wenn es die Zeit erlaubt auch eine weitere Rubrik mit und über  Computer aus den 80er Jahren aus der 8 Bit Zeit.

In diesem Sinn:

Frohe Weihnachten und schöne Feiertage!

 

Singbox – UKW Radio aus Fernost

Loading

DSC_4912Ein nettes kleines Teil für gerade einmal dreizehn Euro ist mir diesmal untergekommen.Es nennt sich „SINGBOX“ und ist ein UKW-Radioempfänger der in Fernost verkauft wird  und auch über online-shops hier zu bekommen ist. Das Teil hat die Abmessungen von 12 x 7 x 3 cm und wiegt knapp 220 Gramm. Eine kleine Teleskopantenne mit drei Segmenten sorgt für einen vernünftigen UKW – Empfang. Das Gerät ist aber nicht nur ein Radioempfänger, nein – es kann auch MP3. Ein seitlich eingebauter Micro-SD Kartenslot kann MicroSD Karten bis 16GB Kapazität lesen und darauf befindliche MP3-Dateien abspielen. Der kleine Lautsprecher kann mit seinen 2Watt ordentlich Lärm machen. Die Energie bezieht der Empfänger aus einer LiIon Batterie mit 3.7V/800mAh die sehr stark an die in Chinahandys verbauten Akkus erinnert. Die Batterie kann über die eingebaute Mini USB-Buchse geladen werden.

DSC_4916Im Bild ist die 3.7V / 0.8Ah Batterie zu sehen. Sie kann, wie auch bei vielen Handys aus China üblich, einfach entnommen und getauscht werden.

DSC_4917
Batterie ins Gerät eingelegt

Auf der Frontseite des Gerätes befindet sich ein LC-Display, das Rot beleuchtet ist und an die 7-Segment Led-Anzeigen aus früheren Zeiten erinnert. Das Display zeigt die UKW-Frequenz, Play/Pause von MP3 und den Batterieladezustand an.

DSC_4920Über die sechs Tasten, können die Sender gesucht, bzw. weitergeschaltet werden. Die Betriebsmodi (Radio/Player) werden über „Mode“ umgeschaltet . Play/Pause ist selbsterklärend.

DSC_4918Seitlich findet man einen AUS/EIN Schiebeschalter, der den Batteriestromkreis vollständig trennt. Die Lautstärke wird über ein klassisches Drehpotentiometer eingestellt. An die3.5mm Klinkenbuchse kann ein Kopfhörer angeschlossen werden. Die USB-Buchse dient zum Laden des Akku und der MicroSD-Slot nimmt Datenträger mit MP3 files auf (die SD-Karte muss FAT oder FAT32 formatiert sein).

DSC_4914Die technischen Daten:

Hersteller Singbox
Model SV-936
Type Portable
Farbe Rot
Material ABS
Interner Speicher
keiner
Speichersystem
MicroSD
Max. Speicherkapazität
16GB
Media Format MP3
Maximale Leistung
2W
Impedanz 4ohm
Signal to Noise Ratio(SNR) 80dB
Interface 3.5mm jack / 1 x Mini USB / 1 x TF card slot
Radio FM Radio
FM Frequenz 70~108MHz
Batterie External 800mAh

Die Verarbeitung ist von mäßiger Qualität, der ABS-Kunststoff wirkt billig. Die Gehäuseteile sind nicht sehr präzise gefertigt, sodass das Gerät schnell umkippt. Technisch jedoch funktioniert es aber anstandslos und kann vor allem im Outdoorbereich am See, oder beim Lagerfeuergrill als Hintergrunduntermalung genutzt werden. Mehr kann man sich für 13 Euro ja auch nicht erwarten.

 

Basteln am Auto – Audi A4 und die Tankdeckelverriegelung

Loading

Aus gegebenem Anlass berichte ich heute von einer kleinen Reparatur aus dem Bereich KFZ. Genauer gesagt um ein Problem, das beim Audi (A4 8K) aufgetreten ist. Es betrifft die Verriegelung des Tankdeckels. Es soll eigentlich so sein, dass beim Verschließen des Autos auch das Öffnen des Tankdeckels unterbunden sein soll. Erst wenn die Zentralverriegelung die Schlösser wieder freigibt, ist es auch möglich den Tankdeckel zu öffnen. So der Sollzustand. In meinem Fall habe ich aber festgestellt, dass, obwohl das Auto verschlossen war, der Tankdeckel aufging. Nach kurzer Recherche im Netz wurde mir gleich klar, dass dieses Problem durchaus bekannt ist. Einige Leute hatten auch den Fall, dass der Verriegelungsmechanismus im versperrten Zustand verharrte und der Deckel sich nur mehr mit der Notverriegelung vom Kofferraum aus öffnen ließ. Also ein lästiges Problem, vor allem, wenn man mit leerem Tank an der Zapfsäule steht und nicht rankommt.

Das Problem liegt hier an einem kleinen Aktor, der im Wesentlichen aus einem kleinen Elektromotor besteht, an dessen Welle eine Schnecke einen Schieber antreibt. Dieser Schieber blockiert dann einfach den „Pin“, der den Deckel nach einem kurzen Druck nach außen hebt. (So wie das Ein- und Ausknipsen einer Kugelschreibermine). Dieser Motor scheint hier gerne stecken zu bleiben. Die Werkstatt tauscht hier den Aktor und alles funktioniert wieder. Ich hatte hier aber absolut keine Lust, dafür wieder in die Tasche zu greifen und habe mich am Abend einer angenehm Kühlen Vorwinternacht ans Werk gemacht und den Aktor ausgebaut. Die nachfolgenden Bilder sollen diese Arbeit dokumentieren. Vielleicht hilft es ja jemandem…

DSC_4904Zuerst ist die Torxschraube unter dem Auswurfpin (Links im Bild) zu entfernen. Der Rahmen wird von vier Kunststoffhaken in der Karosserie gehalten. Durch Eindrücken der vier kleinen Vertiefungen im Kunststoff (zwei oben und zwei unten) erreicht man die Haken und kann sie mit einem kleinen Flachschraubendreher (oder kärntnerisch ‚Schraubenziaga‘) bei gleichzeitigem leichten Ziehen am Kunststoffrahmen nach unten drücken (die oberen Haken). Die beiden unteren Haken müssen nach oben weggedrückt werden. Dann kann der Rahmen vorsichtig aus dem Blech gelöst werden.

DSC_4902

Hier wird der Kunststoffrahmen herausgenommen.

DSC_4901Die Ansicht von oben zeigt die beiden Haken, die den Frame im Rahmen festhalten.

DSC_4900Den Rahmen kann man nun ablegen und man kommt ganz einfach an den Aktor heran. Der ist nur mehr in den Ausschnitt im Blech hineingeschoben und kann ganz leicht herausgenommen werden. Die rote Kunststoffschnur, ist die „Reißleine“ für die Notentriegelung und muss auch aus der Nase am Aktor ausgehangen werden. Jetzt ist noch der zweipolige Stecker vom Aktor zu lösen und er ist frei…

DSC_4897Hier ist er, der Aktor für die Tankdeckelverriegelung.  8K0.862.153.B ist die Typennummer des Bauteils. Der Aktor selbst besteht wieder aus einem Gehäuse an dessen Oberseite ein Deckel mit Rastnasen festgehalten wird. Diese Rastnasen sind vorsichtig zu lösen. Dabei sollten beide Teile immer festgehalten werden, da eine lange Feder den „Auswurfpin“ drückt.

DSC_4896Hier ist der gelöste Deckel des Aktors und die Feder zu sehen. Jetzt kann der Deckel vorsichtig abgenommen werden.

DSC_4893Ein Blick in das Gehäuse zeigt den Motor (links), darüber ein schwarzer Kunststoffschieber. Die Schnecke ist direkt darunter zu erkennen. Sie bewegt den Schieber hin und her. Jetzt geht´s eigentlich nur darum, die Schnecke vorsichtig gängig zu machen. Ich habe sie einfach mit den Fingern ein paarmal hin und her gedreht und danach die kompletten Kunststoffteile mit Teflonfett eingefettet. Zur Probe habe ich den Motor ans Labornetzteil angeschlossen und immer ganz kurz mit 12VDC versorgt. Dabei wurde natürlich die Polarität ständig umgedreht um den Schieber einige Male hin- und her zubewegen und das Fett gut zu verteilen. Das funktionierte anstandslos.

Jetzt konnte der Aktor wieder zusammengesteckt und alles eingebaut werden.  Ein abschließender Funktionstest zeigte den Erfolg der Arbeit. Der Verschluss funktionierte wieder einwandfrei. Der Zeitaufwand war gerade mal 2o Minuten.

Dimmen ohne Triac

Loading

HINWEIS: In diesem Blogbeitrag werden Schaltungen beschrieben, in denen mit Netzspannung und Netzpotentialen gearbeitet wird. Arbeiten mit Netzspannungen sind LEBENSGEFÄHRLICH und dürfen nur mit entsprechenden Kenntnissen und Befugnissen durchgeführt werden!

DSC_4883Als klassische Variante, einen ohmschen Netzverbraucher (z.Bsp. Glühlampen) in ihrer Helligkeit zu steuern, wird üblicherweise ein Triac in einer Phasenanschnitt- oder Phasenabschnittsteuerung verwendet. Diese Schaltung ist einfach aufzubauen, kostet wenig und man kann durch Änderung der Zeitkonstante eines RC-Gliedes (durch Ändern des Widerstandes mit Hilfe eines Potentiometers) die Spannungsform an der Last beeinflussen. Dies geschieht durch „An- oder Abschneiden“ der „Sinuswelle“ zu einem gewünschten Zeitpunkt. Die daraus resultierende, verbleibende „Wellenform“ versorgt die Last mit Energie. Da die „Sinuswelle“ nun jedoch nicht mehr „vollständig“ ist, ist auch die effektiv übertragene Energie zur Last kleiner. Das bedeutet weniger Spannung liegt an der Lampe an. Somit sinkt auch die Lampenhelligkeit. Hierzu findet man reichlich Informationen im Netz. Will man eine solche Phasenanschnittsteuerung nun jedoch nicht mit einem Potentiometer steuern, sondern mit einem Microcontroller oder einer externen analogen Spannung von zum Beispiel 0-5V, so ist hier ein erweiterter Schaltungsaufwand notwendig.

Auf eine ganz andere Weise ist die hier dargestellte Schaltung aufgebaut. Hier wird nicht mit einem Triac die negative bzw. positive Halbwelle angeschnitten, sondern mit einem FET der Pfad in einem Brückengleichrichter durchgeschaltet. Der FET selbst wird per PWM (PulsWeitenModulation) angesteuert. Die PWM wiederum erzeugt der Einfachheit halber ein Atmega Microcontroller. Durch die frei wählbaren PWM Grundfrequenzen sind hier sehr schnelle und somit auch flackerfreie Schaltvorgänge realisierbar.

_20151123_104151Die Skizze soll die simple Funktionsweise veranschaulichen: Im Bild ist der Stromkreis dargestellt. Der Verbraucher liegt in Serie mit dem Brückengleichrichter an der Phase L und dem Neutralleiter N. Im Querpfad des Brückengleichrichters befindet sich ein Schalter (in der realen Anwendung ein angesteuerter Mosfet). Wird der Schalter S nun nicht betätigt, bleibt also offen, kann durch die Dioden kein Strom fließen. Weder die positive noch die negative Halbwelle finden einen geschlossenen Stromkreis.  Anders sieht es jedoch aus wenn der Schalter S geschlossen wird. Dies ist in der rechten Skizze dargestellt. Der Strompfad einer Halbwelle ist in Rot, der der anderen Halbwelle in blau dargestellt. Der Strom fließt und die Lampe leuchtet. Das Besondere daran ist es nun, verfolgt man die Stromrichtung beider Halbwellen durch den Schalter, so kann man erkennen, dass bei beiden Halbwellen dieselbe Stromrichtung vorliegt. Damit ist es nun möglich mit einem Transistor oder FET, eine Wechselspannungsquelle zu schalten. Das Ein/Aus Verhältnis (also PWM) des Schaltsignals, kann somit wieder die effektive Spannung an der Last beeinflussen.

dimmerUnd genau eine solche Schaltung habe ich hier aufgebaut. Der Atmega-Microcontroller erzeugt ein PWM Signal, das über einen Optokoppler den Mosfet ansteuert. Somit sind ganz einfach per Software alle möglichen Schalt- und Dimm-Szenarien realisierbar. (z.Bsp. Steuerung der Lampenhelligkeit über eine Analogspannung am ADC des µC …)

DSC_4882Im Bild rechts ist ein Testaufbau des Dimmers (Laststellers) dargestellt. Die Versorgungsspannung des µC wird hier noch durch einen AC/DC Converter realisiert, um eingangsseitig eine galvanische!! Trennung vom Netz herzustellen.

Raspberry als Datenlogger Teil2…Die Sensoren und Python

Loading

DSC_4789
Raspberry PI samt Powerbank im Gehäuse

In Teil1 dieses Projektes haben wir dem Raspberry ein Betriebssystem verpasst und das ein wenig für die Anwendung aufbereitet. Wir wollen ja an den PI mehrere Sensoren anschließen und diese dann zyklisch auslesen und die Daten in einer Datei auf einem USB-Stick speichern. Die Aufzeichnung soll so lange laufen, bis ein Taster gedrückt wird, der den Prozess beendet. Die einzige Anzeige des PI sind zwei Leuchtdioden, die, sowie auch der Taster, an die GPIOs des PI angeschlossen sind. Darum haben wir folgende Punkte bereits erledigt:

  • Die PI Platine gemeinsam mit einer USB Powerbank in ein Gehäuse eingebaut
  • Anschlüsse wie Ethernet, USB, HDMI durch Ausschnitte im Gehäuse nach außen geführt
  • Zwei Leuchtdioden und einen Taster ins Gehäuse eingebaut und auf die GPIOs geschaltet
  • Den I²C Bus des PI auf eine Buchse im Gehäuse geführt
  • Eine MicroSD Karte mit einem Raspi-Wheezy Image bespielt
  • Einen USB-Stick mit FAT32 formatiert
  • Das Betriebssystem soweit konfiguriert, dass das Filesystem für den Stick, alle Module für den I²C, sowie Python geladen werden.
DSC_4790
Raspberry PI im Plastikgehäuse

Der Pi sieht fertig zusammengebaut nun so aus (siehe Bild rechts). Nun können die Sensoren angeschlossen werden. In diesem Fall handelt es sich um Luftfeuchtigkeits-/Temperatursensoren mit der Bezeichnung HYT939 des Herstellers Hygrochip. Hier ein Auszug der technischen Daten aus dem Datenblatt des Herstellers:

Ausführung: Feuchtesensor im TO39 Gehäuse, druckfest, mit Edelstahl-Sinterfilter
Genauigkeit:
Feuchte ±1,8% rF, Temperatur ±0,2 °C
Genauigkeit 0…10% rF (0 … 50°C): ±(0,1% rF + 17% aw)
Messbereich: Feuchte 0 … 100% r.F. (max. dp = +80 °C), Temperatur – 40 … +125 °C
Abmessungen: 5,2 x 9 mm
Anschlüsse: TO 39 Footprint
Auflösung Feuchte: 0,02% rF
Hysterese bei 50% rF: < ±1% rF
Linearitätsfehler: < ±1% rF
Ansprechzeit t63: < 10 sec (Mit Edelstahl-Sinterfilter)
Auflösung Temperatur: 0,015 °C
Digitale Schnittstelle: I2C, Adresse 0x28 oder Alternativadresse
Betriebsspannung: 2,7 … 5,5 V
Stromaufnahme (typ): < 1µA in Bereitschaft < 22µA bei 1Hz Messrate 850 µA maximal

DSC_4792
HYT939 Sensor

Eine kleine Platine dient als „Sensorboard“. Hier besteht die Möglichkeit, vier HYT´s anzustecken. Natürlich müssen auch die Adressen der Sensoren unterschliedlich sein. Der HYT939 ist per default auf hex 0x28 eingestellt. Will man diese Deviceadresse ändern, so muss der der HYT in den Command-Mode versetzt werden, um dann die Konfigurationsdaten empfangen und in sein EEprom schreiben zu können. Dazu muß der Sensor innerhalb der ersten 10ms nach seinem PowerUp in den Command-Mode gebootet werden. Das lässt sich am einfachsten mit einem ArduinoUno bewerkstelligen… Dabei wird der Powerpin des HYT über einen Digital Out Pin des Arduino versorgt. So ist es möglich, das Timing genau einzuhalten und den Command Mode zu erreichen.

Nachdem der Sensor nun an den Raspberry angeschlossen ist, fehlt nur mehr ein Programm, um ihn oder auch mehrere anzusteuern und auszulesen. Hier verwende ich den Python Interpreter. Damit lassen sich auf einfache Weise die Daten auslesen und auch auf Datenträgern speichern. Das „Programm“ besteht aus zwei Teilen:

  • Hauptscript: beinhaltet nur eine Endlosschleife, die die LEDs steuert, den Taster abfragt, die Sensorfunktion aufruft, deren ausgelesene Werte übergibt, aufbereitet und auf den Stick speichert.
  • Funktion Sensor auslesen: addressiert den I²C Bus, liest die Sensordaten aus, rechnet sie in lesbare Werte um und übergibt den Output an die Funktion
# /usr/bin/python
# License: GPL 2.0
# edited by Ingmar B. Aug.2015

import os
from time import *
import time
import threading
import hyt939o 
import RPi.GPIO as GPIO

# Setup LED Ports (pin12 = LED rot, pin18 = LED gruen)
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(16, GPIO.IN)

# LED Gruen einschalten sobald das Script gestartet ist
GPIO.output(18, GPIO.HIGH)

#gpsd = None #seting the global variable
address = [0x2a, 0x29] 
#hyt939 = [0, 0]
hum = [0, 0]
temphyt = [0, 0]
loopon = True         #set variable for loop
i=1             #counter for address selection
os.system('clear')     #clear the terminal (optional)
 
while loopon:
        # bei beginn des auslesens aller daten die rote Led einschalten
    GPIO.output(12, GPIO.HIGH)
    if GPIO.input(16)== GPIO.HIGH:
      loopon = False
        os.system('clear')
         
      # Variablen fuer Sensor HYT 939 uebergeben 
    for i in range(2):
                
        hyt939=hyt939o.ReadMeasurement(address[i])            
        time.sleep(0.1)
        hum[i]=hyt939[0]
        temphyt[i]=hyt939[1]
      
                print '--------------------------------------- '
            print 'SENSORS reading Sensor Nr.:' , i
            print
            print 'humidity    hyt939         ' , hum[i]
            print 'temperature hyt939         ' , temphyt[i]
            print '--------------------------------------- '
            print
    print 'data to write:' , str(hum[0]), str(temphyt[0]), str(hum[1]), str(temphyt[1])
    print ("date :" + time.strftime("%x"))         
        print ("time :" + time.strftime("%X"))
    print
    date = time.strftime("%x")
    zeit = time.strftime("%X")
    
      ## write all data to usbstick
      
        fileout = open("/media/usbstick/wetterfrosch.txt", "a")

    time.sleep(0.1)

        fileout.write(date+";"+zeit+";"+str(hum[0])+";"+str(temphyt[0])+";"+str(hum[1])+";"+str(temphyt[1])+"\n") 
    
        time.sleep(0.1)
        fileout.close()
        time.sleep(0.1)

      # nach schreiben bzw auslesen der daten rote LED wieder abschalten
        GPIO.output(12, GPIO.LOW)
        time.sleep(0.8) #set to whatever

GPIO.output(18, GPIO.LOW) # gruene Led ausschalten

print "Ende" 

Das folgende Listing liest den Sensor aus:

# Reading mesaurements from HYT 939 humidity and temperature sensor
# First Version by Caerandir May 2014 modified by i.bihlo 2015

import smbus, time
bus = smbus.SMBus(1)    # Raspberry Rev. 2
address = 0x28          # Fixed default address of HYT 939

# Initialize sensor to acquire measurements
def MeasurementRequest():
        void = bus.write_quick(address)
    time.sleep(0.1)

# Read Humidiy and Temperature to 14 bit accuracy
def ReadMeasurement():
    void= bus.write_quick(address)

    time.sleep(0.1)    
        # Acquire 4 byte from sensor
        #time.sleep(0.1)
    Readout = bus.read_i2c_block_data(address,0,4)

    # Calculiere die relLF in % aus den vier Bytes in "Readout"
    RelHum = Readout[0]<<8 | Readout[1]
    RelHum = RelHum & 0x3FFF
    RelativeHumidity = 100*RelHum/(2**14)

    # Calculiere die Temperatur vom Sensor
    Readout[3] = Readout[3] & 0x3F
    temp = Readout[2]<<6 | Readout[3]
    Temperature = 165.0*temp/(2**14)-40
       
        print "Hrel: ", RelativeHumidity, " %"
        print "T: ", Temperature, " C"

        return RelativeHumidity, Temperature

MeasurementRequest()
time.sleep(0.2)

ReadMeasurement()

 

Eine Versuchsmessung über einen Tag und eine Nacht mit drei Sensoren hat folgendes Ergebnis geliefert. Hier sind die Temperaturwerte der Sensoren dargestellt. (Die Daten vom USB-Stick wurden mit Matlab importiert und daraus ein Plot erstellt.)

temperature_3sensoren

Raspberry als Datenlogger Teil1…Das Betriebssystem einrichten

Loading

Der Raspberry Pi ist ja mittlerweile ein bekannter und beliebter Scheckkartenplatinen-Computer mit dem sich allerlei anstellen lässt. Vom TV-Frontend mit Kodi, über Spielekonsolenemulatoren mit Retropi bis hin zum Bürorechner, ist damit fast alles möglich. In diesem Projekt möchte ich vorstellen, wie mit Hilfe des Raspberry Pi Model2 physikalische Größen wie Temperatur und Luftfeuchtigkeit gemessen und auf einem Speichermedium geloggt werden. Und zwar mit einem Feuchtesensor der Type HYT939 der am I²C Bus angeschlossen wird, genauer gesagt: mehrere I²C Feuchtesensoren am Bus…

DSC_4789Wir beginnen zuallererst mit der Versorgung des Raspberry PI. Im Bild ist ein Pi2 in ein einfaches Kunststoffgehäuse eingebaut und an eine 2Ah USB-Powerbank von RS-Components angeschlossen. Der Ladeanschluss der Powerbank ist vom Gehäuse nach aussen geführt. So kann der Pi wahlweise über die Powerbank (mit einer nicht rechenintensiven Anwendung bis zu 3h) oder über eine externe USB-Versorgung (z.Bsp. einem Handyladeadapter) betrieben werden. Der I²C Bus des PI (Pin 3 SDA und Pin 5 SCL sowie Pin 2,4 +5V und GND an Pin 6,14…) ist auf einen RJ Stecker im Gehäuse ausgeführt. Um später irgendwelche Statusmeldungen ausgeben zu können, sind zwei LEDs an die GPIOs 24 und 18 (an Pin18 und Pin12) angeschlossen. Ein weiterer GPIO wird über einen 22k Pulldown-Widerstand an einen Taster an 5V geschaltet. (GPIO23 an Pin16).

Für die USB Anschlüsse, Ethernet und HDMI wurden im Gehäuse passende Ausschnitte gemacht, an eine USB Schnittstelle ein Keyboard und an den HDMI Port ein Monitor angeschlossen. Die LAN Verbinung mit Internetzugang sollte auch hergestellt sein, um nach der Ersteinrichtung die benötigten Module und Updates laden zu können.

Jetzt fehlt nur noch das Speichermedium mit Betriebssystem. Der PI2 ist mit einem Micro-SD Slot ausgestattet. Ich habe hier eine 4GB Micro SD mit einem raspian-wheezy image bespielt. Um das Imagefile auf einfache Weise auf die SD-Karte zu bekommen, empfiehlt es sich, das Tool win32diskimager zu verwenden. Ist die Speicherkarte dann fertiggestellt, kann man beginnen.

Der Raspberry zeigt nach dem Einschalten kurz seinen Farbverlauf und dann beginnt auch schon der Bootprozess. Ist der dann beendet, so startet das OS am PI erstmal eine Setup-Routine.

Hier sind nun folgende Schritte durchzuführen:

  • im Menu internationalisation options unter I1 die entsprechenden locals einstellen -> DE_UTF_8
  • in advanced options unter A2… einen Hostname vergeben z.Bsp.:“raspisensor“, in A4… SSH enablen, in A7 …I²C enablen und „load per default“ und in A8 … „serial enable“ und „login shell“ aktivieren
  • dann noch expand  filesystem wählen damit der Speicherplatz der gesamten SD-Karte genutzt wird
  • jetzt noch mit finish -> reboot neu starten

Jetzt fährt der PI wieder hoch und bleibt beim Login-Prompt stehen. Mit login: pi und dem passwort: raspberry loggt man sich nun ein. Mit den folgenden Kommandos werden Updates und benötigte Module installiert:

sudo apt-get update
sudo apt-get install python-smbus    
(installiert den system management bus)
sudo modprobe i2c_bcm2708             (kernelmodule für I²C von Hand laden)
sudo modprobe i2c_dev
lsmod                                                         (geladene Module listen)
sudo i2cdetect -y 1                                  (I²C ports scannen)

Es empfiehlt sich, die Kernelmodule per Autostart zu laden. Das geht wie folgt:

sudo nano /etc/modules                        (mit dem Nano-Editor die Datei modules öffnen …)

dann folgende Zeilen hinzufügen:

i2c_bcm2708
i2c_dev

dann mit STRG+X den Editor beenden und bei Speichern JA wählen.
danach mit:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

überprüfen, ob hier bereits ein Eintrag „blacklist i2c-bcm 2708“ existiert.
Falls ja, ist der auszukommentieren oder zu löschen.

jetzt wieder neustarten mit:

sudo shutdown -r now

danach wieder einloggen und mit

lsmod

überprüfen ob die gwünschten Module korrekt geladen sind.

Da wir später die Daten von den Sensoren in eine Datei loggen wollen und diese Datei auf einem USB-Stick gespeichert werden soll, sind folgende Schritte notwendig:

  • einen USB-Sick mit FAT32 Filesystem auf einem Windowsrechner formatieren
  • auf dem PI das Filesystem FAT32 installieren
  • den Stick in den PI stecken und die Mountlist um den Stick erweitern

Zuerst laden und installieren wir das Filesystem:

sudo apt-get -y install ntfs-3g hfsutils hfsprogs exfat-fuse

dann legen wir folgendes Verzeichnis an:

sudo mkdir /media/usbstick (usbstick dient hier als beispielname…)

sudo blkid -o list -w /dev/null

(listet die IDs der Datenträger auf -> unser Stick sollte in der Liste als vfat mit einer ID in dem Format XXXX-XXXX erscheinen)

sudo mount -t vfat -o utf8,uid=pi,gid=pi,noatime /dev/sda /media/usbstick

nun öffnen wir folgende Datei mit dem Editor:

sudo nano -w /etc/fstab

die ID des USB-Sticks von vorher tragen wir nun samt folgender Zeile ein und speichern dann wieder ab:

UUID=XXXX-XXXX /media/usbstick/ vfat utf8,uid=pi,gid=pi,noatime 0

weiter geht’s mit der Einrichtung der GPIOs und den Python libraries:

sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio

Noch ein paar allgemeine Einstellungen:

sudo nano /etc/networks/interfaces  (Wir wollen eine fixe IP Adresse vergeben, um später einfach per SSH auf den PI zugreifen zu können)

folgende Zeile ersetzen:

iface eth0 inet dhcp

durch:

iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask yyy.yyy.yyy.yyy
gateway zzz.zzz.zzz.zzz

und wieder speichern:

Das zu Anfang gestartete Setup Script lässt sich immer über folgenden Befehl aufrufen:

sudo raspi-config

Die Systemzeit des Raspi (für meine Anwendung benötige ich auch einen Zeitstempel) lässt sich mit folgendem Befehl stellen:

sudo date „MMTThhmmJJ“

Das war´s für den Anfang. Im zweiten Teil beschreibe ich dann die Sensorhardware und die Python-Scripts, die die Sensoren dann auslesen…