• .
  • Willkommen im Forum!
  • Alles beim Alten...
  • Du hast kaum etwas verpasst ;-)
  • Jetzt noch sicherer mit HTTPS
Hallo, Gast! Anmelden Registrieren


Theremin
#3
Einführung AVR-Ultraschall Theremin

Dieses Programm ist eine Implementierung des legendären Theremins, jenes historischen Musikinstrumentes das allein durch Gesten gesteuert wird. Hier wird mittels Ultraschall die Entfernung zum nächstliegenden Körper (Hand) gemessen und damit die Tonhöhe eines Sinusgenerators gesteuert. Angestrebt ist eine zuverlässige Umsetzung von Entfernung in Tonhöhe, die es ermöglicht kontrolliert Melodien zu spielen.

PWM-Klangerzeugung
Mit Abtastfrequenzen von mehreren 10kHz lassen sich mit einer 8bit PWM Töne von akzeptabler Qualität erzeugen. Dies geschieht mithilfe eines "Phasen-Zeigers" der einmal / Abtastung den aktuellen Wert aus der look-up Tabelle adressiert. Bei 32kHz Abtastrate und 16bit Phasenzeiger ist die Frequenzauflösung 32k/64k = 0,5Hz. Das ist also das kleinstmögliche Frequenzinterval zwischen zwei benachbarten Tönen.

Geringste Signalerzerrungen ergeben sich bei symmetrischer PWM, ("phase correct PWM" oder "dual slope PWM"), im Unterschied zur "fast PWM"

Für die Ausgabe wird eine einzige Portleitung benötigt. Da dieses Signal einen großen Anteil an Trägersignal beinhaltet, ist ein Ausgangs-Tiefpaßfilter 2.Ordnung oder besser zu empfehlen.

Treibt man mit diesem Port direkt die Basen eines npn/pnp Emitterfolgers, kann man mit diesem Hochstrom PWM direkt einen Lautsprecher treiben.

Entfernungsmessung und Ablaufsteuerung

Zur Entfernungsmessung werden zwei benachbart montierte Piezo Ultraschall-Transducer eingesetzt. Der Transmitter sendet einen kurzen Burst aus wenigen 40kHz-Schwingungen aus. Nach Abschaltung des Transmitters klingelt selbiger noch einige Zeit nach, ausserdem gibt es unvermeidbare Übersprecheffekte, die den empfindlichen Receiver triggern können.

Damit diese "verfrühten Echos" die interessierenden nachfolgenden Echos nicht einfach wegmaskieren können, ist zwischen Ende des bursts und Messung eine Wartezeit im ms-Bereich einzuplanen (?(L)eading (E)dge (B)lanking).

Danach wird die Messung gestartet indem der Komparator-Interrupt scharf gemacht wird. Mit dem ersten detektierten Echo ist die Messung beendet. Hierbei gibt es ein timeout das den ?Aktivitätsradius? festlegt. Echos ausserhalb des Aktivitätsradius werden nicht gemessen.

Nach Ablauf dieses ersten timeout wird noch weiter gewartet (?forbidden range?) damit auch nachfolgende Reflexionen an Zimmerwänden etc abgeklungen sind. Andernfalls können solche späten Echos die nachfolgenden Messungen verfälschen.

Zur Zeitmessung wird der 16bit Zähler/Timer herangezogen. Mit 16MHz Taktfrequenz und einem Vorteiler 1/8 können bis 32ms=5m+5m mit einer theoretischen Auflösung von 0,5us =83um+83um gemessen werden.
...mit der Lizenz zum Löten!
 
  


Nachrichten in diesem Thema
Theremin - von voltwide - 27.06.2011, 11:03 PM
[Kein Betreff] - von madmoony - 27.06.2011, 11:20 PM
[Kein Betreff] - von voltwide - 27.06.2011, 11:28 PM
[Kein Betreff] - von voltwide - 28.06.2011, 12:01 AM
[Kein Betreff] - von voltwide - 28.06.2011, 12:27 AM
RE: Theremin - von Rumgucker - 28.06.2011, 07:02 AM
[Kein Betreff] - von Rumgucker - 28.06.2011, 08:15 AM
RE: RE: Theremin - von voltwide - 28.06.2011, 09:05 AM
[Kein Betreff] - von Rumgucker - 28.06.2011, 09:15 AM
[Kein Betreff] - von Rumgucker - 28.06.2011, 11:01 AM
[Kein Betreff] - von Gitarrenmann - 28.06.2011, 11:12 AM
[Kein Betreff] - von Rumgucker - 28.06.2011, 11:20 AM
[Kein Betreff] - von Gitarrenmann - 29.06.2011, 07:34 PM
[Kein Betreff] - von voltwide - 29.06.2011, 07:43 PM
[Kein Betreff] - von e83cc - 30.06.2011, 04:28 PM