Forum: Mikrocontroller und Digitale Elektronik Adafruit MAX4466 Signalqualität


von Andreas H. (desi-aho)


Angehängte Dateien:

Lesenswert?

Hallo, https://www.adafruit.com/product/1063 an einem 
https://www.adafruit.com/product/2590, in einem gut schallgedämpften 
Raum getestet, zeigt einen regelmäßig auftretenden "Herzschlag" im 
Signal, siehe Bildschirmfoto. Mit drei verschiedenen Metro Mini und 
MAX4466 Kombinationen an zwei verschiedenen Laptops mit externem 5V 
Netzteil und nur via USB getestet - immer das gleiche Bild. Ist dieses 
low-end Teil einfach so, oder kann man da noch etwas verbessern? Danke!

von Harald K. (kirnbichler)


Lesenswert?

Zwar stehen an den Achsen irgendwelche Zahlen dran, aber ich nehme an, 
daß die x-Achse eine t-Achse sein soll, und dann wäre es schon 
hilfreich, wenn man Rückschlüsse auf die Frequenz nehmen könnte.

Was ist das, was da von 1 bis 256 geht? Stunden? Sekunden? 
Millisekunden? Fische pro Woche?

von Andreas H. (desi-aho)


Lesenswert?

X-Achse = samples, 256 an der Zahl. Mit 512 samples sieht es aber nicht 
anders aus.

von Harald K. (kirnbichler)


Lesenswert?

Andreas H. schrieb:
> X-Achse = samples, 256 an der Zahl.

Seufz.

Daß das eine Aussage ohne Wert ist, ohne die Samplerate anzugeben, ist 
Dir nicht klar?

Wie viele Samples pro Monat/Woche/Tag/Stunde ... sind das? Welche 
Samplefrequenz?

von Andreas H. (desi-aho)


Lesenswert?

Prescaler 128: 256 samples in 28 Millisekunden
Prescaler 64: 256 samples in 14 Millisekunden
Prescaler 32: 256 samples in 7 Millisekunden

von Rainer W. (rawi)


Lesenswert?

Andreas H. schrieb:
> ... zeigt einen regelmäßig auftretenden "Herzschlag" ...

Dann zeig doch einmal das Spektrum.
Was genau zeigt dein Bildschirmfoto?
Wie hast du die Bandbreite begrenzt?

: Bearbeitet durch User
von Andreas H. (desi-aho)


Lesenswert?

Das Bildschirmfoto zeigt den ADC Ausgabewert des Metro Mini (X-Achse). 
Bei 3,3V Aref des microcontrollers und 1,65V bias des 
Mikrofon-Verstärker breakout boards sähe man bei absoluter Stille 
theoretisch eine gerade Linie bei 338. Einen spectrum analyser habe ich 
leider nicht. Die Bandbreite des sampling, die sampling frequency, ist 
mit dem ADC prescaler festgelegt.

Prescaler 128 (default): 256 samples/28 ms => 9143 samples/s = 9.1 kHz
Prescaler 64: 256 samples/14 ms =>18286 samples/s = 18.3 kHz
Prescaler 32: 256 samples/7 ms => 36571 samples/s = 36.5 kHz

von Rainer W. (rawi)


Lesenswert?

Andreas H. schrieb:
> Einen spectrum analyser habe ich leider nicht.
Um aus der Zeitserie das Spektrum zu berechnen, brauchst du keinen 
"spectrum analyser", sondern eine Software, die die FFT rechnen kann.

> Die Bandbreite des sampling, die sampling frequency, ist
> mit dem ADC prescaler festgelegt.

Abtastfrequenz und Signalbandbreite sind zwei völlig verschiedene Dinge. 
Damit es nicht zu Aliasing kommt, muss die Abtastrate mehr als doppelt 
so hoch wie die höchste Signalfrequenz sein.

von Andreas H. (desi-aho)


Angehängte Dateien:

Lesenswert?

Zum Vergleich ein 1 kHz Sinuston, bei 2,5V Aref, in 100 cm Entfernung 
vom smartphone abgespielt. Absolute Stille läge theoretisch bei einem 
ADC Ausgabewert von 676, ist aber hier um 10 Einheiten nach oben 
verschoben. Da die Amplitude nun größer ist, und ein bischen Sinus-Lärm, 
ist der periodische "Puls" nicht mehr zu sehen.

von Christian (dragony)


Lesenswert?

Ich würde erstmal den Noise-Floor ermitteln. Dazu das Mikro-Board 
abziehen und dann nochmal eine Messreihe aufzeichnen. Je nach Ausgabe 
kann man dann schonmal 50% der Fehler aussortieren.

von Andreas H. (desi-aho)


Lesenswert?

Die Signalfrequenz bei Stille in meinem schallgedämpften Raum kenne ich 
nicht. Rauschen tut hier jedenfalls nichts. Die Dämpfung ist (drumkit) 
wirklich gut. Nur das Signal, was der microcontroller aus der Stille, 
dem Restrauschen im Raum, macht. FFT werde ich machen, dazu müßte es 
auch für low-end Teile wie meine code geben.

: Bearbeitet durch User
von Andreas H. (desi-aho)


Angehängte Dateien:

Lesenswert?

FFT bei Stille. Für mehr als 128 samples hat der Metro Mini keinen 
Speicher.

von Andreas H. (desi-aho)


Lesenswert?

Den microcontroller abziehen... und was sollte ich dann machen?

von Thomas Z. (usbman)


Lesenswert?

wird der Laptop mit Netzteil betrieben? Falls ja probiere mal die 
Messungen im Akkubetrieb

von Andreas H. (desi-aho)


Lesenswert?

Habe ich schon. Laptop am Netz. Laptop im Batteriebetrieb. Die 
klassische 9V Batterie. Bestromung nur über das USB-Kabel. Anderen 
Laptop. Laptop einen Meter weit weg gestellt. Keine Leuchtstoffröhre 
oder "Energiesparlampe" oder sonstige Leuchte in Betrieb. Kein anderes 
elektrisches Gerät ist eingeschaltet.

Bei drei gleichen Metro Mini und zwei MAX4466 Kombinationen, nicht aus 
einer Bestellung, sondern mit einigen Jahren Abstand für die Bastelkiste 
gekauft - stets das gleiche Resultat bei Stille. Ich habe leider kein 
Oszilloskop zur Verfügung, nur ein DMM.

von Thomas Z. (usbman)


Lesenswert?

was kommt raus wenn du das Mikro kurzschließt? Immer noch die gleiche 
Wellenform?

von Christian (dragony)


Lesenswert?

Andreas H. schrieb:
> Den microcontroller abziehen... und was sollte ich dann machen?

Da hast du mich falsch verstanden. Mit Mikro-Board meinte ich das Board 
mit dem Mikrofon. Es geht darum, mal aufzuzeichnen, was der ADC ohne 
Mikrofon misst. Das müsste im Idealfall ja eine Nulllinie sein. Wenn der 
ADC dann aber NC ist, müsstest du ihn vorher mit Masse verbinden. 
Alternativ kannst du versuchen, VCC vom Mikrofon-Board NC zu schalten, 
also das Mikrofon-Board spannungsfrei zu schalten. Letztendlich geht es 
darum, Fehler auszuschliessen und sich damit dem eigentlichen Fehler 
anzunähern, indem man ein grundsätzlich erwartetes Verhalten empirisch 
überprüft.

von Christian (dragony)


Lesenswert?

Thomas Z. schrieb:
> was kommt raus wenn du das Mikro kurzschließt? Immer noch die gleiche
> Wellenform?

Das meinte ich. Meine Methode ist zwar weniger brachial, kommt aber aufs 
gleiche raus.

von Andreas H. (desi-aho)


Angehängte Dateien:

Lesenswert?

Alles klar. Ohne MAX4466 bekomme ich 256 schöne Nullen vom ADC. ADC pin 
A0 an GND.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Andreas H. schrieb:
> FFT bei Stille. Für mehr als 128 samples hat der Metro Mini keinen
> Speicher.

Was soll man daraus ablesen?
Für die Qualität deines Signals interessiert die Dynamik, d.h. du 
brauchst ein Signal, dass deinen ADC voll aussteuert und dann kannst du 
den Störlevel und den Dynamikabstand zu Störsignalen bestimmen, am 
besten in logarithmischer Darstellung der Amplitude.

Welche Fensterfunktion hast du für die FFT benutzt?
Abtastrate 9.1kHz?

p.s.
An der Darstellung der FFT kannst du noch ETWAS arbeiten:
- Vernünftigen Achsenteilung für die Frequenz
- Vernünftige Beschriftung der Frequenzachse
- Deine Abtastfrequenz ist bestimmt nicht auf die angegebenen 10 Stellen 
genau, d.h. die Werte in dieser Form sind ein Artefakt.

: Bearbeitet durch User
von Andreas H. (desi-aho)


Lesenswert?

Ich kann nicht sagen, wie man diesen gleichförmigen "Herzschlag" im 
Signal daraus ablesen kann, ich bin leider kein Akustik- oder 
Elektronikfachmann. FFT wurde zwecks Untersuchung der Signalmacke 
vorgeschlagen, also - gesagt getan. Mehr als 128 samples und 9.1 kHz 
schafft der Metro Mini nicht. Zu einer Fensterfunktion kann ich nichts 
sagen, da ich den code der library https://github.com/kosme/arduinoFFT 
nicht gelesen habe.

von Rainer W. (rawi)


Lesenswert?

Andreas H. schrieb:
> Ich kann nicht sagen, wie man diesen gleichförmigen "Herzschlag" im
> Signal daraus ablesen kann

Das könnten die Peaks bei 600, 1200, 1800 Hz sein. Um das zu prüfen, 
müsstest du mal die Periodendauer von deinem Herzschlag in Zeiteinheiten 
ausdrücken.

von Harald K. (kirnbichler)


Lesenswert?

Andreas H. schrieb:
> Mehr als 128 samples und 9.1 kHz
> schafft der Metro Mini nicht.

Hast Du kein Notebook/keinen PC mit Audioeingang?

Da könntest Du Dein Mikrophon anschließen und z.B. mit Audacity (freie 
Software) eine Aufnahme bei audioüblichen Sampleraten anfertigen.

von Rainer W. (rawi)


Lesenswert?

Andreas H. schrieb:
> Zu einer Fensterfunktion kann ich nichts sagen, ...

Das Fenster ist auch nicht Aufgabe der FFT, sondern muss vorher 
passieren. Sobald Anfang und Ende der Zeitserie nicht zusammenpassen, 
gibt es sonst Ärger (Artefakte), weil die FFT davon aus geht, dass sich 
die Zeitserie periodisch fortsetzt.
Wenn du die FFT wie im Beispielcode berechnest, wird dort vor der 
Transformation ein Hamming-Fenster über die Zeitserie gelegt.
1
void loop() {
2
    // Get samples
3
    FFT.windowing(FFTWindow::Hamming, FFTDirection::Forward);  /* Weigh data */
4
    FFT.compute(FFTDirection::Forward); /* Compute FFT */
5
    FFT.complexToMagnitude(); /* Compute magnitudes */
6
    float x = FFT.majorPeak();
7
    // Rest of the code
8
}
https://github.com/kosme/arduinoFFT/wiki

: Bearbeitet durch User
von Christian (dragony)


Lesenswert?

Andreas H. schrieb:
> Alles klar. Ohne MAX4466 bekomme ich 256 schöne Nullen vom ADC. ADC pin
> A0 an GND.

Dann kommt die Noise wohl vom Mikrofon-Board. Entweder ist es einfach 
crap, oder VCC ist unsauber, oder es ist defekt, oder die hochohmige 
lange(?) ADC-Leitung nimmt Störungen auf, oder oder oder.

Ich würde jetzt einen Elko direkt(!) an die VCC und GND Pins am 
Mikrofon-Board anschliessen, damit VCC auf jeden Fall sauber ist. Das 
wäre nochmal eine häufige Fehlerquelle. Idealerweise noch ein paar Ohm 
in die lange VCC-Zuleitung, dann hast du einen vernünftigen Tiefpass. 
Wie versorgst du VCC? Externes Schaltnetzteil? Die verursachen ne Menge 
Noise.

Wie lang sind die Kabel zum ADC? Die nehmen auch gerne Noise auf. 
Idealerweise sollten die Leitungen alle so kurz wie möglich sein. 
Eigentlich gehört der ADC aufs gleiche Board, maximal einige cm neben 
dem Mikrofon platziert ;)

Du bist hier im analogen Bereich. Das ist eigentlich nicht so easy wie 
man es vielleicht gerne hätte.

: Bearbeitet durch User
von Andreas H. (desi-aho)


Lesenswert?

Harald K. schrieb:
> Hast Du kein Notebook/keinen PC mit Audioeingang?

Nur zwei Laptops mit USB-C Eingängen und Bluetooth für drahtlose 
Kopfhörer/Lautsprecher.

> Da könntest Du Dein Mikrophon anschließen

Ich könnte einen Laptop mit TRS-Buchse für Kopfhörer/Lautsprecher 
ausleihen. Das MAX4466 breakout board hat nur einen OUT pin. Den lege 
ich dann mit Schraubklemme-TRS-Adapter auf L oder R. Ich habe für 
drumkit Aufnahmen Ableton Live, damit kann ich aufnehmen.

von Andreas H. (desi-aho)


Angehängte Dateien:

Lesenswert?

Harald K. schrieb:
> Andreas H. schrieb:
>> Mehr als 128 samples und 9.1 kHz
>> schafft der Metro Mini nicht.
>
> Hast Du kein Notebook/keinen PC mit Audioeingang?
>
> Da könntest Du Dein Mikrophon anschließen und z.B. mit Audacity (freie
> Software) eine Aufnahme bei audioüblichen Sampleraten anfertigen.

Ha, das geht tatsächlich, gute Idee! OUT auf L. GND auf GND. TRS an 
Laptop mit Ableton Live. Das Signal aus dem MAX4466 ist sehr schwach. 
Sample +24 dB aber kaum was zu erkennen. Aber - ein regelmäßiges 
"Puckern" ist auch hier erkennbar. Also, da jetzt kein microcontroller 
im Spiel ist, hat das Ganze was mit den MAX4466 breakout boards bei fast 
absoluter Stille zu tun. Irgendetwas oszilliert da, aber warum kann ich 
natürlich nicht beurteilen. Vielleicht ist das bei diesen low-end 
breakout boards im alleruntersten Bereich einfach so.

von Andreas H. (desi-aho)


Lesenswert?

Rainer W. schrieb:
> Wenn du die FFT wie im Beispielcode berechnest

So gemacht wie vom library Schreiber im Beispiel beschrieben. Anzahl der 
samples ausgewählt (128) und sampling rate (9.1 kHz). Mehr kann der 
Metro Mini nicht.

von Andreas H. (desi-aho)


Lesenswert?

Christian schrieb:
> Andreas H. schrieb:
>> Alles klar. Ohne MAX4466 bekomme ich 256 schöne Nullen vom ADC. ADC pin
>> A0 an GND.
>
> Dann kommt die Noise wohl vom Mikrofon-Board. Entweder ist es einfach
> crap, oder VCC ist unsauber, oder es ist defekt, oder die hochohmige
> lange(?) ADC-Leitung nimmt Störungen auf, oder oder oder.
>
> Wie lang sind die Kabel zum ADC? Die nehmen auch gerne Noise auf.
>
> Du bist hier im analogen Bereich. Das ist eigentlich nicht so easy wie
> man es vielleicht gerne hätte.

Die Leitungen sind daumenlang. Da ich das Teil, wie von Harald K. 
vorgeschlagen, an einem Laptop mit TRS-Buchse angeschlossen habe, und 
mit Ableton Live eine Aufnahme gemacht habe, sehe ich, daß es nicht am 
microcontroller liegen kann. Vielleicht "pulsen" solche analogen low-end 
Teile mit Billigverstärker immer, wenn es so richtig still ist (der Raum 
ist astrein gedämmt wg. drumkit). Und wenn "viel los ist", ob Sprache 
oder Musik, fallen einem diese spikes einfach nicht mehr auf, gehen 
unter im Wellengewaber. Aber ok, dann weiß ich Bescheid, daß es nicht 
der microcontroller oder der code sein kann. Auch gut!

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.