mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Lärm erkennen


Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mit Hilfe eines Mikrocontrollers "Lärm" erkennen:
Das ganze soll in einem Raum, wo viele Menschen reden, eingesetzt
werden; wenn zuviele Menschen gleichzeitig, durcheinandern reden und das
ganze laut wird, soll der Controller das erkennen.

Funktion:
Ein Mikrofon ist an einem OpAmp angeschlossen, das verstärkte Signal
geht an einen (analogen) Eingang eines Mikrocontrollers.

Nur, wie gehts dann weiter?
Wie kann der Controller also Lärm von normalen Sprechschall
unterscheiden?
Irgendwelche Ideen?


Danke,
Tom
(gerade schonmal geschickt, aber leider gelöscht)

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht über eine gewisse Zeit (halbe Minute oder so?) den Mittelwert 
bilden und wenn dieser Deinen Referenzwert überschreitet, dies 
signalisieren.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoi Hoi!
Ganz einfach, anschließen wie im Anhang gezeigt.
Sowas bin ich gerade auch am entwerfen, nur für einen anderen Zweck ;-)
Den Code habe ich zum Großzeil gerade aus dem Tutorial geklaut, der war 
schon schön kommentiert.
Dann einen Timer-Interrupt aufsetzen der alle 1-10 Sekunden eine ADC 
Wandlung vornimmt, 10 Ergebnisse zusammenaddieren und Teilen für einen 
Mittelwert.
Dann Prüfen ob der Mittelwert über dem Grenzwert liegt.
Zumindest war das meine Idee auf die Schnelle, kann man vielleicht 
schöner lösen ;-)
volatile uint16_t adcval = 100;
volatile uint8_t adccounter = 0;
volatile uint16_t tmp = 0;

ISR(TIMER1_COMPA_vect) {

  ADMUX = 0;                      // Kanal waehlen
  ADMUX |= (1<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen
 
  ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0);    // Frequenzvorteiler 
                               // setzen auf 8 (1) und ADC aktivieren (1)

  /* Eigentliche Messung - Mittelwert aus 10 Wandlungen je Timer Interrupt eine Wandlung*/

  if (adccounter < 9) {
    ADCSRA |= (1<<ADSC);            // eine Wandlung "single conversion"
    while ( ADCSRA & (1<<ADSC) ) {
      ;   // auf Abschluss der Konvertierung warten
    }
    tmp += ADCW;        // Wandlungsergebnisse aufaddieren
  adccounter++;
  }
  else {
   adcval = tmp / 10;
   adccounter = 0;
  }
  
  ADCSRA &= ~(1<<ADEN);             // ADC deaktivieren (2)
}


int main() {
 if ( adcval > adcvalmax){ PORTC = 0xFF; } // wenn threshold überschritten wird PORTC auf high schalten
}

Mfg,
Peter

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>int main() {
> if ( adcval > adcvalmax){ PORTC = 0xFF; } // wenn threshold überschritten >wird 
PORTC auf high schalten
>}

Und immer wieder den Reset Knopf drücken ;)

Autor: Peter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Details ;-)
Ich glaube ich hab auch vergessen "tmp" zurück zu setzen und der Port 
ist ja auch nicht Initialisiert. Davon das der Timer ja nicht läuft und 
die Interrupts nicht freigegeben sind mal abgesehen. ;-P
Aber ich wollte ihm ja nur zeigen wie es gehen könnte und nicht was 
fertiges geben, wo bleibt der Lerneffekt.

Aber ich sehe gerade, ich hab den Anhang vergessen.
Hiermit nachgeholt!
Das Poti muss da nicht rein, kannst auch eine feste Verstärkung 
vorsehen.

Mfg,
Peter

Autor: Peter Roth (gelb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tom wrote:

> Wie kann der Controller also Lärm von normalen Sprechschall
> unterscheiden?

Über den Unterschied zwischen Lärm und laut kann man streiten, da 
braucht man manchmal einen Controller als Schiedsrichter.

Vielleicht über das Spektrum? Ein Tonspektrum-Analyser lässt sich mit 
Mikrocontroller-Hilfe machen.

Grüße, Peter

Autor: Sven H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Tool für alle Lehrer?!
Wenn das Lämpchen leuchtet, wissen die Schüler, dass sie zu laut sind. 
?!

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wie kann der Controller also Lärm von normalen Sprechschall
> unterscheiden?

Na, wie hört sich denn Sprache an? Und wie "Lärm", in diesem Fall 
vermutlich mehrere Stimmen durcheinander?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.