Pfad: Home => AVR-Übersicht => Anwendungen => Audio Levelanzeige
Levelmeter

Audio-Levelmeter mit ATtiny24 und LCD

Ein vielseitiges Messgerät für Audiosignale mit hoher Auflösung (80 Stufen), hoher Empfindlichkeit (Vollausschlag ab 19 mVeff), sehr niedrigem Stromverbrauch im Dauerbetrieb (ca. 10 mA) und vielfältiger Einsatzfähigkeit.

Überblick

  1. Beschreibung
  2. Funktionsweise
  3. Hardware
  4. Aufbau
  5. Software
  6. Anwendung

1 Beschreibung

Wozu?

Das Messgerät misst das angelegte Audiosignal und zeigt den Pegel entweder in linearer oder in logarithmischer Form als Leuchtband auf der LCD in den Zeilen 3 (linker Kanal) und 4 (rechter Kanal) an. Der Maximalpegel wird für eine vorwählbare Zeit gehalten und separat angezeigt.

Pro Sekunde werden vier Mess- und Anzeigezyklen absolviert, so dass sich das Gerät für die Anzeige von schnell wechselnden Audiosignalen eignet.

Wie?

Das Messgerät nutzt die vielfältigen internen Möglichkeiten, die der darin eingebaute AD-Wandler zur Verfügung stellt. Im Einzelnen sind das: Da andere, besonders die älteren AVR-Typen, wie z. B. der ATmega8(A), diese Möglichkeiten nicht bieten, ist der Transfer zu anderen Typen mit Vorsicht zu geniessen.

Seitenanfang Beschreibung Funktionsweise Hardware Aufbau Software Anwendung

2 Funktionsweise

Die Messung des Wechselspannungssignals

Wechselstrommessung Um Wechselströme mit einem AD-Wandler messen zu können, muss der mittlere Pegel so angehoben werden, dass das gesamte Eingangssignal im positiven Spannungsbereich liegt. Dies kann mit einem Spannungsteiler erfolgen, dem das Eingangssignal über ein Elko aufgeprägt wird. Der Elko sorgt für eine Trennung der Gleichspannung von dem Wechselspannungseingangssignal. Der Spannungsteiler mit zwei gleichen Widerständen von 10 kΩ teilt die Betriebsspannung von 5 V durch zwei. Der Elko von 47 µF glättet diese Spannung, so dass das Eingangssignal diese Teilerspannung nicht beeinflussen kann. Das Wechselspannungssignal wird um diesen mittleren Pegel von 2,5 V angehoben.

Diese angehobene Signalspannung wird zusammen mit dem Anhebungspegel dem im Chip vorhandenen Differenzverstärker zugeführt. Dieser subtrahiert den Anhebungspegel von der angehobenen Signalspannung und führt diese Differenz dem AD-Wandler zu. Da die Differenz im negativen Teil des Eingangssignals negativ würde, muss der AD-Wandler entweder negative Werte liefern, was er bei entsprechender Einstellung auch tun könnte, oder er kann Null liefern (was in unserem Fall eingestellt ist).

Damit liefert der AD-Wandler bei einer Referenzspannung von 5 V Resultate zwischen 0 und 511.

Messsignal Das maximal messbare Eingangssignal (hier: 1000 Hz) überstreicht die gesamte messbare Bandreite des AD-Wandlers, wenn seine maximale und minimale Spannung der Referenzsspannung entspricht (Vpp = Uref).

Da der Differenzverstärker die Mittenspannung (= Uref / 2) subtrahiert, bleiben für die Messung nur die positiven Halbwellen, die negativen Halbwellen liefern als Messergebnis Null (grüne Kurve). Die Messungen des AD-Wandlers erfolgen alle 13,13 µs (schwarze Punkte). Um das Fehlen der negativen Halbwellen zu kompensieren, können die aufsummierten Messwerte einfach mit zwei multipliziert werden (2*Average). Bei Vollaussteuerung ergibt sich ein durchschnittlicher Messwert von 362 (von 1023 maximal).

Anzeige des Pegels

Umwandlung Messwert in Anzeigeeinheiten Der gemessene Mittelwert der Signale wird in die Anzahl voll- und teilbeleuchteten Spalten der LCD umgewandelt. Dies kann in linearer oder in logarithmischer Form erfolgen. Diese Auswahl wird durch eine Einstellung im Quellcode getroffen.

Dynamikbereich Logarithmisch Das Diagramm zeigt den Dynamikbereich, der bei logaritmischer Darstellung in dBu abgedeckt wird. Dabei wird von dBu = 20 * lg (Ueff / 0,755) ausgegangen. Die Verstärkung des Differenzverstärkers G variiert dabei zwischen 1 bzw. 20, die ausgewählte Referenzspannung U zwischen 1,1 bzw. 5 V. Da sollte für jeden Anwendungsfall was Passendes dabei sein.

Dynamikbereich Linear In der linearen Einstellung reicht die anzeigbare Wechselspannung von 0,2 mVeff bis knapp unter 2 Veff. Auch das bietet reichlich Bandbreite.

Die Messbereiche sind in dieser Form nicht eichfähig. Dazu müssten Die Korrekturen bei der Gain könnten mit einer 16- mal 16-Bit-Multiplikation eingearbeitet werden.

Pegelinterpolation Die Anzeige von Zwischenwerten erfolgt mit Hilfe der selbst definierten LCD-Zeichen 0 bis 3. Im Beispiel sind die Pegelwerte 40 bis 44 dargestellt.

Maximumdarstellung Über eine vorwählbare Anzahl von Messzyklen werden die Pegelwerte gespeichert und daraus das Maximum ermittelt. Die Darstellung dieses Maximums erfolgt mit den selbstprogrammierten Zeichen 4 bis 7 der LCD. Die Darstellung zeigt für den Pegelwert 44 das Maximum bei 52 bis 55.

Zeichengenerator Die Zeichen 0 bis 7 wurden mit dem Tool hier erzeugt.



Seitenanfang Beschreibung Funktionsweise Hardware Aufbau Software Anwendung

3 Hardware

Schaltbild 1,1V-Version Dies ist die Grundschaltung. Die Messungen macht der ATtiny24, für die Anzeige sorgt eine vierzeilige LCD mit 20 Zeichen pro Zeile.

Das analoge Eingangssignal wird mit einem Elko von 1 µF an die AD-Wandler-Eingänge AIN1 (linker Kanal) und AIN2 (rechter Kanal) eingekoppelt. Der Spannungsteiler 12k/1k5 sorgt für eine Mittenspannung bei der Hälfte der Referenzspannung von 1,1 V. Die Mittenspannung ist an AIN3 angeschlossen, die als negativer Eingang des internen Differenzverstärkers dient. Die Referenzspannung von 1,1 V wird prozessorintern erzeugt und am AREF-Pin 13 mit dem Kondensator von 100 nF geglättet.

Die Kontrollanschlüsse RS, R/W und E der LCD sind an die Portpins PB0, PB1 und PB2 angeschlossen. Die vier oberen Datenbusbits der LCD sind mit den vier oberen Portbits des Ports A verbunden. Die Kommunikation auf diesem Bus ist zweiseitig, die Richtung wird vom R/W-Kontrollanschluss bestimmt. Die LCD-Hintergrundbeleuchtung erfolgt über den Strombegrenzungswiderstand von 220 Ω mit sparsamen 7,7 mA.

Zum Programmieren des ATtiny24 in der Schaltung ist ein sechspoliger ISP-Stecker integriert, der die Signale MOSI, MISO, SCK und RESET zur Verfügung stellt. MOSI, MISO und SCK sind mit dem LCD-Datenbus doppelt genutzt, die Doppelnutzung stört nicht, da der Datenbus beim Programmieren nicht getrieben wird.

Schaltbild 5V-Version Beim Programmieren des ATtiny24 kann als Referenzspannung auch die Betriebsspannung von 5 V als Referenzspannung des AD-Wandlers gewählt werden. In diesem Fall muss die Mittenspannung auf 2,5 V eingestellt werden, was mit den beiden Widerständen von 10 kΩ erfolgt. Damit kann die volle Signalamplitude von 5 Vpp = 1,77 Veff ausgenutzt werden. Sonst ändert sich an der Schaltung nichts.


Seitenanfang Beschreibung Funktionsweise Hardware Aufbau Software Anwendung

4 Aufbau

Aufbau Dies ist der Mikroprozessorteil des Aufbaus.

Aufbau mit LCD Und dies hier ist der Aufbau mitsamt der LCD und der Stromversorgung.


Seitenanfang Beschreibung Funktionsweise Hardware Aufbau Software Anwendung

5 Software

Einstellungen

Die Software erfordert folgende Einstellungen.
; ===================================================
;  K O N S T A N T E N   Z U M   E I N S T E L L E N
; ===================================================
;
; Auswahl der Betriebsmodi
;   Auswahl der ADC-Referenzspannung 1,1 oder 5 V
.equ cAdc_1p1 = 1 ; 1 = 1.1 internal reference voltage
                  ; 0 = Operating voltage as reference
;   Auswahl der Verstaerkung des Differenzsignals 1 oder 20
.equ cAdcGain = 20 ; ADC differential gain (1 or 20)
;   Auswahl des Betriebsmodus Log oder Lin
.equ cLog = 1 ; Logarithmisch (1) oder linear (0)
;   Auswahl der Haltedauer fuer Maxima
.equ cMaxHold = 14 ; 14 Haltezyklen fuer Maximalwert
Andere Einstellungen können jederzeit im Quellcode vorgenommen werden. Alle Konstanten werden beim Assemblieren noch einmal überprüft, fehlerhafte Einträge führen zu Fehlermeldungen des Assembers. Der Assembler muss die Direktiven .IF, .ELSE, .ENDIF und .ERROR beherrschen.

Funktionsweise

Der Takt des ATtiny24 wird durch Beschreiben von CLKPR software-seitig vom Default (1 MHz) auf 4 MHz umgestellt. Dazu müssen keine Fuses geändert werden.

Das Messen erfolgt interrupt-gesteuert mit dem ADC_RDY-Vektor, der Controller befindet sich dabei im SLEEP-Mode Idle. Die Software misst nacheinander jeweils die Differenzspannung an den Eingängen AIN1 und AIN2, jeweils mit AIN3 als negativem Eingang. Die Messwerte werden pro Kanal in einem 24-Bit-Register aufsummiert.

Nach 8192 Messungen erfolgt die Auswertung der Messungen. Dazu wird die Summe durch 4096 geteilt (durch 256 und durch 16) und gerundet. Durch Vergleich mit den 80 tabellierten Pegelwerten wird daraus die Anzahl voller Zeichen (Zeichen 0) und das auszugebende letzte Zeichen (keins, 1 oder 2 oder 3) ermittelt.

Zur Ermittlung des Maximalpegels wird der ermittelte Pegelwert (0 bis 79) in einen Puffer im SRAM geschrieben und jeweils um eine Position nach hinten geschoben. Die Pufferlänge bestimmt den Maximalzeitraum, über den das Maximum erhalten bleibt. In der Software ist der Puffer auf eine Länge von 14 eingestellt, was ca. 3 Sekunden entspricht. Aus diesem Puffer wird jeweils der Maximalwert ermittelt und in die Zeichen Leer (Leerzeichen), 4, 5, 6 oder 7 umgewandelt. Die Position, an der das Maximalzeichen platziert wird, ergibt sich aus dem durch vier geteilten Pegelwert des Maximums. Ist diese Position schon belegt, wird das Zeichen 4 in die nächste Spalte der LCD platziert. Dies erfolgt für beide Kanäle (links und rechts) separat, das Ergebnis wird in einem 2*20-Zeichen-Puffer im SRAM zusammengestellt. Dieser Pufferinhalt wird auf Zeilen 3 und 4 der LCD geschrieben.

Quellcode

Die Software ist in Assember geschrieben und hier verfügbar. Zum Assemblieren wird noch die LCD-Include-Datei benötigt, die im gleichen Verzeichnis liegen muss um gefunden zu werden.

Seitenanfang Beschreibung Funktionsweise Hardware Aufbau Software Anwendung

6 Anwendung

Die Mimik funktioniert einigermaßen passabel. Die gemessenen mV-Pegel weichen etwas von mit einem Voltmeter gemessenen ab, die Differenz dürfte aber für die meisten Anwendungen verschmerzbar sein.

Anzeige rechter Kanal Das ist so eine typische Anzeige mit einem Audiosignal auf dem rechten Kanal.

Musik kann der Pegelmeter auch ordentlich anzeigen, wie das Video zeigt (Download der MPG-Version mit Ton).





Seitenanfang Beschreibung Funktionsweise Hardware Aufbau Software Anwendung


An den Seitenanfang

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