Innehållsförteckning:
- Steg 1: Strömtransformatorer
- Steg 2: Signalkonditionering
- Steg 3: Strömförsörjning
- Steg 4: Analog till digitala omvandlare
- Steg 5: Mikrokontroller
- Steg 6: Montering
- Steg 7: Ladda upp kod
- Steg 8: Kalibrering
- Steg 9: Slutför
Video: AC Current Monitoring Data Logger: 9 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
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
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
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
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
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
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
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
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
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:
GPS Cap Data Logger: 7 steg (med bilder)
GPS Cap Data Logger: Här är ett bra helgprojekt, om du är på vandring eller tar långa cykelturer, och behöver en GPS -datalogger för att hålla reda på alla dina vandringar/åk du har tagit … När du har slutfört bygget och laddat ner data från GPS -modulen på tr
The Ultimate High Altitude Weather Balloon Data Logger: 9 steg (med bilder)
The Ultimate High Altitude Weather Balloon Data Logger: Spela in höghöjdsväderballongdata med den ultimata väderballongdataloggern för höghöjd. En väderballong på hög höjd, även känd som en höghöjdsballong eller HAB, är en enorm ballong fylld med helium. Dessa ballonger är en plattform
Open Source Data Logger (OPENSDL): 5 steg (med bilder)
Open Source Data Logger (OPENSDL): Syftet med detta projekt är att designa, bygga och testa ett lågkostnadsmätningssystem för utvärderingar av byggprestanda som inkluderar minst temperatur, relativ luftfuktighet, belysningsstyrka och kan utvidgas till ytterligare sensorer, och att utveckla
Nest Thermostat History Data Logger: 6 steg (med bilder)
Nest Thermostat History Data Logger: Nest -termostat spårar temperatur, luftfuktighet och användning av ugn/AC och användare kan bara se historisk data i 10 dagar. Jag ville samla historisk data (> 10 dagar) och stötte på ett Google -kalkylbladskript som pingar häckar varenda gång
Cardio Data Logger: 7 steg (med bilder)
Cardio Data Logger: Även om det numera finns många bärbara enheter (smartband, smartklockor, smartphones, …) som kan detektera hjärtfrekvensen (HR) och utföra spåranalyser, bältesbältesbaserade system (som den i den övre delen av bilden) är st