Forum: Mikrocontroller und Digitale Elektronik Hochpräzises 90dB PPM, FPGA, µC oder doch Analog?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Jan (Gast)


Lesenswert?

Guten Tag,

ja, ich weiß: Thema hatten wir schon 1000x. Ich habe das meiste im Forum 
dazu durchgelesen, die Anforderungen von mir sind aber anders als bei 
den meisten anderen Projekten, etwas passendes konnte ich nicht finden.

Um was gehts?

Ich bastel an einer Verstärkerschaltung, (Hörbereich, also 20Hz-20kHz) 
diese kann bis 17Veff ausgesteuert werden und hat ein Eigenrauschen am 
Ausgang von <10µVeff. (Laut Spice)
Die Lastimpedanz kann ganz verschieden sein, von ein paar Dutzend Ohm 
bis ein paar kOhm. Die Ausgangspegel bewegen sich durchaus auch mal 
irgendwo im unteren mV Bereich, es wäre als gut ein paar 100µV anzeigen 
zu können. Ziel ist eine Balkenanzeige von -90dB bis 0dB in 3dB 
Schritten -> 30 LEDs pro Kanal, kein (!!!) Showgerät sondern eine echte 
Messanwendung. Egal ob 20Hz oder 20kHz, was die Anzeige zeigt muss 
stimmen.
Kennt jemand die alten Profi DAT Recorder von Sony oder die PPM von RTW? 
Exakt das ist das Ziel. Zusätzlich wäre eine Peakanzeige durch 7 Segment 
Displays der Wahnsinn, damit das aber einen Nutzen hat wäre eine 
Auflösung von 0,xdB nötig. Jetzt wird es richtig heftig.

3 Konzeptideen habe ich:

1: Analog:
Es Gibt für den Zweck log -> Lin Kompressoren wie den THAT4301, der 
schafft 120dB-> 60dB:

http://www.thatcorp.com/datashts/dn119.pdf

So einen, Aktivgleichrichter + RC Zeitglied dahinter und eine Kette von 
LM3914 oder tatsächlich 30 Komparatoren pro Kanal. Präzise geht anders 
weil man immer heftig abgleichen müsste, die Spitzenwertanzeige kann man 
damit vergessen.

2: µC:
Man könnte einen µC mit Analogeingang verwenden und die Werte in einer 
Wahrheitstabelle speichern. Die ADC Eingänge müssten 16Bit Auflösen 
können und mindestens 40kS/s Abtasten damit 20kHz Rekonstruiert werden 
können. 16 Bit integriert, ich habe nichts passendes gefunden, bei 12 
Bit ist Schluss. Man kann den THAT4301 davor setzen dann kommt man mit 
12Bit klar. Gerade wenn aber noch die Spitzenwerte angezeigt werden 
sollen bin ich mir sehr unsicher ob man das Signal schnell genug für 
20kHz abtasten kann, der µC hat ja dann viel zu tun. Ich habe zwar schon 
mit µCs gearbeitet, es fehlt aber momentan noch an Wissen um das 
Abschätzen zu können.

3: FPGA:
Ich vermute so machen es die Profis von RTW etc heute. Die Idee stammt 
von hier, das ist ziemlich genau was ich suche:

http://www.beis.de/Elektronik/DPLCM/DPLCM.html

Billiger 16Bit Audio ADC davor und den FPGA auswerten lassen. Der in dem 
Beispiel hat wohl so viele Pins das es ohne Multiplexen geht, bei den 
kleinen Signalen sicher kein Fehler. Die Frage ist halt ob ein blutiger 
Anfänger es hinbekommen kann den Code für den FGPA zu schreiben, ich 
vermute damit übernehme ich mich deutlich als Einsteiger?

Habt Ihr vielleicht andere Ideen wie man das besser machen kann oder 
weiß jemand wie die Präzisen VU-Meter / PPM in der Zeit vor µC und co. 
realisiert waren?

Vielen Dank!

lg, Jan

von S.B.Z. (Gast)


Lesenswert?

> wie die Präzisen VU-Meter / PPM in der Zeit vor µC und co.
> realisiert waren?

Natürlich mit einem A277.
Zur Not kaskadiert.

von Purzel H. (hacky)


Lesenswert?

Was sprichte denn gegen einen externen ADC ? Die sind viel besser wie 
die internen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Hier
Beitrag "VU-Meter mit Attiny13a statt LM3916"
hab ich schonmal sowas mit einem attiny13a vorexerziert. Gut, da sinds 
keine 90dB Anzeigeumfang. Aber wenn du einen STM32 mit I2S Port und 
einen entsprechenden Audio-ADC nimmst, sollte das locker machbar sein. 
Sogar als "Spektrumanalysator", weil du noch genuegend CPU-Bumms haben 
wirst, um ein paar Filter mitlaufen zu lassen.

Gruss
WK

von Jan (Gast)


Lesenswert?

Danke für Eure Hilfe!

Wie gesagt, µC Anfänger deshalb viel mir das einschätzen schwer wie groß 
das Programm werden wird -> wie schnell abgetastet und intern 
verarbeitet werden kann. Aber gut bei 48Mhz sollte sogar ein von mir 
(schlecht) geschriebener Code schnell genug abgearbeitet werden können, 
auch mit Spitzenwert Anzeige ;-)

Auf die Idee das es µCs mit I2S Port gibt bin ich garnicht gekommen, 
eigentlich perfekt dafür. Ich werde es so versuchen.


Jan

von Tobias F. (analrapist)


Lesenswert?

Jan schrieb:
> Ziel ist eine Balkenanzeige von -90dB bis 0dB in 3dB Schritten

Jan schrieb:
> Die ADC Eingänge müssten 16Bit Auflösen können

Tja, hast das mal gerechnet?

20*log(2/65535) sind ca -90dB, 20*log(3/65535) sind aber schon -86.7dB. 
Allein deshalb reichen 16 bit nich. Wenn du jetzt noch beruecksichtigst 
dass die ENOB von so einem 16 bit Wandler vllt 14 bit sind bist du schon 
bei Rauschen von 2 bis 3 LEDs. Laeuft das bei dir unter

Jan schrieb:
> was die Anzeige zeigt muss stimmen

?

Du brauchst 24 bit und am besten 96kHz. Mhmhm 24 bit 96kHz, das kommt 
mir bekannt vor...

Machs wie derguteweka sagt. Und stell dich auf viele Designiterationen 
ein wenn du schon so fragst, -90dB Stoerunterdrueckung sind jetzt nicht 
gerade total einfach...

von Purzel H. (hacky)


Lesenswert?

Vergiss einen ADC mit I2C, resp I2S, das ist Schrott, wegen 
Richtungsumschaltung. Nimm SPI.

von Tobias F. (analrapist)


Lesenswert?

Jan schrieb:
> Wie gesagt, µC Anfänger deshalb viel mir das einschätzen schwer wie groß
> das Programm werden wird -> wie schnell abgetastet und intern
> verarbeitet werden kann.

Das ist easy. Die Samples holst du dir per DMA rein, die stehen dann in 
einem Double Buffer. Du iterierst ueber den Buffer sobald er fertig ist 
und machst pro Sample ein MAC, dafuer musst du noch quantisieren oder am 
besten einen 64 bit oder floating point Akkumulator nehmen. Das Ergebnis 
speicherst du dir in ne Liste fuer die Peak anzeige und gibst es auf den 
LEDs aus. Die kann man evtl auch direkt am uc multiplexen, zB 4x8.

von Tobias F. (analrapist)


Lesenswert?

Gorch F. schrieb:
> Vergiss einen ADC mit I2C, resp I2S, das ist Schrott, wegen
> Richtungsumschaltung. Nimm SPI.

???

So ein Quatsch.

von Michael B. (laberkopp)


Lesenswert?

Jan schrieb:
> Ziel ist eine Balkenanzeige von -90dB bis 0dB in 3dB
> Schritten -> 30 LEDs pro Kanal,

Bau's doch gleich richtig nach DIN45406 mit 220 LEDs:

http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.30.2

Jan schrieb:
> Billiger 16Bit Audio ADC davor und den FPGA auswerten lassen

Weder 16 bit noch FPGA, du brauchst einen der üblichen 24 bit Audio-ADCs 
und einen uC der dessen seriellen Stream von 1.2MByte/sec verarbeiten 
kann, das schaffen aber viele.

Das Programm sollte natürlich im Kernstück in Assembler sein, mit 
Arduino wird das nichts. Viel Rechenaufwand ist ja nicht.

von Dergute W. (derguteweka)


Lesenswert?

Michael B. schrieb:
> Das Programm sollte natürlich im Kernstück in Assembler sein

Tobias F. schrieb:
> ???
>
> So ein Quatsch.

von Jan (Gast)


Lesenswert?

Wieso denn 20*log(3/65535) statt 20*log(2/65535)?

16Bit Wandler gibt es praktisch nicht mehr, selbst die günstigen 
"können" 24Bit/96kHz, ist also kein Problem. Der z.B. sollte ja reichen:

https://www.ti.com/lit/ds/symlink/pcm1808.pdf

Echte 24Bit erreicht kein Wandler den ich kenne, selbst die super tollen 
High End Teile von Ti oder ESS nicht. reicht aber ja auch aus.
Ja, die 16Bit wären der Optimalfall gerechnet.

I2S ist ja ziemlich gängig bei Audio ADCs, die Frage ist nur wie 
kompliziert die Verarbeitung der Signale im µC sein wird. Ich hatte mich 
davor nie damit beschäftigt.

>Und stell dich auf viele Designiterationen
>ein wenn du schon so fragst, -90dB Stoerunterdrueckung sind jetzt nicht
>gerade total einfach...

Der Analogteil des Verstärkers schafft das locker, beim ADC halte ich 
mich an das Referenzlayout von Ti. Wird versucht.

>Bau's doch gleich richtig nach DIN45406 mit 220 LEDs:

Ich werde zwar 0603er SMD LEDs verwenden, so breit wird aber das Gehäuse 
garnicht. ;-)
Die 55dB Dynamikumfang reichen mir auch bei weitem nicht.

Wo liegt der Vorteil bei Assembler in der Anwendung?

Jan

von John (Gast)


Lesenswert?

Jan schrieb:
> Ziel ist eine Balkenanzeige von -90dB bis 0dB in 3dB
> Schritten -> 30 LEDs pro Kanal

Das sind dann schon mal 31 LEDs pro Kanal.

Im Betreff schreibst du "Hochpräzises 90dB PPM".
Für höchpräzise finde ich 3dB-Schritte schon sehr grob:
1
 dB   Spannung
2
  0    17,0 V
3
 -3    12,0 V
4
 -6    8,52 V
5
 -9    6,03 V
6
-12    4,27 V
7
-15    3,02 V
8
-18    2,14 V
9
-21    1,51 V
10
-24    1,07 V
11
...

Jan schrieb:
> kein (!!!) Showgerät sondern eine echte
> Messanwendung. Egal ob 20Hz oder 20kHz, was die Anzeige zeigt muss
> stimmen.

Was genau möchtest du damit messen?

Gruß
John

von Analog OPA (Gast)


Lesenswert?

Dir ist klar, dass eine Pegelanzeige eine Integration über eine ZEit 
erfordert? Da sind hochschnelle DACs nicht unbedingt hilfreich, weil 
wieder dezimiert werden muss.

von Tom (Gast)


Lesenswert?

Analog OPA schrieb:
> eine Integration über eine ZEit
> erfordert?

OP will PPM, also eine Peak-Anzeige. Die 10ms Integrationszeit aus der 
analogen Ära kann man sich sparen, da man in der digitalen Welt keine 
übersteuerten 10ms-Peaks will, die früher von der Bandmaschine angenehm 
plattgebügelt wurden.

von Tobias F. (analrapist)


Lesenswert?

Jan schrieb:
> Wieso denn 20*log(3/65535) statt 20*log(2/65535)?

Von 2 auf 3 ist halt ein LSB Unterschied. Damit ist halt der kleinste 
Schritt schon >3dB.

Jan schrieb:
> Echte 24Bit erreicht kein Wandler den ich kenne, selbst die super tollen
> High End Teile von Ti oder ESS nicht. reicht aber ja auch aus.

22 Bit reichen locker fuer die Anwendung, 20 waeren wahrscheinlich auch 
noch in Ordnung. Wenn man ein wenig integriert noch weniger.

John schrieb:
> Im Betreff schreibst du "Hochpräzises 90dB PPM".
> Für höchpräzise finde ich 3dB-Schritte schon sehr grob:

Naja, er meinte wohl eher hoch akkurat...

Tom schrieb:
> OP will PPM, also eine Peak-Anzeige.

Naja, das ist so natuerlich auch wieder fraglich. Dann muesste er 
naemlich massiv interpolieren um die echten peaks zwischen den 
Abtastwerten zu finden. Ein wenig Integration ist sicher okay ;)

von Jan (Gast)


Lesenswert?

>Das sind dann schon mal 31 LEDs pro Kanal.
>
>Im Betreff schreibst du "Hochpräzises 90dB PPM".
>Für höchpräzise finde ich 3dB-Schritte schon sehr grob:

Stimmt, clipping LED hatte ich nicht mitgerechnet. Die 0dB LED ist eine 
reine Spitzenwertanzeige ohne Verzögerung/Einschwingzeit. Im einfachsten 
Fall mache ich das einfach mit einem Komparator analog.

Präzise wegen der 7 Segment Anzeige die den Spitzenwert (RMS) im 0.xdB 
Bereich zeigen soll. So wie hier gezeigt:

http://www.beis.de/Elektronik/DPLCM/DPLCM.html

Hier sieht man schön was ich mir vorstelle, der Sony PCM-7040 ist für 
mich eine Referenz für ein gutes -60dB bis 0dB PPM:

https://www.youtube.com/watch?v=OVJnq4o6uLQ

>Was genau möchtest du damit messen?

Wie weit der Verstärker von der Vollaussteuerung 0dB, also vom clipping, 
entfernt ist. Deswegen PPM, die Spitzenwertanzeigen zeigen den Wert ohne 
Integrationszeit.

>Dir ist klar, dass eine Pegelanzeige eine Integration über eine ZEit
>erfordert? Da sind hochschnelle DACs nicht unbedingt hilfreich, weil
>wieder dezimiert werden muss.

Es gibt ja nur die Möglichkeit das Problem in SW zu lösen oder davor 
analog. (Aktivgleichrichter + Verzögerungsglied als minimum) Dann 
arbeitet die Spitzenwertanzeige nicht, ich glaube auch digital ist das 
genauer als mit der Analogschaltung davor?

Ich überlege mir gerade den STM32 diverse Steuerungsaufgaben übernehmen 
zu lassen für die zuvor ein ATMEGA32 vorgesehen war, ein paar Relais ein 
bisschen SPI mit schieberegistern Tasterabfragen etc. Sollte er ja 
locker zusätzlich packen? Oder ist das eine schlechte Lösung?

Jan

von Jan (Gast)


Lesenswert?

>OP will PPM, also eine Peak-Anzeige. Die 10ms Integrationszeit aus der
>analogen Ära kann man sich sparen, da man in der digitalen Welt keine
>übersteuerten 10ms-Peaks will, die früher von der Bandmaschine angenehm
>plattgebügelt wurden.

Genau, das langsame VU stammt ja auch aus der Zeit. ;-)

>Von 2 auf 3 ist halt ein LSB Unterschied. Damit ist halt der kleinste
>Schritt schon >3dB.

Da hast Du recht, das hatte ich total übersehen. Da wird die 0.xdB 
Anzeige dahinter aber super kritisch, der AD Wandler muss dann schon 
edler sein. Geht das überhaupt vernünftig?

>22 Bit reichen locker fuer die Anwendung, 20 waeren wahrscheinlich auch
>noch in Ordnung. Wenn man ein wenig integriert noch weniger.

Die sind aber exotischer als 24 Bit Audio Wandler, die 24Bit Wandler 
gibt es wie Sand am Meer.

>Naja, er meinte wohl eher hoch akkurat...

Wenn die Spitzenwertanzeige nicht läuft zumindest das. (-;

>Naja, das ist so natuerlich auch wieder fraglich. Dann muesste er
>naemlich massiv interpolieren um die echten peaks zwischen den
>Abtastwerten zu finden. Ein wenig Integration ist sicher okay ;)

Ist das wirklich kritisch wenn mit 96kHz/sec abgetastet wird, das Signal 
aber sowieso nur bis 20kHz betrachtet werden soll? Bedeutet ja ich habe 
bei 20kHz immernoch über 4 Abtastpunkte in der Sekunde. Deshalb die 
Clipping LED über einen schnellen Analogen Komparator.

Jan

von Tobias F. (analrapist)


Lesenswert?

Jan schrieb:
> Sollte er ja locker zusätzlich packen? Oder ist das eine schlechte
> Lösung?

Mach das, ist sinnvoll.

Jan schrieb:
> Die 0dB LED ist eine reine Spitzenwertanzeige ohne
> Verzögerung/Einschwingzeit.

Und die Anderen?

Jan schrieb:
>> Dir ist klar, dass eine Pegelanzeige eine Integration über eine ZEit
>>>erfordert? Da sind hochschnelle DACs nicht unbedingt hilfreich, weil
>>>wieder dezimiert werden muss.
>
> Es gibt ja nur die Möglichkeit das Problem in SW zu lösen oder davor
> analog.

Vergiss das, es ist Unsinn. Du musst nicht dezimieren aber selbst wenn 
waere es auch kein Problem.

Jan schrieb:
> Deswegen PPM, die Spitzenwertanzeigen zeigen den Wert ohne
> Integrationszeit.

Eine gewisse Integrationszeit gibt es immer. Sei es im ADC durch die 
sample & hold Stufe oder analog durch den Kondensator. Wenn du 
hochpräzise messen willst solltest du dir auch Gedanken darueber machen 
was zwischen deinen Samples passiert. Aber letztendlich wirst du bei 
96kHz f_sample mit 20kHz f_BW keine Probleme haben. Eher noch durch 
Rauschen im niedrigen Pegelbereich.

von Tobias F. (analrapist)


Lesenswert?

Jan schrieb:
> der AD Wandler muss dann schon edler sein. Geht das überhaupt
> vernünftig?

Ja, bei 22 Bit schaffst du die 0.1dB Schritte (ungefaehr) mit einen LSB 
bei -90dB.

Jan schrieb:
> Die sind aber exotischer als 24 Bit Audio Wandler, die 24Bit Wandler
> gibt es wie Sand am Meer.

Die sind aber auch nur 24 bit weil die 24 drauf steht. Was ich meinte 
sind effektive 22 bit. Ein 24 bit Wandler schafft das vielleicht, siehe 
ENOB (Effective Number of Bits) im ADC Datenblatt. Durch die 
Aussenbeschaltung kannst du auch "bits" verlieren. Nimm einen 24 bit 
audio ADC, das passt schon. Du kannst nur nicht erwarten dass das letzte 
Bit auch noch sinnvolle Information liefert. Ob du das von der 
Beschaltung her hinbekommst ist weiterhin offen, 90dB 
Stoerunterdrueckung sind halt eine Hausnummer.

Jan schrieb:
> Ist das wirklich kritisch wenn mit 96kHz/sec abgetastet wird, das Signal
> aber sowieso nur bis 20kHz betrachtet werden soll? Bedeutet ja ich habe
> bei 20kHz immernoch über 4 Abtastpunkte in der Sekunde. Deshalb die
> Clipping LED über einen schnellen Analogen Komparator.

Wuerde mir das mit dem Komparator ehrlich gesagt erstmal sparen, ist nur 
eine weitere Fehlerquelle. Ja, du hast bei 20kHz immernoch fast 5 
Abtastwerte pro Periode. Allerdings kann man durch Ueberlagerung von 
Schwingungen auch recht steile Pulse hinbekommen, die du dann eben 
verpasst.

Was moechtest du hoeren? Realistisch gesehen ist das kein Problem und du 
wirst ohne Interpolation oder andere Tricks ein sehr gutes Ergebnis 
bekommen. Wenn du jetzt allerdings hochpraezise mission-critical 
Messwerte haben willst solltest du zumindest darueber nachdenken und mal 
ein paar Simulationen dazu machen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Jan schrieb:
> Sollte er ja
> locker zusätzlich packen? Oder ist das eine schlechte Lösung?

Von der Performance her sicher locker. Nur kommts halt auch so ein 
bisschen drauf an, was du so an Programmierskills hast. Den ganzen 
ADC-,quadrier-,integrier-, "logarithmier"- und LED-Zauber lass' ich z.B. 
komplett im Interrupthandler laufen. Wenn der attiny nicht im 
Interrupthandler ist, fuehrt er das aus:
1
endless_loop: ; this is the "main()" loop.
2
    rjmp endless_loop

Da koennte natuerlich auch jede andere CPU irgendwelche Relais klappern 
lassen. Sollte dann halt beim Timing nicht mehr auf die µs ankommen.

Jan schrieb:
> Da wird die 0.xdB
> Anzeige dahinter aber super kritisch, der AD Wandler muss dann schon
> edler sein.

Wieso das denn? Das ist total billig.

Jan schrieb:
> Bedeutet ja ich habe
> bei 20kHz immernoch über 4 Abtastpunkte in der Sekunde. Deshalb die
> Clipping LED über einen schnellen Analogen Komparator.

Also irgendwann ist ja mal gut mit dem Genauigkeitsfimmel. Verlaessliche 
Clippinganzeigen gehen gut rein analog: Ausgangssignal nehmen, mit nem 
Spannungsteiler um den Verstaerkungsfaktor runterteilen, davon das 
Eingangssignal abziehen, ggf. verstaerken. Alles analog. Wenn dabei was 
uebrig bleibt, clippt der Verstaerker.

Gruss
WK

von Jan (Gast)


Lesenswert?

>Und die Anderen?

Gedacht ist das so:

Die 30 LEDs zeigen mit den genormten Integrationszeiten für ein PPM den 
Wert an. Die Übersteuerungs LEDs zeigen an wenn die ~17Veff am Ausgang 
überschritten werden würden. Ich werde diese so abgleichen das sie 
Leuchten wenn die THD über 1% liegen, egal bei welcher Last. Der 
Anwender weiß die Pegel sind zu hoch und muss sie reduzieren.

>Eine gewisse Integrationszeit gibt es immer. Sei es im ADC durch die
>sample & hold Stufe oder analog durch den Kondensator. Wenn du
>hochpräzise messen willst solltest du dir auch Gedanken darueber machen
>was zwischen deinen Samples passiert. Aber letztendlich wirst du bei
>96kHz f_sample mit 20kHz f_BW keine Probleme haben. Eher noch durch
>Rauschen im niedrigen Pegelbereich.

Der gesamte Verstärker hat eine Bandbreitenbegrenzung durch einen 
Eingangsfilter die bei ~250kHz (-3dB Punkt) anfängt zu wirken, einfach 
um die Eingangsstufe vor HF zu schützen. Die Clipping LED Auswertung ist 
bisher ein Fensterkomparator ohne Integrationszeit um jede Spitze egal 
bei welcher Frequenz zu erfassen.

>Ja, bei 22 Bit schaffst du die 0.1dB Schritte (ungefaehr) mit einen >LSB bei 
-90dB.

Perfekt, danke. Das klingt sehr gut!

>Die sind aber auch nur 24 bit weil die 24 drauf steht. Was ich meinte
>sind effektive 22 bit. Ein 24 bit Wandler schafft das vielleicht, >siehe ENOB 
(Effective Number of Bits) im ADC Datenblatt. Durch die
>Aussenbeschaltung kannst du auch "bits" verlieren. Nimm einen 24 bit
>audio ADC, das passt schon. Du kannst nur nicht erwarten dass das >letzte Bit 
auch noch sinnvolle Information liefert. Ob du das von der
>Beschaltung her hinbekommst ist weiterhin offen, 90dB
>Stoerunterdrueckung sind halt eine Hausnummer.

Das dachte ich mir, die vollen 24Bit lassen sich ja Analog garnicht 
realisieren. Ich brauche einfach nur einen Wandler der 16Bit effektiv 
auflösen kann, der low cost PCM1808 mit seinem SNR von -99dB sollte 
dafür ja locker locker reichen. Oder habe ich einen Denkfehler?
Analog habe ich schon sehr viel aufgebaut und gemessen, ich habe also 
durchaus Erfahrung im Layouten und kenne die kritischen Punkte. ADC und 
DACs waren bisher nicht dabei, deshalb halte ich mich soweit es geht an 
das Referenzlayout vom Hersteller des ADCs. Am meisten Sorgen macht mir 
das Programmieren denn da habe ich wenig Erfahrung wie man sicher merkt. 
Bin aber bereit mich da durchzubeißen. (-;

>Wuerde mir das mit dem Komparator ehrlich gesagt erstmal sparen, ist >nur eine 
weitere Fehlerquelle. Ja, du hast bei 20kHz immernoch fast 5
>Abtastwerte pro Periode. Allerdings kann man durch Ueberlagerung von
>Schwingungen auch recht steile Pulse hinbekommen, die du dann eben
>verpasst.

Die können ja optional auf der Leiterplatte bestückt werden, wenn es der 
ADC packt kann ich diesen Teil einfach nicht bestücken.

>Was moechtest du hoeren? Realistisch gesehen ist das kein Problem und >du wirst 
ohne Interpolation oder andere Tricks ein sehr gutes Ergebnis
>bekommen. Wenn du jetzt allerdings hochpraezise mission-critical >Messwerte haben 
willst solltest du zumindest darueber nachdenken und >mal ein paar Simulationen 
dazu machen.

Es geht einfach um den hochwertigen Eindruck, das die Pegel wenn sie am 
Ausgang des Verstärkers identisch sind auch identisch angezeigt werden, 
eine "schöne" Anstiegs und Abfallzeit wie bei einem PPM... Es soll 
professionell wirken und sein. Mir würde auch reichen wenn man 0,1dB 
erst 10dB unter Vollaussteuerung auflösen könnte, je nachdem wie gut mir 
der Bereich um den ADC gelingt.

>Da koennte natuerlich auch jede andere CPU irgendwelche Relais >klappern lassen. 
Sollte dann halt beim Timing nicht mehr auf die µs >ankommen.

So kritisch ist das an der Stelle nicht, geht z.B. darum die Verstärkung 
mit 2 Tastern umzuschalten, ein paar 7-Segment Anzeigen etc. Alles 
Sachen die locker auch ein paar ms brauchen dürfen.
Das kritischste könnte Multiplexen sein für die LED Anzeigen mit ein 
paar 100Hz. Der ADC ist leicht vom Digitalteil abgesetzt, Analog und 
Digitalmasse in seiner Nähe als Sternpunkt verbunden sodass der 
Digitalteil nicht in den Analogteil koppeln kann.


Jan

von Tobias F. (analrapist)


Lesenswert?

Jan schrieb:
> Ich brauche einfach nur einen Wandler der 16Bit effektiv auflösen kann,
> der low cost PCM1808 mit seinem SNR von -99dB sollte dafür ja locker
> locker reichen. Oder habe ich einen Denkfehler?

Sieht vernuenftig aus.

Jan schrieb:
> Mir würde auch reichen wenn man 0,1dB erst 10dB unter Vollaussteuerung
> auflösen könnte, je nachdem wie gut mir der Bereich um den ADC gelingt.

Wird sich dann zeigen.

Jan schrieb:
> So kritisch ist das an der Stelle nicht, geht z.B. darum die Verstärkung
> mit 2 Tastern umzuschalten, ein paar 7-Segment Anzeigen etc. Alles
> Sachen die locker auch ein paar ms brauchen dürfen.

Sollte kein Problem sein. Ehrlich gesagt ist auch die Messaufgabe nicht 
super zeitkritisch. Die 100k Samples/s sind schnell durchgenudelt denke 
ich. Du kannst die Anzeige ohnehin nicht jede ms aktualisieren weil der 
Betrachter dazu nicht schnell genug ist.

Jan schrieb:
> Das kritischste könnte Multiplexen sein für die LED Anzeigen mit ein
> paar 100Hz.

Da du ja nicht on-top noch PWM machen willst sind das auch nur wenige 
100 Hz, vielleicht 400 oder so. Das ist garkein Stress. Unter Umstaenden 
kannst du das auch einen Timer erledigen lassen.

Das einzige was wirklich Zeitkritisch ist ist die Daten vom I2S Bus 
holen und in den Buffer zu schreiben. Das musst du per DMA machen, dann 
passiert das im Hintergrund. Das ist ein bisschen tricky zu 
konfigurieren aber du findest im Internet sicher Beispielcode. Wieso 
besorgst du dir zum Testen nicht mal ein STM32F4Discovery? Die gabs ne 
Zeit lang sehr guenstig, findest bestimmt immernoch zu einem guten 
Preis. Da ist auch ein entsprechender ADC schon drauf.

Jan schrieb:
> Es geht einfach um den hochwertigen Eindruck, das die Pegel wenn sie am
> Ausgang des Verstärkers identisch sind auch identisch angezeigt werden,
> eine "schöne" Anstiegs und Abfallzeit wie bei einem PPM

Kann mir vorstellen dass du dafuer recht viel rumprobieren musst mit 
Update-Intervallen, Anstiegszeiten usw.

von Jan (Gast)


Lesenswert?

>Sollte kein Problem sein. Ehrlich gesagt ist auch die Messaufgabe nicht
>super zeitkritisch. Die 100k Samples/s sind schnell durchgenudelt denke
>ich. Du kannst die Anzeige ohnehin nicht jede ms aktualisieren weil der
>Betrachter dazu nicht schnell genug ist.

OK, klingt super. Die Leiterplatte mit den LEDs wird ein Stück abgesetzt 
sein, die mit dem ADC muss logischerweise in die Nähe des Analogteils um 
eine perfekte Masseanbindung zu erhalten. (geplant sind 2 gestapelte 
Leiterplatten) Es würde sich anbieten den µC nicht unbedingt direkt in 
den Analogteil zu setzen, besonders nicht wenn Multiplexen im Spiel ist. 
Mal sehen wie ich dann die Übertragung über den I2C Bus löse, da gibt es 
sicher Möglichkeiten.

>Das einzige was wirklich Zeitkritisch ist ist die Daten vom I2S Bus
>holen und in den Buffer zu schreiben. Das musst du per DMA machen, dann
>passiert das im Hintergrund. Das ist ein bisschen tricky zu
>konfigurieren aber du findest im Internet sicher Beispielcode. Wieso
>besorgst du dir zum Testen nicht mal ein STM32F4Discovery? Die gabs ne
>Zeit lang sehr guenstig, findest bestimmt immernoch zu einem guten
>Preis. Da ist auch ein entsprechender ADC schon drauf.

Sicher das es das Board mit Audio ADC gibt? Ich konnte nur eins mit dem 
DAC CS43L22 finden.

Jan

von Jan (Gast)


Lesenswert?

I2S meine ich.

von Tobias F. (analrapist)


Lesenswert?

Jan schrieb:
> Sicher das es das Board mit Audio ADC gibt? Ich konnte nur eins mit dem
> DAC CS43L22 finden.

Du hast voellig Recht, habe mich getaeuscht. Es hat hoechstens ein MEMS 
Mic, das per PDM (aehnlich I2S) angebunden ist.

Was ich dir aber auf jeden Fall empfehlen wuerde ist die Software auf 
einem Eval Board zu testen. Du musst das Zeug ja eh programmieren. Zum 
Testen legst du einfach einen sinus im Speicher ab und konfigurierst das 
DMA so, dass es eben den sinus aus dem Speicher nimmt statt die Daten 
von I2S. Dann bekommst du ein Gefuehl dafuer wie schnell du beim 
Verarbeiten sein musst und wie schwierig das ganze ist.

Auch merkst du ob dein gewaehlter stm32 dafuer passt, da gibt es 
naemlich viele verschiedene.

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

>Was ich dir aber auf jeden Fall empfehlen wuerde ist die Software auf
>einem Eval Board zu testen. Du musst das Zeug ja eh programmieren. Zum
>Testen legst du einfach einen sinus im Speicher ab und konfigurierst das
>DMA so, dass es eben den sinus aus dem Speicher nimmt statt die Daten
>von I2S. Dann bekommst du ein Gefuehl dafuer wie schnell du beim
>Verarbeiten sein musst und wie schwierig das ganze ist.
>
>Auch merkst du ob dein gewaehlter stm32 dafuer passt, da gibt es
>naemlich viele verschiedene.

Geplant ist den PCM1802 ADC in die Nähe des Analogbereichs zu setzen 
(logisch) und den µC davon abgesetzt, am besten bei den Bedienelementen 
und den LEDs. Den Analogteil + ADC kann ich dann mit einem Evalboard zum 
entwickeln verbinden, wenn das läuft kann ich eine Leiterplatte dafür 
Designen die den µC und die Anzeigen etc. beinhaltet.
Gibt es schöne Möglichkeiten den I2S Bus über ~20cm Leitung zwischen 2 
Leiterplatten zu führen ohne das Reflexionen ein ernsthaftes Problem 
werden? Wie terminiert man so einen Bus mit schnellen Anstiegszeiten am 
besten?

Das schöne ist, die µCs gibt es ja teilweise mit I2S + 2x SPI, ich 
brauche nicht zu multiplexen sondern kann die LEDs des PPM mit 
Schieberegistern bedienen. Sicher aus EMV Sicht kein Fehler.

Bisher sieht der ADC Bereich aus wie im Anhang, vor die TL072 OPVs kommt 
ein Spannungsteiler -> 25V^ auf 1,5V^. Damit nutze ich den Bereich bis 
zur Vollaussteuerung des ADCs genau aus. Für den Feinabgleich denke ich 
an 2 Trimmer an jeweils einem AD Eingang des STM32, über die kann dann 
ein leichter Offset auf Digitaler Ebene auf das Signal gelegt werden. 
Pegelunterschiede durch ungleiche Widerstände im Spannungsteiler oder 
des ADCs kann ich ja so am edelsten ausgleichen.

Jan

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.