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
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
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.
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
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
Peter schrieb:> Ist schon blöd wenn man nachträglich erst merkt das die Auflösung nicht> reicht.
die Frage ist ob der Rest überhaupt für 12bit reicht. Du brauchst auch
eine Passende Referenzspannugnsquelle.
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.
@ Peter II (Gast)
>> Ist schon blöd wenn man nachträglich erst merkt das die Auflösung nicht>> reicht.>die Frage ist ob der Rest überhaupt für 12bit reicht. Du brauchst auch>eine Passende Referenzspannugnsquelle.
Nö, für 12 Bit AUFLÖSUNG tut es jede bliebig schlechte Referenzspannung.
Von GENAUIGKEIT ist hier keine Rede. Siehe
Auflösung und Genauigkeit.
@ 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.
> 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?
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
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?
...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.
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
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
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
@ Falk Brunner (falk)
>Was mal schon rein theoretisch absolut an der Grenze liegt, siehe>Nyquistkriterium.
Ich denke Du meinst den Shannon. Nyquist kommt von der Regelungstechnik.
guude
ts
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
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.