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.