True RMS Messung mit uC

Hallo!

Vor ein paar Wochen bat ich euch schonmal um eure Meinung zu diesem 12 Kanal Dimmer:

formatting link
formatting link
Mittlerweile läuft das Teil.

Nun würde ich in der nächsten Version gerne nur 8 anstatt 12 Kanäle verwenden aber dafür für jeden Kanal eine (möglichst genaue) Strommessung realisieren. Aufgrund des Phasenanschnitts und der mehr oder weniger unbekannten Last ist wohl eine True RMS Messung nötig. Ich dachte zunächst daran das ganze mit einem AD736

formatting link
zu lösen. Jeder der 8 Kanäle wird der Reihe nach per 4051 auf dessen Eingang geschaltet und das Ergebnis dann per AD Wandler digitalisiert. Wenn ich das Datenblatt vom AD736 auf Seite 9 richtig interpretiere würde er für die Messung eines Kanals (SCR Wave) über eine Sekunde benötigen und selbst dann ist der Fehler noch etwa 1%.

Nun kam mir der Gedanke das ganze direkt mit dem AVR zu machen. D.h. die Messwerte der Kanäle werden vom 4051 direkt auf den AD Wandler gelegt. Den tiny2313 würde ich gegen einen mega48 austauschen, der geht ebenfalls bis 20MHz und besitzt einen Hardware-Multiplyer und ein paar mehr Pins brauche ich sowiso noch... Die Berechnung würde ich mir dann so vorstellen: Alle 10us wird in einem Timerinterrupt (bereits für den Phasenanschnitt vorhanden) ein neues Sample vom AD Wandler eingelesen, quadriert und den vorherigen quadrierten Samples aufaddiert. Das ganze passiert dann für ein paar Halbwellen (Start und Ende der Messung kann ich ja durch die Nulldurchgangserkennung passend wählen). Danach wird die Summe durch die Anzahl der Samples geteilt (also etwa Halbwellen * 1000) und die Wurzel daraus berechnet. Damit müsste ja die RMS Formel " û = sqrt( S u(t)^2 dt ) " erfüllt sein.

Von der Rechenleistung müsste der AVR das bei 20 MHz mit 16 Bit Eingangswerten noch schaffen, allerdings habe ich keine Ahnung, ob das ganze 1. überhaupt so funktioniert und 2. wenn ja, wie genau das Messergebnis dann ungefähr ist, z.B. wenn ich einen 12 Bit AD Wandler verwende und über 6 Halbwellen messe. Das wären dann ja 6000 Samples, bedeutet das, dass die 12 Bit Auflösung des Wandlers etwa erhalten bleibt, also das Ergebnis auch auf 12 Bit genau angenommen werden kann?

Wäre super, wenn mit das jemand kurz erklären könnte.

Viele Dank, Michael

Reply to
Michael Dreschmann
Loading thread data ...

"Michael Dreschmann" schrieb im Newsbeitrag news: snipped-for-privacy@news.rhein-zeitung.de...

Du musst Spannung und Strom an der Last zum genau gleichen Zeitpunkt messen, sonst kommt so ein Murks raus wie bei taiwanesischen Leistungsmessern. Wenn du nur einen A/D-Wandler hast, muss das andere Signal so lange in einem Sample&Hold zwischengespeichert werden. Wenn du sowieso Analogschalter per uC steuerst, kann damit der Sample&Hold gleich erledigt werden, einfach den 1:8 Strom-MUX zum gleichen Zeitpunkt wie den 1:8 Volt-MUX abschalten, und bei beiden am Ausgang die Spannung in einem Kondenstaor puffern und dann erst den einen in Ruhe, dann den anderen Kondensator per A/D-Wandler messen (noch ein 1:2 MUX). Damit 12 bit erreicht werden, muss es ein besserer MUX sein als ein 405x. Wiwe viele Wanldungen du pro Sekunde schaffst, ist egal, Hauptsache unsnchron zur Netzfrequenz. Je schneller du die Kanaele misst, um so schnller stellen sich korrekte Messwerte ein.

12 bit erlaubt einen Messbereich von 8A bis 2mA, wobei es unter 100mA und damit 23 Watt grausam ungenau wird. Eine Bereichsumschaltung ist nicht unbedingt unklug (wenn
Reply to
MaWin

Hallo MaWin,

danke für die schnelle Antwort.

Soweit bin ich noch gar nicht... Erstmal wollte ich nur den Effektivwert des Stromes messen, da dieser ja auch entscheidend für Leitungs- und Sicherungsbelastungen ist. Aber ich habe auch schon an eine (Wirk)Leistungsmessung gedacht. Dabei war mein Gedanke, dass ich ja den Zündzeitpunkt und die Position innerhalb der Halbwelle kenne (vom Phasenanschnittsteil der Software). D.h. ich könnte sobald der Triac des Kanals gezündet ist die Spannung an der Last mit k*sin(Pos_in_der_Halbwelle) simulieren. Mit dem Parameter k und der Netzspannung, die in einem anderen Teil des Gerätes gemessen wird, müsste ich doch dann die Leistung berechnen können. So wie ich das bei Wikipedia sehe gilt für die Effektivleistung:

P = 1/T S U(t) * I(t) dt Also mit den Samples: P = 1/n_sample * Summe_über_n_samples( U(t) * I(t) )

(Das ganze soll einen etwas leistungsstärkeren Dimmer geben) Aber wie gesagt, darum soll es jetzt erstmal noch nicht gehen, ich weiss auch nicht, wie man diesen Sinus geschickt berechnen könnte.

Das führt mich zum nächsten Problem: Jeder Kanal soll mit max. 16A belastbar sein (natürlich dann mit etwas grösseren Triacs) und ich fände einen Messbereich von 0 bis 20A schön. Dazu ist es natürlich günstig, wenn der Messwiderstand (zwischen Triac und Lastversorgung (= +5V im Schaltplan oben)) möglichst klein ist. Bei Conrad gäbe es z.B. 4W Widerstände mit 0.01 Ohm (416703). Bei 20A würden also genau 4W abfallen. Die +-5% Toleranz sind, wenn ich das richtig sehe, kein Problem da der Faktor R bei der Effektivwertbildung keine Rolle spielt und im Endergebnis genauso als Faktor R eingeht. D.h. durch einmaliges, genaues Ausmessen jedes Kanals könnte man entsprechende Korrekturfaktoren ermitteln. An dem 0.01 Ohm Widerstand würden dann zwischen 0 und +-200mV abfallen. Ich dachte mir direkt diese Spannung mit dem Multiplexer auf einen OPV zu geben, der sie dann auf 0-5V für den AD Wandler übersetzt. Ich weiss allerdings nicht, ob es überhaupt einen Muxer gibt, der dafür geeignet ist oder ob man ein wesentlich besseres Ergebnis bekommt, wenn man pro Kanal einen OPV spendiert und erst danach multiplext. Ausserdem gibt's ja dann noch das Problem mit der Bezugsmasse der Messschaltung, denn darüber fliesst ja auch der Laststrom von mehreren Kanälen. Daher dachte ich wäre eine Vierpunktmessung vielleicht nicht schlecht, also von den Enden jedes Widerstands aus zwei Leitungen zum OPV der dann entsprechend als Differenzverstärker geschaltet ist. Was meint ihr dazu? Ich hatte bis jetzt noch nichts mit so geringen Spannungen zu tun, daher fehlt mir etwas die Vorstellung wie kritisch das ist.

Unsynchron ist gegeben, der Interrupttimer wird nicht von einem Nulldurchgang der Netzspannung beeinflusst.

Warum genau wird es da ungenau? Wegen Quantisierungsfehlern des AD Wandlers oder weil die Messspannung zu klein wird?

Reply to
Michael Dreschmann

Schau Dir doch mal die Analog Devices " Energy Measurement" Bausteine an...

--
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Reply to
Uwe Bonnes

MaWinschrieb: "

[...]
Reply to
Dirk Ruth

Hallo,

In der nächsten Version will ich dafür auch den analog Komparator benutzen.

Alle 10us wird geschaut, ob ein Triac gezündet werden muss. Das stimmt auch mit dem Bild auf dem Oszi überein. Wenn ich den 8 Bit Anschnittsollwert um eine Stufe verändere ist der Sprung deutlich grösser als der Jitter, ungefähr vier mal so gross. Und das kommt so wie ich das sehe auch ungefähr hin, denn 8 Bit erlauben bei 100Hz Halbwellenfrequenz ja eine Auflösung von ungefähr 40us.

Durchschnittswertes

Ja, aber wie mach ich das? Hätte ich dann bei 1000 Samples pro Halbwelle ungefähr eine 10 Bit genauigkeit wenn der Wandler etwas mehr kann oder wie berechnet sich das?

Ja, wie gesagt, dass soll mal der Komparator machen, aber scheinbar funktioniert es zumindest bei meinem Testexemplar ganz gut.

Ich bin eigentlich auch nicht davon ausgegangen, dass am Ende 12 Bit rauskommen, dachte aber wenn das gesampelte Signal schonmal halbwegs genau ist, schadet das dem Ergebnis sicherlich nicht. 10 Bit wären als Ergebnis z.B. auch schon toll. Aber so wie ich das sehe scheint die Grundidee das ganze digital zu machen ja zu funktionieren, wie lange man für wie genau messen muss wird sich dann ja zeigen. Bleibt also "nur noch" das Mess signal möglichst sauber an den Wandler zu bringen...

Vielen Dank, Michael

Reply to
Michael Dreschmann

Hallo,

Danke für den Tipp, behalte ich mal im Hinterkopf, aber ich glaube ich mag das jetzt mal selber bauen...

Michael

Reply to
Michael Dreschmann

Am Fri, 23 Sep 2005 00:36:41 GMT schrieb Michael Dreschmann :

Wenn es halbwegs genau werden soll, musst du sie messen, nicht simulieren oder berechnen. Die Netzspannung ist im allgemeinen nicht sinusförmig. Einmal im Büro (am Trenntrafo) gemessen, war sie eher Trapezförmig, also im Bereich des Scheitels über 1/4 bis 1/3 der (Halb-)periode kräftig eingedellt, waagrecht, mit leichtem Hang nach links. Das war natürlich durch die vielen PCs und Monitore mit ihren Schaltnetzteilen. Was glaubst du, wie die Spannung aussieht, wenn du einige 16A Lasten mit unterschiedlichen Phasenanschnittwinkeln dimmst, ev. noch an einer schwachen Leitung (Veranstaltung o.ä.)

Hier solltest du über die Verwendung eines Stromwandlertrafos nachdenken, du kannst wesentlich höhere Signalspannungen bei wesntlich kleineren Verlusten erzielen.

Auch dieses Löst der Wandlertrafo elegant - seine Sekundärwicklung ist galv.getrennt.

--
Martin
Reply to
Martin

Hallo,

Da ist natürlich was dran, danke für den Hinweis. So eine Spannungsmessung wäre ja auch gar nicht so schwierig weil der ganze Kram sowiso schon auf Netzpotential liegt. Ich glaub das bau ich noch ein...

Ja, daran hab ich auch schon gedacht, vermute aber, dass die bei den steilen Phasenanschnittsflanken das Signal zu sehr verfälschen. Und davon abgesehen sind die grösser, teurer und schwerer. (Keine Sorge, soll kein kommerzielles Produkt werden, auch wenn's sich so anhört :)) Ich denke ich werd's jetzt mal so versuchen: An den Messwiderstand jedes Kanals direkt in der Nähe einen OPV als Differenzverstärker und dann alle acht Kanäle per Multiplexer auf den AD Wandler. Ein zweiter AD Wandler ermöglicht dann das parallele sampeln der Netzspannung.

Michael

Reply to
Michael Dreschmann

Michael Dreschmannschrieb: "

Komperator ist schon mal eine gute Idee. Problem ist immer, je genauer das ganze sein soll, um so empfindlicher wird es gegenüber Störungen. Auch ein ordendlicher Filter würde an der Stelle auch nicht schaden. Interessant ist auch:

formatting link
formatting link

Vier mal so groß heist 2bit, also würde ich nicht mehr als 9bit erwarten. Wenn Du ein Digitaloszi hast, dann stell es doch mal auf Line-Trigger und Envelope-Erfassung und erhitze Deine Schaltung mal mit einem Fön auf 50°C.

Durchschnittswertes

Kann man so pauschal nicht sagen. Da greifen die Grundlagen der Statistik.

Ich zitiere mal:

-------------------------------------------------------------------- Die Auflösung eines ADCs oder DAC?s kann durch Oversampling gesteigert werden, indem für jeden Messwert mehrere Abtastwerte gemittelt werden. Der Informationsgewinn wird dabei mit der Quadratwurzel der Anzahl der Mittelungen berechnet, Oversampling um den Faktor 4 (Mittelwert aus 4 unabhängigen Abtastungen) kann also die Genauigkeit nur um maximal 1 Bit erhöhen, obwohl der Zahlenumfang um den Faktor 4, also 2 Bit, zugenommen hat. Oversampling kann bei allen A/DWandlern zur Steigerung der Auflösung eingesetzt werden. Dies kann aber nicht allgemein behauptet werden, denn die Eingangsspannung kann ja eine stabile Gleichspannung sein. Hier nutzt das Oversampling allein überhaupt nichts, denn der Ausgangswert ist immer gleich und wird durch Mittelung nicht genauer. Kann dieser Fall eintreten, so muss man dem Eingangssignal (oder dem Referenzwert) eine Wechselspannung überlagern, welche eine Gleichverteilung der Amplituden aufweist und einen Hub von mehr als 1 LSB hat, meist ein symmetrisches Sägezahnsignal oder ein künstlich erzeugtes Rauschen. Dieses Verfahren nennt man Dithering. Es ergibt sich dadurch die erforderliche Verteilung der Digitalwerte entsprechend der Lage der Eingangsspannung zwischen den Schwellen der benachbarten Ausgangswerte. Damit macht die digitale Mittelung Sinn und ergibt die angestrebte Erhöhung der Auflösung. Sind dem Signal Wechselspannungen jeder Art überlagert, ist das Dithering normalerweise nicht nötig. Oversampling ist ebenso bei der D/A Wandlung einsetzbar. Von einer Digitalzahl mit größerer Wortlänge werden nur die ersten N Bit ausgeben, wobei das Tastverhältnis entsprechend den restlichen Bits gesteuert wird.

-------------------------------------------------------------------

Aber ich glaube Du verwechselst hier etwas. Du mußt unterscheiden zwischen Oversampling z.B. bei einer Halbwelle und der Leistungsaufname in jeder Halbwelle. Wenn Dein Triac 40us eher angesteuert wird, dann ändert sich T1 in

formatting link
Punkt 1.8 und somit die Leistung. Diese mußt Du dann statistisch über mehrere Halbwellen mitteln.

10 bit braucht z.B. Wiederstände Aber so wie ich das sehe scheint die Grundidee das ganze digital zu

Bedenke auch, dass letztendlich die Additon aller Fehler und Toleranzen den max. Gesamtfehler ergibt. Ich glaube nicht, dass Du mit dieser simplen Schaltung über eine Genauigkeit von 8bit hinauskommst und das wird schon schwer. Zwar kann man versuchen, dass System zu kalibrieren und eine Korrekturtabelle zu hinterlegen, aber das setzt ein anderes professionelles Power-Meter vorraus, denn Leistungswiderstände von 2KW und 0,1% Toleranz (10bit!) sind mir bisher nicht untergekommen. Für eine genauere Messung muss man sicher mehr Aufwand treiben. Schau Dir mal die Innenschaltung diverser Leistungsmessungs-ICs an. Um Aufwand zu sparen würde ich auch nur eine richtige (und sicher aufwendigere) Strommessung für die gesamte Schaltung aufbauen und wären der Messung alle anderen Verbraucher für diese eine Halbwelle abschalten.

Dirk

Reply to
Dirk Ruth

Hallo,

Ich hab den Controller so programmiert, dass er mögliches "prellen" filtert, also nach einem Nulldurchgang ist der nächste erst wieder nach 10ms möglich. Die Dauer der Halbwellen wird auch über 16 Halbwellen gemittelt. Ob das so in rauer Umgebung funktioniert wird sich noch zeigen müssen.

Der 10us Jitter müsste sich über die Halbwellen doch auch rausmitteln, wenn man die Helligkeit von etwas so trägem wie der nacher anzuschliessenden Glühlampe betrachtet. Irgendwas zwischen 9 und 10 wirds sein.

Ich habs jetzt noch nicht gemacht, aber was soll sich da ändern? Ist doch alles digital oder denkst du an die Schaltschwelle des Portpins? Die ist ja noch nicht repräsentativ ;)

Naja, ich bau das jetzt mal so auf und dann seh ich ja was rauskommt. Es gilt die Devise: so genau wie möglich mit vertretbarem schaltungstechnischen Aufwand. Was die Kalibrierung angeht, kann man mit einem guten Multimeter nicht bis auf etwa 10 Bit messen, bei 20A Messbereich? (Natürlich nur bei kompletten Sinuswellen)

Michael

Reply to
Michael Dreschmann

Michael Dreschmannschrieb: "

Gut schau'n wir mal. Kannst Dich ja mal melden, wenn Du soweit bist.

Klar kann man letzendlich alles irgenwie mitteln, aber das kostet Zeit und letztendlich muß man sich fragen, welchen Sinn eine so hohe Genauigkeit macht, wenn am Ende 1000 Messwerte gemittelt werden.

Es würde eine Aussage über die Stabilität machen. Genauigkeit setzt auch Stabilität voraus.

Das kommt darauf an, was man unter einem guten Multimeter versteht. Einem Multimeter 8bit nicht zutrauen. Noch trauriger sieht es im Strommessbereich aus. Dazu kommt noch, dass sie regelmäßig Kalibriert werden müssten.

Wenn ich mir die Multimeter beim großen C* ansehe, dann haben die im Wechselstrommessbereich alle einen Fehler von mind. +-1%, also nichtmal 6bit, oder man findet solche Angaben wie +-0,8% + 50Digits. Selbst das teure Fluke für 450EUR hat gerade +-0,75%, schafft also gerade 6bit. Bis 10bit ist es da noch weit.

Ich hab das Gefühl, dass viele denken, von 8bit nach 16bit nach 32bit wird nun alles viel genauer und Digitalanzeigen zeigen ja soviel mehr an. Das alles bringt aber kein Mehr, wenn Sensoren und Aktoren die gleichen wie vor 20 Jahren sind. Ach vor 20 Jahren gab es schon gute analoge Zeigerinstrumente mit einem Fehler von 1% (auch im Wechselstrommessbereich). Vor dem PIC ist alles analog und präzise analoge Bauelemente kosten richtig Geld. Ein Messgerät mit einer Genauigkeit von 10bit ist schon ein Präzisionsinstrument.

Wie auch immer Du es drehen magst, es wird nicht genauer. Aber warum willst Du überhaupt so einen Aufwand treiben? Da Du rein ohmsche Lasten treiben willst und somit die Stromkurve im Grunde sinusförmig ist würde ich hier nochmals auf

formatting link
und Punkt 1.8 verweisen. T1 kennst Du schon (Dein Timer) und den Spitzenwert der Spannung kann man über einen simplen Spitzenwertdedektor messen. Den Strom kann man direkt nach der Zündung des Triacs messen und anhand seiner zeitlichen Lage auf den Spitzenwert zurückrechen (evtl muss man ohnehin mal prüfen, wie sich das PTC-Verhalten im Einschaltmoment auswirkt).

Ich würde viel mehr Aufwand in eine Kalibrierung des Systems stecken und Kalibrierwerte im Controller hinterlegen. Ich habe mal gehört, dass man sich beim örtlichen Energieversorger Leistungsverbrauchsmessgeräte ausleihen kann. Wenn die was taugen, dann kann man mit einer Heizung (2000W/1000W) für alle 256 Punkte deines Timers das System kalibrieren. Wenn Du einen Regeltrafo hast, dann kann man das auch noch für 250V und 185V machen usw.

Dirk

Reply to
Dirk Ruth

Hallo,

Werde ich tun.

Als ich mit dem Heißluftfön draufgepustet habe konnte ich tatsächlich einen wesentlich grösseren Jitter feststellen. Allerdings stellte sich recht schnell heraus, dass der nich von der Temperatur kam, sondern von Rückwirkungen des Föns auf das Stromnetz, die waren immerhin so stark, dass auch das Licht im Raum flackerte. Der Phasenanschnittssteuerung machte das übrigends nicht's aus, die hat unbeeindruckt weitergedimmt. Insgesamt sieht die Versorgungsspannung der Schaltung im Moment ziemlich grauenhaft aus, da ich das Teil über nen Trenntrafoersatz aus 230V:12V -> 12V:230V speise.

Schon klar, deshalb zog ich ja auch nur max. 12 Bit in Erwägung. Vor allem wird auch irgendwie alles > 8 Bit ganz schön teuer...

Das weiss ich noch nicht so genau, wass da rankommt. Es soll halt ein Alleskönner werden, der z.B. auch die Gesamtlast der vorgeschalteten Absicherung anpassen kann usw... Der Weg ist sozusagen das Ziel.

Das ist ohnehin nötig, da ja schon die Messwiderstände unglaublich ungenau sind. Woher ich dann ein genaues Vergleichsmessgerät bekomme überleg ich mir, wenn (oder falls) ich mal soweit bin es zu brauchen... :)

Danke für den Tipp, das wär ja vielleicht schonmal was.

Viele Grüsse, Michael

Reply to
Michael Dreschmann

Eben genau _davon_ kann man ja nicht ausgehen!

Das einzige was relativ gesichert scheint: Bei vernachlässigung diverser parasitärer Effekte (müsste aber ganz gut hinkommen) kann nur gesagt werden, dass bei der Last der Strom mit der Spannung in Phase sein wird.

Nachdem aber bei typ. Installationen, wo Dimmer-Batterien gefahren werden, das Netz alles ist - nur bloss kein Sinus - wird das so nix. Da hilft nur messen....

Heinz

Reply to
Heinz Liebhart

Das waere aber ausreichend.

Ja. Es ist aber ein Unterschied, ob ich nur den Effektivwert des Stromes bestimmen muss oder die Wirkleistung. Bei rein reellen Lasten wuerde ich aber davon ausgehen, dass der Effektivwert des Stromes die Wirkleistung widerspiegelt.

Grusz, Rainer

Reply to
Rainer Ziegenbein

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.