Sonntag, 5. April 2009

Beschleunigungssensor am AVR als USB GamePad

Aus der Idee einen der Beschleunigungssensoren aus einer Wii Remote mal selbst kennen zu lernen ist dieses Projekt entstanden. In der Wii Remote ist ein ADXL330 von der Firma Analog Devices verbaut. Der Sensor besitzt 3 Achsen, welche alle im 90° Winkel zueinander stehen und kann Beschleunigungen bis zu +-3g erfassen. In der Ausführung die ich von Analog Devices kostenlos zur Verfügung gestellt bekommen habe, besitzt der Sensor 3 analoge Ausgänge. Der Sensor wird mit einer Spannung von bis zu 3,6 Volt betrieben. Die Ausgangsspannung der Achsen liegen folglich im Bereich von 0V-3,6V. Eine gute Basis um die Werte über den ADC eines AVR Mikrocontrollers direkt auslesen zu können. Als Basis zur Entwicklung wird das MiniMexle verwendet, welches in den Informatik-Vorlesungen der Hochschule Heilbronn zu Unterrichts-Zwecken verwendet wird.
Die USB Verbindung wird per Software auf dem AVR abgebildet. Dies geschieht über das AVR-USB Projekt. Die 4 Taster des MiniMexle werden als Buttons des GamePad's verwendet.


Wie im Bild oben zu erkennen ist habe ich den Sensor (Grüne Markierung) auf einem Stück Lochrasterplatine mit Fädeldraht befestigt. Als Bastelei für zu hause durchaus ausreichend... ;-)
Das rot Markierte Bauteil links im Bild ist der Spannungsregler von der Firma Texas Instruments. Dieser wird benötigt um den Beschleunigungssensor mit einer Konstanten Spannung von 3,3V zu versorgen. Der Vorteil dieses Reglers ist, dass die Ausgangs-Spannung auch bei unterschiedlichen Versorgungsspannungen am Eingang extrem stabil bleibt (selbst bei Belastung). Dies vermindert ein "verschwimmen" des Wertebereichs der Messwerte aus dem Sensor stark. So muss der Sensor nicht bei jedem Start durch den Benutzer neu kalibriert werden, sondern nur bei der ersten Inbetriebnahme. Die Kalibrierungsdaten werden im EEPROM abgelegt und sind bei jedem Einschalten wieder verfügbar.

Das folgende Video Zeigt die Hardware und am Ende eine Software welche die Achsen und Buttons des GamePad's grafisch darstellt.




UpConverter fixed

Vor einiger Zeit berichtete ich darüber das mein Versuch einen UpConverter für mein rad1o zu bauen leider fehlgeschlagen ist. Es lag an der...