Forum: Mikrocontroller und Digitale Elektronik ADC-Differential-Messung


von Hermann W. (hermannw)


Angehängte Dateien:

Lesenswert?

Meinem uralt selbst gewickelten Stell-Trenn-Trafo mit zusätzlichem 
Gleichspannungsausgang fehlte eine Spannungs- und Stromanzeige. Die habe 
ich nun mit einem Tiny861 nachgerüstet. Die Strommessung wollte ich 
direkt mit der Differential-Messung und der internen Verstärkung machen 
(siehe Bild 1).
Die Messung wird in einer Loop zur Mittelwertbildung gemacht. Dabei 
werden 3 Single-Messungen für 2 Spg-Bereiche und einer Temperatur und 2 
Differential-Messungen mit V=32 und V=8 für den Strom gemacht.

Beim Umschalten auf Differential gibt es Probleme. Die erste Wandlung 
liefert Null. Erst nach 2 oder 3 Dummy-Wandlungen bekomme ich brauchbare 
Ergebnisse, es geht auch ein Wait-Statement nach Setzen des MUX. Im 
Manual habe ich dazu nichts gefunden. Gibt es dafür Erkärungen? Evtl. 
Umladen interner Kapazitäten?
Ich denke, dass ich keine grundsätzlichen Fehler mache:
ADC-Frequenz von 125kHz
Loop mit:
1. Setzen von ADCSRB und ADMUX
2. Wartezeit von z.B. 500µs
3. Wandlung starten mit ADSC=1
4. Warten auf ADSC=0
5. Ergebnis abholen
Ist die erforderliche Wartezeit normal und wie groß sollte sie sein? 
Gibt es dafür Erklärungen?

von MCUA (Gast)


Lesenswert?

Sind die 100uF über dem 4k7-R nicht zu viel?

von Hermann W. (hermannw)


Lesenswert?

Die Zeitkonstante von 470ms soll den 100Hz-Stromripple glätten. Schnell 
muss die Anzeige nicht sein, aber einigermaßen stabil.

von Hermann W. (hermannw)


Angehängte Dateien:

Lesenswert?

Einen offensichtlichen Grund für die erforderliche Wartezeit scheint es 
wohl nicht zu geben. Das muss man dann wohl einfach ausprobieren.

Ich habe noch ergänzende Untersuchungen zur Differential-Messung 
gemacht. Insbesondere interessierte mich die Linearität. Dazu habe ich 
den ganzen Messbereich durchgemessen. Ich musste auch ohne Wechsel 
zwischen Single und Differential eine Wartezeit zwischen den Messungen 
vorsehen - jedenfalls wurde die Messung damit viel stabiler. Im 
einzelnen:
- 125kHz ADC-Takt
- Vref=1,085V, Verstärkung *32, also 34mV Vollausschlag
- Offset von +1,3 Rohwerten
- 500µs Wartezeit
- Mittelwert aus 100 Messungen
Die blaue Kurve zeigt den absoluten Fehler in mV mit der linken Achse. 
Man sieht eine Überhöhung bei 900 Rohwerten und dann ein Abdriften ins 
negative bei über 1000 Rohwerten. Die gestrichelten roten Linien 
markieren +-1 Rohwert.
Trägt man den relativen Fehler bezogen auf den Messwert auf (gelbe 
Linie, rechter Maßstab), sieht das nicht ganz so dramatisch aus. Im 
mittleren Bereich sind die %-Abweichungen fast Null. Erst bei 100 und 
950 Rohwerten tritt der maximale Fehler von ca. 0,5% auf. Rohwerte unter 
20 und über 1010 sollte man meiden. Je nach Genauigkeitsanforderung muss 
man sich also im mittleren Bereich bewegen.
Die auffälligen symmetrischen Abweichungen bei 100 und 950 Rohwerten 
deuten darauf hin, dass die Kennlinie im ADC-Verstärker im Randbereich 
etwas hingebogen wurde, was dann im Grenzbereich nicht mehr ausreicht.

von HermannW (Gast)


Lesenswert?

Ich habe auch mal eine Differential-Messung mit T861 für eine direkte 
Strommessung gemacht. Dabei habe ich auch festgestellt dass die erste 
Messung nach dem Umschalten den Wert 0 liefern. Es funktioniert nur mit 
mehreren Dummy-Messungen oder mit einer Wartezeit nach dem Setzen des 
Mux. Seltsamerweise ist eine Wartezeit auch bei jeder 
Differential-Messung ohne Umschaltung nötig. Erst dann sind die 
Messwerte stabil.
Ich hatte das schon mal hier beschrieben:
Beitrag "ADC-Differential-Messung"
Vielleicht hilft es auch, den ADC-Takt niedriger zu wählen. Ich werde 
die Messung noch mit dem T85 wiederholen, da wird wohl nichts anderes 
heraus kommen.

von HermannW (Gast)


Lesenswert?

Sorry, bin im falschen Threat gelandet.

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.