Indholdsfortegnelse:
- Trin 1: Strømtransformatorer
- Trin 2: Signalkonditionering
- Trin 3: Strømforsyning
- Trin 4: Analog til digitale omformere
- Trin 5: Mikrocontroller
- Trin 6: Montering
- Trin 7: Upload kode
- Trin 8: Kalibrering
- Trin 9: Afslut
Video: AC Current Monitoring Data Logger: 9 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Hej alle, velkommen til min første instruktive! Om dagen er jeg testingeniør for et firma, der leverer industrielt varmeudstyr, om natten er jeg en ivrig teknologihobbyist og gør -det -selv. En del af mit arbejde involverer at teste varmeovnenes ydeevne, ved denne lejlighed ville jeg være i stand til at overvåge RMS -strømtrækningen på 8 enheder over 1000 timer og logge dataene for at tegne resultaterne senere. Jeg har adgang til en datalogger, men den var allerede forpligtet til et andet projekt, og jeg havde brug for noget billigt, så jeg besluttede at samle denne grundlæggende datalogger.
Projektet bruger en Arduino Uno til at læse analoge sensorer via analog til digital konverter (ADC) og registrerer dataene med et tidsstempel på et SD -kort. Der er meget teori og beregning involveret i at designe kredsløbene, så i stedet for at forklare absolut alt, vil jeg bare vise dig, hvordan du laver det. Hvis du er interesseret i at se HELT hit, så lad mig vide det i kommentarerne, og jeg vil forklare yderligere.
BEMÆRK:
Jeg har haft mange spørgsmål om True RMS -beregninger. Denne enhed bruger en halvbølge -ensretter til at fange bølgens top, som derefter kan ganges med 0,707 for at give RMS. Følgelig vil det kun give et nøjagtigt resultat med lineære belastninger (dvs. strømmen, der måles, er en ren sinusbølge). Ikke-lineære forsyninger eller belastninger, der giver trekantede, rektangulære eller andre ikke-sinusbølgeformer, giver ikke en sand RMS-beregning. Denne enhed måler kun vekselstrøm, den er ikke designet til at måle spænding, derfor beregner eller måler den ikke effektfaktoren. Se venligst min anden instruktion om, hvordan du opretter en effektfaktormåler, som kan bruges til at gøre dette. Mange mennesker har også sagt, at en lige AC -kobling med en 2,5V midterlinje er bedre, men dette medfører komplikationer, da det indebærer at have en tilstrækkelig hurtig digital samplingshastighed, robust gennemsnit/dataudjævning osv., Og usikkerheden, dette introducerer, er meget højere end måling råværdien. Personligt foretrækker jeg hardwareløsninger og enklere kode, hvor det er muligt, så jeg er ikke interesseret i den metode. Nøjagtigt tror jeg, at dette er langt bedre end sidstnævnte, og du vil se senere i mine resultater, at der er en regressionskoefficient tæt på 1,0 efter kalibrering.
Trin 1: Strømtransformatorer
Dette projekt bruger HMCT103C 5A/5MA strømtransformator. Det har et forhold på 1: 1000 omdrejninger, hvilket betyder, at for hver 5A strøm, der strømmer gennem lederen, vil 5mA strømme gennem CT. En modstand skal forbindes på tværs af de to terminaler i CT for at tillade måling af en spænding på tværs af den. Ved denne lejlighed brugte jeg en 220 Ohm modstand, derfor ved hjælp af Ohms lov V = IR vil udgangen af CT være 1,1 Volt AC for hver 5mA CT -strøm (eller hver 5A målt strøm). CT'erne blev loddet til at fjerne plader med modstanden og noget instrumenttråd for at lave flyvende ledninger. Jeg afsluttede ledningerne med 3,5 mm hanstik til lydstik.
Her er databladet for den nuværende transformer
Datablad
Trin 2: Signalkonditionering
Signalet fra CT vil være svagt, så det skal forstærkes. Til dette lodde jeg sammen et simpelt forstærkerkredsløb ved hjælp af en uA741 dual rail op amp. I dette tilfælde er forstærkningen derfor sat til 150 ved hjælp af formlen Rf / Rin (150k / 1k). Udgangssignalet fra forstærkeren er dog stadig vekselstrøm, dioden på op-ampens udgang afbryder den negative halve cyklus af vekselstrømmen og sender den positive spænding til en 0,1 uF kondensator for at udjævne bølgen til et kruset DC-signal. Nedenfor er de dele, der udgør kredsløbet:
- V1-Dette er vilkårligt i dette diagram, det repræsenterer simpelthen den signalspænding, der føres ind i op-ampens ikke-inverterende indgang.
- R1 - Dette er kendt som feedbackmodstanden (Rf) og er indstillet til 150k
- R2 - Dette er kendt som inputmodstanden (Rin) og er indstillet til 1k
- 741 - Dette er det integrerede uA741 kredsløb
- VCC - Positiv forsyningsskinne +12V
- VEE - Negativ forsyningsskinne -12V
- D1 - Er haf -bølge -retificerende signaldiode 1N4001
- C3 - Denne kapaktor holder DC -signalet i en bestemt tid
På billede 2 kan du se, at det blev samlet ved hjælp af Veroboard og fortinnet kobbertråd. Der blev boret 4 huller til PCB -stand -off'er, så de kunne stables (fordi der er otte kanaler, skal der være otte forstærkerkredsløb i alt.
Trin 3: Strømforsyning
Hvis du ikke har lyst til at lave det fra bunden, kan du købe brættet færdigmonteret fra Kina som det på billedet ovenfor, men du skal stadig bruge 3VA-transformeren (trin ned 240V til 12V). Den på billedet kostede mig omkring £ 2,50
For at drive projektet besluttede jeg at lave min egen 12VDC strømforsyning med to skinner. Dette var praktisk, da op -forstærkere kræver +12V, 0V, -12V, og Arduino Uno kan acceptere enhver forsyning op til 14 VDC. Nedenfor er de dele, der udgør kredsløbet:
- V1 - Dette repræsenterer forsyningen fra stikkontakten 240V 50Hz
- T1 - Dette er en lille 3VA transformer, jeg havde liggende om. Det er vigtigt, at transformeren har et centralt tryk på den sekundære, som vil blive forbundet til 0V, dvs. jord
- D1 til D4 - Dette er en fuldbølgebro -ensretter ved hjælp af 1N4007 dioder
- C1 & C2 - 35V elektrolytkondensatorer 2200uF (skal være 35V, da potentialet mellem positivt og negativt vil nå 30V)
- U2 - LM7812, er en 12V positiv spændingsregulator
- U3 - LM7912, er en 12V negativ spændingsregulator (vær omhyggelig med at bemærke stiftforskellene mellem 78xx og 79xx IC!)
- C3 & C4 - 100nF Udjævningskondensatorer 25V elektrolytisk
- C5 & C6 - 10uF keramiske diskkondensatorer
Jeg loddet komponenterne på stripboard, og sluttede mig til de lodrette spor med bare enkelt kerne fortinnet kobbertråd. Billede 3 ovenfor viser min DIY strømforsyning, desværre er der mange jumpere på billedet!
Trin 4: Analog til digitale omformere
Arduino Uno har allerede en indbygget 10-bit ADC, men der er kun 6 analoge indgange. Derfor valgte jeg at bruge to ADC-breakouts med ADS1115 16-bit. Dette giver 2^15 = 32767 bits mulighed for at repræsentere spændingsniveauer fra 0-4.096V (4.096V er breakoutets driftsspænding), hvilket betyder, at hver bit repræsenterer 0,000125V! Fordi den bruger I2C -bussen, betyder det også, at op til 4 ADC'er kan adresseres, så op til 16 kanaler kan overvåges, hvis det ønskes.
Jeg har forsøgt at illustrere forbindelserne ved hjælp af Fritzing, men på grund af begrænsningerne er der ingen brugerdefinerede dele til at illustrere en signalgenerator. Den lilla ledning er forbundet til udgangen af forstærkerkredsløbet, den sorte ledning ved siden af illustrerer, at alle forstærkerkredsløb skal dele fælles vej. Så jeg har brugt et brødbræt til at illustrere, hvordan jeg har lavet tiepoints. Men mit egentlige projekt har breakouts, der sidder i kvindelige overskrifter, loddet til Veroboard, og alle bindingspunkter er loddet på veroboardet.
Trin 5: Mikrocontroller
Som nævnt ovenfor var controlleren, jeg valgte, en Arduino Uno, dette var et godt valg, da den har en masse ombord og indbygget funktionalitet, som ellers ville skulle bygges separat. Plus det er kompatibelt med en masse specialbyggede 'skjolde'. Ved denne lejlighed krævede jeg et ur i realtid til at stemple alle resultaterne og en SD -kortskriver til at registrere resultaterne i en.csv- eller.txt -fil. Heldigvis har Arduino datalogningskjold begge i et skjold, der skubber pasformen på det originale Arduino-bord uden yderligere lodning. Skjoldet er kompatibelt med RTClib- og SD -kortbibliotekerne, så der er ikke behov for nogen specialkode.
Trin 6: Montering
Jeg brugte 5 mm ridgid medium/low density PVC (undertiden kendt som foamboard) til at skrue de fleste af mine komponenter ned og skære det til en passende størrelse med en håndværkskniv. Alle komponenterne blev bygget modulært til prototypen, da det giver mulighed for fjernelse af individuelle dele, hvis det går galt, men det er ikke så effektivt eller ryddeligt som et ætset printkort (yderligere arbejde), det betyder også en masse springtråde mellem komponenterne.
Trin 7: Upload kode
Upload koden til Arduino, eller hent koden fra min Github -repo
github.com/smooth-jamie/datalogger.git
Trin 8: Kalibrering
Teoretisk vil den målte strøm være et resultat af flere ting kombineret:
Målte ampere = (((a *0,45)/150)/(1,1/5000))/1000 hvor 'a' er signalspændingen fra forstærkeren
0,45 er rms-værdien af forstærkerkredsløbets Vout, 150 er op-amp-forstærkningen (Rf / Rin = 150k / 1k), 1,1 er fuld spændingsudgang for CT, når målte ampere er 5A, 5000 er simpelthen 5A in mA, og 1000 er mængden af omdrejninger i transformeren. Dette kan forenkles til:
Målt ampere = (b * 9.216) / 5406555 hvor b er ADC -rapporteret værdi
Denne formel blev testet ved hjælp af Arduino 10-bit ADC, og en forskel mellem multimeterværdier og Arduino-genererede værdier blev observeret med 11%, hvilket er en uacceptabel afvigelse. Min foretrukne metode til kalibrering er at registrere ADC -værdi vs strøm på et multimeter i et regneark og plotte et tredje ordens polynom. Ud fra dette kan kubikformlen bruges til at give bedre resultater ved beregning af målestrøm:
(ax^3) + (bx^2) + (cx^1) + d
Koefficienterne a, b, c og d beregnes i excel fra en simpel datatabel, x er din ADC -værdi.
For at få dataene brugte jeg en keramisk 1k variabel modstand (rheostat) og 12v transformer til at trække netspændingen ned fra 240V, hvilket gav mig at generere en variabel strømkilde fra 13mA til 100mA. Jo flere datapunkter der blev indsamlet jo bedre, men jeg vil foreslå at indsamle 10 datapunkter for at få en præcis trend. Den vedhæftede Excel -skabelon beregner koefficienterne for dig, det er derefter bare et spørgsmål om at indtaste dem i arduino -koden
På linje 69 i koden vil du se, hvor koefficienterne skal indtastes
float chn0 = ((7.30315 * pow (10, -13)) * pow (adc0, 3) + (-3.72889 * pow (10, -8) * pow (adc0, 2) + (0.003985811 * adc0) + (0.663064521))));
hvilket er det samme som formlen i ark1 i excel -filen:
y = 7E-13x3-4E-08x2 + 0,004x + 0,663
Hvor x = adc0 for den kanal, du kalibrerer
Trin 9: Afslut
Læg det i et projektkabinet. Jeg afsluttede strømforsyningen med en vippekontakt for at tænde/slukke det hele ved forsyningen og et IEC "figur 8" -stik til netindgangen. Skru det hele sammen, og du er klar til at teste det.
Yderligere arbejde
Hele projektet blev spottet ret hurtigt, så der er masser af plads til forbedringer, ætset kredsløb, bedre komponenter. Ideelt set ville det hele blive ætset eller loddet på FR4 frem for masser af jumpere. Som jeg sagde tidligere, er der masser af ting, jeg ikke har nævnt, men hvis der er noget specifikt, du gerne vil vide, lad mig vide det i kommentarerne, og jeg vil opdatere instruktøren!
Opdatering 2016-12-18
Jeg har nu tilføjet en 16x2 LCD ved hjælp af I2C "rygsæk" til at overvåge de første fire kanaler, vil tilføje en anden til at overvåge de sidste fire, når den kommer gennem posten.
Credits
Dette projekt blev muliggjort af alle forfatterne til de biblioteker, der blev brugt i min Arduino -skitse, herunder DS3231 -biblioteket, Adafruit ADS1015 -biblioteket og Arduino SD -biblioteket
Anbefalede:
GPS Cap Data Logger: 7 trin (med billeder)
GPS Cap Data Logger: Her er et godt weekendprojekt, hvis du er til trekking eller tager lange cykelture, og har brug for en GPS -datalogger for at holde styr på alle dine treks/rides, du har taget … Når du har gennemført bygningen og downloadede data fra GPS -modulet på tr
The Ultimate High Altitude Weather Balloon Data Logger: 9 trin (med billeder)
The Ultimate High Altitude Weather Balloon Data Logger: Optag vejrballondata i høj højde med den ultimative vejrballon datalogger i høj højde. En vejrballon i højder, også kendt som en højhøjdeballon eller HAB, er en kæmpe ballon fyldt med helium. Disse balloner er en platform
Open Source Data Logger (OPENSDL): 5 trin (med billeder)
Open Source Data Logger (OPENSDL): Formålet med dette projekt er at designe, bygge og teste et billigt målesystem til evaluering af bygningsresultater, der omfatter mindst temperatur, relativ luftfugtighed, belysning og kan udvides til yderligere sensorer, og til at udvikle
Nest Thermostat History Data Logger: 6 trin (med billeder)
Nest Thermostat History Data Logger: Nest -termostat sporer temperatur, fugtighed og ovn/AC -brug, og brugerne kan kun se historiske data i 10 dage. Jeg ville indsamle historiske data (> 10 dage) og stødte på et Google -regnearks script, der pinger nest hver gang
IoT Plant Monitoring System (Med IBM IoT Platform): 11 trin (med billeder)
IoT Plant Monitoring System (Med IBM IoT Platform): Oversigt Plant Monitoring System (PMS) er en applikation bygget med personer, der er i arbejderklassen med en grøn tommelfinger i tankerne. I dag har arbejdende personer travlt end nogensinde før; fremme deres karriere og styre deres økonomi