Hallo zusammen, einigen geläufig ist eventuell der MSGEQ7 IC von Mix-Sig, welcher 7 Bandpässe mit einem "automatischen" Multiplexer vereint um auf der Basis die Spitzenwerte im jeweiligen Frequenzband festzuhalten. Nutzbar ist das ganze bspw. für Audiobasierte Lichtspielereien. Anbei mal der Link zum Datenblatt des MSGEQ7: https://mix-sig.com/images/datasheets/MSGEQ7.pdf Diesen IC mit einem Microcontroller anzusteuern und auszuwerten ist gar kein Problem. Ich habe mir allerdings als Ziel gesetzt, mal was ohne Programmierung elektronisch umzusetzen und da stellt sich die Frage ob so etwas komplexes überhaupt noch ohne Microcontroller umsetzbar ist... Die Ansteuerung des MSGEQ7 selbst kann man durchaus noch bewerkstelligen. Im Datenblatt (siehe oben) ist eine Schaltung angegeben, die bei Entfernen der Fehler (Q6 statt Q7 am Schieberegister muss verwendet werden, keine Brücke zwischen Clock-Pin 1CP und Flip-Flop-Ausgang 1Q, neues Signal bei fallender, nicht bei steigender Taktflanke, etc.) auch durchaus erst mal funktioniert. Als Clock-Taktgeber lässt sich ja ein ICM 7555 (Link: https://www.nxp.com/docs/en/data-sheet/ICM7555.pdf) oder Ähnliches nutzen. Allerdings stellt sich nun die Frage, wie man den multiplexten Datenstrom des MSGEQ7 bspw. auf 7 getrennte Ausgänge, bspw. mit daran angeschlossenen LEDs oder MOSFETs aufteilen kann. Meine Idee hier war: - Analoger 1:8 Demultiplexer nutzen, wie bspw. den 74HC4051 (Link: https://assets.nexperia.com/documents/data-sheet/74HC_HCT4051.pdf) - Dahinter jeweils ein LTC6992-1 (Link: https://www.analog.com/media/en/technical-documentation/data-sheets/ltc6992-1-6992-2-6992-3-6992-4.pdf) oder alternative Lösungen wie https://www.maximintegrated.com/en/design/technical-documents/app-notes/5/5718.html um aus dem gegebenen Spannungspegeln PWM-Signale für die LEDs oder größere Lasten via MOSFETs zu machen. Das Problem was sich mir stellt ist, dass es scheinbar keine "Automatik"-Demultiplexer gibt. Soll heißen, der MSGEQ7 schaltet seinen Multiplexer bei jeder fallenden Taktflanke eigenständig immer einen Kanal weiter. Die bislang von mir gefundenen Demultiplexer fordern aber allesamt eine eigenständige Auswahl mittels separater Pins, auf welchen Ausgang die aktuellen Daten gelegt werden sollen. Daher die Frage: Gibt es analoge Demultiplexer die eigenständig bei jedem Clockcycle einen Ausgang weiter schalten können oder wie könnte man das oben beschriebene Problem anderweitig lösen? Wie gesagt, per Microcontroller alles überhaupt kein Problem. Mir geht es um die Herausforderung besagte Ansteuerung und Auswertung mal mit dedizierten Bauelementen ohne Sourcecode, also quasi "wie früher" zu lösen, sofern das überhaupt möglich ist. Zuletzt noch eine Frage zum MSGEQ7-Datenblatt: Was besagt der Parameter Band Offset Difference <= 200 mV? Ich verstehe den Wert so, dass zwischen den 7 Bändern der Ruhepegel bereits maximal 200 mV auseinander liegen kann (Rauschen). Die Grundausgangsspannung also (zusammen mit dem Output Offset von maximal 600 mV) irgendwo zwischen 0 und 800 mV pro Kanal liegt. Oder interpretiere ich das falsch? Danke schon mal im Voraus
:
Bearbeitet durch User
AMDFreak2006 schrieb: > einigen geläufig ist eventuell der MSGEQ7 IC von Mix-Sig, welcher 7 > Bandpässe mit einem "automatischen" Multiplexer vereint um auf der Basis > die Spitzenwerte im jeweiligen Frequenzband festzuhalten. > https://mix-sig.com/images/datasheets/MSGEQ7.pdf An dem Multiplexer ist nichts automatisches. > Daher die Frage: Gibt es analoge Demultiplexer die eigenständig bei > jedem Clockcycle einen Ausgang weiter schalten können oder wie könnte > man das oben beschriebene Problem anderweitig lösen? Es ist keine Raketenwissenschaft, einen Zähler vorzusehen, der die Adressbits des Multiplexers bedient und seinerseits von einem Reset- und einem "Nächster Kanal"-Signal gesteuert wird. Meine Güte. Was für ein Sermon für so ein triviales Problem!
Der Pegel kommt als Analogwert raus? Wie schnell kann man multiplexen und wie will man sicherstellen, dass die Werte die Lampen erreichen? Braucht ja irgendwie eine n-Kanal-Leistungsansteuerung. Die umzuschalten wird kaum gehen, wenn man 16kHz verarbeiten möchte, weil man das mindestens mit 32kHz abtasten muss -> 200kHz Umschaltrate. Also alle auslesen und analog speichern. RC-Kombination gfs.
Axel S. schrieb: > Es ist keine Raketenwissenschaft, einen Zähler vorzusehen, der die > Adressbits des Multiplexers bedient und seinerseits von einem Reset- und > einem "Nächster Kanal"-Signal gesteuert wird. > > Meine Güte. Was für ein Sermon für so ein triviales Problem! Auf die Idee mit nem Zähler für die Adressansteuerung muss man ja erst mal kommen. In dem Sinne überlese ich mal deinen negativen Unterton und danke dir für den wertvollen Tipp!
AMDFreak2006 schrieb: > > Auf die Idee mit nem Zähler für die Adressansteuerung muss man ja erst > mal kommen. Du meinst also wenn ich dir eine Backbox zeigte, die Ausgänge für 8 LED und zwei Eingänge hat und bei der ein Impuls an dem einen Eingang eine LED weiter schaltet und bei einen Impuls am anderen Eingang wieder auf die erste LED schaltet ... dann würdest du keinen Zähler darin vermuten? Bist du dir sicher bei der Wahl deines Hobbies?
Audiomann schrieb: > Der Pegel kommt als Analogwert raus? > Wie schnell kann man multiplexen und wie will man sicherstellen, dass > die Werte die Lampen erreichen? Braucht ja irgendwie eine > n-Kanal-Leistungsansteuerung. Die umzuschalten wird kaum gehen, wenn man > 16kHz verarbeiten möchte, weil man das mindestens mit 32kHz abtasten > muss -> 200kHz Umschaltrate. > > Also alle auslesen und analog speichern. RC-Kombination gfs. Hallo Audiomann, abtasten brauchst du hier nicht. Der MSGEQ7 arbeitet von außen gesehen völlig analog. Mit dem Clockcylce bestimmst du nur das Umschalten zwischen der Ausgabe des jeweiligen Kanals des MSGEQ7 Multiplexers. Stellst du den Clocktakt in dem Moment aus, wo der 16 kHz Kanal ausgegeben wird erhältst du den kontinuierlich aktualisierten Spitzenwert dieses Kanals. Intern arbeitet der MSGEQ7 natürlich teildigital mit eigenem Taktgeber bei 165 kHz bspw. für die Spitzenwerterfassung hinter den analogen Bandpässen. Dein Argument wirft aber dennoch eine wichtige Frage auf. Wie könnte man das, sagen wir mal, 1-2 ms anliegende Signal pro Kanal speichern, um es dann den Voltage to PWM-Convertern zuzuführen? RC-Kombination klingt brauchbar, wobei da die Frage ist, ob sie die Ladung a) schnell genug aufbauen und b) lange genug halten, um eine korrekte Übertragung an die PWM-Bausteine sicherzustellen. Gäbe es Alternativen dazu, ggf. auch ICs, die analoge Spannungspegel einfach halten und kontinuierlich "erneuern". Quasi ähnlich wie digitaler RAM-Arbeitsspeicher in Computern?
Moin, Das ist wohl so ein Problem aus der Abteilung: Eigentlich will ich einen 100m Sprint hinlegen, aber aus Gruenden bind' ich meine Beine zusammen, tu' mir einen Sack ueber'n Kopp und trink vor dem Start 2l Sprudel auf Ex. Aber was sag ich: Ich hab's genau umgekehrt gemacht: Sowas ohne MSGEQ7, nur mit µC - ist auch nicht besser ;-) scnr, WK
Axel S. schrieb: > AMDFreak2006 schrieb: >> >> Auf die Idee mit nem Zähler für die Adressansteuerung muss man ja erst >> mal kommen. > > Du meinst also wenn ich dir eine Backbox zeigte, die Ausgänge für 8 LED > und zwei Eingänge hat und bei der ein Impuls an dem einen Eingang eine > LED weiter schaltet und bei einen Impuls am anderen Eingang wieder auf > die erste LED schaltet ... dann würdest du keinen Zähler darin vermuten? > > Bist du dir sicher bei der Wahl deines Hobbies? Ja, ich mache das schon seit knapp 10 Jahren. Allerdings eben auf Microcontrollerseite per Programmierung. Auf die Idee einen dedizierten Zähler-IC zum binären Hochzählen der Adresse zu verwenden, bin ich halt schlichtweg nicht gekommen, auch wenn das die naheliegendste Lösung ist. Manchmal steht man halt aufm Schlauch und sieht Komplexität, wo gar keine ist. Warum so unfreundlich? Wenn dich das Thema nervt oder dir zu einfach erscheint, dann antworte doch schlichtweg nicht und mache was Sinnvolleres mit deiner Zeit...
Dergute W. schrieb: > Moin, > > Das ist wohl so ein Problem aus der Abteilung: Eigentlich will ich einen > 100m Sprint hinlegen, aber aus Gruenden bind' ich meine Beine zusammen, > tu' mir einen Sack ueber'n Kopp und trink vor dem Start 2l Sprudel auf > Ex. > > Aber was sag ich: Ich hab's genau umgekehrt gemacht: Sowas ohne MSGEQ7, > nur mit µC - ist auch nicht besser ;-) > > scnr, > WK Hab ich auch alles schon hinter mir. Mit auf dem Microcontroller laufender FFT und dann auf der Basis Lichteffekte realisiert. Wie gesagt, aufm Microcontroller alles kein Problem. Macht doch aber auch mal Spaß, Probleme ohne unseren multifunktionellen Helfer zu lösen.
Wozu PWM? Du packst das Signal nach dem Demultiplexer auf je einen RC Filter oder einen einfachen Sample&Hold mit Opamp. Mit dem Analogwert dann eine Stromsenke steuern (Transistor+Widerstand)
Andreas M. schrieb: > Wozu PWM? Du packst das Signal nach dem Demultiplexer auf je einen RC > Filter oder einen einfachen Sample&Hold mit Opamp. Mit dem Analogwert > dann eine Stromsenke steuern (Transistor+Widerstand) Danke für den Tipp. Sample & Hold per Opamp klingt nach einer guten Lösung. Zu deiner Frage: PWM wäre nicht zwingend erforderlich, ich möchte aber die Möglichkeit haben Lasten per MOSFETs anzusteuern und die sollen natürlich möglichst effizient im Schaltbetrieb arbeiten und nicht abhängig von der analogen Spannung nur halb aufgesteuert werden. Daher ist die Umwandlung zu PWM in diesem Fall erforderlich.
:
Bearbeitet durch User
AMDFreak2006 schrieb: > Macht doch aber auch > mal Spaß, Probleme ohne unseren multifunktionellen Helfer zu lösen. Da kann ich nur die grosse deutsche Philosophin Narumol Unterhuber zitieren: "Ja, wenn du das schaffst" Gruss WK
AMDFreak2006 schrieb: > Macht doch aber auch > mal Spaß, Probleme ohne unseren multifunktionellen Helfer zu lösen. Nicht wirklich. Wird schlechter, aufwendiger und teurer. Was soll so ein Ergebnis dann noch an Spaß bereiten? Insbesondere unter dem Aspekt, dass man auch noch Hilfe "einkaufen" musste, um zu dieser Lösung zu kommen, sie also nichtmal wirklich selbst gefunden hat. Wer an sowas dann Spaß hat, ist irgendwie wohl doch etwas abartig...
c-hater schrieb: > Nicht wirklich. Wird schlechter, aufwendiger und teurer. Was soll so ein > Ergebnis dann noch an Spaß bereiten? > > Insbesondere unter dem Aspekt, dass man auch noch Hilfe "einkaufen" > musste, um zu dieser Lösung zu kommen, sie also nichtmal wirklich selbst > gefunden hat. > > Wer an sowas dann Spaß hat, ist irgendwie wohl doch etwas abartig... Sehe ich anders. 20 Zeilen Code für die Ansteuerung des MSGEQ7 um das mitm Microcontroller und ein paar Libraries zu lösen führt zwar zum schnellsten und leichtesten Ergebnis, Aufwand hat man dann aber keinerlei reingesteckt. Und auch die Libraries, wenn man sie nicht selbst programmiert, hat ja schon jemand geschrieben. Auch da wurde einem dann schon 99% der Implementierungsarbeit und Lösungsfindung zur Ansteuerung eines externen ICs oder zur Lösung einer x-beliebigen anderen Aufgabe abgenommen. Wo liegt dann da der Spaß? Es geht ja hier nicht um ein Projekt das wirtschaftlich tragen muss, sondern schlichtweg um eine Machbarkeitsstudie. Dass man sich ab und zu mal Hilfe einholen muss, ist im Programmieralltag auch nicht anders. Ist eine Programmierlösung dann für dich auch nur dann erfüllend, wenn du sie zu 100% selbst gefunden hast? Dann bräuchten wir ja dieses und ähnliche Foren nicht mehr, weil es dann ja keinerlei Mehrwert bedeuten würde sich gegenseitig zu helfen. Der Weg ist das Ziel und der Lerneffekt bei diesem Hardware-Only-Projekt somit bedeutend höher und wertvoller als das mit nem Microcontroller zu machen, nur weil das ja die einfachere und zeitsparendere Lösung ist. Diese einfache Lösung habe ich wohlgemerkt bereits umgesetzt. Mir gings darum mal über den Tellerrand hinauszuschauen. Wäre mir neu, dass das Ziel bei einem Hobby ist Zeit zu sparen. Wenns dir nur um das Ergebnis geht, kannst du auch ne fertige Platine mit dem Chip und fertigem Microcontrollerprogramm kaufen. Geht bedeutend schneller und macht aus deiner Sicht dann ja sehr viel Spaß. Stelle mir dich gerade bei anderen Projekten vor. Oldtimer-Restaurierung oder ähnliches. Dann wäre deine erste Frage vermutlich warum baut man nicht einfach LEDs ein statt der originalen Gaslaterne. Letztere ist ja schließlich "schlechter, aufwendiger und teurer".
:
Bearbeitet durch User
Wenn du nur die Bänder mit LEDs anzeigen willst, musst du eigentlich nicht demultiplexen. Lass die LEDs einfach nacheinander den Pegel am OUT anzeigen. Wenn das genügend schnell passiert sieht das Auge alle LEDs zusammen. Eine möglich Schaltung ist im Anhang. Die Spannung am OUT wird vom Transistor in einen Strom umgesetzt, der die gerade selektierte LED in entsprechender Stärke leuchten lässt. Da ich den Spannungsbereich am OUT nicht kenne, muss dieser Teil vielleicht etwas angepasst werden, und vor allem müssen die richtigen Widerstände gefunden werden. Der CD4017 selektiert einfach alle LEDs nacheinander, nach dem er zuerst den MSGEQ7 resetet. Der nötige Oszillator kann mit einem Schmitt-Trigger-Inverter realisiert werden. Andi
Edit: D sollte eigentlich OUT heissen.
Andi schrieb: > Wenn du nur die Bänder mit LEDs anzeigen willst, musst du eigentlich > nicht demultiplexen. Lass die LEDs einfach nacheinander den Pegel am OUT > anzeigen. Wenn das genügend schnell passiert sieht das Auge alle LEDs > zusammen. > > Eine möglich Schaltung ist im Anhang. Die Spannung am OUT wird vom > Transistor in einen Strom umgesetzt, der die gerade selektierte LED in > entsprechender Stärke leuchten lässt. Da ich den Spannungsbereich am OUT > nicht kenne, muss dieser Teil vielleicht etwas angepasst werden, und vor > allem müssen die richtigen Widerstände gefunden werden. > Der CD4017 selektiert einfach alle LEDs nacheinander, nach dem er zuerst > den MSGEQ7 resetet. Der nötige Oszillator kann mit einem > Schmitt-Trigger-Inverter realisiert werden. > > Andi Vielen Dank für die wertvolle Idee! Zwar nicht PWM-tauglich, aber funktionieren würde die Schaltung natürlich allemal. Ich hatte es jetzt simulativ erst mal so gelöst wie zuvor vorgeschlagen, sprich Binärcounter und Demultiplexer dahinter. Funktioniert soweit, ich habe jedoch 3 weitere Fragen: 1.) Die vorgeschlagene Sample & Hold Schaltung mit OPamps stellt mich noch vor Herausforderungen. Das Samplen soll ja nur erfolgen, wenn gerade aktiv ein Signal vom Demultiplexer ausgegeben wurde, nicht wenn dieses auf GND liegt (während der restlichen 6 abgetasteten Audiobänder). Um bspw. nur bei jedem 8. Takt zu samplen, wäre meine Idee hier wieder nen Counter oder alternativ nen Dekadenzähler einzusetzen, dessen "Überlauf-Pin" dann als Taktgeber für die Sample & Hold-Schaltung dient. Bessere Ideen? 2.) Bei der Originalschaltung gemäß Datenblatt vom MSGEQ7 (siehe erster Post) muss der negierte asynchrone Set-Eingang des Flipflops am Anfang einmalig per Taster für beliebige Zeit auf LOW-Pegel gezogen werden und dann wieder HIGH-Pegel annehmen. Da ich möchte dass die Schaltung automatisch startet, war meine Idee schlichtweg ein RC-Glied mit nachgeschaltetem Schmitt-Trigger anstelle des Tasters zu verwenden. Das funktioniert auch einwandfrei aber gibt es eine einfachere oder bessere Möglichkeit eine "einmalige Aktion" (wie besagter zeitverzögerter Wechsel von HIGH zu LOW zu HIGH-Pegel) schaltungstechnisch umzusetzen? 3.) Deine Schaltung mit dem CD4017 habe ich ebenfalls mal kurz simuliert. Funktioniert soweit. Allerdings ist der Reset == HIGH Pegel, der vom Timer kommt, natürlich a) nur kurz anstehend, bevor der Baustein neu mit dem Zählen anfängt und b) natürlich hochgradig abhängig von der Taktfrequenz. Der MSGEQ7 verlangt aber eine bestimmte Mindestzeit, wie lange der Reset-Pin gesetzt werden muss, um sauber durch den Reset zu gehen. Wie wäre es also möglich die Zeit die der Reset Pin HIGH gesetzt wird, zu erhöhen (in deinem Bild Pin Q8)? - Ein RC-Glied hilft hier nicht, weil der Kondensator in dem 1 Clockcycle den der HIGH-Pegel anliegt, nicht genügend aufgeladen wird, um nennenswert beitragen zu können. - Man könnte natürlich ein Flipflop nehmen, den Wert asynchron setzen, wenn Q7 HIGH wird und parallel einen weiteren Dekadenzähler oder Counter mit ENABLE-Pin nutzen, der dann anfängt zu zählen und beim (selbst definierten) Überlauf nen entsprechenden Pegel auf den Reseteingang vom Flipflop legt. Kurz oder anders gefragt: Wie erzeuge ich ein wiederkehrendes Schaltereignis mit selbst definierbarer HIGH oder alternativ LOW-Pegel-Zeit.
:
Bearbeitet durch User
AMDFreak2006 schrieb: > 20 Zeilen Code für die Ansteuerung des MSGEQ7 um das mitm > Microcontroller und ein paar Libraries zu lösen führt zwar zum > schnellsten und leichtesten Ergebnis, Aufwand hat man dann aber > keinerlei reingesteckt. Das stimmt. Deswegen habe ich eine reine µC-Lösung geschaffen, die als Filter besser ist als der MSGEQ7. Und nebenbei auch noch eine bunte LED-Matrix ansteuern kann. Und wo das Erscheinungsbild dieser LED-Ausgabe konfigurierbar ist... Und ich kann dir versichern: da habe ich einigen Aufwand reingesteckt. Langeweile machte es möglich und ließ es irgendwie sinnvoll erscheinen. Der eigentliche Antrieb war aber der Nachweis der Machbarkeit. Guckst du: Beitrag "Audio Spektrum Analyzer mit ATtiny85"
AMDFreak schrieb: > 1.) Um bspw. nur bei jedem 8. Takt zu samplen, wäre meine Idee > hier wieder nen Counter oder alternativ nen Dekadenzähler einzusetzen, > dessen "Überlauf-Pin" dann als Taktgeber für die Sample & Hold-Schaltung > dient. Bessere Ideen? > > 2.) Gibt es > eine einfachere oder bessere Möglichkeit eine "einmalige Aktion" (wie > besagter zeitverzögerter Wechsel von HIGH zu LOW zu HIGH-Pegel) > schaltungstechnisch umzusetzen? > > 3.) Wie wäre es also möglich die Zeit die der Reset Pin HIGH gesetzt wird, > zu erhöhen (in deinem Bild Pin Q8)? > Kurz oder anders gefragt: Wie erzeuge ich ein wiederkehrendes > Schaltereignis mit selbst definierbarer HIGH oder alternativ > LOW-Pegel-Zeit. Hat auf meine 3 gestellten Detailfragen noch jemand eine Antwort parat?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.