Forum: Mikrocontroller und Digitale Elektronik 42kHz Leistungsmesser 110V/3A


von Max K. (ritterkuni)


Lesenswert?

Hallo,

es soll ein Leistungsmesser gebaut werden, am besten mit einem der 
Atmegas.

Maximal Werte:
110V/3,2A bei 42kHz, am besten mit feineren Messbereichen für kleinere 
Spannungen/Ströme.


Mir bereiten 2 Dinge Sorgen: Die "hohe" Frequenz der Schaltung und den 
Einfluss der Messschaltung auf die Originalschaltung.

Die ADC Wandlung der Atmegas sind mit max 1Mhz spezifiziert, damit komme 
ich bei 13 Zyklen für die AD Wandlung auf 76kHz Sample Rate. Somit muss 
ich Spannung und Strom nacheinander messen.

Die Messschaltung soll die Originalschaltung nicht beeinflussen. Ich 
dachte an einen 10mOhm Shunt mit LM358. Reicht dessen Geschwindigkeit, 
da die Verstärkung immer schlechter wird mit steigender Frequenz.

Spannungsmessung sollte über einen Spannungsteiler funktionieren oder 
ich berechne die Leistung nach P=I^2*R

Ich hoffe auf neue Ideen, stehe leider ganz extrem auf dem Schlauch :(

Viele Grüße
Max

von Harald W. (wilhelms)


Lesenswert?

Max Kinema schrieb:

> es soll ein Leistungsmesser gebaut werden,

Für Scheinleistung oder Wirkleistung?

von Max K. (ritterkuni)


Lesenswert?

Zuerst dachte ich daran Wirkleistung und Scheinleistung zu berechnen. 
Für den Anfang würde mir die Wirkleistung reichen, um nicht auch noch 
Phasenlage etc. betrachten zu müssen. Ich kann leider nicht einschätzen 
wie groß der Mehraufwand wäre für eine Messung von 
Schein-/Blindleistung. Reicht es mit Hummelschaltung und der dann 
vorhandenen Messschaltung zu messen?

Am meisten Probleme bereitet mir einfach die Frequenz. Strom/Spannung 
sind übrigens Sinusförmig

von Harald W. (wilhelms)


Lesenswert?

Max Kinema schrieb:

> Zuerst dachte ich daran Wirkleistung und Scheinleistung zu berechnen.
> Für den Anfang würde mir die Wirkleistung reichen, um nicht auch noch
> Phasenlage etc. betrachten zu müssen.

Du solltest Dich noch mal mit den Grundlagen beschäftigen, dann
wüsstest Du, das die Messung der Wirkleistung deutlich aufwändiger
als die Messung der Scheinleistung ist. Normalerweise misst man
10...50 mal pro Periode die Augenblickswerte von Spannung und Strom
und multipliziert diese. Ich denke, das wird bei Deiner Wunschfrequenz
einen einfachen µC überfordern.
Gruss
Harald

von Pink S. (pinkshell)


Lesenswert?

Eine einfache Lösung wäre, die geteilte Spannung gleichzurichten und die 
Gleichspannung in den AD-Wandler. Ebenso die Spannung vom Shunt 
verstärken, gleichrichten und ab in den AD-Wandler. Das gibt schon mal 
die Scheinleistung.

Den Sinus schnell abzutasten halte ich für unnötig. Wenn es dennoch sein 
muss, dann am besten mit externen AD-Wandlern mit ordentlich Sample 
Rate, ein paar hundert kHz müssten es schon sein.

Als Gleichrichter eignen sich am besten aktive Gleichrichter, bestehend 
aus OP Amp und Diode im Rückkopplungspfad, einfach mal googlen.

Wenn die Wirkleistung gemessen werden soll, würde ich die Nulldurchgänge 
detektieren und die Phasenverschiebung mit einem Timer ausmessen.
phi = delta T  f  360
Wirkleistung = U  I  cos (phi)

von Light (Gast)


Lesenswert?

Pink Shell schrieb:
> Wirkleistung = U  I  cos (phi)

Ist Spannung und Strom denn sinusförmig?

von Max K. (ritterkuni)


Lesenswert?

Harald Wilhelms schrieb:
> Max Kinema schrieb:
>
>> Zuerst dachte ich daran Wirkleistung und Scheinleistung zu berechnen.
>> Für den Anfang würde mir die Wirkleistung reichen, um nicht auch noch
>> Phasenlage etc. betrachten zu müssen.
>
> Du solltest Dich noch mal mit den Grundlagen beschäftigen, dann
> wüsstest Du, das die Messung der Wirkleistung deutlich aufwändiger
> als die Messung der Scheinleistung ist. Normalerweise misst man
> 10...50 mal pro Periode die Augenblickswerte von Spannung und Strom
> und multipliziert diese. Ich denke, das wird bei Deiner Wunschfrequenz
> einen einfachen µC überfordern.
> Gruss
> Harald

Du hast natürlich recht, nach einem langen Tag habe ich da ein wenig was 
verdeht. Also komme ich mit der Sample Rate, wie erwartet, vorne und 
hinten nicht hin.

Light schrieb:
> Ist Spannung und Strom denn sinusförmig?

Ja, wunderschöne sinusförmige Verläufe.

Pink Shell schrieb:
> Eine einfache Lösung wäre, die geteilte Spannung gleichzurichten und die
> Gleichspannung in den AD-Wandler. Ebenso die Spannung vom Shunt
> verstärken, gleichrichten und ab in den AD-Wandler. Das gibt schon mal
> die Scheinleistung.

Die würde mir Vorerst reichen.

> Als Gleichrichter eignen sich am besten aktive Gleichrichter, bestehend
> aus OP Amp und Diode im Rückkopplungspfad, einfach mal googlen.

Warum aktiv? Schlägt sich die nicht Ideale Kennlinie oder Kapazität der 
Diode dermaßen schlecht auf das Messergebnis nieder?

Welche Werte mich nach der Gleichrichtung erwarten. Oder gelten bei der 
aktiven Gleichrichtung die selben Faktoren für Effektivwert, 
Gleichrichtwert etc? Werde mich die Tage genauer Einlesen, danke für den 
Denkanstoß

> Wenn die Wirkleistung gemessen werden soll, würde ich die Nulldurchgänge
> detektieren und die Phasenverschiebung mit einem Timer ausmessen.
> phi = delta T  f  360
> Wirkleistung = U  I  cos (phi)

Die Idee ist klasse, das sollte mit dem 16bit Timer gut klappen.

Vielen Danke und Grüße
Max

von Pink S. (pinkshell)


Lesenswert?

Max Kinema schrieb:
> Warum aktiv? Schlägt sich die nicht Ideale Kennlinie oder Kapazität der
> Diode dermaßen schlecht auf das Messergebnis nieder?

So ist es. Wenn Du z.B. eine Wechselspannung hast, die zwischen +1 Volt 
und -1 Volt schwankt, dann wird ein aktiver Gleichrichter (mit Glättung) 
genau 1 Volt ausgeben. Mit einer einfachen Diode fehlen Dir ca. 0,6 
Volt. Wie Du angedeutet hast, ist die nichtideale Kennline der Diode 
schuld.

Die Kapazität einer schnellen Diode ist im pF-Bereich und kann bei 
diesen Frequenzen normalerweise vernachlässigt werden.

> Welche Werte mich nach der Gleichrichtung erwarten. Oder gelten
> bei der aktiven Gleichrichtung die selben Faktoren für
> Effektivwert, Gleichrichtwert etc?

Der Gleichrichter lässt nur die positiven Signale durch. Das Signal ist 
jedoch noch zeitabhängig und sieht aus wie ein kleines Gebirge :-)
Um eine Gleichspannung daraus zu machen, wird man meistens einen 
Kondensator auf den Maximalwert aufladen (wie in einem Netzteil). Das 
wäre dann der Scheitelwert. Man könnte auch eine Mittelwertbildung 
machen, dann kriegst Du den Gleichrichtwert (oder quadrieren, mitteln 
und die Wurzel ziehen - Scherz).

Auf Seite 31 des folgenden Dokuments (das berühmte AN-31) sind ein paar 
Schaltungen für aktive Gleichrichter.
http://www.ti.com/general/docs/lit/getliterature.tsp?baseLiteratureNumber=snla140

von Helge A. (besupreme)


Lesenswert?

Ich halte eine Gleichrichtung hier für ungeeignet. Das birgt die Gefahr, 
daß bei Phasenwinkeln  ab +/-90° Fehlmessungen entstehen. Mit level 
shifter ist man eher auf der sicheren Seite.

von Frank K. (fchk)


Lesenswert?

Max Kinema schrieb:

> Die ADC Wandlung der Atmegas sind mit max 1Mhz spezifiziert, damit komme
> ich bei 13 Zyklen für die AD Wandlung auf 76kHz Sample Rate. Somit muss
> ich Spannung und Strom nacheinander messen.

Dann wirst Du die Wirkleistung nicht richtig berechnen können.

Das hier ist für solche Aufgaben gemacht.
http://www.microchip.com/wwwproducts/Devices.aspx?product=mcp3911

> ich berechne die Leistung nach P=I^2*R
Das ist nur die Scheinleistung.

Für die Wirkleistung musst Du über mehrere Perioden aufintegrieren:

Ich würde einen kleinen dsPIC anstelle eines AVRs nehmen. Kostet das 
gleiche, hat aber mindestens die 3-fache Rechenleistung, bei den 
dsPIC33EP mit ihren 70MHz deutlich mehr. zB:
http://www.microchip.com/wwwproducts/Devices.aspx?product=dsPIC33EP256GP502

Und rechnen wirst Du müssen!

fchk

von Max K. (ritterkuni)


Lesenswert?

Helge A. schrieb:
> Ich halte eine Gleichrichtung hier für ungeeignet. Das birgt die Gefahr,
> daß bei Phasenwinkeln  ab +/-90° Fehlmessungen entstehen. Mit level
> shifter ist man eher auf der sicheren Seite.

ab +-90°? Ist nicht bei 90 die maximale Phasenverschiebung erreicht? Ich 
sehe die Fehlerquelle nicht. Erst bestimme ich die Frequenz, dann dem 16 
Bit Timer den Wert des Nulldurchgangs bei ansteigender Spannung und 
Strom entnehmen. Aus der Differenz lässt sich die Phasenverschiebung 
messen, und wenn diese größer als +90° ist, muss entsprechend zwischen 
Kapazität und Induktivität 180° subtrahiert werden.

Frank K. schrieb:
> Ich würde einen kleinen dsPIC anstelle eines AVRs nehmen. Kostet das
> gleiche, hat aber mindestens die 3-fache Rechenleistung, bei den
> dsPIC33EP mit ihren 70MHz deutlich mehr. zB:
> http://www.microchip.com/wwwproducts/Devices.aspx?product=dsPIC33EP256GP502
>
> Und rechnen wirst Du müssen!
>
> fchk


Ich werde mir beide Lösungen bestellen und aufbauen, einfacher dürfte 
die Gleichrichtung sein :S

Melde mich sobald Schwierigkeiten auftauchen

von Harald W. (wilhelms)


Lesenswert?

Max Kinema schrieb:

> Ich sehe die Fehlerquelle nicht. Erst bestimme ich die Frequenz,
> dann dem 16 Bit Timer den Wert des Nulldurchgangs bei ansteigender
> Spannung und Strom entnehmen. Aus der Differenz lässt sich die
> Phasenverschiebung messen,

Die Probleme und Fehler kommen dann, wenn Du keine "klassischen"
Blindleistungsverbraucher hast, sondern z.B. Schaltnetzteile.
Und die "vermehren" sich in normalen Haushalten immer mehr.
Gruss
Harald

von Friedrich S. (fseuhs)


Lesenswert?

Interessant zu wissen wäre noch wie lange du für eine Leistungsmessung 
brauchen möchtest? Nach wieviel Perioden möchtest du ein Messergebnis 
haben?

Wenn deine Spannung und Strom wirklich so schön sinusförmig ist (hat 
keine das Messergebnis beeinflussenden Oberwellen), brauchst du 
theoretisch nur die doppelte Abtastfrequenz als deine Messfrequenz, auch 
einen analogen Antialiasing Tiefpass kannst du dir dann ersparen. Also 
einiges über deinen 42kHZ z.B. 100kHz.
Um Spannung und Strom gleichzeitig abzutasten würde ich dir empfehlen 
eine uC auszusuchen, der 2 ADCs mit gleichzeitiger Abtastung hat oder 
einen extra ADC-Chip der das kann. Der Phasenfehler geht sehr stark in 
das Messergebnis mit ein! Rechne einmal nach was da 1 us bei 42kHz 
bedeuten kann! Der Rest ist Mathematik.
Eine Mischung aus analog (Gleichrichten) und digital 
(Phasenverschiebung) messen halte ich für einen ziemlichen Murks. Wie 
genau man das hinbekommt bei verschiedenen Amplituden (des Stroms z.B.) 
sei mal in Frage gestellt, ein analoger Komperator 
(NUlldurchgangsschalter) hat ja auch eine gewisse Hysterese.
Dazu noch eine sehr wesentliche Frage:
Wie genau soll denn deine Leistungsmessung sein?

von abtaster (Gast)


Lesenswert?

Friedrich Seuhs schrieb:
> brauchst du
> theoretisch nur die doppelte Abtastfrequenz als deine Messfrequenz

Das ergibt aber nur die Frequenzinformation, einen sinnvollen 
Amplitudenwert nicht; gerade wenn sich die Amplitude während den Sampels 
ändert.

von Friedrich S. (fseuhs)


Lesenswert?

abtaster schrieb:
>> brauchst du
>> theoretisch nur die doppelte Abtastfrequenz als deine Messfrequenz
>
> Das ergibt aber nur die Frequenzinformation, einen sinnvollen
> Amplitudenwert nicht; gerade wenn sich die Amplitude während den Sampels
> ändert.

Das stimmt nicht.
Wenn man genügend lang die Quadrate integriert bekommt man die Amplidude 
sehr  genau, die Frequenz eigentlich gar nicht, da muss man die 
Nulldurchgänge zählen.
Das alles gilt nur für ein "quasistatioäres" Signal. Was bei sich 
ändernder Amplitude im Messzeitraum ergibt, wird wohl auch in der Nähe 
des theoretischen Effektivwerts liegen. Eine analoge Gleichrichtung 
liegt mMn viel schlechter.
Alles ist aber natürlich von der gewünschten Genauigkeit abhängig. Die 
hat uns aber der TO noch nicht verraten.

von Max K. (ritterkuni)


Lesenswert?

Harald Wilhelms schrieb:
> Die Probleme und Fehler kommen dann, wenn Du keine "klassischen"
> Blindleistungsverbraucher hast, sondern z.B. Schaltnetzteile.
> Und die "vermehren" sich in normalen Haushalten immer mehr.
> Gruss
> Harald

Die werden nicht vorkommen, ich messe hinter einem Labornetzteil 
verschiedene Schaltungen.

Friedrich Seuhs schrieb:
> Eine Mischung aus analog (Gleichrichten) und digital
> (Phasenverschiebung) messen halte ich für einen ziemlichen Murks. Wie
> genau man das hinbekommt bei verschiedenen Amplituden (des Stroms z.B.)
> sei mal in Frage gestellt, ein analoger Komperator
> (NUlldurchgangsschalter) hat ja auch eine gewisse Hysterese.

Das die Genauigkeit auf der Strecke bleibt, ist mir dabei bewusst. 
Deshalb werde ich mir zusätzlich auch noch einen schnellen AD-Wandler, 
den MCP3911 wie vorgeschlagen, besorgen und zweigleisig fahren. Einfach 
für mich selber auch zum vergleichen, spielen und lernen :D

Friedrich Seuhs schrieb:
> Alles ist aber natürlich von der gewünschten Genauigkeit abhängig. Die
> hat uns aber der TO noch nicht verraten.

Letztendlich wäre die Leistung +-3 Prozent wünschenswert. Mit den 16 Bit 
sollte das zu machen sein.

Muss mir nur noch einen passenden, gut dokumentierten, µC aussuchen. 
Denke mit 20 Mhz werden die Atmegas zu langsam sein, um den ADC Chip 
auszulesen, zu rechnen, Display anzusteuern und später vielleicht ein 
USB-Interface zu realisieren.

PIC 18F24K50, DSPic oder ähnliche. Hauptsache mit C -Compiler.

: Bearbeitet durch User
von Friedrich S. (fseuhs)


Lesenswert?

Max Kinema schrieb:
> PIC 18F24K50, DSPic oder ähnliche. Hauptsache mit C -Compiler.

Schau dir doch auch mal den Cortex M4 an, der hat eine FPU. Das 
vereinfacht die SW wesentlich. Du musst quadrieren summieren und nach 
entsprechender Anzahl von Samples durch diese Anzahl dividieren und 
wurzelziehen. Das ist dann dein gewünschter Effektivwert. Willst du 
wirklich alle 16 bit weiterverarbeiten ist das mit integer auch recht 
aufwändig. Man muss skalieren und genau aufpassen damit die integer 
nicht überlaufen.
Für +-3% genügen aber auch 12bit.
Ich habe für 50Hz bis zur 50 Oberwellen sowas sowohl in integer als auch 
in floatingpoint gemacht. Aus meiner Erfahrung kann ich nur sagen, wenn 
irgedwie möglich dann floatingpoint verwenden, mach die ganze Mathematik 
einfacher.
Der STM32F4.. mit 168Mhz würde sich bestimmt dafür sehr gut eignen.

von Max K. (ritterkuni)


Lesenswert?

Friedrich Seuhs schrieb:
> Der STM32F4.. mit 168Mhz würde sich bestimmt dafür sehr gut eignen.

Die Cortex M4 Serie scheint super zu meinen Anforderungen zu passen.


Sowohl STM32F4 als auch STM32F3 bringen 12 bit ADC mit, der F3 scheint 
einen noch schnelleren AD Wandler, Wahnsinn. Damit kann ich mir vorerst 
den externen AD Wandler sparen.
1
Two ADCs 0.20 μS (up to 39 channels) with
2
selectable resolution of 12/10/8/6 bits, 0 to
3
3.6 V conversion range, separate analog
4
supply from 2 to 3.6 V


Danke an alle, ich glaube ich kann nun Bauteile bestellen :)

von Friedrich S. (fseuhs)


Lesenswert?

Max Kinema schrieb:
> Sowohl STM32F4 als auch STM32F3 bringen 12 bit ADC mit, der F3 scheint
> einen noch schnelleren AD Wandler, Wahnsinn. Damit kann ich mir vorerst
> den externen AD Wandler sparen.

Geh einmal das ganze nicht zu euphorisch an. Ob du einen so schnellen 
ADC brauchst habe ich oben in Frage gestellt, ob der M3 auch bei 12 bit 
schneller ist als der M4 sollte man im Datenblatt nachschauen.
Wichtig sind auch die errata-sheets, da sind dann noch Fehler drinnen 
die wohl nicht korrigiert werden und die nicht im normalen Datenblatt 
stehen.
Vorsicht ist, soviel man hier mitliest, beim STM32F40x angesagt. Da 
wackeln die untersten bits angeblich recht heftig.
Also hier in dem Forum suchen.

von Frank K. (fchk)


Lesenswert?

Max Kinema schrieb:

> Sowohl STM32F4 als auch STM32F3 bringen 12 bit ADC mit, der F3 scheint
> einen noch schnelleren AD Wandler, Wahnsinn. Damit kann ich mir vorerst
> den externen AD Wandler sparen.

Würde ich nicht machen, schon wegen der Möglichkeit, den ADC per 
ADUM1401 ö.ä. galvanisch vom Rest abzutrennen. Das kann bei 110V schon 
alleine aus Sicherheitsgründen erforderlich werden, denn das ist keine 
Niederspannung mehr. Und wenn Du einen JTAG Debugger oder einen PC per 
USB anschließt, könnte es einmal ganz heftig rumsen, wenn Du keine 
galvanische Trennung drin hast. Und direkt hinter dem ADC ist die 
günstigste Position für die Isolationsbarriere.

fchk

von Max K. (ritterkuni)


Lesenswert?

Update:

Erste kleine Gehversuche mit dem STM32F4 Discovery Board funktionieren, 
wahnsinnig schnell im vergleich zu max. 20Mhz Atmega

Nun gehts an die Auswertung:

Stromshunt ist ein 0,1Ohm Widerstand mit Vierleiteranschluss.

Aus dem Beispiel EnergyMeter mit MCP3911 
http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=ARD00385
Schaltplan: 
http://ww1.microchip.com/downloads/en/DeviceDoc/ARD00385_Rev4_Schematic.PDF 
werde ich nicht ganz schlau.


Wie bekomme ich das Messsignal (ohne Phasenverschiebung) an den ADC:

Mir fällt folgendes ein und würde gerne eine Meinung dazu bekommen:

Spannungsteiler + Koppelkondensator = Halbe Referenzspannung als Offset 
überlagert vom Sinus.

Aktive Gleichrichtung

Messbereichsconverter, Levelshifter: ähnlich diesem hier: 
http://www.electronicdeveloper.de/ADCRangeAktiv.aspx

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Max Kinema schrieb:
> Update:
>
> Erste kleine Gehversuche mit dem STM32F4 Discovery Board funktionieren,
> wahnsinnig schnell im vergleich zu max. 20Mhz Atmega
>
> Nun gehts an die Auswertung:
>
> Stromshunt ist ein 0,1Ohm Widerstand mit Vierleiteranschluss.
>
> Aus dem Beispiel EnergyMeter mit MCP3911
> http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=ARD00385
> Schaltplan:
> http://ww1.microchip.com/downloads/en/DeviceDoc/ARD00385_Rev4_Schematic.PDF
> werde ich nicht ganz schlau.

Mach das so nicht! Vergiss dieses Beispiel ganz schnell. Grund: Die 
gesamte (!) Schaltung liegt auf Netzpotential, nur die serielle 
Schnittstelle ist potentialgetrennt. Für die konkrete Anwendung ist das 
ok, für Dich als Nicht-Profi lebensgefährlich.

Orientiere Dich an dieser AppNote:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en557898
und da Figure 9.

Zur Beschaltung: Du hast L1a, L1b und L2. Zwischen L1a und L1b hast Du 
Deinen Shunt. Von dem Shunt gehen zwei Leitungen an LINE_SHUNT1 und 
LINE_SHUNT2, die an CH0 gehen. Damit wird der Strom gemessen.

Die Spannung wird an CH1 gemessen. Dazu geht L2 geht an HIGH in dem 
Schaltplan. Die Spannung soll also zwischen L2 und L1a oder L1b (egal 
welche) gemessen werden. Da der negative Input von CH1 auf GNDA geht, 
muss auch entweder L1a oder L1b (nur einer!) auf GNDA gelegt werden.

So misst Du dann Strom und Spannung synchron. Direkt hinter der 
SPI-Schnittstelle des MCP3911 baust Du Optokoppler oder einen ADuM1401, 
damit Dein STM32 NICHT auf Netzpotential liegt - das würde ihn killen.

Den MCP3911 und die eine Seite vom ADuM1401 (und nur das, nicht mehr) 
versorgst Du per Kondensatornetzteil wie in Figure 8 gezeigt. Der STM32 
und die andere Seite des ADuM ist aus einem normalen Netzteil zu 
speisen.

Jetzt solltest Du alleine weiterkommen.

fchk

von Max K. (ritterkuni)


Lesenswert?

Frank K. schrieb:

> Zur Beschaltung: Du hast L1a, L1b und L2. Zwischen L1a und L1b hast Du
> Deinen Shunt. Von dem Shunt gehen zwei Leitungen an LINE_SHUNT1 und
> LINE_SHUNT2, die an CH0 gehen. Damit wird der Strom gemessen.

Was genau meinst du mit L2, L1a bzw L1b?

Müssen die Bauteilwerte für die Messung des Shunts verändert werden? 
L1,R4, C1 stellen einen Tiefpass 2ter Ordnung da, wobei L nicht 
dimensioniert ist. Soll ich das L so dimensionieren, dass der Tiefpass 
und Dämpfung auf die Frequenz abgestimmt ist?
Was tut R3? Dafür sorgen, dass sich bei niedriger werdender 
Shuntspannung der Kondensator entladen kann?


> Die Spannung wird an CH1 gemessen. Dazu geht L2 geht an HIGH in dem
> Schaltplan. Die Spannung soll also zwischen L2 und L1a oder L1b (egal
> welche) gemessen werden. Da der negative Input von CH1 auf GNDA geht,
> muss auch entweder L1a oder L1b (nur einer!) auf GNDA gelegt werden.

Bei der Schaltung für die Spannung scheint fast der gleiche Tiefpass zu 
sein.
Der Spannungsteiler aus 2* 330k und 1k sorgt im Beispiel für die 
maximale Spannung von 0,5V am ADC, wenn ich das richtig sehe.
( (230V*SQRT(2)*1kOhm)/ 661kOhm) )
Muss also für geringere Spannungen angepasst werden um den Messbereich 
auszunutzen.

> So misst Du dann Strom und Spannung synchron. Direkt hinter der
> SPI-Schnittstelle des MCP3911 baust Du Optokoppler oder einen ADuM1401,
> damit Dein STM32 NICHT auf Netzpotential liegt - das würde ihn killen.

Das habe ich bedacht, den Aufbau habe ich letzte Woche schon mit einem 
Atmega + Gyrosensor getestet. Nur als Spielerei zum Testen :)

> Den MCP3911 und die eine Seite vom ADuM1401 (und nur das, nicht mehr)
> versorgst Du per Kondensatornetzteil wie in Figure 8 gezeigt. Der STM32
> und die andere Seite des ADuM ist aus einem normalen Netzteil zu
> speisen.


Spannungsversorgung für MCU und co steht natürlich schon. Nur die 3,3V 
für Analog fehlen noch. Kann ich nicht auch einfach ein Labornetzteil 
nehmen und GNDB mit GND Labornetzteil verbinden? Hintergrund: Möchte 
nicht die Messung durch meine Messschaltung verfälschen, auch wenn es 
sich hierbei nur um ein paar Milliwatt entnahme handeln würde.


Versuche das was ich baue auch wirklich zu verstehen. Leider ist das 
ET-Studium bis jetzt noch nicht hilfreich zur Beantwortung der Fragen. 
Freue mich, dass sich Leute die Zeit nehmen um mir zu helfen, danke! :)

von Frank K. (fchk)


Lesenswert?

Max Kinema schrieb:
> Frank K. schrieb:
>
>> Zur Beschaltung: Du hast L1a, L1b und L2. Zwischen L1a und L1b hast Du
>> Deinen Shunt. Von dem Shunt gehen zwei Leitungen an LINE_SHUNT1 und
>> LINE_SHUNT2, die an CH0 gehen. Damit wird der Strom gemessen.
>
> Was genau meinst du mit L2, L1a bzw L1b?

L1 und L2 sind die beiden Leitungen des zu messenden Stromkreises.

>
> Müssen die Bauteilwerte für die Messung des Shunts verändert werden?
> L1,R4, C1 stellen einen Tiefpass 2ter Ordnung da, wobei L nicht
> dimensioniert ist. Soll ich das L so dimensionieren, dass der Tiefpass
> und Dämpfung auf die Frequenz abgestimmt ist?

Schau in die Doku zum entsprechenden Devboard, was die da nehmen:
http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=ADM00398

> Was tut R3? Dafür sorgen, dass sich bei niedriger werdender
> Shuntspannung der Kondensator entladen kann?

Auch. Ist außerdem Teil des Filters.

> Der Spannungsteiler aus 2* 330k und 1k sorgt im Beispiel für die
> maximale Spannung von 0,5V am ADC, wenn ich das richtig sehe.
> ( (230V*SQRT(2)*1kOhm)/ 661kOhm) )
> Muss also für geringere Spannungen angepasst werden um den Messbereich
> auszunutzen.

korrekt.
>
>> So misst Du dann Strom und Spannung synchron. Direkt hinter der
>> SPI-Schnittstelle des MCP3911 baust Du Optokoppler oder einen ADuM1401,
>> damit Dein STM32 NICHT auf Netzpotential liegt - das würde ihn killen.
>
> Das habe ich bedacht, den Aufbau habe ich letzte Woche schon mit einem
> Atmega + Gyrosensor getestet. Nur als Spielerei zum Testen :)

>> Den MCP3911 und die eine Seite vom ADuM1401 (und nur das, nicht mehr)
>> versorgst Du per Kondensatornetzteil wie in Figure 8 gezeigt. Der STM32
>> und die andere Seite des ADuM ist aus einem normalen Netzteil zu
>> speisen.
>
>
> Spannungsversorgung für MCU und co steht natürlich schon. Nur die 3,3V
> für Analog fehlen noch. Kann ich nicht auch einfach ein Labornetzteil
> nehmen und GNDB mit GND Labornetzteil verbinden? Hintergrund: Möchte
> nicht die Messung durch meine Messschaltung verfälschen, auch wenn es
> sich hierbei nur um ein paar Milliwatt entnahme handeln würde.

Solltest Du nicht machen - erstens aus Sicherheitsgründen (110V sind 
keine Kleinspannung mehr), und zweitens könntest Du eventuell die 
galvanische Trennung aufheben. Alternative wäre ein galvanisch 
isolierter (!!!) DC-DC-Wandler mit 5V in und 5V out. Schau in Figure 8, 
schmeiß alles links von D1 und D2 und D1 und D2 selber weg und klemme da 
den Ausgang des DC-DC-Wandlers an.

Zur Auswahl des DC-DC-Wandlers:
Kein SIP-Gehäuse, sondern DIL-Bauform, wegen Isolationsabstand. Die Pins 
von Eingang und Ausgang sollen möglichst weit weg voneinander sein, um 
auch bei nicht ganz sauberer Leiterplatte einen Überschlag oder 
Kriechströme zu verhindern. Bei Netzspannung willst Du je nach 
Randbedingungen überall minimal 6 bis 8 mm Kriechstrecke haben, und das 
hast Du bei den einreihigen SIL/SIP-Modulen nicht. Du hast jetzt zwar 
keine Netzspannung, aber wenn Du so tust als ob, machst Du keinen 
Fehler.

Bei den DC-DC-Wandlern steht auch immer die zulässige Isolationsspannung 
dran. 1000V sind schon ok. Wenn die irgendwo nicht dabei steht, Finger 
weg von dem Teil, dann ist es nämlich nicht isolierend. Das gibts auch, 
aber das kannst Du hier nicht gebrauchen.

> Versuche das was ich baue auch wirklich zu verstehen. Leider ist das
> ET-Studium bis jetzt noch nicht hilfreich zur Beantwortung der Fragen.
> Freue mich, dass sich Leute die Zeit nehmen um mir zu helfen, danke! :)

Gut, bei mir war die Reihenfolge anders. Ich habe schon in der Schulzeit 
(frühe 80'er) gebastelt und dann das Studium angefangen.

fchk

PS: Du kannst auch in den Datenblättern und Appnotes anderer 
Energiemess-ICs reinschauen. Die sind zwar für 50/60Hz ausgelegt, aber 
die Netzanschaltung ist immer ähnlich. Such mal nach ADE7753 (Analog 
Devices), STM STPM01 oder Cirrus CS5460A und schau mal auch die ganzen 
Appnotes durch.

von Max (Gast)


Lesenswert?

Nimm doch einfach einen AD536...

von Max K. (ritterkuni)


Lesenswert?

2 Monate und unzählige Stunden später steht die Hardware fast. Ganz 
schöner Akt, auf ein neues System umzusteigen und sich die komplette IDE 
einzurichten.

Derzeit sieht es so aus:

Herzstück ist der STM32F407 auf dem Discovery Board.
Angeschlossen ist:
ein Display im 4Bit Modus an den GPIO's
Taster, ebenfalls GPIO's
MCP3911 über SPI2, sowohl spi als auch Versorgungsspannung galvanisch 
getrennt

Spannung wird mit einem einfachen Spannungsteiler aus 
Präzisionswiderständen vorgeteilt und geht an den ADC
Der Strom wird jetzt nicht mehr über einen Shunt gemessen, sondern über 
einen Hallsensor. Geht ebenfalls direkt an den ADC


Zum Testen habe ich den STM32F4 1MHz PWM mit festem DutyCycle ausgeben 
lassen, angeschlossen wie hier:
http://ww1.microchip.com/downloads/en/DeviceDoc/103-00398-R2.pdf
Funkioniert super, für kleine Spannungen ist die Galvanische Trannung 
nicht notwendig. Ich war erstaunt über die Genauigkeit sogar bei höheren 
Frequenzen.

Zu meinem Problem:
Ich will nun den 10 MHz Quarz nutzen. Dafür änder ich das CONFIG 
Register (S. 59). Geht das überhaupt ohne Takt an Clockeingang?
1
  GPIO_ResetBits(GPIOB, GPIO_Pin_12);  //CS=0
2
  SPI2_send(0x0C);    //Adress
3
  SPI2_send(0b00011110);  //DATA
4
  SPI2_send(0b00000000);  //DATA
5
  GPIO_SetBits(GPIOB, GPIO_Pin_12);  ////CS=1

Leider gibt mir der ADC für die Channel nur 0 aus, ebenso für alle 
Register die ich auslesen will.

Statt den 100nF wurden 22pF verwendet. Laut deren Rechnung aus dem 
Datenblatt (S.41) sollte Cload=22pF (RM=40 Ohm) betragen. Habe leider 
gerade keinen 10pF Kondensator, um auf die 20pF zu kommen.

Was mache ich falsch? Vorher mit externer Clock klappte alles 
reibungslos. Welche Werte für die Kondensatoren muss ich nehmen, ist der 
1MOhm Widerstand wirklich nötig, oder muss ich einfach nur den MCP3911 
anders initialisieren?

Die 3*8bit der SPI kommen richtig an, habe ich mit einem Oszilloskop 
überprüft.

Letzte Lösung wäre ein Oszillator, aber ich würde gerne erfahren wo das 
Problem liegt.


Datenblatt 3911:
http://ww1.microchip.com/downloads/en/DeviceDoc/20002286C.pdf

von Max K. (ritterkuni)


Angehängte Dateien:

Lesenswert?

Hallo,

ein letztes Mal muss ich euch nerven, bevor der Leistungsmesser fertig 
ist.

Angeschlossen ist der ADC Wandler über einen Spannungsteiler + 
Tiefpassfilter.

Leider ergeben sich Differenzen beim Messen. Zum Testen messe ich 
derzeit nur die Spannung:
Frequenz(kHz)|Leistungsmesser(V)|Oszilloskop(V)
5            |4,12              |4,1
10           |4,03              |4,1
20           |3,65              |4,1
30           |3,08              |4,1
40           |2,43              |4,1
50           |1,82              |4,1

Ich vermute es liegt am interen SINC Filter 3ter Ordnung. (Seite 34 im 
Datenblatt, 
http://ww1.microchip.com/downloads/en/DeviceDoc/20002286C.pdf) Aber auch 
wenn ich die Gleichung aus dem Datenblatt mit meinem Werten 
multipliziere komme ich nicht wirklich auf die richtigen Werte. Kann man 
den SINC3 Filter nicht auch ausschalten?


Am Tiefpass vor dem MCP3911 liegt es nicht. Der ist entsprechend 
ausgelegt und wurde mit einem Oszi überprüft. Beweisbilder zeigen 
(leider in schlechter Qualität) das originale Signal (weiß) und das 
Signal am ADC (grün,kleiner) einmal bei 5kHz und bei 50kHz. Signal wird 
nicht nennenswert beeinflusst.

Der ADC Wandler misst mit 125 kHz. Weitere Einstellungen:
1
//Statuscom
2
MODOUT     0
3
DR_HIZ     1
4
DRMODE    0
5
DRStatus  3
6
7
//Config
8
Prescale        0
9
Oversampling Ratio  0
10
Dither        3
11
Az_Freq        0
12
Clkext        0



Wenn alles fertig ist werde ich natürlich die Daten veröffentlichen.

Viele Grüße

: Bearbeitet durch Admin
von Max K. (ritterkuni)


Lesenswert?

Update:
Laut Support ist mein Problem mit dem Chip MCP3911 nicht lösbar. Der 
Sin3 Filter lässt sich weder deaktivieren noch gescheit zurückrechnen.

Muss mir nun Überlegen ob ich dem ganzen ein RMS Wandler vorschalte oder 
ein neuen ADC Wandler suche.

: Bearbeitet durch User
von rmseod (Gast)


Lesenswert?

Anstatt den Support zu fragen hättest Du auch das Datenblatt lesen
können. Dort steht nämlich: "Additionally, the corresponding
SINC filter is disabled to consume less current."

Die MDAT Ausgänge lassen sich direkt an eine MCU oder DSP
anschließen.

Ohne Filter zu messen solltest Du auch schnell vergessen,
weil bei der Konvertierung  sehr viel Noise entsteht,
muß wohl oder übel einen SINC- oder FIR-Filter vorschalten.

Gruß

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.