Inhoudsopgave:

Hoe de AC Power Factor te meten met Arduino: 4 stappen
Hoe de AC Power Factor te meten met Arduino: 4 stappen

Video: Hoe de AC Power Factor te meten met Arduino: 4 stappen

Video: Hoe de AC Power Factor te meten met Arduino: 4 stappen
Video: How to use Allegro ACS712 AC/DC Current Sensor with Arduino 2024, November
Anonim
Hoe de wisselstroomfactor te meten met behulp van Arduino
Hoe de wisselstroomfactor te meten met behulp van Arduino
Hoe de wisselstroomfactor te meten met behulp van Arduino
Hoe de wisselstroomfactor te meten met behulp van Arduino

Hallo iedereen! Dit is mijn derde instructable, ik hoop dat je het informatief vindt:-) Dit zal een instructable zijn over hoe je een basis vermogensfactormeting kunt maken met behulp van een Arduino. Voordat we beginnen, zijn er een paar dingen om in gedachten te houden:

  1. Dit werkt ALLEEN met LINEAIRE belastingen (bijv. inductieve motoren, transformatoren, elektromagneten)
  2. Dit werkt NIET met NIET-LINEAIRE (bijv. CFL-lampen, schakelende voedingen, LED's)
  3. Ik ben elektrotechnisch ingenieur en zeer bekwaam in het werken met netspanning (d.w.z. 230V)

Waarschuwing! Als u niet bent opgeleid of niet weet hoe u correct met netspanning moet werken, raad ik u aan niet verder te gaan met dat deel van de instructable en ik zal u een veilige methode laten zien om te bewijzen dat het circuit werkt.

Dit is een hardwarematige oplossing voor het probleem van het meten van PF in lineaire belastingen. Dit kan ook puur worden gedaan door middel van code, inclusief de mogelijkheid om niet-lineaire belastingen te meten, die ik in een ander instructable zal proberen te behandelen.

Ten behoeve van beginners die dit lezen, is de arbeidsfactor de verhouding tussen werkelijk vermogen en schijnbaar vermogen en kan worden berekend door de cosinus van de fasehoek tussen de voedingsspanning en stroom te vinden (zie bijgevoegde afbeelding van Google). Dit is belangrijk in AC-toepassingen, aangezien "schijnbaar vermogen" (volt-ampère) eenvoudig kan worden berekend met behulp van spanning vermenigvuldigd met stroom. Om het echte vermogen of "True Power" (Watt) te krijgen, moet het schijnbaar vermogen echter worden vermenigvuldigd met de arbeidsfactor om een echte meting van het vermogen in Watt te maken. Dit geldt alleen voor belastingen die een significant inductief of capacitief onderdeel hebben (zoals een motor). Zuiver resistieve belastingen zoals elektrische kachels of gloeilampen hebben een arbeidsfactor van 1,0 (eenheid) en daarom zijn True Power en Schijnbaar vermogen hetzelfde.

Stap 1: Circuitontwerp

Circuit ontwerp
Circuit ontwerp
Circuit ontwerp
Circuit ontwerp
Circuit ontwerp
Circuit ontwerp
Circuit ontwerp
Circuit ontwerp

De arbeidsfactor kan worden berekend met behulp van een oscilloscoop, door het tijdsverschil tussen het spannings- en stroomsignaal te meten. Deze kunnen op elk punt in de golf worden gemeten, zolang ze maar op dezelfde plaats worden bemonsterd. In dit geval was het logisch om te meten tussen nuldoorgangspunten (punten in de golf waar de spanning de X-as kruiste).

Ik ontwierp de volgende schakeling in Multisim. Ervan uitgaande dat de stroom en spanning naar de belasting zuivere sinusvormige golfvormen zijn, kan de arbeidsfactor worden gemeten. Elke golfvorm wordt ingevoerd in een nuldoorgangsdetector (soms bekend als een sinus-naar-blokgolf-omzetter) die eenvoudigweg een 741 op-amp is in de comparatormodus waarbij de vergelijkingsspanning 0V is. Wanneer de sinusgolf in de negatieve cyclus is, wordt een negatieve DC-puls gegenereerd en wanneer de sinusgolf positief is, wordt een positieve DC-puls gegenereerd. De twee blokgolven worden dan vergeleken met behulp van een exclusieve OR (XOR) logische poort, die alleen een positieve hoge DC-puls zal afgeven wanneer de blokgolven elkaar niet overlappen, en 0V wanneer ze elkaar overlappen. De output van de XOR-poort is daarom het tijdsverschil (delta t) tussen de twee golven vanaf het punt dat ze het nulpunt kruisen. Dit verschilsignaal kan vervolgens worden getimed door een microcontroller en omgezet in arbeidsfactor met behulp van de volgende berekening (zorg ervoor dat uw wetenschappelijke rekenmachine in graden is en niet in radialen):

cos(phi) = f * dt * 360

Waar:

cos(phi) - de arbeidsfactor

f - De frequentie van de gemeten voeding

dt - delta t of tijdsverschil tussen de golven

360 - een constante die wordt gebruikt om het antwoord in graden te geven

Op de foto's ziet u drie gesimuleerde oscilloscoopsporen voor het circuit. De twee ingangssignalen vertegenwoordigen de stroom en de spanning naar de belasting. Ik heb het tweede signaal een faseverschil van 18 Deg gegeven, om de theorie te demonstreren. Dit geeft een PF van ongeveer 0,95.

Stap 2: Prototyping en testen

Prototyping en testen
Prototyping en testen
Prototyping en testen
Prototyping en testen
Prototyping en testen
Prototyping en testen

Voor mijn prototype-build heb ik het circuitontwerp op een soldeerloze breadboard gezet. Van de UA741CN-datasheet en CD4070CN-datasheet lopen beide IC's op een 12-15 Vdc-voeding, dus ik heb twee batterijen gebruikt om een dual-rail +12V, 0V, -12V Volt voeding te maken.

Een belasting simuleren

U kunt een belasting simuleren met behulp van een tweekanaals signaalgenerator of functiegenerator. Ik heb deze goedkope en vrolijke Chinese doos gebruikt om twee 50 Hz sinusgolven met een onderlinge afstand van 18 graden te produceren en de signalen in het circuit te voeren. U kunt de resulterende golfvormen op een oscilloscoop zien. In de bovenstaande afbeeldingen ziet u de twee overlappende vierkante golven (uitvoer van elke op-amp), en de andere drie afbeeldingen illustreren de uitvoer van de XOR-poort. Merk op hoe de breedte van de uitgangspuls korter wordt met afnemende fasehoek. Bovenstaande voorbeelden tonen 90, 40, 0 graden.

Stap 3: Arduino-code

Zoals hierboven vermeld, is de uitvoer van het meetcircuit het tijdsverschil tussen de twee invoersignalen (d.w.z. het stroom- en het spanningssignaal). De Arduino-code gebruikt "pulseIn" om de lengte van de uitgangspuls van het meetcircuit in nanoseconden te meten en gebruikt deze in de hierboven genoemde PF-formule.

De code begint met het definiëren van constanten, voornamelijk om de code overzichtelijker en leesbaarder te maken. Het belangrijkste is dat C-code (arduino-code) werkt in radialen en niet in graden, dus een conversie van radialen naar graden is nodig om later hoeken en PF's te berekenen. Een radiaal is ca. 57.29577951 graden. Het getal 360 wordt ook opgeslagen en de vermenigvuldigingsfactor 1x10^-6 voor het omzetten van nanoseconden in gewone seconden. De frequentie wordt ook aan het begin gedefinieerd, als u iets anders dan 50 Hz gebruikt, zorg er dan voor dat dit aan het begin van de code wordt bijgewerkt.

Binnen "void loop()" heb ik de Arduino verteld om de hoek te berekenen op basis van de eerder genoemde PF-formule. Bij mijn eerste iteratie van deze code zou de code de juiste hoek en arbeidsfactor retourneren, maar tussen elk correct resultaat wordt ook een foutieve lage waarde geretourneerd in de seriële console. Ik merkte dat dit om de andere meting of om de vier metingen was. Ik plaatste een "if"-statement in een "for"-lus om de maximale waarde van elke vier opeenvolgende metingen op te slaan. Het doet dit door de berekening te vergelijken met "angle_max", die aanvankelijk nul is, en als deze groter is, slaat de nieuwe waarde op in "angle_max". Dit wordt herhaald voor de PF-meting. Door dit in een "for"-lus te doen, betekent dit dat de juiste hoek en pf altijd worden geretourneerd, maar als de gemeten hoek verandert (hoger of lager), wanneer "for" eindigt, wordt "angle_max" teruggezet naar nul voor de volgende test, wanneer " void loop()" wordt herhaald. Er is een heel goed voorbeeld van hoe dit werkt op de Arduino-website (https://www.arduino.cc/en/Tutorial/Calibration). De tweede "if"-formule voorkomt eenvoudigweg dat een waarde hoger dan 360 wordt geretourneerd in het geval van een foutieve high die wordt gemeten wanneer het te testen apparaat wordt uitgeschakeld.

Stap 4: De zuurtest

De zuurtest!
De zuurtest!
De zuurtest!
De zuurtest!
De zuurtest!
De zuurtest!

Probeer het volgende niet, tenzij u weet hoe u veilig met wisselstroom kunt werken. Als u twijfelt over uw veiligheid, probeer dan de ingangssignalen te simuleren met een tweekanaals golfvormgenerator.

Op verzoek van een volger heb ik een breadboard-layout gemaakt op Fritzing om een beter idee te geven van het circuit en het bemonsterings-/detectiecircuit (ik heb het.fzz-bestand en een.png-diagram bijgevoegd). De motor aan de bovenkant vertegenwoordigt de bureauventilator die ik heb gebruikt, en de inductiespoel vertegenwoordigt de stroomtransformator die ik rond de Live-geleider heb gewikkeld. Ik heb de 741 IC's van stroom voorzien met twee 12V-batterijen die zijn gerangschikt om +12 VDC, 0 VDC (aarde) en -12 VDC te leveren. De CD4070 kan ook rechtstreeks worden gevoed via de 5V-stroomrail van de Arduino.

Om te bewijzen dat het concept in werkelijkheid werkt, is het circuit gebouwd op een soldeerloos breadboard. Op de foto's kunt u de schakeling zien. Ik heb een bureauventilator gebruikt als mijn inductieve belasting om het concept te testen. Tussen de 230V netvoeding en de belasting zit mijn meetapparatuur. Ik heb een step-down transformator die 230V direct omzet in 5V om de spanningsgolfvorm te kunnen samplen. Een niet-invasieve stroomtransformator die rond de stroomvoerende geleider was geklemd, werd gebruikt om de huidige golfvorm te bemonsteren (rechts van de met aluminium beklede weerstand). Merk op dat u niet per se de amplitude van de stroom of spanning hoeft te kennen, alleen de golfvorm voor de op-amp om de nuldoorgang te identificeren. De bovenstaande afbeeldingen tonen de werkelijke stroom- en spanningsgolfvormen van de ventilator en de arduino seriële console, die een PF van 0,41 en een hoek van 65 graden rapporteert.

Dit werkingsprincipe kan worden geïntegreerd in een zelfgemaakte energiemonitor om echte vermogensmetingen te doen. Als je bekwaam bent, kun je proberen verschillende inductieve en resistieve belastingen te bewaken en hun arbeidsfactor te bepalen. En daar is het! een zeer eenvoudige methode om de arbeidsfactor te meten.

Aanbevolen: