Forum: Mikrocontroller und Digitale Elektronik Audio Spectrum Analyzer Problem: Programmierung/Bauteile


von Jano (Gast)


Lesenswert?

Hallo, ich habe ein Problem mit der Umsetzung meines Audio Spectrum 
Analyzer.



Zum Aufbau:
Er hat 8 Kanäle (16 khz, 8 khz, 4 khz,...) und 10 LEDs je Kanal.

Mikrocontroller ist ein Atmega32, programmiert wird er in C.

Am Eingang des controller ist ein MAX7490.
Ein Bandpass, der sich durch eine angelegte Frequenz einstellen lässt.
Mit einem Zähler wird eine feste Frequenz geteilt und durch einen 
Multiplexer an den MAX weitergegeben.
Dies funktiopnier soweit auch sehr gut.

aus dem MAX7490 kommt eine Wechselspannung mit 2,5V offset.
(also wenn nichts am Eingang kommt 2,5V an, bei vollem Ausschlag 
schwankt es zwischen 0 und 5 V)

Am Ausgang sind Darlington Transistor Arrays. Die Ansteuerung der LEDs 
funktioniert auch einwandfrei.




Nun zu meinem Problem:
Ich schaffe es gerade mal 3 Messungen pro Kanal zu machen, um eine 
flüssige Anzeige zu haben (also um min. ca. 20 FPS zu haben)

Das Signal schwankt dabei auch Stark. Wenn ich eine feste Frequenz 
anlege schwankt es an der Anzeige sehr stark. Dies liegt vermutlich 
daran, dass ich nur den durchschnitt aus 3 Messungen nehme.




Wenn es hilft, kann ich auch Teile des Quelltextes noch abtippen, kann 
leider nichts per Stick auf den Firmenrechner hier schieben.

Es ist ein Projekt in meiner Ausbildung als Elektroniker für Geräte uns 
Systeme, meine Ausbilder kennen sich leider nicht mit C aus.

Ich würde mich über Tipps und Anregungen freuen :)

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


Lesenswert?

Jano schrieb:
> (also wenn nichts am Eingang kommt 2,5V an, bei vollem Ausschlag
> schwankt es zwischen 0 und 5 V)

Du schickst also vermutlich direkt das gefilterte Audio auf den MC. Je 
nach Abtastpunkt findet er dann ein zufälliges Signal. Lösen kannst du 
das recht einfach, indem du einen aktiven Gleichrichter zwischen MAX und 
ADC Eingang schaltest.
Das Datenblatt zum LM3916 hat da einige Vorschläge, ab Figure 3 
aufwärts, von simpel bis komplex.

von Jano (Gast)


Lesenswert?

Erstmal danke für die Antwort.

Ich denke ich brauche wohl einen Peak detektor. Der Half-Wave Peak 
Detector sollte doch reichen, ich brauch ja nicht unbedingt beide 
Halbwellen?

Mir stellen sich nur noch 2 Fragen:
Muss ich das Signal nicht vorher den Offset rausbekommen? Ein normaler 
Gleichrichter würde ja auch nichts bringen, wenn es alles überhalb von 0 
V ist.

Ich weis nicht, ob ich mir einen aktiven Gleichrichter gerade falsch 
vorstelle, aber das ist doch im Prinzip das Selbe wie ein Gleichrichter 
mit Glättung, so würde ich ja auch einen Peak erkennen können. 
Funktioniert der aber auch im ganzen Audio Frequenzbereich? Bei der 
Passiven Lösung würde ich ja mit einem Kondensator den Peak halten, aber 
bei hohen Frequenzen evtl zu lange, und somit immer auf der maximalen 
Spannung bleiben, weil hin und wieder ein Peak vorhanden ist. Oder eben 
bei einer niedrigen Frequenz würde die Spannung bis zur nächsten Flanke 
wieder abgesunken sein.

von Jano (Gast)


Lesenswert?

Ich habe mal den "Half-Wave Peak Detector" aus Bild3 aufgebaut, und es 
hat sich genau das bestätigt, was ich vermutet habe.

Ich muss den Offset vorher wegbekommen und es funktioniert erst richtig 
ab ca. 10 khz mit der Peak detection.
Wenn ich den Kondensator so anpasse, dass es in den unteren 
Frequenzbereichen passt, dauert es natürlich viel zu lange, bis die 
Spannung in den hohen Frequenzen wieder abnimmt.

was tun?

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.