Strommessung. Teil 1. Spannungs- und Strommessung

Bild

Einführung


Hallo alle zusammen! Nach dem Ende des Zyklus an den Sensoren gab es Fragen eines anderen Plans zur Messung der Verbrauchsparameter von Haushaltsgeräten und nicht sehr elektrischen Geräten. Wer verbraucht wie viel, wie verbindet man was zu messen, welche Feinheiten passieren und so weiter. Es ist Zeit, alle Karten in diesem Bereich aufzudecken.
In dieser Artikelserie werden wir uns mit dem Thema der Messung der Parameter von Elektrizität befassen. Diese Parameter sind eigentlich eine sehr große Zahl, die ich nach und nach in kleinen Reihen zu erzählen versuchen werde.
Bisher sind drei Serien geplant:
  • Strommessung.
  • Die Qualität der Elektrizität.
  • Geräte zur Messung der Elektrizitätsparameter.

Während des Analyseprozesses werden wir bestimmte praktische Probleme an Mikrocontrollern lösen, bis ein Ergebnis erzielt wird. Natürlich wird der größte Teil dieses Zyklus der Messung der Wechselspannung gewidmet sein und kann für alle Lüfter nützlich sein, um die Elektrogeräte ihres Smart Homes zu steuern.
Basierend auf den Ergebnissen des gesamten Zyklus werden wir einen bestimmten intelligenten Stromzähler mit Internetzugang herstellen. Sehr berüchtigte Lüfter zur Steuerung der Elektrogeräte ihres Smart Homes können beispielsweise bei MajorDomo alle möglichen Hilfestellungen bei der Implementierung des Kommunikationsteils leisten. Machen wir OpenSource sozusagen zu einem besseren Smart Home.
In dieser zweiteiligen Reihe werden wir folgende Fragen diskutieren:
  • Anschluss von Strom- und Spannungssensoren in Gleichstromgeräten sowie einphasigen und dreiphasigen Wechselstromkreisen;
  • Messung von Strom- und Spannungswerten;
  • Leistungsfaktormessung;
  • Volle, aktive und Blindleistung;
  • Energieverbrauch;

Mit Tackle finden Sie Antworten auf die ersten beiden Fragen dieser Liste. Ich gehe bewusst nicht auf die Genauigkeit der Messindikatoren ein und bin aus dieser Serie nur mit den Ergebnissen zufrieden, die mit einer Genauigkeit von Plus- oder Minus-Bastschuhen erzielt wurden. Ich werde diesem Thema in der dritten Reihe sicherlich einen eigenen Artikel widmen.

1. Anschluss der Sensoren



In der letzten Serie über Spannungs- und Stromsensoren habe ich über die Arten von Sensoren gesprochen, aber nicht darüber, wie man sie verwendet und wo man sie platziert. Es ist Zeit, das Problem zu beheben
Anschließen von DC-Sensoren

Es ist klar, dass der gesamte Zyklus Wechselstromsystemen gewidmet sein wird, aber wir werden auch schnell auf die Gleichstromkreise eingehen, da dies für uns bei der Entwicklung von Gleichstromversorgungen nützlich sein kann. Nehmen wir zum Beispiel einen klassischen PWM-

Abwärtswandler : Abbildung 1. Ein PWM-Abwärtswandler
Unser Ziel ist es, eine stabile Ausgangsspannung bereitzustellen. Zusätzlich ist es basierend auf den Informationen vom Stromsensor möglich, den Betriebsmodus des Induktors L1 zu steuern, seine Sättigung zu verhindern und auch einen Stromschutz des Wandlers zu implementieren. Und ehrlich gesagt gibt es keine besonderen Optionen für die Installation von Sensoren.
Am Ausgang des Wandlers ist ein Spannungssensor in Form eines Widerstandsteilers R1-R2 installiert, der als einziger mit Gleichstrom arbeiten kann. In der Regel verfügt eine spezialisierte Wandler-Mikroschaltung über einen Rückkopplungseingang und bemüht sich, sicherzustellen, dass an dieser Eingabe (3) ein bestimmter Spannungspegel in der Dokumentation für die Mikroschaltung vorgeschrieben ist. Zum Beispiel 1,25V. Wenn unsere Ausgangsspannung diesem Pegel entspricht - alles ist in Ordnung -, legen wir die Ausgangsspannung direkt an diesen Eingang an. Wenn nicht, stellen Sie den Teiler ein. Wenn wir eine Ausgangsspannung von 5 V bereitstellen müssen, muss der Teiler einen Teilungsfaktor von 4 bereitstellen, d. H. Zum Beispiel R1 = 30k, R2 = 10k.
Ein Stromsensor wird normalerweise zwischen der Stromquelle und dem Wandler sowie auf dem Chip installiert. Aus der Potentialdifferenz zwischen den Punkten 1 und 2 und mit einem bekannten Widerstand können die Widerstände Rs den Stromwert des Stroms unserer Induktivität bestimmen. Die Installation eines Stromsensors zwischen den Quellen und der Last ist keine gute Idee, da der Filterkondensator durch den Widerstand von den Verbrauchern gepulster Ströme abgeschaltet wird. Die Installation eines Widerstands in der Lücke des gemeinsamen Kabels verspricht ebenfalls nichts Gutes - es wird zwei Erdungsstufen geben, mit denen es immer noch Spaß macht, herumzuspielen.
Die Probleme des Spannungsabfalls können durch die Verwendung berührungsloser Stromsensoren vermieden werden - beispielsweise Hallsensoren:

Abbildung 2. Kontaktloser Stromsensor
Es gibt jedoch eine schwierigere Möglichkeit, den Strom zu messen. Schließlich fällt auch die Spannung am Transistor ab und es fließt der gleiche Strom wie die Induktivität durch den Transistor. Daher können Sie anhand des Spannungsabfalls darüber auch den aktuellen Wert des Stroms bestimmen. Wenn Sie sich die interne Struktur der Wandlerschaltungen ansehen, beispielsweise von Texas Instruments, wird diese Methode genauso häufig verwendet wie die vorherigen. Die Genauigkeit dieser Methode ist sicherlich nicht die höchste, aber dies reicht völlig aus, damit der aktuelle Cutoff funktioniert.

Abb. 3. Transistor als Stromsensor.
Dasselbe tun wir in anderen Schaltkreisen ähnlicher Wandler, egal ob Boosten oder Invertieren.
Es ist jedoch notwendig, Transformator-Linear- und Flyback-Wandler getrennt zu erwähnen.

Abb. 4. Anschluss von Stromsensoren in Flyback-Wandlern
. Sie können in ihrer Rolle auch entweder einen externen Widerstand oder einen Transistor verwenden.
Damit haben wir die Sensoren an die DC / DC-Wandler angeschlossen. Wenn Sie Vorschläge für andere Optionen haben, füge ich ihnen gerne einen Artikel hinzu.
1.2 Anschließen von Sensoren an einphasige Wechselstromkreise

In Wechselstromkreisen haben wir eine viel größere Auswahl möglicher Sensoren. Betrachten wir mehrere Optionen.
Am einfachsten ist die Verwendung eines ohmschen Spannungsteilers und eines Stromshunts.

Abb. 5. Anschluss von Widerstandssensoren.
Sie hat jedoch einige wesentliche Nachteile:
Erstens werden wir entweder eine signifikante Amplitude des Signals vom Stromshunt bereitstellen und ihm eine große Menge an Leistung zuweisen, oder wir werden mit der kleinen Amplitude des Signals zufrieden sein und es anschließend verstärken. Und zweitens erzeugt der Widerstand eine Potentialdifferenz zwischen dem Neutralleiter des Netzwerks und dem Neutralleiter des Geräts. Wenn das Gerät isoliert ist, spielt es keine Rolle, ob das Gerät über einen Erdungsanschluss verfügt. Wir riskieren, ohne Signal vom Stromsensor zu bleiben, da wir es kurzschließen. Vielleicht sollten Sie Sensoren ausprobieren, die nach anderen Prinzipien arbeiten.
Zum Beispiel verwenden wir Strom- und Spannungswandler oder einen Hall-Effekt-Stromsensor und einen Spannungswandler. Hier gibt es viel mehr Möglichkeiten für die Arbeit mit Geräten, da der Neutralleiter keine Verluste aufweist und vor allem - in beiden Fällen gibt es eine galvanische Trennung der Messgeräte, was oft nützlich sein kann. Es muss jedoch berücksichtigt werden, dass Strom- und Spannungssensoren von Transformatoren einen begrenzten Frequenzgang haben. Wenn wir die harmonische Zusammensetzung von Verzerrungen messen möchten, ist dies keine Tatsache, die funktionieren wird.

Abb. 6. Anschluss von Transformator und berührungslosen Strom- und Spannungssensoren
1.3 Anschließen von Sensoren an mehrphasige Wechselstromkreise

In Mehrphasennetzwerken ist unsere Fähigkeit, Stromsensoren anzuschließen, etwas geringer. Dies liegt an der Tatsache, dass der Strom-Shunt überhaupt nicht verwendet werden kann, da die Potentialdifferenz zwischen den Phasen-Shunts innerhalb von Hunderten von Volt schwankt und ich keinen allgemeinen Controller kenne, dessen analoge Eingänge einem solchen Spott standhalten können.
Natürlich gibt es eine Möglichkeit, Stromshunts zu verwenden - für jeden Kanal muss ein galvanisch isolierter Analogeingang erstellt werden. Es ist jedoch viel einfacher und zuverlässiger, andere Sensoren zu verwenden.
In meinem Qualitätsanalysator verwende ich ohmsche Spannungsteiler und entfernte Hall-Effekt-Stromsensoren.

Abb. 7 Stromsensoren in einem dreiphasigen Netzwerk
Wie aus der Abbildung ersichtlich, verwenden wir eine Vierdrahtverbindung. Anstelle von Stromsensoren für den Hall-Effekt können Sie natürlich auch Stromwandler oder Rogowski-Schleifen verwenden.
Anstelle von Widerstandsteilern können Spannungstransformatoren sowohl für ein Vierleitersystem als auch für ein Dreileitersystem verwendet werden.
Im letzteren Fall sind die Primärwicklungen von Spannungswandlern durch ein Dreieck und die Sekundärwicklung durch einen Stern verbunden, dessen gemeinsamer Punkt der gemeinsame Punkt des Messkreises ist.

Abb. 8. Verwendung von Spannungswandlern in einem dreiphasigen Netzwerk

2 Stromwert von Spannung und Strom



Es ist an der Zeit, das Problem der Messung unserer Signale zu lösen. Die praktische Bedeutung für uns ist in erster Linie der Stromwert von Strom und Spannung.
Ich möchte Sie an das Material aus dem Sensorzyklus erinnern. Mit dem ADC unseres Mikrocontrollers in regelmäßigen Abständen legen wir den momentanen Spannungswert fest. Während des Messzeitraums haben wir also eine Reihe von Daten über den Pegel des momentanen Spannungswerts (für den Strom ist alles ähnlich).

Abb. 9. Eine Reihe von Momentanspannungswerten
Unsere Aufgabe ist es, den effektiven Wert zu berechnen. Zunächst verwenden wir die Integralformel:
(1)
In einem digitalen System müssen wir uns auf ein bestimmtes Zeitquantum beschränken, also gehen wir zur Summe:
(2)
Wo ist die Abtastperiode unseres Signals und- die Anzahl der Proben für den Messzeitraum. Irgendwo hier, in einem Video, fange ich an, das Spiel über die Gleichheit der Bereiche zu reiben. Ich musste an diesem Tag schlafen. =)
In MSP430FE4252-Mikrocontrollern, die in einphasigen Quecksilber-Stromzählern verwendet werden, werden 4096 Messungen für einen Messzeitraum von 1, 2 oder 4 Sekunden durchgeführt. Auf T = 1s und N = 4096 werden wir uns weiter verlassen. Darüber hinaus können wir mit 4096 Punkten pro Sekunde schnelle Fourier-Transformationsalgorithmen verwenden, um das von GOST geforderte Oberschwingungsspektrum von bis zu 40 Oberschwingungen zu bestimmen. Aber mehr dazu in der nächsten Serie.
Wir skizzieren den Algorithmus für unser Programm. Wir müssen alle 1/8192 Sekunden einen stabilen Start des ADC sicherstellen, da wir zwei Kanäle haben und diese Daten abwechselnd messen. Konfigurieren Sie dazu den Timer und das Interrupt-Signal startet den ADC automatisch neu. Alle ADCs machen das.
Wir werden das zukünftige Programm auf Arduino schreiben, wie es viele zur Hand haben. Bisher haben wir ein rein akademisches Interesse.
Mit einer Systemquarzfrequenz von 16 MHz und einem 8-Bit-Timer (damit das Leben nicht wie Honig aussieht) müssen wir die Betriebsfrequenz eines Timer-Interrupts mit einer Frequenz von 8192 Hz sicherstellen.
Wir sind traurig über die Tatsache, dass 16 MHz nicht vollständig aufgeteilt sind und die Endfrequenz des Timers 8198 Hz beträgt. Wir schließen unsere Augen vor einem Fehler von 0,04% und lesen immer noch 4096 Samples pro Kanal.
Wir sind traurig, dass der Überlauf-Interrupt in Arduino mit der Berechnung der Zeit beschäftigt ist (er ist für Millis und Verzögerung verantwortlich, sodass dies nicht mehr normal funktioniert). Daher verwenden wir den Interrupt im Vergleich.
Und wir stellen plötzlich fest, dass das Signal bipolar zu uns kommt und dass msp430fe4252 perfekt damit zurechtkommt. Wir geben uns mit einem unipolaren ADC zufrieden, daher bauen wir einen einfachen Wandler eines bipolaren Signals in einen unipolaren auf einem Operationsverstärker um:

Abbildung 10. Ein Wandler eines bipolaren Signals in einen unipolaren Signal
Darüber hinaus besteht unsere Aufgabe darin, sicherzustellen, dass unsere Sinuskurve relativ zur Hälfte der Referenzspannung schwingt - dann subtrahieren wir entweder die Hälfte des Bereichs oder aktivieren die Option in den ADC-Einstellungen und erhalten Sie die Vorzeichenwerte.
Der Arduino verfügt über einen 10-Bit-ADC, daher subtrahieren wir die Hälfte vom vorzeichenlosen Ergebnis innerhalb von 0-1023 und erhalten -512-511. Wir
überprüfen das in LTSpiceIV zusammengestellte Modell und stellen sicher, dass alles ordnungsgemäß funktioniert. Im Videomaterial verifizieren wir zusätzlich experimentell.

Abbildung 11. Simulationsergebnis. Grün ist das ursprüngliche Signal, Blau ist der Ausgang
Skizze für Arduino für einen Kanal
void setup()
{
  autoadcsetup();
  DDRD |=(1<<PD2)|(1<<PD3);
  Serial.begin(38400);
}


double urms = 0;
double utemp = 0;
int umoment = 0;
int N = 0;
int flag = 0;
void loop()
{
  if (flag){
    flag = 0;
    Serial.println(urms);
  }
}
int i = 255;

void autoadcsetup(){
  //set up TIMER0 to  4096Hz
  //TIMER0_OVF will be the trigger for ADC
  /*normal mode, prescaler 16
   16MHz / 64 / 61 = 4098 Hz 0.04% to 4096Hz*/
  TCCR0B = (1 << CS01)|(1 << CS00);//timer frequency = clk/64
  OCR0A = 60;//61-1
  TIMSK0 = (1<<OCIE0A);
  //set ADC.
  ADMUX =  (1 << REFS0);//8-bit mode, ADC0 channel, AVVCC as ref
  ADCSRA = (1 << ADEN) | (1 << ADATE) | (1 << ADIE) | (1 << ADPS2);//TUrn ADC On, trigger enable, Interrupt enable, sysclk/16=1MHz_ADC_clk=76kHz conv freq(13ticks per conversion)
  ADCSRB = (1<< ADTS1) | (1<<ADTS0) | (1<<MUX5);//Auto trigger source
}

ISR(TIMER0_COMPA_vect){
  if (PIND & (1<<PD2)){
    PORTD &= ~(1<<PD2);
  }
  else{
    PORTD |=(1<<PD2);
  }
  TCNT0 = 0;

}


ISR(ADC_vect){

  if( ( UCSR0A & (1<<UDRE0)) ){
    umoment = ADCL;//copy result.
    umoment += (ADCH<<8);
    umoment = umoment - 512;
    utemp = utemp + pow((double)(umoment),2)/4096;
    N++;
    if (N == 4095){
      urms = sqrt(utemp)/102;
      N = 0;
      utemp = 0;
      flag = 1;
      if (PIND & (1<<PD3)){
        PORTD &= ~(1<<PD3);
      }
      else{
        PORTD |=(1<<PD3);
      }
    }
  }
}



Das Programm ist in der Arduino IDE für den ATmega1280-Mikrocontroller geschrieben. Auf meiner Debug-Karte werden die ersten 8 Kanäle für die internen Anforderungen der Karte geroutet, sodass der ADC8-Kanal verwendet wird. Es ist möglich, diese Skizze für eine Karte mit ATmega168 zu verwenden. Sie müssen jedoch den richtigen Kanal auswählen.
Innerhalb von Interrupts zucken wir mit ein paar Service-Pins, um die funktionierende Digitalisierungsfrequenz visuell zu sehen.
Ein paar Worte darüber, woher der Koeffizient 102 kam. Beim ersten Start wurde vom Generator ein Signal mit verschiedenen Amplituden geliefert, eine Anzeige des effektiven Spannungswerts vom Oszilloskop abgelesen und der berechnete Wert in absoluten Einheiten des ADC von der Konsole entnommen.
Umax, V.Urms, InZählte
32,08212
2,51,73176
21,38141
1,51,03106
10,68471
0,50,35836
0,250,179neunzehn

Wenn wir die Werte der dritten Spalte durch die Werte der zweiten Spalte dividieren, erhalten wir einen Durchschnitt von 102. Dies ist unser "Kalibrierungs" -Koeffizient. Es kann jedoch festgestellt werden, dass die Genauigkeit stark abnimmt, wenn die Spannung abnimmt. Dies liegt an der geringen Empfindlichkeit unseres ADC. Tatsächlich sind 10 Entladungen für genaue Berechnungen katastrophal klein. Wenn es möglich ist, die Spannung in der Steckdose auf diese Weise zu messen, ist die Verwendung eines 10-Bit-ADC zur Messung des von der Last verbrauchten Stroms ein Verbrechen gegen die Messtechnik.

An diesem Punkt werden wir aufhören. Im nächsten Teil werden wir die anderen drei Fragen in dieser Reihe betrachten und reibungslos mit der Erstellung des Geräts selbst fortfahren.

Die vorgestellte Firmware sowie andere Firmware für diese Serie (da ich Videos schneller aufnehme als Artikel vorbereite) finden Sie im Repository auf GitHub: github.com/radiolok/arduino_rms_count
Für die Entwicklung des Stromzählers wird die Referenz von TI SimpleLink WiFi CC3200 als Grundlage verwendet SmartPlug , dessen Nachricht erst neulich in meine Mail geflogen ist. Ich mag den CC3200-Mikrocontroller sehr, daher werden wir ein Booster-Pack für das vorhandene Lunchpad entwickeln und alle Funktionen realisieren, die uns interessieren. Vergessen Sie nicht, dass es auf anderen Mikrocontrollern so gut funktioniert.

Kommentare sind erwünscht progchip666, für Kommentare und Ergänzungen zum Material sowie smart_alex wie zuvor an der Messung von Strom und Spannung mit Arduino interessiert.

Source: https://habr.com/ru/post/de384597/


All Articles