Innehållsförteckning:

AC Current Monitoring Data Logger: 9 steg (med bilder)
AC Current Monitoring Data Logger: 9 steg (med bilder)

Video: AC Current Monitoring Data Logger: 9 steg (med bilder)

Video: AC Current Monitoring Data Logger: 9 steg (med bilder)
Video: Man Falls OVERBOARD and Boat Keeps Going! | Wavy Boats | Haulover Inlet 2024, Juli
Anonim
AC Current Monitoring Data Logger
AC Current Monitoring Data Logger

Hej alla, välkommen till min första instruerbara! På dagtid är jag testingenjör för ett företag som levererar industriell uppvärmningsutrustning, på natten är jag en ivrig teknikhobbyist och gör -det -själv. En del av mitt arbete innebär att testa prestanda för värmare, vid det här tillfället ville jag kunna övervaka RMS -strömdragningen för 8 enheter över 1000 timmar och logga data för att grafera resultaten senare. Jag har tillgång till en datalogger men den var redan engagerad i ett annat projekt och jag behövde något billigt, så jag bestämde mig för att samla ihop denna grundläggande datalogger.

Projektet använder en Arduino Uno för att läsa analoga sensorer via analog till digital omvandlare (ADC) och registrerar data med en tidsstämpel på ett SD -kort. Det finns mycket teori och beräkning involverat i utformningen av kretsarna, så istället för att förklara absolut allt, kommer jag bara att visa dig hur du gör det. Om du är intresserad av att se FULL hit träffa mig i kommentarerna så förklarar jag ytterligare.

NOTERA:

Jag har haft många frågor om True RMS -beräkningar. Denna enhet använder en halvvågslikriktare för att fånga toppen av vågen, som sedan kan multipliceras med 0,707 för att ge RMS. Följaktligen kommer det bara att ge ett exakt resultat med linjära belastningar (dvs strömmen som mäts är en ren sinusvåg). Icke-linjära tillförsel eller belastningar som ger triangulära, rektangulära eller andra icke-sinusvågformer kommer inte att ge en sann RMS-beräkning. Denna enhet mäter växelström bara den är inte konstruerad för att mäta spänning, följaktligen beräknar den inte eller mäter effektfaktorn. Se min andra instruktion om hur du skapar en effektfaktormätare som kan användas för att göra detta. Många har också sagt att en rak AC -koppling med en 2,5V mittlinje är bättre, men detta medför komplikationer eftersom det innebär att ha en tillräckligt snabb digital samplingshastighet, robust medelvärde/datautjämning etc. och osäkerheten som detta introducerar är mycket högre än att mäta råvärdet. Personligen föredrar jag hårdvarulösningar och enklare kod där det är möjligt så jag är inte intresserad av den metoden. Noggrannhet Jag tror att detta är mycket bättre än det senare och du kommer att se senare i mina resultat att det finns en regressionskoefficient nära 1,0 efter kalibrering.

Steg 1: Strömtransformatorer

Strömtransformatorer
Strömtransformatorer
Strömtransformatorer
Strömtransformatorer

Detta projekt använder HMCT103C 5A/5MA strömtransformator. Den har ett förhållande 1: 1000 varv vilket betyder att för varje 5A ström som flödar genom ledaren kommer 5mA att flöda genom CT. Ett motstånd måste anslutas över de två terminalerna i CT för att tillåta en spänning att mätas över det. Vid det här tillfället använde jag ett 220 Ohm motstånd, därför använder Ohms lag V = IR, utgången från CT kommer att vara 1,1 volt AC, för varje 5mA CT -ström (eller varje 5A av uppmätt ström). CT: er löddes för att avlägsna bräda med motståndet och lite instrumenttråd för att göra flygande ledningar. Jag avslutade kablarna med 3,5 mm hanljudkontakter.

Här är databladet för strömtransformatorn

Datablad

Steg 2: Signalkonditionering

Signalkonditionering
Signalkonditionering
Signalkonditionering
Signalkonditionering

Signalen från CT kommer att vara svag så måste förstärkas. För detta lödde jag ihop en enkel förstärkarkrets med en uA741 dual rail op amp. I detta fall är förstärkningen därför inställd på 150 med formeln Rf / Rin (150k / 1k). Emellertid är utsignalen från förstärkaren fortfarande AC, dioden på utgången från op-amp förstärker AC: s negativa halvcykel och överför den positiva spänningen till en 0.1uF kondensator för att jämna ut vågen till en krusad DC-signal. Nedan är de delar som utgör kretsen:

  • V1-Detta är godtyckligt i det här diagrammet, det representerar helt enkelt signalspänningen som matas in i op-ampens icke-inverterande ingång.
  • R1 - Detta är känt som återkopplingsmotståndet (Rf) och är inställt på 150k
  • R2 - Detta är känt som ingångsmotståndet (Rin) och är inställt på 1k
  • 741 - Detta är den integrerade kretsen uA741
  • VCC - Positiv matningsskena +12V
  • VEE - Negativ matningsskena -12V
  • D1 - Är hafvågens likriktande signaldiod 1N4001
  • C3 - Denna kapaktor håller DC -signalen under en viss tid

På bild 2 kan du se att den monterades med Veroboard och förtennad koppartråd. 4 hål borrades för PCB -avstånd så att de kunde staplas (eftersom det finns åtta kanaler måste det vara åtta förstärkarkretsar totalt.

Steg 3: Strömförsörjning

Strömförsörjning
Strömförsörjning
Strömförsörjning
Strömförsörjning
Strömförsörjning
Strömförsörjning

Om du inte vill göra det från grunden kan du köpa brädet färdigmonterat från Kina som det på bilden ovan, men du kommer fortfarande att behöva 3VA-transformatorn (steg ner 240V till 12V). Den på bilden kostade mig runt 2,50 pund

För att driva projektet bestämde jag mig för att göra min egen 12VDC -strömförsörjning med dubbla skenor. Detta var bekvämt eftersom op -förstärkarna kräver +12V, 0V, -12V, och Arduino Uno kan ta emot vilken ström som helst upp till 14 VDC. Nedan är de delar som utgör kretsen:

  • V1 - Detta representerar matningen från eluttaget 240V 50Hz
  • T1 - Det här är en liten 3VA -transformator som jag ljög om. Det är viktigt att transformatorn har en central kran på sekundären som kommer att anslutas till 0V, dvs jord
  • D1 till D4 - Detta är en helvågsbrytare med 1N4007 -dioder
  • C1 & C2 - 35V elektrolytkondensatorer 2200uF (måste vara 35V eftersom potentialen mellan positiv och negativ kommer att nå 30V)
  • U2 - LM7812, är en 12V positiv spänningsregulator
  • U3 - LM7912, är en 12V negativ spänningsregulator (var noga med att notera stiftskillnaderna mellan 78xx och 79xx IC!)
  • C3 & C4 - 100nF Utjämningskondensatorer 25V elektrolytisk
  • C5 & C6 - 10uF keramiska skivkondensatorer

Jag lödde komponenterna på bandbräda och gick med de vertikala spåren med en enda kärntunnad koppartråd. Bild 3 ovan visar min DIY -strömförsörjning, tyvärr finns det många hoppare på fotot!

Steg 4: Analog till digitala omvandlare

Analog till digitala omvandlare
Analog till digitala omvandlare
Analog till digitala omvandlare
Analog till digitala omvandlare

Arduino Uno har redan en inbyggd 10-bitars ADC, men det finns bara 6 analoga ingångar. Därför valde jag att använda två ADC-breakouts med ADS1115 16-bitars. Detta gör att 2^15 = 32767 bitar kan representera spänningsnivåer från 0-4.096V (4.096V är utbrottets driftspänning), det betyder att varje bit representerar 0,000125V! Eftersom den använder I2C -bussen betyder det också att upp till 4 ADC: er kan adresseras, så att upp till 16 kanaler kan övervakas om så önskas.

Jag har försökt illustrera anslutningarna med Fritzing, men på grund av begränsningarna finns det inga anpassade delar för att illustrera en signalgenerator. Den lila ledningen är ansluten till förstärkarkretsens utgång, den svarta ledningen bredvid illustrerar att alla förstärkarkretsar måste dela gemensam grund. Så jag har använt en brödbräda för att illustrera hur jag har gjort knytpunkterna. Men mitt egentliga projekt har breakouts som sitter i kvinnliga rubriker, lödda till Veroboard, och alla knytpunkter är lödda på veroboardet.

Steg 5: Mikrokontroller

Mikrokontroller
Mikrokontroller

Som nämnts ovan var styrenheten jag valde en Arduino Uno, detta var ett bra val eftersom det har många ombord och inbyggd funktionalitet som annars skulle behöva byggas separat. Dessutom är den kompatibel med många specialbyggda "sköldar". Vid det här tillfället krävde jag en realtidsklocka för att tidsstämpla alla resultat och en SD -kortskrivare för att spela in resultaten i en.csv- eller.txt -fil. Lyckligtvis har Arduino-dataloggningsskölden båda i en sköld som skjuter passformen på det ursprungliga Arduino-kortet utan ytterligare lödning. Skärmen är kompatibel med RTClib- och SD -kortbiblioteken så du behöver inte specialkod.

Steg 6: Montering

hopsättning
hopsättning
hopsättning
hopsättning
hopsättning
hopsättning

Jag använde 5 mm ridgid medellång/låg densitet PVC (ibland känd som foamboard) för att skruva ner de flesta av mina komponenter och skära den till en lämplig storlek med en hantverkskniv. Alla komponenter byggdes på ett modulärt sätt för prototypen eftersom det möjliggör borttagning av enskilda delar om saker går fel, men det är inte lika effektivt eller snyggt som ett etsat kretskort (vidare arbete) detta innebär också många bygelkablar mellan komponenterna.

Steg 7: Ladda upp kod

Ladda upp koden till Arduino, eller få koden från min Github -repo

github.com/smooth-jamie/datalogger.git

Steg 8: Kalibrering

Kalibrering
Kalibrering
Kalibrering
Kalibrering
Kalibrering
Kalibrering

Teoretiskt kommer den uppmätta strömmen att vara ett resultat av flera saker tillsammans:

Uppmätta ampere = (((a *0,45)/150)/(1,1/5000))/1000 där 'a' är signalspänningen från förstärkaren

0,45 är rms-värdet för förstärkarens krets Vout, 150 är förstärkaren för op-amp (Rf / Rin = 150k / 1k), 1,1 är fullskalig spänningsutgång för CT när uppmätta ampere är 5A, 5000 är helt enkelt 5A in mA, och 1000 är mängden varv i transformatorn. Detta kan förenklas till:

Uppmätta ampere = (b * 9.216) / 5406555 där b är ADC -rapporterat värde

Denna formel testades med Arduino 10-bitars ADC och en skillnad mellan multimetervärden och Arduino-genererade värden observerades med 11% vilket är en oacceptabel avvikelse. Min föredragna metod för kalibrering är att registrera ADC -värde kontra ström på en multimeter i ett kalkylblad och plotta ett tredje ordningspolynom. Från detta kan kubikformeln användas för att ge bättre resultat vid beräkning av uppmätt ström:

(ax^3) + (bx^2) + (cx^1) + d

Koefficienterna a, b, c och d beräknas i excel från en enkel datatabell, x är ditt ADC -värde.

För att få data använde jag ett keramiskt 1k variabelt motstånd (reostat) och 12v transformator för att trappa ner nätspänningen från 240V, vilket gav mig att generera en variabel strömkälla från 13mA till 100mA. Ju fler datapunkter som samlas in desto bättre, men jag föreslår att man samlar 10 datapunkter för att få en exakt trend. Den bifogade Excel -mallen beräknar koefficienterna för dig, det är sedan bara att ange dem i arduino -koden

På rad 69 i koden ser du var du ska ange koefficienterna

float chn0 = ((7.30315 * pow (10, -13)) * pow (adc0, 3) + (-3.72889 * pow (10, -8) * pow (adc0, 2) + (0.003985811 * adc0) + (0.663064521))));

vilket är samma som formeln i ark1 i excel -filen:

y = 7E-13x3-4E-08x2 + 0,004x + 0,663

Där x = adc0 för vilken kanal du än kalibrerar

Steg 9: Slutför

Avsluta
Avsluta
Avsluta
Avsluta
Avsluta
Avsluta
Avsluta
Avsluta

Lägg den i ett projekthölje. Jag avslutade strömförsörjningen med en omkopplare för att slå på/stänga av det hela vid strömförsörjningen och en IEC "figur 8" -kontakt för elnätet. Skruva ihop allt och du är redo att testa det.

Ytterligare arbete

Hela projektet hånades ganska snabbt så det finns mycket utrymme för förbättringar, etsad krets, bättre komponenter. Helst skulle det hela etsas eller lödas på FR4 snarare än massor av hoppare. Som jag sa tidigare finns det massor med saker jag inte har nämnt, men om det är något specifikt du vill veta, låt mig veta i kommentarerna så uppdaterar jag instruktionsboken!

Uppdatering 2016-12-18

Jag har nu lagt till en 16x2 LCD -skärm med I2C "ryggsäck" för att övervaka de fyra första kanalerna, kommer att lägga till en till för att övervaka de fyra sista när den kommer genom posten.

Poäng

Detta projekt möjliggjordes av alla författare till biblioteken som används i min Arduino -skiss inklusive DS3231 -biblioteket, Adafruit ADS1015 -biblioteket och Arduino SD -biblioteket

Rekommenderad: