Die magische Muschel

„Es liegt am Strand und redet unverständliches Zeug?

                                                       Eine Nuschel!“

Dieser kleine Witz hat mich am Ende dazu bewogen ein Projekt mit einem Arduino aufzubauen. Die Kinder haben jede Menge Spaß damit nur nicht meine Frau, die kann es nicht mehr sehen und hören, da ich viele Stunden damit verbracht habe der Muschel das Sprechen beizubringen.

Am Anfang stand das Audio-Shield von ELV. (Link zum Audio-Shield)

Das Audio-Shield ASA1 kann WAVE und MP3 Dateien von einer Micro SD Karte abspielen. Eine Library für die Arduino IDE gibt’s gratis dazu. Das Shield kostet 19,95€.

Eine weitere Alternative könnte das Audioshield JQ650-28P sein, welches es bei Ebay für ca. 7€ gibt. Ich habe es mitlerweile vorliegen und es scheint wesentlich weniger resourcenhungrig zu sein als das ELV Shield. Der Funktionsumfang ist ähnlich, obwohl viel weniger Arduino Pins beschaltet werden müssen. Es bleiben also mehr Möglichkeiten für das Projekt.

Konzept

Das Ganze sollte wie eine Art Jahrmarkt Attraktion ausgeführt sein, die sich mit dem Einwurf einer Münze aktivieren lässt. Die Muschel sollte dabei in einer geschlossenen Box „wohnen“ und beim Einwurf einer Münze wird der Deckel geöffnet während eine magische Melodie spielt und dann spricht die Muschel eine von momentan noch 30 lustigen Lebensweisheiten (wird noch erweitert!).

Ausführung der Mechanik

Die passende Holzkiste wurde schnell auf Ebay.de gefunden. Darin wurden alle Halterungen untergebracht, welche zur Befestigung der Baugruppen benötigt werden.

Holzkiste mit Halterungen

Holzkiste mit Halterungen

Holzkiste mit allen Komponenten

Holzkiste mit allen Komponenten

servo-sprechen

2x Servo für Sprechen und Öffnen des Deckels

baugruppe_muschel

Baugruppe Grundplatte mit Muschel und Servo von unten gesehen

muenzschalter_aussen

Münzeinwurf von außen

muenzschalter_innen

Münzeinwurf von innen

3D-Ansicht des Münzschalters

3D-Ansicht des Münzschalters

muenzschalter_3d_002

3D-Ansicht des Münzschalters

Der Aufbau des Münzeinwurfes ist recht einfach. Mir ging es nur darum dass es in etwa wie bei einem Spielautomaten ist. Eine genaue Münzerfassung findet hier nicht statt. es wird lediglich ein kleiner Hebel bewegt welcher einen Mikroschalter betätigt. Es funktioniert mit 1€, 2€ und 50Cent Stücken oder, wie die Kinder schnell herausgefunden haben, auch mit einem Löffel, Lineal oder ähnlich flachen Gegenstand.

Die für die Mechanik verwendeten Servos sind standard Modellbau Servos von Futaba. Diese haben ausreichen Drehmoment und sind auch schnell genug was vor allem beim Sprechen der Muschel wichtig ist. Ich finde aber, dass sie ziemlich laut sind. Da besteht noch Optimierungspotential. Fals jemand einen Tip hat, immer her damit solange es sich im Kostenrahmen bewegt.

Futaba S3003

Ausführung Elektronik

Beim Einwerfen der Münze schließt der Mikroschalter und überbrückt einen Transistor welcher sonst ein Relais betätigt (siehe Schaltplan!). Das Relais schließt, der Arduino wird mit Strom versorgt und liefert, wenn das Programm läuft, an einem Digitalausgang ein High Signal. Damit wird der Transistor durchgeschaltet und die Schaltung hält sich selbst nachdem der Kontakt am Münzschalter wieder öffnet und versorgt sich weiterhin mit Strom. Diese Anordnung lässt sich sehr gut über die Software wieder ausschalten. Somit geht die sprechende Muschel nach Ablauf Sequenz selbstständig und vollständig aus.

Ich habe zwei verschiedene Arduinos probiert und musste feststellen, dass das Programm auf dem originalen Arduino gefühlt sofort startet. Ein Arduino Clone verhält sich da unvorteilhafter. Der Mikroschalter zum Starten muss sehr lange betätigt werden, bevor das Programm startet. Es funktionierte nicht einfach eine Münze einzuwerfen. Kann sein, dass das mit dem Bootloader zusammenhängt, keine Ahnung.

Ein weiterer Digitalausgang steuert über einen weiteren Transistor ein zweites Relais. Dieses wird zeitverzögert eingeschaltet und versorgt die Servos mit Strom, da sich gezeigt hat, dass diese unkontrolliert verfahren solange sie kein Positionssignal vom Arduino bekommen. Somit lässt sich sehr gut das unkontrollierte Zucken der Servos verhindern.

 Schaltplan

(Auf das Bild klicken um zum PDF zu kommen!)

schaltplan_v001

Schaltplan für Zusatzplatine mit Relais und Eingangsbeschaltung für ADC

Eingangsbeschaltung für ADC:

Der analoge Eingang kann Spannungen von 0 – 5V messen. Das Audiosignal eines Lautsprecherausgangs bewegt sich aber von -x Volt bis +x Volt abhängig von der Ausgangsspannung des Verstärkers. Um den negativen Anteil des Audiosignals zu entfernen wird die Eingangsspannung mit einem Spannungsteiler um 2,5V angehoben. Nun swingt das Eingangssignal um den Wert von 2,5V.

Im Falle der Endstufe des ELV Audio-Shield verhält es sich etwas anders. Hier ist ein symmetrischer Ausgang. Das heißt, es befindet sich auf jeder Lautsprecherleitung ein zur anderen Leitung inverses Signal. Auf dem Oszilloskop sieht das folgendermaßen aus.

audio_ohne_opv_001

Audiosignal vom Verstärkerausgang (nur eine Lautsprecherleitung!)

Hier kann man sehr schön sehen, dass das Audiosignal ca. 2V beträgt und bereits um 2,5V in den positiven Bereich verschoben ist. Somit hätte ich mir die zusätzliche Eingangsbeschaltung sparen können, naja.

Ein Versuch mit einem Operationsverstärker erbrachte folgende Signal.

opv

zusätzlicher Operationsverstärker

audio_mit_opv_001

Audiosignal mit zusätzlichem Operationsverstärker (nur eine Lautsprecherleitung!)

Wenn man die Verstärkung vergrößert stellt sich das ganze so dar:

audio_mit_opv_002

höher verstärktes Audiosignal (nur eine Lautsprecherleitung!)

Hier sieht man sehr schön, dass die maximale Ausgangsspannung 5V beträgt. Das ist leicht zu erklären, da der Operationsverstärker mit 5V betrieben wird.

Einen Vorteil bei der Auswertung des Audiosignals mit dem Arduino konnte ich nicht wirklich feststellen. Daher habe ich mich entschieden den Operationsverstärker weg zu lassen.

In der Software wird der analoge Eingang 12 mal  eingelesen. Ist der Wert höher als der zuletzt eingelesene Wert wird dieser Wert angenommen. Wenn die 12 Messungen beendet sind wird das Ergebnis auf die Winkelposition des Servos gemappt. Jetzt „spricht“ die Muschel.

Arduino Code

Code kann hier herunter geladen werden!

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit deinem WordPress.com-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s