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.
Du musst ihm mehr Zeit geben zwischen der Umschaltung der Kanäle. Sonst hat die Sample & hold noch restspannug vom vorherigen kanal
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 €
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?
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.