ADC wie aus 10Bit 12 oder mehr machen?

Gast #2782699
Lesenswert?

Hi,

ich habe einen LPC1114 und will ein Analogsignal einlesen (1Khz).

Ich habe 4 AD Eingänge und taste die zur Zeit mit 2 KHz ab.
Über diese Werte läuft ein Filter (Mittelwert mit 2 Werten), was dann 
meine 1KHz macht.


Mir reichen leider die 10Bit vom Wandler nicht und das Layout ist 
fertig.
Man hat mir gesagt das ich irgendwie durch oversampling mit 1-X Bits 
dazu rechnen kann.

Geht das? Und wenn ja  wie und warum?

Peter
#2782712
Lesenswert?

Peter schrieb:
> Hi,
>
> ich habe einen LPC1114 und will ein Analogsignal einlesen (1Khz).
>
> Ich habe 4 AD Eingänge und taste die zur Zeit mit 2 KHz ab.
> Über diese Werte läuft ein Filter (Mittelwert mit 2 Werten), was dann
> meine 1KHz macht.
>
>
> Mir reichen leider die 10Bit vom Wandler nicht und das Layout ist
> fertig.
> Man hat mir gesagt das ich irgendwie durch oversampling mit 1-X Bits
> dazu rechnen kann.

Wenn Du jeweils vier Werte einliest und aufaddierst hast Du 12Bit.
Bei 64 Werten sinds dann schon 16 Bit. Es wäre natürlich ein
Irrtum, jetzt anzunehmen, das Deine Werte jetzt auch eine Genauig-
keit von 12 oderb 16 Bit haben. Die Genauigkeit wird vom AD-Wandler
vorgegeben und wird ca. 8...9Bit betragen.
Gruss
Harald
Gast #2782721
Lesenswert?

Peter schrieb:
> Geht das? Und wenn ja  wie und warum?

Angenommen, Du hast einen ADC, der auf 1V genau messen kann.
Du legst seine Spannung von z.B. 8,4V an.
Nun kann man argumentieren, daß Du statistisch gesehen bei 10 
Messungen 6x 8V und 4x 9V messen wirst. Ob das praktisch funktioniert, 
kann ich nicht sagen.
Gast #2782738
Lesenswert?

Gut habe es kapiert.

Also ist es Abhängig von Wandler, ob der genug jittert und das auch noch 
sauber um den Mittelpunkt. Dann kann man Statistisch sich ein paar Bits 
dazu mogeln.

Nicht sehr sauber aber ich kann es jetzt nicht mehr ändern. Ausser 50 
Bestückte Platinen zu entsorgen und das Teil neu zu machen.
Ist schon blöd wenn man nachträglich erst merkt das die Auflösung nicht 
reicht.

Peter
#2782751
Lesenswert?

Peter schrieb:

> Nicht sehr sauber aber ich kann es jetzt nicht mehr ändern. Ausser 50
> Bestückte Platinen zu entsorgen und das Teil neu zu machen.
> Ist schon blöd wenn man nachträglich erst merkt das die Auflösung nicht
> reicht.

Wozu brauchst Du denn diese "leere" Auflösung? So etwas einem Kunden
als 12 oder 16 Bit Wandler unterzujubeln grenzt an Betrug.
Gruss
Harald
Gast #2782784
Lesenswert?

Peter schrieb:
> Nicht sehr sauber aber ich kann es jetzt nicht mehr ändern. Ausser 50
> Bestückte Platinen zu entsorgen und das Teil neu zu machen.
> Ist schon blöd wenn man nachträglich erst merkt das die Auflösung nicht
> reicht.

Letztendlich mußt Du sowieso eine Validierung/Absicherung machen, welche 
Genauigkeit Dein System erreicht (liegt ja nicht nur am ADC allein). 
Dann kommt die Stunde der Wahrheit.
#2782820
Lesenswert?

@  Peter (Gast)

>ich habe einen LPC1114 und will ein Analogsignal einlesen (1Khz).

>Ich habe 4 AD Eingänge und taste die zur Zeit mit 2 KHz ab.

Was mal schon rein theoretisch absolut an der Grenze liegt, siehe 
Nyquistkriterium.

>Mir reichen leider die 10Bit vom Wandler nicht und das Layout ist
>fertig.

Pech gehabt.

>Man hat mir gesagt das ich irgendwie durch oversampling mit 1-X Bits
>dazu rechnen kann.

Ein Bit mehr braucht jeweil die doppelte Anzahl Messwerte als MINIMUM, 
wenn aussreichend Rauschen auf dem Signal liegt.
#2782821
Lesenswert?

> Insbesondere setzt die Methode ein verrauschtes Signal voraus ...
Das Vorhandene oder Notfalls addierte Rauschen verteilt das Signal über 
einige Treppenstufen der A/D Kennlinie.
Um von 10bit auf 12bit zu kommen muss man dann statt 1 Messung 16 
Messungen mitteln. (Der Überabtastungsfaktor geht quadratisch hoch.)
Kannst du nicht einfach einen pin-kompatiblen 12Bit Wandler einsetzen?
Gast #2783224
Lesenswert?

Das ich Pech habe mit dem internen Wandler ist mir auch klar.
Ursprünglich hätten 8 Bit gereicht, aber wie es nun mal ist, wurden die 
Anforderungen etwas ergänzt.
Und da der LPC1114 keine bessere AD Einheit hat muss ich jetzt halt 
mogeln.

Peter
Gast #2783961
Lesenswert?

Peter schrieb:
> Das ich Pech habe mit dem internen Wandler ist mir auch klar.
> Ursprünglich hätten 8 Bit gereicht, aber wie es nun mal ist, wurden die
> Anforderungen etwas ergänzt.

Ah ja, irgendwelche Schwachköpfe kommen gegen "Spielende" und ändern 
einfach die Regeln...

> Und da der LPC1114 keine bessere AD Einheit hat muss ich jetzt halt
> mogeln.

Also sowas macht mir Angst. Hoffentlich ist das bei Architekten nicht 
auch so: Ach so, sie wollen jetzt 100 statt 50 Stockwerke, na da muss 
ich ein bisschen mogeln.

Die korrekte Lösung ist den Schwachköpfen zu sagen dass eine solche 
Änderung der Anforderungen einen Neustart des Designs nach sich zieht. 
Ja, ja, ich weiss, Theorie und (beschissene) Praxis.

Wieso bezahlen diese Dumpfbacken eigentlich teure Fachleute wenn sie 
dann doch nicht auf die hören?
Gast #2784049
Lesenswert?

...uppps,

Ohne Deine HW zu ändern kannst Du folgende Sachen schon mal beherzigen 
um ein bestmögliches Messergebnis zu erhalten:

Wenn Du ein Signal mit 1kHz Fmax dynamisch abtasten willst sind 2kHz 
Abtastrate deutlich zu wenig. Nyquist 2*f ist da pure Theorie.
Schau was Dein ADC sinnvoll hergibt und taste so schnell wie möglich ab.
Dann durch Oversampling siehe Vorredner den LSB-Quantisierungsfehler 
minimieren um wenigstens wirkliche 10bit zu bekommen.
Falls der uC auf dieser HW das hergibt ggf. versetzt (Interleave) mit 
zwei ADC-Kanälen das Signal abtasten und dann mitteln. Das würde die 
sample rate nochmal verdoppeln. Aber das benötigt wenigstens einen 
HW-Patch, denke ich.
Poste doch mal die Schaltung.


Ansonsten die einschlägigen Oversampling Appnotes der uC-Hersteller mal 
durchlesen und verstehen.

Das zu messende Signal anschauen und überlegen, in welchem Bereich wird 
eine höhere Auflösung gebraucht ? Bei kleinen Signalpegeln evtl. erstmal 
mit hoher Referenzspannung wandeln für den "Grobwert" und dann - wenn 
möglich - die Referenzspannung auf einen kleineren Wert umkonfigurieren 
und nochmal feiner messen. Sollte natürlich schnell genug passieren 
bevor Dein Signal sich verändert, da Du ja wieder zeitversetzt 
abtastest.

Ach ja, und nicht vergessen dem Kunden die Massnahmen transparent 
darzustellen und den Aufwand in Rechnung stellen ;o).

gutt lack, tom.
#2784087
Lesenswert?

Peter schrieb:
> Man hat mir gesagt das ich irgendwie durch oversampling mit 1-X Bits
> dazu rechnen kann.

Vergiß es.

Ohne zusätzliche Hardware kannst Du nicht ein müdes Bit mehr 
rauskitzeln.
Du müßtest ein kleines Dreiecksignal addieren und dazu synchron mehrere 
Wandlungen machen.

Ich hab mal mit nem AVR versucht, eine Anzeige 0..3000V aufzubauen. Dazu 
habe ich 256 Messungen addiert und dann auf 3000 skaliert. Es war gut zu 
sehen, wie die Anzeige 3V-Sprünge gemacht hat, d.h. es blieb bei 10Bit 
Auflösung.
Schlechtere ADCs, die mehr rauschen, mögen zwar Zwischenschritte 
anzeigen, aber die sind auf keinen Fall linear.


Peter
Gast #2784355
Lesenswert?

Die Kosten trägt so wie so immer der Kunde,
auch wenn es in diesem Fall nur ein paar Kumpels sind dehnen ich hier 
was verbessern soll.

Ich habe das Oversampling ausprobiert und es bringt mir nicht den 
gewünschten Erfolg. Linear ist es nicht und leider auch nicht 
wiederholbar. Das mag woanders gehen, aber bei dieser Schaltung ist 
nichts zu machen.

Darum habe ich die alternativen weiter geleitet und nun glaube ich das 
da eine Huckepack Platine gemacht wird mit einem besseren Wandler.
Das sollte dann die sauberste Lösung sein.

Danke,
Peter
#2784367
Lesenswert?

Peter Dannegger schrieb:

> Ich hab mal mit nem AVR versucht, eine Anzeige 0..3000V aufzubauen. Dazu
> habe ich 256 Messungen addiert und dann auf 3000 skaliert. Es war gut zu
> sehen, wie die Anzeige 3V-Sprünge gemacht hat, d.h. es blieb bei 10Bit
> Auflösung.

Das macht trotzdem Sinn. Hättest Du stattdessen einen ICL710x
genommen, dann hättest Du 10V-Sprünge gehabt, obwohl der AD-
Wandler "mehr Bit" hat.
Gruss
Harald
Gast #2785061
Lesenswert?

Ein lpc1315/16/17 würde passen aber dann müssen alle Platinen vom 
lpc1114 erst befreit werden.
Klingt für mich nach die preiswerteste und schnellste Methode.

Und ein Wechsel vom M0 auf einem M3 ist ja auch nicht so schwer.

Werde ich auch weiterleiten.

Peter
Gast #2786517
Lesenswert?

Peter schrieb:
> Ursprünglich hätten 8 Bit gereicht, aber wie es nun mal ist, wurden die
> Anforderungen etwas ergänzt.

Von wem? Kannst dir halt aussuchen, wem du die Platinen vor die Füße 
schmeißt. Ich kenne solche Experten im Chefsessel, die sich nie so 
richtig auskäsen können, was sie denn eigentlich wollen, dafür aber 
jeden Monat ne andere Idee noch zusätzlich eingebaut haben wollen.

Zur Sache: Ich hab selber auch schon mal per Software-Kniff ne 
zusätzliche ADC-Stelle (damals mit nem PIC16Cirgendwass) erfunden: nen 
Tiefpaß an ein Portbein, von dort aus ein R auf den Analogeingang und 
damit eine Art häßlichen Dreieck dem Signal überlagert. Das geht so lala 
für die Optik, also für's Anschauen.

Ansonsten habe ich das Gefühl, daß die Firma Greisinger bei ihren 
Präzisions-PT100-Thermometern mit MSP4xx drin es wohl ähnlich macht. 
Wenn man sich da die 2. Stelle nach dem Komma anschaut, dann benimmt die 
sich auffallend seltsam.

W.S.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren