Mittwoch, 24. Juni 2015

Gyroskop MPU6050

In den letzten Jahren sind die Quadrocopter wie Pilze aus dem Boden geschossen. Diese Flugapparate haben einen hohen Anspruch an Stabilität während des Fluges. Durch die ständige Bewegung des Fliegers und durch äußere Einflüsse, wie z.B. Wind, reichen Beschleunigungssensoren alleine nicht mehr aus. Durch die Eigenbewegung des Quadrocopters werden die Sensordaten des Beschleunigungssensors beeinflusst und es kann nicht mehr einfach die Neigung ermittelt werden. Es müssen Gyroskope verwendet werden. Mit Gyroskopen misst man die Winkelgeschwindigkeit des Geräts. Dadurch kann unabhängig von dessen Linearbeschleunigung die Neigung ermittelt werden.
Der MPU6050 ist ein mächtiger Sensor, der die Winkelgeschwindigkeit, die Linearbeschleunigung und die Temperatur messen kann. Die Auflösung beträgt 16 Bit. Die Messintervalle können eingestellt werden. Die Daten werden über den I2C-Bus ausgelesen. Es ist ein Chip integriert, auf dem eigene Algorithmen installiert werden können, welche die Sensordaten direkt auswerten können. Mit etlichen Registern können Einstellungen vorgenommen werden.
Die Rohdaten auszulesen ist nur ein verhältnismäßig kleiner Aspekt des mächtigen MPU6050. In meinem Tutorial werde ich zeigen wie man dies realisiert. Um alle Aspekte des Sensors zu würdigen, müsste man ein ganzes Buch verfassen. Ich hoffe das Tutorial erleichtert die Verwendung des MPU6050 und regt zu dessen Kauf an.

Freitag, 8. Mai 2015

Beschleunigungssensor ADXL335

In jedem Smartphone und Tablet kommen sie zum Einsatz. Jeder Controller einer Spielkonsole hat heutzutage eins. In jeder Kamera ist eins verbaut. Beschleunigungssensoren sind inzwischen fester Bestandteil unseres Alltags. Aus einer Messung der Richtung der Erdbeschleunigung lässt sich direkt die Neigung des Sensors herleiten und damit die Neigung des Geräts bestimmen, in dem der Sensor verbaut ist. Das Anwendungsfeld ist vielfältig. Jeder Hobbybastler sollte einen Beschleunigungssensor im Inventar haben.
Mit dem ADXL335 hat man einen einfachen Beschleunigungssensor, der den dreidimensionalen Beschleunigungsvektor über drei analoge Ausgänge ausgibt. Die Messweite liegt im Intervall [-3g, 3g], wobei g die Einheit für die Erdbeschleunigung ist. Mit Hilfe von drei AD-Wandlern oder alternativ einem AD-Wandler und drei Optokopplern, lassen sich alle drei Signale verarbeiten.
Wie man den Beschleunigungsvektor auf der Konsole ausgibt werde ich in meinem Tutorial zeigen. Ich habe mich für die Variante mit den Optokopplern entschieden. Ich hoffe das Tutorial erleichtert jemanden die Nutzung des ADXL335 und inspiriert zu dessen Kauf und dessen Anwendung.

Sonntag, 3. Mai 2015

Optokoppler 4N35

Die Steuersignale eines Raspberry Pi liegen in der Regel in einer +5V-Spannung vor. Zur Steuerung von Stromkreisen, dessen Spannung von 5V abweichen, müssen diese Stromkreise von den Steuerstromkreisen galvanisch getrennt sein. Eine Signalübertragung zwischen den Stromkreisen ist nicht ohne weiteres möglich. Es müssen Optokoppler eingesetzt werden, die die Steuersignale in Lichtsignale umwandeln und vom anderen Stromkreis empfangen wird. Optokoppler machen dies durch den Einsatz einer LED und einem Phototransistor. Das 5V-Steuersignal des Raspberry Pi aktiviert die LED und entsperrt den Phototransistor. Dadurch schließt sich der Stromkreis ohne Störung durch das Steuersignal.
Ein adäquates Modell ist der 4N35. Laut Datenblatt können die zu steuernden Stromkreise bis zu 30V haben. Mit nur 5 Anschlüssen ist der 4N35 ein sehr kleiner Baustein. Die Bedienung ist sehr einfach und leicht zu verstehen.
Das sehr kurze Tutorial zeigt qualitativ den Einsatz eines 4N35 zum Einschalten einer LED an einer +3V3-Spannung mit einem +5V-Signal. Die Funktionsweise und der Nutzen sollten durch das Tutorial schnell ersichtlich. Es wird kein Programmcode benötigt. Ich hoffe das Tutorial inspiriert jemanden für weitere Anwendungen und regt ggf. zum Kauf eines 4N35 an.

Dienstag, 28. April 2015

8/2 Multiplexer 74HC151

Es gibt Bausteine, die sehr viele Ausgänge haben. Wenn alle Ausgänge ausgelesen werden müssen, können sehr viele Anschlüsse des Raspberry Pi belegt werden. Viele Bausteine müssen nicht parallel ausgelesen werden. Ein serielles Durchschalten der Ausgänge des Bausteins könnte die benötigte Anzahl an Anschlüssen des Raspberry Pi senken. Für diesen Zweck existieren Multiplexer.
An einem 8/2 Multiplexer können bis zu 8 Eingangssignale auf ein Ausgangssignal bzw. auf ein korrespondierendes invertiertes Ausgangssignal durchgeschaltet werden. Die Wahl des Eingangssignals, das durchgeschaltet wird, erfolgt durch drei Anschlüsse am Multiplexer. Insgesamt benötigt der Multiplexer 4 Anschlüsse des Raspberry Pi um 8 Eingangssignale auslesen zu können.
Der ADC0804 ist ein Beispiel für ein Baustein mit vielen Ausgängen zum Auslesen. In meinem Tutorial werde ich mit Hilfe des 74HC151 den AD-Wandler auslesen und auf diese Weise 4 Anschlüsse des Raspberry Pi sparen. Ich hoffe das Tutorial inspiriert jemanden für weitere Anwendungen und regt ggf. zum Kauf eines 74HC151 an.

Montag, 27. April 2015

Rotationsencoder KY040

Zur Einstellung von Parametern in größeren Intervallen, wie beispielsweise die Lautstärke eines Geräts oder die Scrollposition in einem Menü, ist es häufig nicht sinnvoll einen normalen Schalter zu verwenden. Ein häufiges Drücken des Schalters kann für den Anwender anstrengend und zeitintensiv sein. Eine Alternative dazu bilden die sogenannten Inkrementalgeber. Mit Inkrementalgebern können Lageänderungen erfasst werden. Eine Form von Inkrementalgebern sind die Drehregler, mit denen Drehungen gemessen werden können. Mit einem Drehregler ist es möglich größere Änderungen der Parameter mit einer einzigen Drehung zu bewirken. Dadurch erspart man dem Anwender häufiges Drücken eines Schalters.
Der KY040 ist ein Rotationsencoder, den man als Drehregler verwenden kann. Zusätzlich hat der KY040 einen Schalter. Mit zwei Anschlüssen lässt sich die Drehung auswerten. Die Reihenfolge der Pegeländerungen an beiden Anschlüssen bestimmt die Drehrichtung. Ein dritter Anschluss ist für den Schalter. Zwei weitere Anschlüsse dienen zur Stromversorgung.
Zwei Varianten zum Arbeiten mit dem Rotationsencoder KY040 stelle ich in meinem Tutorial vor. Es wird eine Variable mit 0 initialisiert und durch den KY040 verändert. Bei jeder Änderung wird der aktuelle Wert auf der Konsole ausgegeben. Ich hoffe das Tutorial inspiriert jemanden für weitere Anwendungen und regt ggf. zum Kauf eines KY040 an.

Freitag, 27. März 2015

Mikrofon BB579

In manchen Fällen kann es wichtig sein, auf Geräusche zu reagieren. Das Mikrofon BB579 ist eine kostengünstige Möglichkeit die Lautstärke der Umgebung zu messen und für den Raspberry Pi zugänglich zu machen. Der BB579 bietet zwei Ausgänge. Ein Ausgang gibt ein analoges Signal aus, dessen Spannung proportional zur Umgebungslautstärke ist. Leider ist das Mikrofon qualitativ nicht sehr gut, sodass eine quantitative Auswertung des analogen Signals nicht befriedigend ist. Sollte also das Projekt eine Spracherkennung beinhalten, dann rate ich zur Wahl eines anderen Mikrofons.
Der zweite Ausgang ist ein digitaler Ausgang, der HIGH ausgibt, sobald die gemessene Lautstärke einen Schwellwert übersteigt. Dieser Schwellwert ist über einen fest eingebauten Potentiometer einstellbar. Dadurch ist es möglich mit dem Mikrofon qualitativ zwischen lauter und leiser als der Schwellwert zu unterscheiden. Diese Funktion läuft hinreichend gut, sodass man den BB579 für Anwendungsfälle empfehlen kann, in denen man auf signifikante Lautstärkeänderungen reagieren möchte. Ist die Waschmaschine im Keller mit dem Schleudern fertig, könnte das Raspberry Pi auf die Lautstärkeänderung reagieren und automatisch eine E-Mail senden mit der Nachricht, dass die Waschmaschine fertig sei.
Das Tutorial zeigt, wie man mit Hilfe des digitalen Ausgangs auf einen hohen Lautstärkepegel reagieren kann. Das Programm läuft in einer Endlosschleife und wartet auf ein entsprechendes Eingangssignal um zu terminieren. Ich hoffe das sehr kurze Tutorial inspiriert jemanden für weitere Anwendungen und regt ggf. zum Kauf eines BB579 an.

Digitales Thermometer und Thermostat DS1620

Zum Messen der Temperatur benötigt man ein Thermometer. Das DS1620 ist ein digitales Thermometer für den Bereich -55°C bis +125°C mit Thermostatfunktionen. Die Daten liegen in einem 9-Bit langen Wort vor. Die Schrittweite ist 0.5°C. Es können eine untere und eine obere Schranke eingestellt werden. Bei unter- bzw. überschreiten der Schranken werden die Ausgänge des Thermostats entsprechend gesetzt. Da die Daten in digitaler Form vorliegen, ist die Verwendung eines Analog-Digital-Convertes nicht nötig. Zur Steuerung des DS1620 werden nur drei Anschlüsse des Raspberry Pi benötigt. Zwischen einem und drei weitere Anschlüsse werden benötigt, wenn man mit dem Raspberry Pi auf die Ausgänge des Thermostats reagieren möchte. Der Datentransfer zwischen dem Raspberry Pi und dem DS1620 findet seriell statt.
Ich persönlich finde, dass das DS1620 sehr gut funktioniert. Insbesondere die Thermostatfunktionen bieten viel Potential für den praktischen Einsatz.
Das Tutorial zeigt, wie man das DS1620 initialisiert und im 3-Sekundentakt die Temperatur ausliest. Zusätzlich wird mit LEDs veranschaulicht, wie das Thermostat reagiert. Während der Aufbau des Experiments relativ simpel ist, ist das Programm dazu leider verhältnismäßig umfangreich. Ich hoffe das Tutorial vereinfacht die Arbeit mit dem DS1620 bzw. regt euch zu dessen Kauf an.

Donnerstag, 26. März 2015

Analog-Digital-Converter ADC0804

Beim Experimentieren mit dem Raspberry Pi stößt man irgendwann an seine Grenzen, wenn man analoge Signale von Sensoren auswerten muss. Der Raspberry Pi verfügt leider über keinen Analog-Digital-Converter, kurz ADC, sodass man sich diesen als Baustein dazu kaufen muss. Die Verwendung des ADC0804 ist verhältnismäßig schwierig. Dennoch ist er für viele Sensoren notwendig.
Der ADC0804 wandelt ein analoges Eingangssignal in ein 8-Bit langes Ausgangssignal um. Das Intervall für die Eingangsspannung kann beliebig eingestellt werden. Dadurch ist es möglich jedes beliebige Intervall [V_min, V_max] auf das Intervall [0, 255] abzubilden.
Leider benötigt der ADC0804 insgesamt 12 Anschlüsse des Raspberry Pi. Eine positive Eigenschaft ist, dass man für jeden weiteren ADC0804 nur einen einzigen weiteren Anschluss des Raspberry Pi benötigt.
In meinem Tutorial möchte ich zeigen, wie man ein analoges Eingangssignal aus dem Intervall [0V, 5V] in ein digitales Signal umwandelt, das vom Raspberry Pi gelesen und auf der Konsole ausgegeben wird. Ich hoffe das Tutorial nimmt einem die Furcht vor dem doch etwas komplexeren Baustein bzw. regt euch zu dessen Kauf an.

Mittwoch, 25. März 2015

LCD-Anzeige LCD1602

Wenn man dem Anwender Informationen darstellen möchte, die so mächtig sind, dass sie die Möglichkeiten einer blinkenden LED übersteigen, muss man zu komplexeren Ausgabe-Modulen greifen. Eine günstige Möglichkeit stellen einfache LCD-Anzeigen dar. Den LCD1602 kann man mit 6 Anschlüssen steuern. Es können alle gängigen Symbole in zwei 16 Zeichen langen Zeilen angezeigt werden. Dazu muss jedes Zeichen in 4-Bit-Blöcken an das Display gesendet werden. Praktischerweise ist die Symbolrepräsentation der gängigen Buchstaben und Zahlen auf dem LCD1602 nach dem ASCII-Zeichensatz definiert. Folglich müssen Zeichenketten im Programmcode nicht extra übersetzt werden und können direkt auf das Display geschrieben werden.
Das Tutorial zeigt, wie man das LCD1602 initialisiert und beschreibt. Das Beispielprogramm ist eine Endlosschleife, die zeilenweise Konsoleneingaben auf das Display schreibt. Ich hoffe das Tutorial vereinfacht euch die Nutzung des LCD1602 bzw. regt euch zum Kauf dieses Displays an.

Ultraschall Abstandssensor HCSR04

Eine hervorragende Art einen Abstand zu einem Hindernis zu messen, ist die Messung mit Ultraschall. Für diesen Zweck benutze ich den Ultraschall-Abstandssensor HCSR04. Der HCSR04 ist leicht mit nur zwei Anschlüssen des Raspberry Pi zu bedienen. Es sendet einen Ultraschall-Puls aus und wartet auf das Echo. Die Distanz ergibt sich direkt aus der gemessenen Zeitdifferenz von Puls und Echo. Der Sensor ist für Distanzen zwischen 2 cm und 300 cm gedacht. Dadurch eignet sich der Sensor hervorragend für die Erkennung von Hindernissen für Roboter oder für die Messung der Höhe von Quadrocoptern, die sich in der Landungsphase befinden. Mich persönlich begeistert die hohe Präzision der Zeitmessung.
In meinem Tutorial habe ich in einer Endlosschleife jede halbe Sekunde einen Abstand gemessen und diesen in cm auf der Konsole ausgegeben. Ich hoffe euch inspiriert das Tutorial und regt euch zum Kauf eines HCSR04 für eigene Experimente an.

Mittwoch, 11. März 2015

Seriell-zu-Parallel Shift-Register 74HC595N

Aufgrund der endlichen Anzahl an Anschlüssen des Raspberry Pi bin ich der Meinung, dass der 74HC595N eines der wichtigsten Bausteine beim Experimentieren ist. Der 74HC595N ist ein 8-Bit Speicherbaustein, den man seriell mit nur drei Anschlüssen des Raspberry Pi beschreiben kann und die gespeicherten Daten parallel ausgibt. Es lassen sich mehrere dieser Speicherbausteine in Reihe schalten und damit längere Wörter ausgeben. Dadurch lassen sich viele Ausgänge schaffen, mit denen man beispielsweise mehrere LED's zum leuchten bringen kann. Durch seine unkomplizierte Art der Ansteuerung benutze ich ihn sehr gerne, auch wenn ich gar nicht so viele Anschlüsse brauche.
Ich habe ein Tutorial erstellt, in dem exemplarisch an einem Timer-Programm gezeigt wird, wie man mit zwei dieser Speicherbausteine zwei 7-Segment-Anzeigen ansteuern kann. Ich hoffe euch gefällt das Tutorial und hoffe, dass es euch zu weiteren Ideen inspiriert.

Montag, 2. März 2015

Willkommen

Herzlichen willkommen auf meinem Blog zum Thema Schaltungen mit dem Raspberry Pi ansteuern. Ich habe zu Weihnachten einen Raspberry Pi B+ und diverse Elektronikbausteine und Komponenten zum Basteln von eigenen Schaltungen geschenkt bekommen. Ich habe zuvor noch nie damit gearbeitet und finde, dass im Web viel zu wenig Informationen vorhanden sind. Aus diesem Grund habe ich mich entschieden, selber mein Wissen, das ich mir erarbeite, in diesem Blog zu dokumentieren und zu präsentieren. Hier werde ich nach und nach Tutorials und weitere Informationen zur Lösung von Problemen bereitstellen, die ich irgendwie gelöst habe. Es sind elementare Programmierkenntnisse erforderlich. Ich wünsche ansonsten noch viel Spaß beim Lesen dieses Blogs.