Pfad:AVR-DE => Anwendungen => ATtiny45 Audiosensor
Audiosensor klein Anwendungen von
AVR-Single-Chip-Controller AT90S, ATtiny, ATmega and ATxmega
Audiosensor mit einem ATtiny45
Logo

Audiosensor mit einem ATtiny45

Gezippte Version dieser Seite (296 kB) Diese Seiten als PDF (628 kB)


Audiosensor mit einem ATtiny45 Dieser einfache Sensor reagiert auf steile Audiosignale und antwortet mit einem Signalton. Die Stärke des Audiosignals wird kontinuierlich auf einer rot-grünen Duo-Led dargestellt. Wenn Du schon einen Klatschschalter besitzt wirst Du erstaunt sein, mit wie wie wenig Elektronikkomponenten die Schaltung auskommt.

0 Überblick

  1. Hardware
  2. Aufbau
  3. Betrieb
  4. Software

1 Hardware

1.1 Schaltbild

Audiosensor Schaltbild Der Controller ATtiny45 erledigt die gesamte Arbeit und kontrolliert die wenigen externen Bauteile.

Die Stromversorgung erfolgt mit zwei AA- oder AAA-Batterien in Serie geschaltet. Der Strombedarf liegt normalerweise bei 1,5 mA, beim Alarm bis zu 15 mA.

Das Audiosignal wird mit einem Elektretmikrofon aufgenommen. Seine Betriebsspannung erhält das Mikrofon über den 10k-Widerstand, die resultierende Spannung liegt bei 1,37 V und treibt den ADC2-Eingang des ATtiny45. Die Mikrofonspannung wird durch ein 100k/100nF-RC-Netzwerk gefiltert, das den Gleichspannungsanteil mittelt und als Vergleichsspannung am ADC3-Eingang anliegt. Die Differenz ADC2-ADC3 wird im Differenzverstärker des ATtiny45 um den Faktor 20 verstärkt und liefert ausreichend Pegel für die Messung am Signaleingang des AD-Wandlers.

Die Duo-Led zeigt die Spitzenspannungen, gemittelt über 64 Einzelmessungen, in grün an. Je lauter das Signal wird, desto heller leuchtet die LED.

Überschreitet eine voreinstellbare Anzahl an Messungen die Triggergrenze (1,5 mal der Durchschnitt), wird der Alarm aktiviert. Die Duo-Led wird rot und die rote Einzel-Led wird aktiviert. Im Lautsprecher ertönt ein voreinstellbarer 880Hz-Ton. Der Alarm erlischt nach zwei Sekunden.

Die ISP6-Schnittstelle ermöglicht die Programmierung des ATiny45 in der fertigen Schaltung. Zum Programmieren wird der Jumper J1 ausgeschaltet, damit der MOSI-Pin ungestört arbeiten kann.

1.2 Wie es funktioniert

AD-Wandlerfunktion des Audiosensors Der Controller misst kontinuierlich die Differenzspannung an den Eingangspins ADC2-ADC3, verstärkt diese um das 20-fache und vergleicht diese mit der internen Spannungsreferenz von 1,1 V. Das 8-Bit-Wandler-Ergebnis zwischen 0 und 255 deckt den Eingangspannungsbereich von 1,1 / 20 = 55 mV respektive 39 mVeff ab. Nur die positiven Halbwellen werden gemessen, negative ergeben Null.

Der AD-Wandler arbeitet mit dem Controllertakt von 2 Mhz geteilt durch 2. Er benötigt 13 AD-Wandler-Takte. Die Interrupt-Service-Routine, die bei abgeschlossener Wandlung aufgerufen wird, benötigt zwischen 21 bis 38 Controllertakte bis der AD-Wandler neu gestartet wird. Die Wandlerfrequenz liegt folglich zwischen 26 und 43 kHz. Ein Ton von 1.000 Hz wird daher mindestens 25 Mal gemessen, wovon 12 bis 13 Messungen Null ergeben, der Rest die positive Halbwelle abbildet.

Toperkennung Um die Maximalamplitude zu erkennen wird das AD-Wandler-Resultat mit dem vorherigen verglichen. Steigt die Amplitude an, wird rTop auf das neue Ergebnis gesetzt. Sinkt das Wandler-Ergebnis und wird kleiner als rTop und auch kleiner als bei der letzten Messung wird der Spitzenwert im SRAM gespeichert, zusammen mit einem 16-Bit-Zeitstempel (jeweils 12 µs). Der Zeitstempel kann für die Beschränkung auf bestimmte Frequenzen benutzt werden, wird aber in dieser Version nicht ausgewertet.

Sind 64 Spitzenwerte erkannt, werden diese gemittelt und auf der Duo-Led angezeigt (PWM-Zyklus des Timers TC1). Der Mittelwert wird um das 1,5-fache erhöht und als neuer Triggerwert gespeichert. Überschreiten eine voreingestellte Anzahl an Werten den Triggerwert wird die Alarmphase gestartet. Die LEDs werden umgeschaltet und der Timer TC0 erzeugt einen Ton von 880 Hz an seinem Ausgangspin OC1A.

1.3 Andere Einstellungen

Die Hard- und Software arbeitet auch mit einem ATtiny25 oder einem ATtiny85. Die Auswahl erfolgt zu Beginn des Quellcodes durch ändern von Konstanten. Wenn ein ATtiny25 gewählt wird, wird die Ausgabe der Zeitstempel abgeschaltet damit die 64 Messwerte in den verfügbaren SRAM-Speicher passt. Das Abschalten ändert nichts an der Funktionsweise.

Die Alarmschwelle, die Alarmdauer und der Alarmton können durch Ändern von Konstanten im Kopf der Software eingestellt werden.

Alle angeschlossene Hardware kann separat getestet werden indem die entsprechenden "Debug switches" aktiviert werden. Die zwei LEDs, der Lautsprecher und das Mikrofon können getestet werden. In zwei weiteren Modi können AD-Wandler-Rohdaten oder erkannte Spitzenwerte in das EEPROM gespeichert werden. Von dort können sie über die ISP6-Schnittstelle ausgelesen werden.

Seitenanfang 1 Hardware 2 Aufbau 3 Betrieb 4 Software


2 Aufbau

2.1 Gedruckte Schaltung

Folgemir tn45 Gedruckte Schaltung Die Platine mit 50-mal-40 mm nimmt alle Komponenten auf und besitzt vier Befestigungslöcher von 2,5 mm Durchmesser.

2.2 Komponentenmontage

Folgemir tn45 Komponentenmontage Eine Brücke ist zu bestücken. Alle externen Komponenten sind mit 1 mm-Pins steckbar.

2.3 Einbau in eine Schachtel

Folge mir in einem Gehäuse Zusammen mit den beiden Batterien finden alle Komponenten in einer 120*70*40 mm Plastikschachtel Platz.


Seitenanfang 1 Hardware 2 Aufbau 3 Betrieb 4 Software


3 Betrieb

Der Betrieb ist einfach, weil der Hintergrund kontinuierlich gemessen und ausgewertet wird. Nur Signale, die den Hintergrund um das 1,5-fache übersteigen führen zum Alarm.

Da die Helligkeit der Duo-Led den Durchschnittswert fortlaufend anzeigt, kann durch langsam steigende Lautstärke über längeren Zeitraum die Empfindlichkeit trainiert werden. Das funktioniert aber nur bis das 1,5-fache nicht 255 erreicht.

Seitenanfang 1 Hardware 2 Aufbau 3 Betrieb 4 Software


4 Die Software

Die Software ist in AVR Assembler geschrieben und ausführlich kommentiert. Der Quellcode kann hier heruntergeladen oder hier im Browser gelesen werden. Der Quellcode verwendet .if-Direktiven und kann entweder mit dem gavrasm-Assembler oder mit ATMEL's Assembler 2 assembliert werden. Eine how-to-Seite für das Assemblieren mit gavrasm ist verfügbar für Linux hier und für Windows hier zu finden.

Änderungen von Konstanten können im Kopf der Software erfolgen wenn andere Eigenschaften gewünscht sind oder wenn die Software für Tests verwendet werden soll.

Ein besonderer Trick wurde im Quellcode verwendet. Da die AD-Wandler-Routine das Audiosignal in schneller Folge ausmessen muss, wird die Taktfrequenz des Controllers vom Default von 1 MHz auf 2 MHz umgestellt. Das erfolgt nicht durch Fuse-Änderung sondern durch Schreiben in das CLKPR-Portregister.

Die Quellcode-Datei enthält viele weitere Hinweise zur Funktionsweise.

Seitenanfang 1 Hardware 2 Aufbau 3 Betrieb 4 Software




Lob, Fehlerberichte, Nörgeln und Spam bitte in die Kommentarseite an mich. Spammer: bitte beachten, dass hinter diesem Link kein Standardscript steckt und ich persönlich die Einträge auswähle. Daher sind auch wiederholte Versuche, Einträge zu platzieren zum Scheitern verurteilt und Werbung für Online-Apotheken wird hier nicht erscheinen.

©2018 by http://www.avr-asm-tutorial.net