Innehållsförteckning:

Hur man mäter växelström med Arduino: 4 steg
Hur man mäter växelström med Arduino: 4 steg

Video: Hur man mäter växelström med Arduino: 4 steg

Video: Hur man mäter växelström med Arduino: 4 steg
Video: How to Interface Industrial Sensors with Arduino Nano 2024, Juli
Anonim
Hur man mäter växelström med Arduino
Hur man mäter växelström med Arduino
Hur man mäter växelström med Arduino
Hur man mäter växelström med Arduino

Hej allihopa! Detta är min tredje instruerbara, hoppas du tycker att den är informativ:-) Detta kommer att vara en instruktion om hur man gör en grundläggande effektfaktormätning med en Arduino. Innan vi börjar är det några saker att tänka på:

  1. Detta fungerar ENDAST med LINEAR -belastningar (t.ex. induktiva motorer, transformatorer, solenoider)
  2. Detta fungerar INTE med NON-LINEAR (t.ex. CFL-lampor, strömförsörjningslägen, lysdioder)
  3. Jag är en elingenjör och mycket kompetent när jag arbetar med nätpotential (dvs. 230V)

Varning! Om du inte är utbildad eller inte vet hur du fungerar korrekt med nätspänning föreslår jag att du inte fortsätter med den delen av instruktionen och jag visar dig en säker metod för att bevisa att kretsen fungerar.

Detta är en hårdvarulösning på problemet med att mäta PF i linjära belastningar. Detta kan också göras rent genom kod inklusive förmågan att mäta icke-linjära belastningar, vilket jag kommer att sträva efter att täcka i en annan instruerbar.

För alla nybörjare som läser detta är effektfaktorn förhållandet mellan sann effekt och skenbar effekt och kan beräknas genom att hitta cosinus för fasvinkeln mellan matningsspänningen och strömmen (se bifogad bild från Google). Detta är viktigt i AC-applikationer eftersom "Skenbar effekt" (Volt-ampere) enkelt kan beräknas med hjälp av spänning multiplicerat med ström. Men för att få den verkliga effekten eller "True Power" (Watt) måste skenbar effekt multipliceras med effektfaktorn för att göra en sann mätning av effekten i Watt. Detta gäller endast laster som har en betydande induktiv eller kapaktiv komponent (t.ex. en motor). Rent resistiva laster som elektriska värmare eller glödlampor har en effektfaktor på 1,0 (enhet) och därför är True Power och Apparent Power desamma.

Steg 1: Kretsdesign

Kretsdesign
Kretsdesign
Kretsdesign
Kretsdesign
Kretsdesign
Kretsdesign
Kretsdesign
Kretsdesign

Effektfaktor kan beräknas med ett oscilloskop genom att mäta tidsskillnaden mellan spänning och strömsignal. Dessa kan mätas när som helst i vågen så länge de samplas på samma ställe. I det här fallet var det logiskt att mäta mellan nollkorsningspunkter (punkter i vågen där spänningen korsade X-axeln).

Jag konstruerade följande krets i Multisim. Om man antar att ström och spänning till lasten är rena sinusformade vågformer kan effektfaktorn mätas. Varje vågform matas in i en nollkorsningsdetektor (ibland känd som en sinus till kvadratisk vågomvandlare) som helt enkelt är en 741 op-amp i komparatorläge där jämförelsesspänningen är 0V. När sinusvågen är i den negativa cykeln genereras en negativ DC -puls, och när sinusvågan är positiv genereras en positiv DC -puls. De två kvadratiska vågorna jämförs sedan med hjälp av en exklusiv ELLER (XOR) logisk grind, som endast ger en positiv hög DC -puls när kvadratvågorna inte överlappar varandra och 0V när de överlappar varandra. Utsignalen från XOR -grinden är därför tidsskillnad (delta t) mellan de två vågorna från den punkt de passerar nollpunkten. Denna skillnadssignal kan sedan tidsinställas av en mikrokontroller och konverteras till effektfaktor med följande beräkning (se till att din vetenskapliga räknare är i grader inte radianer):

cos (phi) = f * dt * 360

Var:

cos (phi) - effektfaktorn

f - Frekvensen för den uppmätta matningen

dt - delta t eller tidsskillnad mellan vågorna

360 - en konstant som används för att ge svar i grader

På bilderna ser du tre simulerade oscilloskopspår för kretsen. De två insignalerna representerar strömmen och spänningen till lasten. Jag har gett den andra signalen en fasskillnad på 18 Deg, för att demostrera teorin. Detta ger en PF på cirka 0,95.

Steg 2: Prototypning och testning

Prototypning och testning
Prototypning och testning
Prototypning och testning
Prototypning och testning
Prototypning och testning
Prototypning och testning

För min prototypbyggnad lade jag kretsdesignen på en lödlös brödbräda. Från UA741CN -databladet och CD4070CN -databladet kör båda IC: erna en 12-15 Vdc -strömförsörjning så jag drev med två batterier för att skapa en dubbelskena +12V, 0V, -12V Volt -strömförsörjning.

Simulera en last

Du kan simulera en belastning med hjälp av en dubbelkanals signalgenerator eller funktionsgenerator. Jag använde den här billiga och glada kinesiska lådan för att producera två 50 Hz sinusvågor 18 grader från varandra och matade signalerna in i kretsen. Du kan se de resulterande vågformerna på ett oscilloskop. På bilderna ovan kan du se de två överlappande fyrkantiga vågorna (utmatning från varje op-amp), och de tre andra bilderna illustrerar utgången från XOR-grinden. Lägg märke till hur bredden på utgångspulsen blir kortare med minskande fasvinkel. Exemplen ovan visar 90, 40, 0 grader.

Steg 3: Arduino -kod

Som nämnts ovan är utsignalen från mätkretsen tidsskillnaden mellan de två insignalerna (dvs. strömmen och spänningssignalen). Arduino -koden använder "pulsIn" för att mäta längden på utgångspulsen från mätkretsen på nanosekunder och använder den i PF -formeln som nämns ovan.

Koden börjar med att definiera konstanter, främst för att göra koden mer organiserad och läsbar. Viktigast av allt, C -kod (arduino -kod) fungerar i radianer inte grader, så en omvandling från radianer till grader behövs för att beräkna vinkelns och PF: s senare. En radian är ca. 57.29577951 grader. Talet 360 lagras också och multiplikationsfaktorn 1x10^-6 för att konvertera nanosekunder till vanliga sekunder. Frekvens definieras också i början, om du använder något annat än 50Hz, se till att detta uppdateras i början av koden.

Inuti "void loop ()" har jag sagt åt Arduino att beräkna vinkeln baserat på PF -formeln som nämnts tidigare. Vid min första iteration av denna kod skulle koden returnera rätt vinkel och effektfaktor, men mellan varje korrekt resultat returneras också ett felaktigt lågt värde i seriekonsolen. Jag märkte att det var antingen varannan läsning eller var fjärde mätning. Jag placerade ett "om" -uttag i en "för" -slinga för att lagra maximivärdet för var fjärde på varandra följande avläsning. Det gör detta genom att jämföra beräkningen med "vinkel_max" som initialt är noll, och om det är större lagrar det nya värdet inuti "vinkel_max". Detta upprepas för PF -mätningen. Genom att göra detta i en "för" -slinga betyder det att rätt vinkel och pf alltid returneras, men om den uppmätta vinkeln ändras (högre eller lägre), när "för" slutar "vinkel_max" återställs till noll för nästa test, när " void loop () "upprepas. Det finns ett mycket bra exempel på hur detta fungerar på Arduinos webbplats (https://www.arduino.cc/en/Tutorial/Calibration). Den andra "if" -formeln förhindrar helt enkelt att värden högre än 360 returneras om felaktig mätning mäts när enheten som testas stängs av.

Steg 4: Surtestet

Syraprovet!
Syraprovet!
Surtestet!
Surtestet!
Syraprovet!
Syraprovet!

Försök inte med följande om du inte vet hur du arbetar säkert med AC -nätspänning. Om du är osäker på din säkerhet kan du försöka simulera insignalerna med en dubbelkanalig vågformsgenerator.

På begäran av en följare har jag gjort en layout på Fritzing för att ge en bättre uppfattning om kretsen och provtagning/avkänningskretsen (jag har bifogat.fzz -filen och ett-p.webp

För att bevisa att konceptet fungerar i verkligheten byggdes kretsen på en lödfri brödbräda. Från bilderna kan du se kretsarrangemanget. Jag har använt en skrivbordsfläkt som min induktiva belastning för att testa konceptet. Mellan 230V nätspänning och belastningen är min avkänningsutrustning. Jag har en trappa ner transformator som transformerar 230V direkt till 5V för att tillåta spänningsvågformen att samplas. En icke-invasiv strömtransformator klämd runt den levande ledaren användes för att prova den aktuella vågformen (till höger om det aluminiumklädda motståndet). Observera att du inte nödvändigtvis behöver veta amplituden för strömmen eller spänningen, bara vågformen för op-amp för att identifiera nollkorsningen. Bilderna ovan visar de faktiska ström- och spänningsvågformerna från fläkten och arduino -seriekonsolen, som rapporterar en PF på 0,41 och en vinkel på 65 Deg.

Denna arbetsprincip kan integreras i en hemgjord energimätare för att göra verkliga effektmätningar. Om du är kompetent kan du prova att övervaka olika induktiva och resistiva belastningar och bestämma deras effektfaktor. Och där är det! en mycket enkel metod för att mäta effektfaktor.

Rekommenderad: