Forum: Mikrocontroller und Digitale Elektronik ATmega128 Akustische Drehzahlmessung & Schallpegelmessung


von Richard P. (richard_)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

nachdem ich nun seit ein paar Wochen das Forum & Google durchforste und 
Lösungen suche, leider aber nicht die passende Lösung finde bzw. 
immernoch Fragen offen sind, hoffe ich jetzt hier auf Hilfe / Tipps oder 
Lösungen.

Da ich bisher kaum Erfahrungen mit uC habe und auch noch keine 
wirklichen Erfahrungen mit der Schaltungsentwicklung, habt bitte 
Nachsicht, wenn ich mal eine blöde Frage stelle. Und vorweg, ich weiß 
dass es Google gibt – habe ich auch rege genutzt – das AVR-Tutorial habe 
ich mir angesehn, sowie viele Beiträge mit ähnlicher Problemstellung 
durchgelesen..

Zur Problemstellung / Hintergrundinformationen:

Wie im Betreff bereits geschrieben, geht es um eine akustische 
Drehzahlmessung sowie eine Schallpegelmessung.
Hintergrund ist, dass ich von einem Modell-Heli, aus 1-3m Entfernung, 
die Drehzahl sowie die Lautstärke ermitteln soll.

Zur Verwendung soll ein ATmega128 (AVR-MT128 Development Board) genutzt 
werden oder ein ATmega2560. Auf eine weitere Platine soll dann 
entsprechend ein Elektret-Mikro (MCE100 oder MCE4000 oder was sinnvoller 
ist) mit Anpassungschaltung aufgebaut werden, also Verstärkung, 
Filterung und was sonst noch benötigt wird. Das Ganze soll dann über den 
ADC des uC ausgewertet werden bei VREF 5V mit 10Bit Auflösung.

Schallpegelmessung:

Die Schallpegelmessung muss nicht übermäßig genau sein – ich weiß das 
ist keine klare Aussage – ich dachte an eine Abweichung von  + - 1dB? 
Auch wenn für eine vernünftige Schallpegelmessung ein Bewertungsfilter 
implementiert werden sollte, dachte ich fürs erste daran, das 
Einwert-Messverfahren zu nutzen, also schlicht gesagt will ich nur den 
Gesamtpegel wo man grad steht.

Der erwartete Schallpegel liegt im Bereich zwischen 70dB – 85dB, also 
habe an einen Messbereich von 54 – 100dB gedacht.  Das MCE100 liefert 
5,6mV / Pa (50Hz – 10kHz ; S/N >34dB), das MCE4000 liefert 5,0mV/Pa ( 
20Hz – 20kHz; S/N >58dB), die Versorgungsspannung soll bei 5V DC liegen. 
Ich tendiere zu dem MCE4000.

Akustische Drehzahlmessung:

Über das Mic soll also auch die Drehzahl von einem Modell-Heli ermittelt 
werden. Es gibt zwar brauchbare Handy-Apps (HeliTach etc.), aber ich 
möchte eine Realisierung ohne FFT.

Meine Überlegung zielt darauf ab die Schallpegeländerung zwischen den 
Rotorblättern zu nutzen. Also im Grunde Impulse zu zählen und 
entsprechend der Rotorfrequenz und der Blattanzahl die Drehzahl zu 
berechnen.
Als Bsp.: Ein 2-Blatt Rotor dreht mit 4000 U/min = 2x66,67Hz = 133,33 
Impulse/Sek daraus ergibt sich alle 7,5ms ein Impuls.
Ich rechne mit einer max Frequenz von 300Hz und würde mit fs = 3kHz 
abtasten, so dass bei 1 Sek Messfenster mit 3000 Werten zu rechnen ist, 
also alle 3µs ein Wert. Daraus müssten bei 7,5ms Peak-to-Peak 2500 Werte 
ermittelt werden können und entsprechend  die 4000 U/min.
Zumindest wenn ich da keinen grundlegenden Denkfehler habe.

Für eine sinnvolle Messung, muss allerdings die Motorfrequenz bzw. der 
Schallpegel vom Motor soweit gefiltert werden, dass möglichst nur der 
Rotorpegel übrig bleibt.

Komme ich nun zu den eigentlichen Fragen:

Für die Schallpegelmessung müsste die geringe Spannung vom Mic so 
verstärkt werden, dass die 5V des ADCs möglichst voll ausgenutzt werden.

Wie am besten?

- Über einen Rail-to-Rail OP z.B. TS912 mit einer geringen Verstärkung?
- Einen True-RMS IC z.B.  AD536A
- Oder einen LogAmp wie den AD8310 ?

Man kann zwar auch direkt über den internen Gain des AVRs gehen, dann 
geht aber mit 8 Bit die Auflösung runter, was ja generell ok ist wenn es 
grundsätzlich ausreichen würde.

Mein Problem  ist jetzt, dass ich nicht genau weiß wie ich den AD536 
bzw. AD8310 an den uC anschließe bzw. was ich noch beachten muss 
bezüglich Filterung.

Meine Überlegung war, dass das logarithmierte Signal für die 
Schallpegelmessung direkt in einen ADC (1) geht – um auch den 
Motorschallpegel zu messen – und das gleiche Signal mit einem TP-Filter 
oder Bandpassfilter in einen zweiten ADC (2) für die Drehzahlmessung 
geht.

Im Anhang ist die Schaltung wie ich sie mir vorstelle,  zwar etwas 
stümperhaft aber vielleicht wird trotzdem klar was ich meine.  – Ja, ich 
sollte mich dringend mit Eagle beschäftigen -

Generell mal die Frage ob ich auf dem richtigen Weg bin, oder meine 
Überlegungen völlig falsch sind?!
An was sollte ich noch denken oder welche Möglichkeiten gibt es noch?

Es ist zwar doch recht viel Text geworden, aber ich hoffe dass es doch 
den ein oder andren gibt, der sich bis hier durchgearbeitet hat… dafür 
schonmal vielen Dank!

MfG

von Axel D. (axel_jeromin) Benutzerseite


Lesenswert?

Hallo Richard,
ich vermute mal, dass die FFT mit dem Mega128 das Ziel der Aufgabe ist.

Micro mit einer einfachen Verstärkerschaltung an den Heli halten und mal 
ein Scope benutzen und den Screenshot posten.

Dann sehen wir weiter.

Axel

von holger (Gast)


Lesenswert?

>Hintergrund ist, dass ich von einem Modell-Heli, aus 1-3m Entfernung,
>die Drehzahl sowie die Lautstärke ermitteln soll.

Wo? Drinnen oder draussen?

>Die Schallpegelmessung muss nicht übermäßig genau sein – ich weiß das
>ist keine klare Aussage – ich dachte an eine Abweichung von  + - 1dB?

Das schaffen nicht mal professionelle Schallpegelmesser.
Jede Scheiss Windboe versaut dir den Messwert.
Genauso wie Autos die vorbeifahren, oder Deppen die
während der Messung klugscheissen (nicht die Klappe halten).

Vergiss den Quatsch.

von Richard P. (richard_)


Lesenswert?

Hallo Axel,

> ich vermute mal, dass die FFT mit dem Mega128 das Ziel der Aufgabe ist.

Ich würde möglichst an der FFT vorbei kommen, daher die Überlegung mit 
dem Zählen der Peaks die von den Rotorblättern verursacht werden.

> Micro mit einer einfachen Verstärkerschaltung an den Heli halten und mal
> ein Scope benutzen und den Screenshot posten.

Ist in Planung, muss mir noch ein Scope besorgen


@ Holger

> Wo? Drinnen oder draussen?

Generell draußen, also Modellflugplatz .. also sozusagen "Freifeld"

> Das schaffen nicht mal professionelle Schallpegelmesser.
> Jede Scheiss Windboe versaut dir den Messwert.
> Genauso wie Autos die vorbeifahren, oder Deppen die
> während der Messung klugscheissen

Das ist mir klar, den Anspruch habe ich auch nicht, ich möchte sozusagen 
ein "Schätzeisen" das zumindest einigermaßen brauchbare Werte ausspuckt. 
Es soll nur einen groben Richtwert geben ob das Modell viel zu laut ist. 
Autos werden nicht das Problem sein und jemand der rein redet wird auch 
nicht relevant sein für meinen Fall.
Das Problem mit dem Wind ist schon richtig, aber im Grunde erstmal egal, 
es geht mir momentan um die generelle Umsetzung.

> Vergiss den Quatsch.

Nope, leider nicht möglich. Muss das Projekt umsetzen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Das klingt nach einem Aufwand, der an der Sache vorbeigeht. Wenn die 
Aufgabenstellung die Drehzahlmessung ist, dann denke besser über die 
Verwendung einer Reflexlichtschranke nach.
Wenn es mit Schall gehen muss, dann guten Appetit - der Mega ist einfach 
zu schwach, um aus dem ganzen Schallgedöns den Propeller rauszuraten.
Eine ( nur angedachte ) Aternative wäre, den Propeller mit Ultraschall 
zu berieseln und den reflektierten Ultraschall zu detektieren.

von Richard P. (richard_)


Lesenswert?

Eine optische Lösung kommt leider auch nicht in Frage, es muss akustisch 
sein.

Es könnte auch der ATmega2560 werden, aber da tut sich ja nicht so viel, 
den mega128 hätte ich zumindest da als Entwicklungsboard und müsste die 
Schaltung nicht auch noch umsetzen, also LCD, Taster usw.

> der Mega ist einfach
> zu schwach, um aus dem ganzen Schallgedöns den Propeller rauszuraten.

Aber müsste es denn nicht möglich sein, dass ich die höheren Frequenzen 
vom Motor so rausfilter, dass ich brauchbare Werte im unteren 
Frequenzbereich bekomme? Wenn ich mit einem Tiefpass bei 300Hz 
"abschneide" und den Rest zur Messung nehme, also 20 Hz bis ca.300Hz?

Die Abtastung mit 3kHz sollte dann meine ich doch kein Problem 
darstellen oder? Also von der Performance..

> Aternative wäre, den Propeller mit Ultraschall
> zu berieseln und den reflektierten Ultraschall zu detektieren.

Das hört sich interessant an, kannst du das noch etwas genauer erklären?
Also Ultraschallsignalgeber und dann? Habe mich mit der Thematik noch 
garnicht beschäftigt.

von Rolf H. (flash01)


Lesenswert?

Da ich bisher kaum Erfahrungen mit uC habe und auch noch keine
wirklichen Erfahrungen mit der Schaltungsentwicklung, habt bitte
Nachsicht, wenn ich mal eine blöde Frage stelle. Und vorweg, ich weiß
dass es Google gibt – habe ich auch rege genutzt – das AVR-Tutorial habe
ich mir angesehn, sowie viele Beiträge mit ähnlicher Problemstellung
durchgelesen..

das schrieb Richard am Anfang!

oh weia, da hat er sich ja was vorgenommen

Aber interessieren würde mich als alter Hubifrick schon,
was dabei rauskommt.

Grüße

Rolf

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Richard P. schrieb:
> Aber müsste es denn nicht möglich sein, dass ich die höheren Frequenzen
> vom Motor so rausfilter, dass ich brauchbare Werte im unteren
> Frequenzbereich bekomme? Wenn ich mit einem Tiefpass bei 300Hz
> "abschneide" und den Rest zur Messung nehme, also 20 Hz bis ca.300Hz?

Damit begrenzt du aber von vorneherein den möglichen Messbereich und es 
hilft immer noch nicht gegen ploppen und andere Windeffekte.

Richard P. schrieb:
> Die Abtastung mit 3kHz sollte dann meine ich doch kein Problem
> darstellen oder? Also von der Performance..

Die Abtastung ist das geringste Problem. Die FFT mit genügend Punkten um 
tatsächlich die Grundfrequenz herauszufinden, ist aufwändig und 
beschäftigt die Kiste - von der Kurvendiskussion im Anschluss mal 
abgesehn. Du möchtest ja auch ein brauchbares Messintervall und nicht 
alle Minute einen Wert. Übrigens drehen Modellmotore gerne mal mit 10000 
U/min, also rund 160 Hz. Ein DSP macht das beim Däumchen drehen, aber 
ein ATMega ist dafür einfach nicht gedacht.

Richard P. schrieb:
>> Aternative wäre, den Propeller mit Ultraschall
>> zu berieseln und den reflektierten Ultraschall zu detektieren.
>
> Das hört sich interessant an, kannst du das noch etwas genauer erklären?

Ein US Wandler strahlt den Propeller an und ein 2ter US Wandler mit 
Filterverstärker holt sich das Nutzsignal wieder zurück. Beim 
mechanischen Aufbau wäre dran zu denken, das der Empfänger nicht direkt 
den Sender 'hört'. Da Ultraschallsignale im Freifeld aber nicht so 
leicht vorkommen, wäre es relativ einfach, das Nutzsignal rauszufiltern 
und auszuwerten.
Unsere Freunde von der Roboterfraktion benutzen US gerne, um 
Entfernungen zu messen und haben da alle möglichen Schaltungen im Netz, 
die mit Sicherheit brauchbar abzuwandeln wären.

Richard P. schrieb:
> es muss akustisch
> sein.

Warum eigentlich?

von Richard P. (richard_)


Lesenswert?

> oh weia, da hat er sich ja was vorgenommen

ja..aber nicht ganz freiwillig..und welchen Umfang das annimmt wusste 
ich vorher nicht :-/

wenn mans genau nimmt ist das nur ein Teil vom Gesamtprojekt, insgesamt 
sinds 10 Funktionen die zu realisieren sind..daher hoffe ich auch auf 
etwas Hilfe :)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Richard P. schrieb:
> Zur Verwendung soll ein ATmega128 (AVR-MT128 Development Board) genutzt
> werden oder ein ATmega2560.

Da sehe ich dann aber echte Probleme. Muss dieser MC verwendet werden? 
Ein DSP ist da zu überlegen und auch von den Anforderungen wirklich 
besser geeignet. Schallpegelmessung in dBA oder anderen genormten Kurven 
ist kein Picknick.

von Richard P. (richard_)


Lesenswert?

> Damit begrenzt du aber von vorneherein den möglichen Messbereich und es
> hilft immer noch nicht gegen ploppen und andere Windeffekte.

mh, gibts da Möglichkeiten sowas im Vorfeld einzugrenzen bzw. zu 
reduzieren?

> Die Abtastung ist das geringste Problem. Die FFT mit genügend Punkten um
> tatsächlich die Grundfrequenz herauszufinden, ist aufwändig und
> beschäftigt die Kiste - von der Kurvendiskussion im Anschluss mal
> abgesehn. Du möchtest ja auch ein brauchbares Messintervall und nicht
> alle Minute einen Wert.

Meine Hoffnung bestand darin ohne FFT auszukommen, aber befürchte immer 
mehr, dass es anders schwierig wird..also die Programmierung einer FFT 
stelle ich mir allerdings auch nicht so spassig vor..

> Übrigens drehen Modellmotore gerne mal mit 10000
> U/min, also rund 160 Hz.

Jein, in diesem Fall wird die max. Drehzahl mit 4000 U/min angenommen da 
es sich um Modell-Helikopter handelt, die liegen im Bereich 1000 - 4000 
U/min für den Rotor, der Motor dreht mit einer deutlich höheren Frequenz 
das ist richtig, den will ich ja auch rausfiltern.

> Ein US Wandler strahlt den Propeller an und ein 2ter US Wandler mit
> Filterverstärker holt sich das Nutzsignal wieder zurück. Beim
> mechanischen Aufbau wäre dran zu denken, das der Empfänger nicht direkt
> den Sender 'hört'. Da Ultraschallsignale im Freifeld aber nicht so
> leicht vorkommen, wäre es relativ einfach, das Nutzsignal rauszufiltern
> und auszuwerten.
> Unsere Freunde von der Roboterfraktion benutzen US gerne, um
> Entfernungen zu messen und haben da alle möglichen Schaltungen im Netz,
> die mit Sicherheit brauchbar abzuwandeln wären.

danke für die Info, werde in die Richtung auch mal meine Fühler 
ausstrecken, vlt findet sich so eine Alternative .. wobei die Vorgabe 
schon so ist, das Mikro zu nehmen um Komponenten und Platz zu sparen.

> Richard P. schrieb:
>> es muss akustisch
>> sein.
>
> Warum eigentlich?

Um ein ordentliches Flugverhalten beim Heli zu bekommen, muss das 
Verhältnis zwischen Pitch der Rotorblätter und der Drehzahl stimmen, 
also misst man vor dem Flug die Drehzahl zur Optimierung. Da dies bei 
der Drehzahl kurz vor dem Abheben geschehen muss, ist es nicht 
ungefährlich mit z.B. optischen Systemen zu arbeiten. Gibt unschöne 
Verletzungen wenn man mit der Hand in den Rotor kommt. Daher die 
akustische Lösung.

von frido2001 (Gast)


Lesenswert?

Hallo,

wenn du in der Nähe des Rotors bzw. am "Gehäuse" des Helis 
Beschleunigung misst, kannst du auch so die Drehzahl bestimmen.
Die Rotorgeräusche, die Abrissgeräusche durch die Blätter sind 
breitbandig, Wind und Störgeräusche machen die Sache sehr sehr 
komplitziert.
Selbst wenn du blos bis 300Hz misst kannst du nicht wissen, ob dies 
wirklich von deiner dominierenden Quelle kommt, außer du gehst nah ran.
An der FFT wirst du allerdings sicherlich nicht vorbeikommen, 1Hz 
Auflösung würde schätzungsweise ausreichen.
Achja,selbst wenn du bis 300Hz misst und irgendwelche Spitzen auswertest 
gibt es ja da schon Oberwellen...

Also viel Erfolg;)

von Richard P. (richard_)


Lesenswert?

Matthias Sch. schrieb:
> Richard P. schrieb:
>> Zur Verwendung soll ein ATmega128 (AVR-MT128 Development Board) genutzt
>> werden oder ein ATmega2560.
>
> Da sehe ich dann aber echte Probleme. Muss dieser MC verwendet werden?
> Ein DSP ist da zu überlegen und auch von den Anforderungen wirklich
> besser geeignet. Schallpegelmessung in dBA oder anderen genormten Kurven
> ist kein Picknick.

Die Schallpegelmessung muss nicht in dBA sein, wäre natürlich schön, 
aber nicht zwingend .. es reicht ein grober Richtwert um zu sehen ob die 
Lautstärke deutlich zu hoch ist oder nicht, für Genehmigungen wird eh 
nochmal mit professionellem Equipment gemessen.

von Helmut L. (helmi1)


Lesenswert?

Richard P. schrieb:
> Meine Hoffnung bestand darin ohne FFT auszukommen, aber befürchte immer
> mehr, dass es anders schwierig wird..also die Programmierung einer FFT
> stelle ich mir allerdings auch nicht so spassig vor..

Dafuer gibt es im I-Net jede Menge Sourcecode. Da brauchst du fast nix 
selber machen.

von Richard P. (richard_)


Lesenswert?

frido2001 schrieb:
> Hallo,
>
> wenn du in der Nähe des Rotors bzw. am "Gehäuse" des Helis
> Beschleunigung misst, kannst du auch so die Drehzahl bestimmen.

Wie soll das gehen?

> Die Rotorgeräusche, die Abrissgeräusche durch die Blätter sind
> breitbandig, Wind und Störgeräusche machen die Sache sehr sehr
> komplitziert.
> Selbst wenn du blos bis 300Hz misst kannst du nicht wissen, ob dies
> wirklich von deiner dominierenden Quelle kommt, außer du gehst nah ran.

Gedacht ist mit ca. 1m Abstand zu messen, sicherlich wären 2m 
besser..aber naja..hört sich ja eh so an, als wenns kaum geht..

> An der FFT wirst du allerdings sicherlich nicht vorbeikommen, 1Hz
> Auflösung würde schätzungsweise ausreichen.
> Achja,selbst wenn du bis 300Hz misst und irgendwelche Spitzen auswertest
> gibt es ja da schon Oberwellen...

Das ist richtig, aber über eine Mittelung der Messung sollte es trotzdem 
irgendwie gehen..wenn dann die anderen Schwierigkeiten gelöst sind..mh..

> Also viel Erfolg;)

werde ich offensichtlich brauchen..ein Wunder wäre auch nicht schlecht..

von Richard P. (richard_)


Lesenswert?

Helmut Lenzen schrieb:
> Richard P. schrieb:
>> Meine Hoffnung bestand darin ohne FFT auszukommen, aber befürchte immer
>> mehr, dass es anders schwierig wird..also die Programmierung einer FFT
>> stelle ich mir allerdings auch nicht so spassig vor..
>
> Dafuer gibt es im I-Net jede Menge Sourcecode. Da brauchst du fast nix
> selber machen.

Habe im Forum zwar auch schon danach gesucht und das ein oder andre 
gelesen, aber nicht weiter verfolgt..werde ich mir wohl besser mal 
genauer anschauen, wenns ohne FFT nicht geht ..



Aber zu einer anderen Frage, wie würde ich denn prinzipiell so einen 
LogAmp anschließen? Also in Kombi mit dem Mikro und dem uC?

von Helmut L. (helmi1)


Lesenswert?

Richard P. schrieb:
> werde ich offensichtlich brauchen..ein Wunder wäre auch nicht schlecht..

Oder nur einen Laptop mit Mikrofon.

Zum testen kannst du erstmal einen Laptop nehmen, ein Mikro anschliessen 
und mittels Soundkarte mal das Signal aufnehmen.

Im Internet gibt es genug Programm die dir daraus dann eine FFT machen.
Dann kannst du schon mal sehen ob es ueberhaupt moeglich ist.

von Richard P. (richard_)


Lesenswert?

Helmut Lenzen schrieb:
> Richard P. schrieb:
>> werde ich offensichtlich brauchen..ein Wunder wäre auch nicht schlecht..
>
> Oder nur einen Laptop mit Mikrofon.
>
> Zum testen kannst du erstmal einen Laptop nehmen, ein Mikro anschliessen
> und mittels Soundkarte mal das Signal aufnehmen.
>
> Im Internet gibt es genug Programm die dir daraus dann eine FFT machen.
> Dann kannst du schon mal sehen ob es ueberhaupt moeglich ist.

Ja das ist eine gute Idee - habe mir das Prog "SignalAnalyzer" und 
"audacity" mal geladen, mal schaun wie das so läuft..

Das Problem ist, dass ich momentan kein Heli zur Verfügung habe, also 
mir den auch noch besorgen muss - so seltsam das auch klingt, ich weiß.. 
vielleicht lässt sich aus youtube etwas brauchbares herausziehen bis der 
Heli da ist..

von Helmut L. (helmi1)


Lesenswert?

Richard P. schrieb:
> Das Problem ist, dass ich momentan kein Heli zur Verfügung habe, also
> mir den auch noch besorgen muss -

In der Tat ein Problem da kann ich dir nicht helfen, habe nur einen 
Zimmerheli.

von Richard P. (richard_)


Lesenswert?

Helmut Lenzen schrieb:
> Richard P. schrieb:
>> Das Problem ist, dass ich momentan kein Heli zur Verfügung habe, also
>> mir den auch noch besorgen muss -
>
> In der Tat ein Problem da kann ich dir nicht helfen, habe nur einen
> Zimmerheli.

Ja so einen hab ich auch, aber der wird wohl nicht das gewünschte 
Ergebnis bringen..

Also heißt es erstmal warten auf einen Heli.. und die Umsetzung 
überdenken..


aber schonmal vielen Dank an alle die sich bisher die Zeit genommen 
haben!

von Richard P. (richard_)


Angehängte Dateien:

Lesenswert?

Hallo Forum,

nachdem nun ein paar Wochen vergangen sind und sich das ein oder andere 
geklärt hat, habe ich bezüglich der Schaltung noch gewisse 
Schwierigkeiten.

In den angehängten Dateien sieht man zum einen eine Aufnahme eines 
Modellhelis (Trex600), wo sich erkennen lässt, dass die gewünschten 
Frequenzen sich deutlich vom Rauschen / Motor abheben, so dass die 
akustische Drehzahlmessung theoretisch funktionieren sollte.

Um das Signal besser auswerten zu können soll mittels Filterung die 
Motorfrequenz gedämpft werden. Dem entsprechend habe ich eine Schaltung 
entworfen mit einem TP 8.Ord., nach Berechnung benötige ich zwar einen 
TP 45.Ordnung, aber ich soll in Hardware nur bis 8.Ord. dann per 
Software filtern, wie weiß ich allerdings noch nicht so richtig, aber 
das später.

Um die Schaltung mir zu verdeutlichen habe ich in LTspice die Schaltung 
mal simuliert mit verschiedenen Werten und Konfigurationen. Da ich 
allerdings mit den Werten für C&R auf kein brauchbares Ergebnis komme, 
oder einfach nicht sehe was ich falsch mache, hoffe ich auf euere Hilfe 
/ Anregungen.
Dass das Ganze mit FFT&DSP funktioniert weiß ich, aber Ziel ist die 
beschriebene Umsetzung.

Also Ziel ist es die Frequenzen ab 300Hz zu dämpfen und möglichst einen 
Übergangsbereich von 50Hz zu haben. Ist zwar mit 8. Ordn. kaum zu 
schaffen, aber wenn eine weitere digitale Filterung möglich ist, dann 
vielleicht ja schon? Zumindest komme ich hier nicht weiter wie die Werte 
am besten aussehen sollten, oder wie die Schaltung in der Konfiguration 
sinnvoll ist.
Das Mikro (WM61A) gibt 17,8mV/Pa raus -> angestrebte Bereich soll 71 dB 
(SPL) (1,246mV) bis 100dB (SPL) (35,6mV) sein und so verstärkt werden, 
dass bei 100dB 5V erreicht werden, also mit V=140 ergibt sich 4,984V.

Zur weiteren Verwendung kommen die R2R OPs: TS912, LMC6484 (bzw. 
MCP6001, LTC6088) zum Einsatz. Die Auswertung erfolgt über die ADC 
Eingänge vom AVR Atmega128.

Die Simulation der Schaltung in LTSpice ergibt jedoch ein nicht so 
schönes Ergebnis. Daher die Frage wo ich alles Fehler gemacht habe, ob 
die Simulation nicht richtig konfiguriert ist oder einfach die Schaltung 
bzw. Werte nicht brauchbar ?!

Ich hoffe es kann mir jemand helfen.

MfG

von Helmut L. (helmi1)


Lesenswert?

Richard P. schrieb:
> Also Ziel ist es die Frequenzen ab 300Hz zu dämpfen und möglichst einen
> Übergangsbereich von 50Hz zu haben. Ist zwar mit 8. Ordn. kaum zu
> schaffen, aber wenn eine weitere digitale Filterung möglich ist, dann
> vielleicht ja schon? Zumindest komme ich hier nicht weiter wie die Werte
> am besten aussehen sollten, oder wie die Schaltung in der Konfiguration
> sinnvoll ist.

Die Schaltung ist schon mal so auf dem ersten Blick OK. Die 1K vom 
Ausgang des OPs nach GND kannste weglassen.

Der Tiefpass vor dem ADC dient in erster  Linie dazu Frequenzanteile die 
oberhalb der halben Abtastfrequenz liegen vom ADC fernzuhalten. (Nyquist 
Kriterium). Da sollte ein 8 fach Tiefpass reichen. Um den zu 
vereinfachen kannst du die Abtastfrequenz weiter erhoehen so wird die 
Anforderung an den Tiefpass geringer. Deine eigentliche Bandbegernzung 
kannst du anschliessend mit einem digitalen Tiefpass (oder Bandpass) in 
Software machen.

Um den analogen Tiefpass auszurechnen gibt es bei Texas Instruments auf 
der Homepage ein Designtool (Filterpro) dazu. Damit kannst du die Werte 
fuer dein Sallen-Key Filter berechnen.

Richard P. schrieb:
> Das Mikro (WM61A) gibt 17,8mV/Pa raus -> angestrebte Bereich soll 71 dB
> (SPL) (1,246mV) bis 100dB (SPL) (35,6mV) sein und so verstärkt werden,
> dass bei 100dB 5V erreicht werden, also mit V=140 ergibt sich 4,984V.

Eventuell kann dein Kontroller die Verstaerkung automatisch so anpassen 
das der Eingangspegel fuer ihn stimmt. Umschaltung mit Analogschalter 
ala 4051 oder so.

von Richard P. (richard_)


Lesenswert?

Danke für die Antwort.

Die Anregung mit dem digitalen Filter ist gut, hätte ich eigentlich auch 
drauf kommen können und dann hätte ich mir wohl einiges an Arbeit und 
Zeit ersparen können.. aber gut, aus Fehlern lernt man ja auch..

Also dann werde ich die Schaltung nochmal überdenken und die 
Bandbegrenzung abspecken und den Rest per Software machen. Hab mir mal 
das Prog Filterlab geladen, scheint mir recht gut zu funktionieren.

Mit der Verstärkung über den AVR ist das Problem, dass die Auflösung 
drunter leidet, die 10Bit sollten schon sein denk ich. Aber ich versuchs 
erstmal mit dem OP und neuer Schaltung, vielleicht reicht das dann.

Also danke für die Hilfe!

MfG

von Helmut L. (helmi1)


Angehängte Dateien:

Lesenswert?

Richard P. schrieb:
> Mit der Verstärkung über den AVR ist das Problem, dass die Auflösung
> drunter leidet, die 10Bit sollten schon sein denk ich. Aber ich versuchs
> erstmal mit dem OP und neuer Schaltung, vielleicht reicht das dann.

Deine 10 Bit bleiben. Du schaust dir in deinem Programm an wie hoch ist 
dein pegel. Ist der zu klein dann schaltest du die Verstaerkung um. Ist 
er zu hoch dann Verstaerkung kleiner machen. So bleibst du immer 
einigermassen im Vollausgesteuerten Bereich des ADCs.

Siehe Beispiel wie ich das gemacht habe.

von Richard P. (richard_)


Lesenswert?

Das klingt ja ganz gut, aber stells mir bei der Auswertung etwas 
komplizierter vor? Wenn ich schwankende Pegel habe die dann entsprechend 
unterschiedlich verstärkt werden, so dass ich z.b. bei 5V bleibe, wobei 
man ja nur eine begrenzte zahl an Verstärkungsstufen hat und 
dementsprechend nicht konstant bei 5V bleibt?
Also das Prinzip ist mir klar, nur die Umsetzung noch nicht so ganz.

Ich werds mir aber nochmal genauer anschauen, vielleicht steh ich nur 
grad aufm Schlauch.

von Helmut L. (helmi1)


Lesenswert?

Naja , exakt 5V bekommst du nicht. Dann braeuchstest du ja keinen ADC 
sondern nur einen Festwert.
Es ist eine Frage wie exakt der Pegel eingehalten werden soll. Sind die 
Stufen z.B. um den Faktor 2 unterschiedlich schwankt sein Pegel dann z.B 
zwischen 2.5 und 5V.  So nun kann man ja auch die Stufenzahl erhoehen 
dann wird deine Differenz dann kleiner.

Oder einen uC direkt mit 12Bit ADC nehmen. Bestimmte ARM Typen haben 
auch 12Bit ADCs.

Softwaremaessig ist das:

1. Gleichrichten des Signales -> Absolutwert bilden
2. IIR Tiefpass zur Mittelwertbildung
3. Zwei Schwellwerte abfragen ob rauf oder runter geschaltet werden 
soll.

von Helmut L. (helmi1)


Lesenswert?

Richard P. schrieb:
> Das Mikro (WM61A) gibt 17,8mV/Pa raus -> angestrebte Bereich soll 71 dB
> (SPL) (1,246mV) bis 100dB (SPL) (35,6mV) sein und so verstärkt werden,

Das sind gerade mal 29dB Regelbereich.

Mit dem 4051 Schalter kann du 9 verschieden Verstaerkung einstellen.
Die 9 halt wenn alle Schalter offen sind.

29dB / 9 = 3.2dB also rund 3dB das ist gerade mal das Verhaeltnis 
1/1.414
Also gerade mal als Lautstaerkeaenderung hoerbar.
Das sollte fuer deine Anwendung ausreichen. Den Rest Pegelunterschied 
sollte deine Software abkoennen.

von holger (Gast)


Lesenswert?

>Die Auswertung erfolgt über die ADC
>Eingänge vom AVR Atmega128.

Schau dir mal an wie viel RAM der hat.
Deine FFT oben hat 16384 Punkte.
Mach die mal mit 512 Punkten.
Dann sieht das ganze schon etwas anders aus.
Alternativ könnte man noch externes RAM dran machen,
aber für eine 16384 Punkte FFT wird der arme ATMega128
ewig brauchen. Du brauchst dringend eine schnellere CPU
mit wesentlich mehr RAM.

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
Noch kein Account? Hier anmelden.