Innehållsförteckning:
Video: Hur man mäter växelström med Arduino: 4 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:47
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å:
- Detta fungerar ENDAST med LINEAR -belastningar (t.ex. induktiva motorer, transformatorer, solenoider)
- Detta fungerar INTE med NON-LINEAR (t.ex. CFL-lampor, strömförsörjningslägen, lysdioder)
- 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
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
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
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:
Hur man mäter en kondensator eller en induktor med mp3 -spelare: 9 steg
Hur man mäter en kondensator eller en induktor med mp3 -spelare: Här är en enkel teknik som kan användas för att mäta exakt kapacitans och induktans hos en kondensator och induktor utan dyr utrustning. Mättekniken är baserad på balanserad bro och kan enkelt konstrueras av inexpe
TrigonoDuino - Hur man mäter avstånd utan sensor: 5 steg
TrigonoDuino - Hur man mäter avstånd utan sensor: Detta projekt är gjort för att mäta avstånd utan kommersiell sensor. Det är ett projekt för att förstå trigonometriska regler med en konkret lösning. Det kan vara anpassningsbart för någon annan trigonometrisk beräkning. Cos Sin och andra fungerar med
Hur man mäter högfrekvens och driftscykel, samtidigt med en mikrokontroller .: 4 steg
Hur man mäter högfrekvens och arbetscykel samtidigt med en mikrokontroller.: Jag vet vad du tycker: " Va? Det finns många instruktioner om hur man använder mikrokontroller för att mäta signalfrekvens. Gäspa. &Quot; Men vänta, det finns en nyhet i den här: Jag beskriver en metod för att mäta frekvenser mycket högre än en mikro
Hur man mäter vinkel med MPU-6050 (GY-521): 3 steg
Hur man mäter vinkel med MPU-6050 (GY-521): I denna instruktionsmätare mäter vi vinkel med en Arduino. Vi behöver några kablar, en Arduino UNO och GY-521 (MPU-6050) för att mäta vinkel
Hur man mäter ström och varför ska du göra det ?: 4 steg (med bilder)
Hur man mäter ström och varför ska du göra det ?: Många tillverkare vet inte hur viktigt det är att veta den aktuella dragningen av ditt projekt, eller varför du behöver veta detta. I den här självstudien kommer jag att förklara för dig hur du mäter den aktuella dragningen av ditt projekt och varför det är så viktigt att veta detta. T