Forum: Mikrocontroller und Digitale Elektronik ATXMega mit 16 ADC, Genauigkeit


von Holler (Gast)


Lesenswert?

Guten Abend,

vielleicht kann mir einen einnen Tipp zur Auswahl eines Controllers oder 
zur Not eines externen ADC geben. Der uC sollte ein Atmel sein, da ich 
die Teile halbwegs kenne.

Die Anforderung: brauche zur Abtastung von Wechselspannungssignalen mit 
Netzfrequenz mindestens 16 ADC-Kanäle. Habe das vor zwei Jahren schon 
mal im kleineren Maßstab mit einem Atxmega für 10 Kanäle hinbekommen, 
prinzipiel ist der XMega sowohl von den ADCs als auch von der Rechenkapa 
voll ausreichend. Stabilität des ADC-Ergebnis war grenzwertig.
Die Offsetprobleme des ADC spielen keine Rolle, halt Wechselspannung.
Genaus solls aber schon sein. Für die SW sollten 64k locker reichen, 
sonst keine Anforderungen.

Würde die gern bei Reichelt kaufen. Die bieten A1, A3 und einen A3B an: 
ist das ein Buxfix-Release? Besserer ADC? Welchen würdet ihr nehmen?

ATxmega128A1  ATXMEGA 128A3
TQFP-100      TQFP-64
136 kByte     136 kByte
7,25 €        10,95 €


ATxmega256A3  ATXMEGA 256A3B
TQFP-64       TQFP-64
264 kByte     264 kByte
12,30 €       8,50 €


ATXMEGA 64A1
TQFP-100
68 kByte
7,75 €

von Wolfgang (Gast)


Lesenswert?

Holler schrieb:
> Stabilität des ADC-Ergebnis war grenzwertig.

Wenn du mit "Stabilität" die Schwankung der Wandlungsergebnisses auf 
Grund von Störungen meinst, bist du mit einem externen ADC sicher besser 
bedient. Oder du hast dem Multiplexer nicht genug Zeit gegeben ;-)

von Holler (Gast)


Lesenswert?

Genug Zeit hat sich der ADC genommen, wurde im Interrupt ausgelesen.
Ein wenig Mitteln wäre schon möglich, der ADC ist ja wirklich sehr 
schnell.

Gibts Unterschiede bezüglich Stabilität des ADC-Ergebnis bei den 
verschiedenen Versionen? Die A3B werden schon wieder duch die 
U-Versionen abgelöst, sagt das Datenblatt.

von Wolfgang (Gast)


Lesenswert?

Holler schrieb:
> Genug Zeit hat sich der ADC genommen

Es geht dabei nicht um die Zeit, die der ADC für die Wandlung braucht, 
sondern um die Zeit, die zwischen Kanalumschaltung und Sampling liegt. 
Wenn die nicht ausreichend ist, bekommt man ein Übersprechen zwischen 
den Kanälen und wenn man das bei der Auswertung nicht berücksichtigt, 
können die Werte auf dem nächsten Kanal instabil aussehen.

von Timmo H. (masterfx)


Lesenswert?

Du musst ihm mehr Zeit geben zwischen der Umschaltung der Kanäle. Sonst 
hat die Sample & hold noch restspannug vom vorherigen kanal

von Martin (Gast)


Lesenswert?

Keinen von denen. Nehme die korrigierten Versionen. Sprich atxmega128u 
atxmega128a3u usw. Da sind die gröbsten Errata behoben

 Welchen würdet ihr nehmen?
>
> ATxmega128A1  ATXMEGA 128A3
> TQFP-100      TQFP-64
> 136 kByte     136 kByte     7,25 €        10,95 €
>
> ATxmega256A3  ATXMEGA 256A3B
> TQFP-64       TQFP-64
> 264 kByte     264 kByte
> 12,30 €       8,50 €
>
> ATXMEGA 64A1
> TQFP-100
> 68 kByte
> 7,75 €

von Mitlesa (Gast)


Lesenswert?

Holler schrieb:
> vielleicht kann mir einen einnen Tipp zur Auswahl eines Controllers oder
> zur Not eines externen ADC geben.

Ich empfehle mal "zur Not" den AD7490.

von Holler (Gast)


Lesenswert?

Vielen Dank für die Antworten!
Der AD7490 ist auf alle Fälle eine Überlegung wert, bekommt man nur 
nicht an jeder Ecke. In der Bucht gibts Angebote von rund 10€ plus 
happigen Versandkosten.

An eine Wartezeit wegen Restspannung beim Umschalten des MUX habe ich 
nicht gedacht. Nutzte bei meinem "Prototyp" einen XMega16A4A, den ADC 
habe ich mit Treibern des ASF (Atmel Software Framework) nach folgendem 
Schema bedient:

- Warten auf ADC Interrupt
Im Interrupt:
- ADC-Wert Zwischenspeichern zur Verarbeitung
- MUX weiterschalten
- nächste Konvertierung starten

Ging davon aus, dass das ASF schon die richtigen Schutzzeiten einhält.
Habe die max Taktfrequenz des ADC nicht ausgenutzt, bin deutlich 
drunter.
Wie lang muss man warten zwischen Umschalten des MUX und ADC-Start? 
Einige Takte oder eine bestimmte Zeit?
Real bekam ich mit dem 16A4A etwa 10Bit Auflösung, 12Bit wären schon 
toll.

Die Bugs der A-Versionen haben mich bisher nicht gestört, waren wohl für 
meine Anwendung irrelevant. Nur die ADC-Stabilität ist ein Ärgernis. 
Oder ein Bedienfehler?
Frage mich, ob man mit einer U-Variante da bessere Resultate erzielt.

von Karl H. (kbuchegg)


Lesenswert?

Holler schrieb:

> Wie lang muss man warten zwischen Umschalten des MUX und ADC-Start?

Das ist schwer zu sagen. Das hängt auch von der Aussenbeschaltung ab.

Im inneren des ADC ist eine sog. Sample&Hold Stufe. Man kann sich das 
als einen Kondensator vorstellen, der von der zu messenden Spannung auf 
den jewiligen Spannungspegel geladen werden muss. Den Kondensator 
benötigt man, damit während der eigentlichen Messung die Spannung 
konstant gehalten wird, egal was am Eingang passiert.
Der Kondensator fungiert allerdings auch mit allen davor liegenden 
Widerständen als RC-Glied, welches sich einer Spannungsänderung 
'widersetzt'.

> meine Anwendung irrelevant. Nur die ADC-Stabilität ist ein Ärgernis.

Bei 12 Bit kommst du allerdings auch schön langsam in den Bereich, in 
dem die Qualität der Aussenbeschaltung bzw. der Stabilität der 
Referenzspannung erhöhte Aufmerksamkeit zu schenken ist.

> Die Anforderung: brauche zur Abtastung von Wechselspannungssignalen mit 
Netzfrequenz

50Hz ist ja jetzt nicht die Welt. Was machst du mit den Werten weiter? 
Wie genau muss denn die Zeitauflösung wirklich sein?

: Bearbeitet durch User
von Holler (Gast)


Angehängte Dateien:

Lesenswert?

Messe damit Spannungen von Stromwandlern, die anschließend mit einer 
Sinustabelle multipliziert werden. Möchte damit Leistungen von 1W bis 
3,5kW erfassen, deshalb 12Bit. Die Geschwindigkeit des ADC spielt kaum 
eine Rolle, aber der exakte zeitliche Bezug des Sample/Hold. Kann 
deshalb warten, muss nur wissen wie lange?
Nur die Wirkleistung ist zu messen. Abschätzung Zeitbezug 10ms/4000 
entsprechend 2,5us.

Nutze die interne Referenz. Die AVCC des uC hängt über einen LC-Tiefpass 
an der Versorgung, die 100n Block-Cs habe ich auch so dicht wie möglich 
am Chip plaziert (0603).

Zur Eingangsbeschaltung siehe Bild. An den X1-Klemmen hängt eine Seite 
der Stromwandlerspule, die andere Seite geht auf eine gut geblockte 0,5V 
Quelle.

Speist man alle Eingänge aus einer Quelle und schreibt man die 
Ergebnisse aller Kanäle nebeneinander in eine Tabelle sieht man das 
Problem, selbst wenn man einen ordentlichen SW-Tiefpass drüber legt.
Offsets spielen keine Rolle, mitteln sich raus.

von Lurchi (Gast)


Lesenswert?

Wenn man wirklich die Wirkleistung braucht, sollte man auch die Spannung 
digitalisieren und den tatsächlichen Spannungswert nutzen. Die 
Netzspannung ist kein so wirklich guter Sinus.

Wegen des großen Messbereichs wäre ggf. eine Umschaltung der Verstärkung 
für den Strom sinnvoll, sonst liegt man bei kleiner Leistung ggf. schon 
im Bereich des Quatisierungsrauschens und spürt DNL Fehler des ADCs. 
Alternativ halt ein externer ADC mit mehr Auflösung (z.B. MCP3912 - die 
sind genau für so etwas wie Leistungsmessung gedacht)

Vom ADC her sollten sich die genannten Xmegas nichts nehmen.

Bei hohen Ansprüchen an die Stabilität sollte man eher eine externe 
Referenz nehmen, und wenn es nur ein TL431 ist.

von M. K. (sylaina)


Lesenswert?

Holler schrieb:
> Stabilität des ADC-Ergebnis war grenzwertig.

Wie schaut denn deine Referenzquelle aus? Und 12 bit, das ist schon ein 
Ding. Die Instabilität der Widerstände, die an den ADC-Kanälen hängen, 
kann man damit schon gut sichtbar machen ;)
Wie instabil ist es denn? Du sagst bei 10 bit ist es OK, 12 bit gehen 
weniger. Mit 10 bit siehst du schon Änderungen von ~0.1% (da reichts 
schon auf einen Spannungsteiler mit Widerständen den Finger auf einen 
Widerstand zu halten), bei 12 bit sind es dann schon ~0,025%. Da muss 
auch deine externe Beschaltung die entsprechende Stabilität bringen.

von Holler (Gast)


Lesenswert?

Lurchi schrieb:
> Wenn man wirklich die Wirkleistung braucht, sollte man auch die Spannung
> digitalisieren und den tatsächlichen Spannungswert nutzen. Die
> Netzspannung ist kein so wirklich guter Sinus.

Ja, habe ich auch vor, deshalb brauche ich mehr Kanäle. Die 
beschriebenen Effekte erzielte ich mit einem "Prototyp" um zu sehen wo 
die Schwächen sind.

Der MCP3912 ist interessant, hat aber nur 4 Kanäle. Brauche dann vier 
Stück. Die 24Bit (wirklich???) wären deutlich überdimmensioniert. Mal 
schauen ob ich das alles ins Hutschienengehäuse bekäme.

Zur Referenz: wie beschrieben, nutze die Interne. Wenn die eine gewisse 
Abweichung hätte ist das egal (wegen Abgleich), nur "wackeln" darf die 
nicht.

Die ganze Eingangsbeschaltung ist extrem niederohmig, sieht man am 
Schaltungsausschnitt. 220 Ohm + 220 Ohm, der Stromwandler hat < 10 Ohm. 
Denke das ist recht unempfindlich gegen Störungen.

von Holler (Gast)


Lesenswert?

Wollte mich nochmal für die vielen sinnvollen Tipps und 
Alternativvorschläge bedanken!

Werde mal in Ruhe drüber nachdenken und die Datenblätter der externen 
ADCs anschauen um im nächsten Entwurf stabilere Ergebnisse (Genauigkeit) 
zu erzielen.

von Wolfgang (Gast)


Lesenswert?

Holler schrieb:
> An eine Wartezeit wegen Restspannung beim Umschalten des MUX habe ich
> nicht gedacht.

Holler schrieb:
> Zur Eingangsbeschaltung siehe Bild.

Deiner Quelle verpaßt du eine Ausgangsimpedanz von mehr als 220Ω. Damit 
du darüber den Mux nach Kanalumschalten auch im worst-case auf deutlich 
besser als 1 LSB bei 12-Bit Auflösung umgeladen bekommst, musst du ihm 
schon etwas Zeit geben. Ein Kondensator direkt am Mux-Eingang wäre da 
wesentlich günstiger.

von M. K. (sylaina)


Lesenswert?

Holler schrieb:
> Zur Referenz: wie beschrieben, nutze die Interne. Wenn die eine gewisse
> Abweichung hätte ist das egal (wegen Abgleich), nur "wackeln" darf die
> nicht.

Die ist ausreichend für 12 bit, sollte also nicht das Problem sein. Ich 
denke, es liegt wirklich entweder am Umschalten der Kanäle und/oder an 
den Widerständen. Schau mal, wenn die Widerstände z.B. ±100 ppm/K hätten 
(was ja schon recht gut ist) dann dürfen die um 0,01% schwanken pro K 
Temperaturänderung. Da bist du quasi schon drin im LSB der 12 bit.

von Veit D. (devil-elec)


Lesenswert?

Hallo,

der MCP3912 ist für 3,3V Ub gedacht.
Ich habe schon Erfahrung mit dem MCP3428 gesammelt. 5V Ub.
Mit I2C kannste davon 4 an den Bus hängen.
4 Kanal,
12 - 16 Bit Auflösung einstellbar,
2,048mV Referenz an Board,

Falls nötig noch eine externe Ref.Spannung von TI REF50x0

Ich habs aber bisher nur geschafft ein 
Eingangsspannung-Differenz-Bereich von (-Ch) +/- die 2,048V zu messen. 
Weis nicht ob man die interne REF abschalten kann. Ich habe zum Bsp. an 
den (-Ch) Eingängen eine REF5025 und kann damit von 452mV bis 4548mV 
messen.

: Bearbeitet durch User
von M. K. (sylaina)


Lesenswert?

Grade gelesen:

Holler schrieb:
> Abschätzung Zeitbezug 10ms/4000
> entsprechend 2,5us.

Und das ist ein Problem: 12 bit brauchen mindestens 3.5 us, 2.5 us gehen 
nur mit 8 bit, das steht auch im Datenblatt des ATXMega128A1.

von Holler (Gast)


Lesenswert?

Michael K. schrieb:
> Und das ist ein Problem: 12 bit brauchen mindestens 3.5 us, 2.5 us gehen
> nur mit 8 bit, das steht auch im Datenblatt des ATXMega128A1.

Ich verstehe Sample & Hold so, dass sich während der Konvertierung die 
Spannung am Eingang durchaus ändern darf. Muss halt nur auf 2,5us genau 
abtasten können.

Die Microchip-ADC schaue ich mir auf jeden Fall genau an, die gibts auch 
bei Reichelt zum angemessenen Preis.

Der ADC-Spannungsbereich ist bei mir ziemlich unkritisch, läßt sich mit 
dem Shunt am Stromwandler verändern.

Als erstes werde ich aber Schutzzeiten am MUX des ADC im XMega einbauen, 
mal sehen was das bringt.

von Holler (Gast)


Lesenswert?

Nochwas zur Eingangsbeschaltung: habe damit natürlich viel 
experimentiert, sieht man auch an den nachträglich eingezeichneten Cs. 
Die Kondensatoren haben eine geringe Verbesserung gebracht. Die 
Widerstände habe ich auch variert, ohne deutliches Ergebnis.
Weglassen will ich die auf keinen Fall, falls jemand im Stromnetz einen 
Kurzschluß baut dürften enorme Spannungsspitzen entstehen und das muß 
das Gerät abkönnen.

Wünsche noch einen schönen, sonnigen Novembersonntag!

von Wolfgang (Gast)


Lesenswert?

Holler schrieb:
> Die Kondensatoren haben eine geringe Verbesserung gebracht.

Die verringern die Impedanz der Eingangssignale dynamisch auf 220Ω 
(gegenüber vorher >440Ω). Wenn Mux bzw. S/H schnell mal etwas Ladung 
brauchen, kommt es aber immer noch zu einem Spannungsabfall am 220Ω 
Widerstand entsteht. Du hast direkt am Eingang keine Cs und eine 
vergleichsweise hohe Quellimpedanz.

von Lurchi (Gast)


Lesenswert?

Der Schalter um MUX / S&H wird auch einiges an Widerstand haben - 
vermutlich so im kOhm Bereich. Da machen 440 Ohm mehr oder weniger von 
der Quelle nicht so viel aus.

Für ein stabiles Ergebnis bei der Leistungs / RMS berechnung sollte man 
darauf achten, dass die Zeit für die Mittelung ein vielfaches der 
Netzperiode oder halt wirklich lang ist. Die Frage ist was man für 
Anforderungen an die Stabilität hat, bzw. wie groß die Schwankungen bis 
jetzt sind.

Der Wandler ist zwar 12 Bit, aber man nutzt bei kleinem Strom nur einen 
begrenzten Wertebereich aus. Dafür hat man aber auch ziehmliches 
Oversampling weil wohl recht viele ADC Werte in eine Leistungsmessung 
einfließen. Nach meiner Erfahrung mit RMS Werten in Software bekommte 
man da bei nicht zu kleinen Amplituden auch deutlich mehr als 12 Bit 
Auflösung. Zu kleinen Werten wird es dann schlechter.

Die Anforderungen an die Eingangsschaltung, Referenz usw. richten sich 
nach der benötigten Genauigkeit / Auflösung - nicht nach der Auflösung 
des ADC. Mehr Auflösung vom ADC ist ggf. nur eine Alternative zur 
Bereichsumschaltung.

Die MCP391x Wandler sind zwar als 24 Bit angegben, aber vom Rauschen / 
Linearität usw. hat man etwa die Performace eines guten 16 Bit ADCs.
Da der AVR mit dem Rechnen kaum so schnell ist viel mehr als 4 Kanäle 
(Spannung oder Strom) zu verarbeiten, könnte man ggf. externe 
Multiplexer nutzen und dann nacheinander messen.

Es gibt auch noch Chips spezielle für Stromzähler - z.B. ADE775? . Die 
sind auch nícht so teuer und machen die Berechnung auch gleich mit.

von Holler (Gast)


Lesenswert?

Danke für die ausführliche Antwort.
Ähnliche Überlegungen bezüglich des Oversampling stellte ich auch schon 
an.
Die ADC des XMega sind dermaßen schnell, dass mit meinem 12-Kanal 
Konzept-Design rund 500 Samples pro Kanal und pro Sekunde schaffe.

Daraus wird der Momentanwert im Sekundenraster zusammengesetzt.
Die eigentlichen Messungen werden im Stundentakt vorgenommen, als 
Summenwert aller Sekunden-Mittelwerte. Das ist schon ein enormes 
Oversampling. Verwende 32Bit Integer, der Summenzähler hat 64Bit.

Bei der ganzen Rechnerrei kann natürlich einiges Schiefgehen, auch 
systematische Fehler wie die begrenzte zeitliche Bestimmung der 
Abtastung oder die Auflösung der Sinus-Lookup-Table.
Letztere ist eh nur eine Krücke für den Konzept-Aufbau, wollte 
eigentlich die Spannung über einen kleinen, separaten Trafo netzgetrennt 
mit einem Kanal abtasten: ist völliger Unsinn, der Trafo verzerrt 
extrem. Muss wohl galvanisch ans Netz, ist leider unvermeidlich.

Die zeitlichen Fehlerquellen würde man mit dem Einsatz der Microchip-ADC 
völlig umgehen, da die Kanäle synchron laufen.

Ich wollte eine Genauigkeit und Auflösung von 1W erreichen. Das habe ich 
nicht geschafft, so ab 4W bekomme ich verlässliche Ergebnisse. Damit 
meine ich, dass alle Kanäle mit dieser Last versehen in etwa das gleiche 
anzeigen.
Ein Smartphone-Lader wird gerade sicher erkannt und gemessen, ein 
älterer Handy-Lader nicht, braucht zu wenig Strom, vielleicht liefert 
der ADC nur Rauschen oder ein übersehener systematischer Fehler 
verhindert bessere Auflösung.

Nach oben hin ist die Sache klar: habe so viel ohmsche Last 
zusammengeschaltet wie die 16A Sicherung verträgt und dann die Shunts 
auf etwa 80% Aussteuerbereich ADC dimensioniert.
Auf einen Bereichsumschalter wollte ich verzichten, bringt wieder 
Ungenauigkeit ins System.

von Dietrich L. (dietrichl)


Lesenswert?

Ich habe jetzt nicht alles durchgelesen und vielleicht wurde darauf ja 
schon hingewiesen:
Wie gut ist das Layout für eine stabile Analogmessung ausgelegt, z.B.:
- Ist der Analogbereich vom Digitalbereich räumlich getrennt?
- Ist der GND für den Analogteil und der GND vom Digitalteil getrennt 
geführt bzw. gibt es einen ordentlichen GND-Layer?
- Ist AVCC ordentlich gefiltert?

Gruß Dietrich

von Holler (Gast)


Lesenswert?

Dietrich L. schrieb:
> - Ist der Analogbereich vom Digitalbereich räumlich getrennt?
So gut es eben ging, ist nicht perfekt.
> - Ist der GND für den Analogteil und der GND vom Digitalteil getrennt
nein. Der uC bietet allerdings auch kein A-GND.
> geführt bzw. gibt es einen ordentlichen GND-Layer?
nein, ist nur ein 2-Layer.
> - Ist AVCC ordentlich gefiltert?
ja, würde sagen optimal, mit LC und dichtes möglicher C-Platzierung.

von Frank K. (fchk)


Lesenswert?

Du könntest auch für jeden zu messenden Stromkreis einen CS5490 
verwenden. Klein, SO16, UART-Schnittstelle, intelligent. Anschließend 
kannst Du mit ADuM1201 galvanisch trennen.

fchk

: Bearbeitet durch User
von Lurchi (Gast)


Lesenswert?

Kleine Trafos (vor allem < 5 VA)  erzuegen bei der Spannung deutliche 
Verzerrungen, denn man hat einen nicht mehr zu vernachlässigenden 
Ohmschen Widerstand der Windungen und werden oft bis relativ dicht zur 
Sättigung betreiben. Wenn man die Wahl hat wäre so etwas wie ein 10 VA 
(besser größer) Trafo für 400 V Primärspannung passend.

Der ADC Wertebereich reicht ggf. für den großen Wertebereich nicht aus. 
Durch das Vorzeichen verliert man schon mal 1 Bit der Auflösung. Da ist 
der Strom bei 1 W Verbrauch schon unter einem LSB Schritt. Entsprechend 
ist man auf genügend Rauschen angewiesen damit das Oversampling auch 
funktioniert. Auch wenn es kleine extra Fehler erzeugt dürfte eine 
Umschaltbare Verstärkung da mehr helfen als Schaden.

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.