INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Hardware für Frequenzfilter für Audiosignal
23.02.2021, 12:16
Beitrag #33
RE: Hardware für Frequenzfilter für Audiosignal
(01.02.2021 21:45)Harry schrieb:  Hallo Newton,

ich habe mich im letzten Jahr viel mit dem MSGEQ7 beschäftigt und setze diesen für einen LED Strip ein, welchen ich als Lichtorgel oder taktgesteuertes Lauflicht benutze.

Tommy hat recht. Bestell dir den MSGEQ7 bei einem deutschen Händler. EBAY und Aliexpress waren preislich verlockend, aber beides Fälschungen.

Es gibt auch einen Softwarelösung, bei der ein Arduino als Frequenzfilter benutzt wird. Leider fällt mir aber nicht mehr die genaue Bezeichnung ein.

Bei meinem Projekt kann ich entweder Line in oder ein Mikrofon benutzen.

Als Mikrofon kann ich dir die MAX9814 Platine empfehlen. Nimm aber die blaue, nicht die lilane Platine. Meines Wissens nach hat die blaue Platine "Auto Gain", die lilane nicht.

Für den Line Eingang habe ich verschiedene Auto Gain Schaltungen, welche ich im Internet gefunden habe versucht. Funktioniert hat leider keine davon.

Ich habe mir dadurch geholfen, dass ich die durchschnittliche Lautsärke der letzten z.B. 10 Sekunden als Mittelwert benutze und je nachdem den Wert anhebe oder senke. Ansonsten hatte ich das Problem, dass die Lichtorgel entweder zu zu oft oder zu wenig geleuchtet hat.

Ist das Signal allerdings zu laut und übersteuert, so ist es im Nachhinein nicht mehr möglich ein brauchbares Signal daraus zu generieren.

Ich hänge dir mein Schaltplan an. Den Atmega 328P kannst du ignorieren. Diesen habe ich um die Signale einer IR-Fernbedienung zu empfangen und an den Arduino weiter zu geben.



Harry

Hallo Harry,

kannst du mir genauer Erklären wie du den Mittelwert der Lautstärke ermittelt und eingestellt hast. Da das genau das Problem ist was ich erwarte. Da ich unterschiedliche Eingangsquellen nutzen möchte in diesem Projekt. Wie hebst od. senkst du die Lautstärke?

Vielen Dank im Voraus.

Vlg Newton
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.02.2021, 19:34
Beitrag #34
RE: Hardware für Frequenzfilter für Audiosignal
(23.02.2021 12:16)Newton schrieb:  kannst du mir genauer Erklären wie du den Mittelwert der Lautstärke ermittelt und eingestellt hast. Da das genau das Problem ist was ich erwarte. Da ich unterschiedliche Eingangsquellen nutzen möchte in diesem Projekt. Wie hebst od. senkst du die Lautstärke?

Ich addiere über mehrere Runden den Spitzenwert meines Pegels und teile diesen durch die Rundenzahl. Daraus ergibt sich mein Korrekturwert. Ich habe dir mal die entscheideten Stellen meines codes angehängt. Für Lauflicht und Lichtorgel benutze ich unterschiedliche Korrekturwert.

Code:
// ---------------------------------------------------------------------------------
// -----   MSGEQ7 auslesen ---------------------------------------------------------
// ---------------------------------------------------------------------------------

void MSGEQ7_auslesen(){  
  digitalWrite(resetPin, HIGH);
  digitalWrite(resetPin, LOW);
  spitzenwert = 0;
  for (int i=0;i<7;i++){
    digitalWrite(strobePin, LOW);
    if (prg == 31){
      delay(MSGEQ7_Verzoegerung / 2);
    }
    spectrumValue[i]=analogRead(analogPin);
    spectrumValue[i]=constrain(spectrumValue[i], filter, 1023);
    spectrumValue[i]=map(spectrumValue[i], filter,1023,0,255);
    digitalWrite(strobePin, HIGH);
    if (spectrumValue[i] > spitzenwert) {
      spitzenwert = spectrumValue[i];
    }
  }
}

// ---------------------------------------------------------------------------------
// -----   Lautstärke anpassen -----------------------------------------------------
// ---------------------------------------------------------------------------------

void Lautstaerke_anpassen(){

  if (spitzenwert > 50) {                      // Wenn Musik läuft
    spitzenrunde = spitzenrunde + 1;           // Eine Runde Dazu zählen
    spitzensumme = spitzensumme + spitzenwert; // Addieren der Lautstärke Werte
  }

  if (spitzenrunde == 20) {                 // Wenn 20 Runden lang gemessen wurde

    if(spitzensumme > 1800) {
      llkorrektur = (spitzensumme / 10);    // Lautstärke Korrekturwert für Lauflicht
    }
    if(spitzensumme < 1801 && spitzensumme > 1300) {
      llkorrektur = (spitzensumme / 15);
    }
    if(spitzensumme < 1301) {
      llkorrektur = (spitzensumme / 25);
    }

    korrektur = 120 - (spitzensumme / 20);  // Lautstärke Korrekturwert für Lichtorgel
    spitzensumme = 0;
    spitzenrunde = 0;
  }
}


// ---------------------------------------------------------------------------------
// -----  Lauflicht  ---------------------------------------------------------------
// ---------------------------------------------------------------------------------

void Lauflicht() {

  prg = 11;

  if (Runde1) {firstPixel = 0; a=0; b=0; c=0; Runde1 = 0;}  
  int Segmente = strip.numPixels() / Segmentlaenge;  // int am Anfang, Segment in Runde1 Zeile versetzen !!!
  
  aktMillis = millis();

  if (takt == 1 && spitzenwert - llkorrektur > spitzenwert_alt){  // Wenn Taktsteuerung an und Ton kommt
    lastMillis = (lastMillis - Geschwindigkeit);                  // Wartezeit für nächste LED überspringen
    delay(MSGEQ7_Verzoegerung);                                   // Verzögerung, wie oft MSGEQ7 auslöst.
  }
  
  if (aktMillis - lastMillis >= Geschwindigkeit) {
    lastMillis = aktMillis;
    strip.clear();         //   Set all pixels in RAM to 0 (off)

    for( c=0; c<Segmentlaenge; c++) {
      strip.setPixelColor(c+(b*Segmentlaenge)+(a*Segmentlaenge*Farbenzahl), col[b]);
    }

    b++;
    Runde1 = 0;  
    if (b == Farbenzahl) {a++;}
    if (b == Farbenzahl && a == Segmente/Farbenzahl) {Runde1 = 1;}
    if (b == Farbenzahl) {b = 0;}

    strip.show();
  }
}


// ---------------------------------------------------------------------------------
// -----   Lichtorgel --------------------------------------------------------------
// ---------------------------------------------------------------------------------

void  Lichtorgel(){
  
  prg = 31;

  int Segmentlaenge = strip.numPixels() / 4;
  
  // --- Die 7 Kanäle den Farben zuweisen und Lautsrärke anpassen (Anfang)
  if (spectrumValue[0] > spectrumValue[1]) {
    rotwert = spectrumValue[0] + korrektur;
  }
  else {rotwert = spectrumValue[1] + korrektur;}

  if (spectrumValue[2] > spectrumValue[3]) {
    blauwert = spectrumValue[2] + korrektur;
  }
  else {blauwert = spectrumValue[3];}

  gruenwert = spectrumValue[4] + korrektur + 70;  
  
  if (spectrumValue[5] > spectrumValue[6]) {
    gelbwert = spectrumValue[5] + korrektur + 70;
  }
  else {gelbwert = spectrumValue[6] + korrektur + 70;}
  
  // --- Die 7 Kanäle den Farben zuweisen und Lautsrärke anpassen (Ende)
  
  if (rotwert   < 100) rotwert   = 0;  // Schwache LEDs ausschalten für mehr Effekt /
  if (blauwert  < 100) blauwert  = 0;  //                                           /
  if (gruenwert < 100) gruenwert = 0;  //                                           /
  if (gelbwert  < 100) gelbwert  = 0;  //                                           /

  if (spectrumValue[0] < 50 && spectrumValue[1] < 50)   {rotwert   = 0;}  // Wenn kein Ton, Farbe auf 0 /
  if (spectrumValue[2] < 50 && spectrumValue[3] < 50)   {blauwert  = 0;}  // Da sonst durch             /
  if (spectrumValue[4] < 50)                            {gruenwert = 0;}  // Korrekturwert              /
  if (spectrumValue[5] < 100 && spectrumValue[6] < 100) {gelbwert  = 0;}  // die Farbe an sein kann     /

  // LEDs einteilen und Farben zuweisen (Anfang)

  for(c=0*Segmentlaenge; c<Segmentlaenge*1; c++) {
    strip.setPixelColor(c, rotwert, 0, 0);    
  }
  for(c=1*Segmentlaenge; c<Segmentlaenge*2; c++) {
    strip.setPixelColor(c, 0, 0, blauwert);    
  }
  for(c=2*Segmentlaenge; c<Segmentlaenge*3; c++) {
    strip.setPixelColor(c, 0, gruenwert, 0);    
  }
  for(c=3*Segmentlaenge; c<Segmentlaenge*4; c++) {
    strip.setPixelColor(c, gelbwert, gelbwert, 0);    
  }
  strip.show();
}

Harry

Wenn etwas nicht funktioniert -> Kondensator hinzufügenSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 10:47
Beitrag #35
RE: Hardware für Frequenzfilter für Audiosignal
Hallo Harry,

vielen Dank für das zeigen deiner Vorgehensweise. Tolle Idee!

Verstehe leider nicht alles aber das Grundprinzip. ;-)

Ich habe leider noch das Problem, dass ich das IC MSGEQ7 bei den einschlägigen Seiten (DE) nicht bestellen kann. Ich habe aber bei Digi Key eine kleine Platine gefunden. Hat jemand schon Erfahrungen mit solchen Boards?

Link: https://www.digikey.de/product-detail/de...ND/6588588

Vlg Newton
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 10:51
Beitrag #36
RE: Hardware für Frequenzfilter für Audiosignal
Zumindest haben sie eine deutsche Niederlassung, Du kannst ihnen also im Problemfall in den Hintern treten.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 11:18
Beitrag #37
RE: Hardware für Frequenzfilter für Audiosignal
Hey Tommy,

das ist mal ne Ansage. Du sag mal kann ich auch den Arduino Uno für mein Projekt verwenden. Ich habe ja eigentlich nur den Audio In (3,5 Audio Jack) dann das Board (MSGEQ7) welches mit dem Arduino verbunden wird. Dann möchte ich die 7 Signale vom MSGEQ7 an 7 Digitalenausgängen ausgeben. Da der Arduino Uno 14 Digi I/O hat wo von zwei belegt sind durch den IC, sollten noch 12 Digi I/O übrigbleiben.

Link: http://image.dfrobot.com/image/data/DFR0...iagram.pdf

Trifft das zu? Hatte eigentlich ja vor das mit einem Arduino Mega 2560 zu machen da es dazu schon ein Beispiel gab.

Link: https://create.arduino.cc/projecthub/Ahm...6&offset=2

Vlg Newton
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 11:37
Beitrag #38
RE: Hardware für Frequenzfilter für Audiosignal
Und 2 weitere (0/1) sind durch Serial belegt.
Es sollte auch mit einem Nano gehen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.02.2021, 14:20
Beitrag #39
RE: Hardware für Frequenzfilter für Audiosignal
(24.02.2021 10:47)Newton schrieb:  Ich habe leider noch das Problem, dass ich das IC MSGEQ7 bei den einschlägigen Seiten (DE) nicht bestellen kann. Ich habe aber bei Digi Key eine kleine Platine gefunden. Hat jemand schon Erfahrungen mit solchen Boards?

Ich hatte zuletzt auch immer mehr Probleme diesen zu bekommen. Ich hoffe mal nicht das die Produktion eingestellt wurde, da ich mir davon auch noch einmal 2 Stück zulegen möchte.

Zu der Platine von digikey kann ich nichts sagen. Da er aber gesockelt ist, kannst du ihn auch ohne Platine benutzen. Ich denke es müsste ein originaler sein.

Ich habe meinen von exp-tech, die können aber z.Z nicht liefern.

Harry

Wenn etwas nicht funktioniert -> Kondensator hinzufügenSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.02.2021, 13:28
Beitrag #40
RE: Hardware für Frequenzfilter für Audiosignal
Hallo,

ich habe leider immer noch das Problem mit dem IC (MSGEQ7). Ich kann dieses zwar Bestellen, muss dann aber immer den Versand aus den US mit 20€ mit bezahlen. Was ärgerlich ist und nicht im Budget ist. Hab auch bei anderen Händler geschaut und die Lieferzeiten sind voraussichtlich Ende März Anfang April, was eine Verzögerung mit sich ziehen würde. Was auch nicht gut ist.

Habt ihr noch eine Idee wo man schauen könnte?

Oder Planänderung und anstatt mit dem MSGEQ7 das Projekt mit der Softwarelösung arduinoFFT umsetzten?

Newton
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Hardware-Fehler bei WS2812 Einzel-LEDs Nordlicht 23 4.742 14.03.2021 18:37
Letzter Beitrag: Nordlicht
Bug Hardware Problem (!) Gandalf 36 15.976 25.02.2021 17:06
Letzter Beitrag: hotsystems
  Hardware die mehr als 1A benötigen testen georg01 18 5.398 21.05.2018 18:23
Letzter Beitrag: hotsystems
Tongue Invest-Planung - Hardware Planung Fizzo61 9 4.423 30.11.2017 12:08
Letzter Beitrag: Fizzo61
  Hardware Nachhilfe malititi23 8 3.711 04.11.2017 18:58
Letzter Beitrag: MiReu
  Hardware gefunden - helft mir bei dem Puzzle Flap 17 5.647 03.08.2017 17:46
Letzter Beitrag: Binatone
  recht schnelle neue Lib für ILI9341 mit Hardware SPI (beschleunigt) HaWe 0 2.843 18.09.2015 18:55
Letzter Beitrag: HaWe
  [gelöst] ATtiny mit Arduino programmieren - Frage zur Hardware Gelegenheitsbastler 4 4.908 10.09.2015 11:55
Letzter Beitrag: Bitklopfer
  Arduinos: welche i2c Bus Hardware ? HaWe 18 6.900 01.06.2015 19:15
Letzter Beitrag: fraju
  und wieder mal: schnelle Hardware-SPI Displays (oder UART) HaWe 2 3.550 08.05.2015 19:00
Letzter Beitrag: HaWe

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste