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 €
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 ;-)
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.
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.
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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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!
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.
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.
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.
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
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.
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
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.