Inhoudsopgave:

AC-stroombewaking datalogger - Ajarnpa
AC-stroombewaking datalogger - Ajarnpa

Video: AC-stroombewaking datalogger - Ajarnpa

Video: AC-stroombewaking datalogger - Ajarnpa
Video: Homelab Cooling Tips: Solar Screens, Massive Insulation and more! (Top 10 Ways to reduce heat) 2024, November
Anonim
AC-stroombewakingsdatalogger
AC-stroombewakingsdatalogger

Hallo allemaal, welkom bij mijn eerste instructable! Overdag ben ik testingenieur voor een bedrijf dat industriële verwarmingsapparatuur levert, 's nachts ben ik een fervent techniekhobbyist en doe-het-zelver. Een deel van mijn werk omvat het testen van de prestaties van verwarmingen. Bij deze gelegenheid wilde ik de RMS-stroomafname van 8 apparaten gedurende 1000 uur kunnen volgen en de gegevens loggen om de resultaten later in een grafiek te zetten. Ik heb toegang tot een datalogger, maar deze was al toegewijd aan een ander project en ik had iets goedkoops nodig, dus besloot ik deze basisdatalogger in elkaar te knutselen.

Het project gebruikt een Arduino Uno om analoge sensoren uit te lezen via analoog naar digitaal converter (ADC) en registreert de gegevens met een tijdstempel op een SD-kaart. Er komt veel theorie en berekening kijken bij het ontwerpen van de circuits, dus in plaats van alles uit te leggen, zal ik je gewoon laten zien hoe je het kunt maken. Als je geïnteresseerd bent in het zien van de VOLLEDIGE hit, laat het me dan weten in de comments en ik zal het verder uitleggen.

OPMERKING:

Ik heb veel vragen gehad over True RMS-berekeningen. Dit apparaat gebruikt een halfgolfgelijkrichter om de piek van de golf vast te leggen, die vervolgens kan worden vermenigvuldigd met 0,707 om RMS te krijgen. Bijgevolg geeft het alleen een nauwkeurig resultaat met lineaire belastingen (d.w.z. de gemeten stroom is een zuivere sinusgolf). Niet-lineaire voedingen of belastingen die driehoekige, rechthoekige of andere niet-sinusgolfvormen geven, geven geen echte RMS-berekening. Dit apparaat meet alleen wisselstroom, het is niet ontworpen om spanning te meten, en berekent of meet dus ook geen arbeidsfactor. Zie mijn andere instructable over het maken van een vermogensfactormeter die hiervoor kan worden gebruikt. Veel mensen hebben ook gezegd dat een rechte AC-koppeling met een hartlijn van 2,5 V beter is, maar dit brengt complicaties met zich mee, omdat het een voldoende snelle digitale bemonsteringsfrequentie, robuuste middeling / gegevensafvlakking, enz. Met zich meebrengt en de onzekerheid die dit introduceert is veel groter dan meten de ruwe waarde. Persoonlijk geef ik de voorkeur aan hardware-oplossingen en eenvoudigere code waar mogelijk, dus ik ben niet geïnteresseerd in die methode. Qua nauwkeurigheid geloof ik dat dit veel beter is dan de laatste en je zult later in mijn resultaten zien dat er een regressiecoëfficiënt is die dicht bij 1,0 ligt na kalibratie.

Stap 1: Stroomtransformatoren

Huidige transformatoren
Huidige transformatoren
Huidige transformatoren
Huidige transformatoren

Dit project maakt gebruik van HMCT103C 5A/5MA stroomtransformator. Het heeft een verhouding van 1:1000 omwentelingen, wat betekent dat voor elke 5A stroom die door de geleider stroomt, 5mA door de CT zal stromen. Er moet een weerstand worden aangesloten over de twee klemmen van de CT om een spanning erover te kunnen meten. Bij deze gelegenheid heb ik een weerstand van 220 Ohm gebruikt, dus met behulp van de wet van Ohm V = IR, zal de output van de CT 1,1 volt AC zijn, voor elke 5 mA CT-stroom (of elke 5 A gemeten stroom). De CT's werden gesoldeerd om het bord te strippen met de weerstand en wat instrumentdraad om vliegende draden te maken. Ik heb de kabels afgesloten met 3,5 mm mannelijke audio-jackpluggen.

Hier is de datasheet voor de huidige transformator:

Data papier

Stap 2: Signaalconditionering

Signaalconditionering
Signaalconditionering
Signaalconditionering
Signaalconditionering

Het signaal van de CT zal zwak zijn en moet dus worden versterkt. Hiervoor heb ik een eenvoudig versterkercircuit aan elkaar gesoldeerd met behulp van een uA741 dual-rail opamp. In dit geval wordt de versterking daarom ingesteld op 150 met behulp van de formule Rf / Rin (150k / 1k). Het uitgangssignaal van de versterker is echter nog steeds AC, de diode op de uitgang van de op-amp onderbreekt de negatieve halve cyclus van de AC en geeft de positieve spanning door aan een 0.1uF-condensator om de golf af te vlakken tot een gegolfd DC-signaal. Hieronder staan de onderdelen waaruit het circuit bestaat:

  • V1 - Dit is willekeurig in dit diagram, het vertegenwoordigt eenvoudig de signaalspanning die wordt ingevoerd in de niet-inverterende ingang van de op-amp.
  • R1 - Dit staat bekend als de feedbackweerstand (Rf) en is ingesteld op 150k
  • R2 - Dit staat bekend als de ingangsweerstand (Rin) en is ingesteld op 1k
  • 741 - Dit is de uA741 geïntegreerde schakeling
  • VCC - Positieve voedingsrail +12V
  • VEE - Negatieve voedingsrail -12V
  • D1 - Is de Haf-golf gelijkrichtsignaaldiode 1N4001
  • C3 - Deze condensator houdt het DC-signaal voor een ingestelde tijd vast

Op foto 2 kun je zien dat het is gemonteerd met Veroboard en vertind koperdraad. Er zijn 4 gaten geboord voor PCB-afstandhouders zodat ze gestapeld konden worden (omdat er acht kanalen zijn, moeten er in totaal acht versterkercircuits zijn.

Stap 3: Voeding

Stroomvoorziening
Stroomvoorziening
Stroomvoorziening
Stroomvoorziening
Stroomvoorziening
Stroomvoorziening

Als je geen zin hebt om het helemaal opnieuw te maken, kun je het bord voorgemonteerd uit China kopen zoals hierboven afgebeeld, maar je hebt nog steeds de 3VA-transformator nodig (stap 240V naar 12V). De foto op de foto kostte me ongeveer £ 2,50

Om het project van stroom te voorzien heb ik besloten om mijn eigen dual rail 12VDC voeding te maken. Dit was handig omdat de op-amps +12V, 0V, -12V nodig hebben en de Arduino Uno elke voeding tot 14 VDC kan accepteren. Hieronder staan de onderdelen waaruit het circuit bestaat:

  • V1 - Dit vertegenwoordigt de voeding uit het stopcontact 240V 50Hz
  • T1 - Dit is een kleine 3VA-transformator die ik had liggen. Het is belangrijk dat de transformator een centrale aftakking heeft op de secundaire die wordt aangesloten op 0V, d.w.z. aarde
  • D1 tot D4 - Dit is een bruggelijkrichter met volledige golf die gebruikmaakt van 1N4007-diodes
  • C1 & C2 - 35V elektrolytische condensatoren 2200uF (moet 35V zijn aangezien de potentiaal tussen positief en negatief 30V zal bereiken)
  • U2 - LM7812, is een 12V positieve spanningsregelaar
  • U3 - LM7912, is een 12V negatieve spanningsregelaar (let op de pinverschillen tussen de 78xx en 79xx IC!)
  • C3 & C4 - 100nF Afvlakcondensatoren 25V elektrolytisch
  • C5 & C6 - 10uF keramische schijfcondensatoren

Ik heb de componenten op stripboard gesoldeerd en de verticale rails verbonden met blank enkeladerig vertind koperdraad. Foto 3 hierboven toont mijn doe-het-zelf voeding, sorry dat er veel jumpers op de foto staan!

Stap 4: Analoog naar digitaal converters

Analoog naar digitaal converters
Analoog naar digitaal converters
Analoog naar digitaal converters
Analoog naar digitaal converters

De Arduino Uno heeft al een ingebouwde 10-bit ADC, maar er zijn slechts 6 analoge ingangen. Daarom heb ik ervoor gekozen om twee ADC-breakouts te gebruiken met de ADS1115 16-bit. Hierdoor kunnen 2^15 = 32767 bits spanningsniveaus vertegenwoordigen van 0-4,096V (4,096V is de bedrijfsspanning van de breakout), dit betekent dat elke bit 0,000125V vertegenwoordigt! Omdat het de I2C-bus gebruikt, betekent dit ook dat er tot 4 ADC's kunnen worden geadresseerd, waardoor desgewenst tot 16 kanalen kunnen worden bewaakt.

Ik heb geprobeerd de verbindingen te illustreren met Fritzing, maar vanwege de beperkingen zijn er geen aangepaste onderdelen om een signaalgenerator te illustreren. De paarse draad is verbonden met de uitgang van het versterkercircuit, de zwarte draad ernaast illustreert dat alle versterkercircuits gemeenschappelijke aarde moeten delen. Dus ik heb een breadboard gebruikt om te illustreren hoe ik de verbindingspunten heb gemaakt. Maar mijn eigenlijke project heeft de puistjes in vrouwelijke headers, gesoldeerd aan Veroboard, en alle verbindingspunten zijn op het veroboard gesoldeerd.

Stap 5: Microcontroller

Microcontroller
Microcontroller

Zoals hierboven vermeld, was de controller die ik koos een Arduino Uno, dit was een goede keuze omdat deze veel aan boord en ingebouwde functionaliteit heeft die anders apart zou moeten worden gebouwd. Bovendien is het compatibel met veel speciaal gebouwde 'schilden'. Bij deze gelegenheid had ik een real-time klok nodig om alle resultaten van een tijdstempel te voorzien en een SD-kaartschrijver om de resultaten op te nemen in een.csv- of.txt-bestand. Gelukkig heeft het Arduino-schild voor datalogging beide een schild dat zonder extra solderen op het originele Arduino-bord past. Het schild is compatibel met de RTClib- en SD-kaartbibliotheken, dus er is geen specialistische code nodig.

Stap 6: Montage

samenkomst
samenkomst
samenkomst
samenkomst
samenkomst
samenkomst

Ik gebruikte 5 mm hard PVC met gemiddelde/lage dichtheid (ook wel foamboard genoemd) om de meeste van mijn componenten vast te schroeven en het op een handig formaat te snijden met een hobbymes. Alle componenten zijn modulair gebouwd voor het prototype, omdat het mogelijk is om afzonderlijke onderdelen te verwijderen als er iets misgaat, maar het is niet zo efficiënt of netjes als een geëtste PCB (verder werk) dit betekent ook veel jumperdraden tussen de onderdelen.

Stap 7: Code uploaden

Upload de code naar de Arduino of haal de code uit mijn Github-repo

github.com/smooth-jamie/datalogger.git

Stap 8: Kalibratie

Kalibratie
Kalibratie
Kalibratie
Kalibratie
Kalibratie
Kalibratie

Theoretisch zal de gemeten stroom het resultaat zijn van verschillende dingen gecombineerd:

Gemeten ampère = (((a *0.45)/150)/(1.1/5000))/1000 waarbij 'a' de signaalspanning van de versterker is

0,45 is de rms-waarde van de Vout van het versterkercircuit, 150 is de op-amp-versterking (Rf/Rin = 150k/1k), 1.1 is de volledige spanningsuitgang van de CT wanneer de gemeten ampère 5A is, 5000 is gewoon 5A in mA, en 1000 is het aantal windingen in de transformator. Dit kan worden vereenvoudigd tot:

Gemeten ampère = (b * 9,216) / 5406555 waarbij b de door ADC gerapporteerde waarde is

Deze formule is getest met behulp van de Arduino 10-bit ADC en een verschil tussen multimeterwaarden en door Arduino gegenereerde waarden werd waargenomen met 11%, wat een onaanvaardbare afwijking is. Mijn voorkeursmethode voor kalibratie is om ADC-waarde versus stroom op een multimeter in een spreadsheet vast te leggen en een polynoom van de derde orde te plotten. Hieruit kan de kubieke formule worden gebruikt om betere resultaten te geven bij het berekenen van de gemeten stroom:

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

De coëfficiënten a, b, c en d worden in Excel berekend uit een eenvoudige gegevenstabel, x is uw ADC-waarde.

Om de gegevens te krijgen, heb ik een keramische 1k variabele weerstand (rheostaat) en een 12v-transformator gebruikt om de netwisselspanning van 240V te verlagen, waardoor ik een variabele stroombron van 13mA tot 100mA kan genereren. Hoe meer gegevenspunten worden verzameld, hoe beter, maar ik raad aan om 10 gegevenspunten te verzamelen om een nauwkeurige trend te krijgen. De bijgevoegde Excel-sjabloon berekent de coëfficiënten voor u, het is dan gewoon een kwestie van invoeren in de Arduino-code

Op regel 69 van de code ziet u waar u de coëfficiënten moet invoeren

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

wat hetzelfde is als de formule in blad1 van het Excel-bestand:

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

Waar x = adc0 van welk kanaal u ook kalibreert

Stap 9: Voltooien

Finish
Finish
Finish
Finish
Finish
Finish
Finish
Finish

Zet het in een projectbehuizing. Ik heb de voeding afgemaakt met een tuimelschakelaar om het geheel aan/uit te zetten bij de voeding, en een IEC "figuur 8" connector voor de netingang. Schroef het allemaal samen en je bent klaar om het uit te testen.

Verdere werkzaamheden

Het hele project werd vrij snel bespot, dus er is veel ruimte voor verbetering, geëtste circuit, betere componenten. Idealiter zou het hele ding op FR4 worden geëtst of gesoldeerd in plaats van heel veel jumpers. Zoals ik al eerder zei, er zijn heel veel dingen die ik niet heb genoemd, maar als er iets specifieks is dat je zou willen weten, laat het me dan weten in de reacties en ik zal de instructable bijwerken!

Update 2016-12-18

Ik heb nu een 16x2 LCD-scherm toegevoegd met behulp van de I2C "rugzak" om de eerste vier kanalen te controleren, ik zal er nog een toevoegen om de laatste vier te controleren wanneer het via de post aankomt.

Credits

Dit project is mogelijk gemaakt door alle auteurs van de bibliotheken die in mijn Arduino-schets zijn gebruikt, inclusief de DS3231-bibliotheek, Adafruit ADS1015-bibliotheek en de Arduino SD-bibliotheek

Aanbevolen: