Turinys:

Kintamosios srovės stebėjimo duomenų kaupiklis: 9 žingsniai (su paveikslėliais)
Kintamosios srovės stebėjimo duomenų kaupiklis: 9 žingsniai (su paveikslėliais)

Video: Kintamosios srovės stebėjimo duomenų kaupiklis: 9 žingsniai (su paveikslėliais)

Video: Kintamosios srovės stebėjimo duomenų kaupiklis: 9 žingsniai (su paveikslėliais)
Video: Lengvai savarankiškai sumontuokite ir optimizuokite savo 800W balkono elektrinę 2024, Liepa
Anonim
Kintamosios srovės stebėjimo duomenų kaupiklis
Kintamosios srovės stebėjimo duomenų kaupiklis

Sveiki visi, sveiki atvykę į mano pirmąjį pamokymą! Dieną esu bandymų inžinierius įmonėje, tiekiančioje pramoninę šildymo įrangą, o naktį esu aistringas technologijų mėgėjas ir „pasidaryk pats“. Dalis mano darbo yra susijusi su šildytuvų veikimo tikrinimu, šia proga norėjau turėti galimybę stebėti 8 įrenginių RMS srovę per 1000 valandų ir registruoti duomenis, kad vėliau būtų galima grafikuoti rezultatus. Turiu prieigą prie duomenų kaupiklio, tačiau jis jau buvo skirtas kitam projektui ir man reikėjo kažko pigiai, todėl nusprendžiau kartu sujungti šį pagrindinį duomenų kaupiklį.

Projektas naudoja „Arduino Uno“, kad nuskaitytų analoginius jutiklius per analoginį į skaitmeninį keitiklį (ADC) ir įrašytų duomenis su laiko žyme SD kortelėje. Projektuojant grandines yra daug teorijos ir skaičiavimo, todėl užuot paaiškinęs absoliučiai viską, aš tiesiog parodysiu, kaip tai padaryti. Jei jus domina VISAS hitas, praneškite man komentaruose ir aš paaiškinsiu toliau.

PASTABA:

Turėjau daug klausimų apie „True RMS“skaičiavimus. Šis prietaisas naudoja pusės bangos lygintuvą, kad užfiksuotų bangos smailę, kurią galima padauginti iš 0,707, kad gautų RMS. Todėl jis duos tikslų rezultatą tik esant tiesinėms apkrovoms (t. Y. Matuojama srovė yra gryna sinusinė banga). Netiesinės atsargos ar apkrovos, kurios suteikia trikampio, stačiakampio ar bet kurios kitos ne sinusinės bangos formas, nesuteiks tikrojo RMS. Šis prietaisas matuoja tik kintamąją srovę, jis nėra skirtas įtampai matuoti, todėl jis neskaičiuoja ir nemato galios koeficiento. Žiūrėkite mano kitą instrukciją, kaip sukurti galios koeficiento matuoklį, kuris gali būti naudojamas tai padaryti. Daugelis žmonių taip pat sakė, kad geriau naudoti tiesią kintamosios srovės jungtį su 2,5 V vidurio linija, tačiau tai sukelia komplikacijų, nes ji turi pakankamai greitą skaitmeninio mėginių ėmimo dažnį, tvirtą vidurkio nustatymą/duomenų išlyginimą ir tt, o tai sukuria didesnę neapibrėžtumą žaliavinė vertė. Asmeniškai man labiau patinka aparatinės įrangos sprendimai ir kur įmanoma paprastesnis kodas, todėl manęs šis metodas nedomina. Kalbant apie tikslumą, manau, kad tai kur kas geriau nei pastarasis, ir vėliau pamatysite mano rezultatus, kad po kalibravimo bus regresijos koeficientas, artimas 1,0.

1 žingsnis: dabartiniai transformatoriai

Dabartiniai transformatoriai
Dabartiniai transformatoriai
Dabartiniai transformatoriai
Dabartiniai transformatoriai

Šiame projekte naudojamas HMCT103C 5A/5MA srovės transformatorius. Jis turi 1: 1000 apsisukimų santykį, reiškiantį kiekvieną 5A srovę, tekančią per laidininką, 5 mA tekės per CT. Prie dviejų CT gnybtų reikia prijungti rezistorių, kad būtų galima išmatuoti įtampą. Šia proga aš naudojau 220 omų rezistorių, todėl, naudojant Omo dėsnį V = IR, CT išėjimas bus 1,1 volto kintamosios srovės, kiekvienai 5 mA CT srovei (arba kas 5A išmatuotos srovės). KT buvo lituojami prie plokštės su rezistoriumi ir kai kuriais prietaisų laidais, kad būtų galima skraidyti. Aš nutraukiau laidus su 3,5 mm vyrų garso lizdo kištukais.

Čia yra srovės transformatoriaus duomenų lapas

Duomenų lapas

2 žingsnis: signalo kondicionavimas

Signalo kondicionavimas
Signalo kondicionavimas
Signalo kondicionavimas
Signalo kondicionavimas

Signalas iš CT bus silpnas, todėl jį reikia sustiprinti. Tam aš lituodavau paprastą stiprintuvo grandinę, naudodamas dvigubo bėgio uA741 stiprintuvą. Tokiu atveju padidėjimas nustatomas į 150, naudojant formulę Rf / Rin (150k / 1k). Tačiau išvestis iš stiprintuvo vis dar yra kintamosios srovės, diodas, esantis op-amp išvestyje, nutraukia neigiamą kintamosios srovės ciklą ir perduoda teigiamą įtampą į 0,1uF kondensatorių, kad banga būtų išlyginta į banguotą nuolatinės srovės signalą. Žemiau yra dalys, sudarančios grandinę:

  • V1-šioje schemoje tai yra savavališka, ji tiesiog rodo signalo įtampą, kuri tiekiama į neinvertuojamą op-amp įvestį.
  • R1 - tai žinoma kaip grįžtamojo ryšio rezistorius (Rf) ir nustatyta 150k
  • R2 - tai žinoma kaip įvesties rezistorius (Rin) ir nustatyta į 1k
  • 741 - Tai integruota grandinė uA741
  • VCC - teigiamas maitinimo bėgelis +12V
  • VEE - neigiamas maitinimo bėgelis -12V
  • D1 - Ar haf bangos lyginimo signalo diodas 1N4001
  • C3 - Šis kondensatorius tam tikrą laiką palaiko nuolatinės srovės signalą

2 paveiksle matote, kad jis buvo surinktas naudojant „Veroboard“ir alavuotą varinę vielą. PCB stendams buvo išgręžtos 4 skylės, kad jas būtų galima sukrauti (kadangi yra aštuoni kanalai, iš viso turi būti aštuonios stiprintuvo grandinės.

3 žingsnis: maitinimo šaltinis

Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis
Maitinimo šaltinis

Jei nenorite gaminti nuo nulio, galite nusipirkti iš Kinijos surinktą plokštę, kaip parodyta aukščiau, tačiau jums vis tiek reikės 3VA transformatoriaus (sumažinkite 240V iki 12V). Paveikslėlis man kainavo apie 2,50 svaro

Norėdami įjungti projektą, nusprendžiau pasigaminti savo dvigubo bėgio 12VDC maitinimo šaltinį. Tai buvo patogu, nes stiprintuvams reikia +12V, 0V, -12V, o „Arduino Uno“gali priimti bet kokį maitinimą iki 14 VDC. Žemiau yra dalys, sudarančios grandinę:

  • V1 - tai maitinimas iš maitinimo lizdo 240V 50Hz
  • T1 - Tai mažas 3VA transformatorius, apie kurį gulėjau. Svarbu, kad transformatorius turėtų centrinį čiaupą ant antrinio, kuris bus prijungtas prie 0 V, ty žemės
  • D1 - D4 - Tai visos bangos tilto lygintuvas, naudojant 1N4007 diodus
  • C1 ir C2 - 35 V elektrolitiniai kondensatoriai 2200uF (turi būti 35 V, nes potencialas tarp teigiamo ir neigiamo sieks 30 V)
  • U2 - LM7812, yra 12 V teigiamos įtampos reguliatorius
  • U3 - LM7912, yra 12 V neigiamos įtampos reguliatorius (atkreipkite dėmesį į kaiščių skirtumus tarp 78xx ir 79xx IC!)
  • C3 ir C4 - 100nF Lyginimo kondensatoriai 25V elektrolitiniai
  • C5 ir C6 - 10uF keraminiai diskiniai kondensatoriai

Aš lituodavau komponentus ant juostelės ir sujungdavau vertikalius takelius plikomis viengyslėmis konservuotomis varinėmis vielomis. Aukščiau esančioje 3 nuotraukoje parodytas mano „pasidaryk pats“maitinimo šaltinis, atsiprašau, kad nuotraukoje yra daug džemperių!

4 žingsnis: analoginiai skaitmeniniams keitikliams

Analoginiai ir skaitmeniniai keitikliai
Analoginiai ir skaitmeniniai keitikliai
Analoginiai ir skaitmeniniai keitikliai
Analoginiai ir skaitmeniniai keitikliai

„Arduino Uno“jau turi įmontuotą 10 bitų ADC, tačiau yra tik 6 analoginiai įėjimai. Todėl aš nusprendžiau naudoti du ADC atskyrimus su 16 bitų ADS1115. Tai leidžia 2^15 = 32767 bitams parodyti įtampos lygius nuo 0-4,096V (4,096V yra pertraukos darbinė įtampa), tai reiškia, kad kiekvienas bitas yra 0,000125V! Be to, kadangi ji naudoja I2C magistralę, tai reiškia, kad galima adresuoti iki 4 ADC, todėl, jei pageidaujama, galima stebėti iki 16 kanalų.

Bandžiau iliustruoti ryšius naudodamas „Fritzing“, tačiau dėl apribojimų nėra specialių dalių, iliustruojančių signalų generatorių. Violetinė viela yra prijungta prie stiprintuvo grandinės išvesties, o šalia esanti juoda iliustracija rodo, kad visos stiprintuvo grandinės turi būti bendros. Taigi aš panaudojau lentą, skirtą iliustruoti, kaip padariau susiejimo taškus. Tačiau mano tikrojo projekto lūžiai yra moterų antraštėse, prilituoti prie „Veroboard“, o visi susiejimo taškai yra lituojami ant lentos.

5 žingsnis: mikrovaldiklis

Mikrovaldiklis
Mikrovaldiklis

Kaip minėta aukščiau, valdiklis, kurį pasirinkau, buvo „Arduino Uno“, tai buvo geras pasirinkimas, nes jame yra daug integruotų funkcijų, kurios priešingu atveju būtų reikalingos atskirai. Be to, jis suderinamas su daugybe specialiai sukurtų „skydų“. Šia proga man reikėjo realaus laiko laikrodžio, kad galėčiau žymėti visus rezultatus, ir SD kortelės rašytojo, kad galėčiau įrašyti rezultatus į.csv arba.txt failą. Laimei, „Arduino“duomenų registravimo skydas turi skydą, kuris stumiamas ant originalios „Arduino“plokštės be papildomo litavimo. Skydas yra suderinamas su „RTClib“ir SD kortelių bibliotekomis, todėl nereikia jokių specialių kodų.

6 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Aš naudojau 5 mm ridgid vidutinio/mažo tankio PVC (kartais žinomą kaip putų plokštė), kad atsukčiau daugumą savo komponentų ir supjaustyčiau jį tinkamo dydžio rankdarbių peiliu. Visi komponentai buvo sukurti moduliniu būdu prototipui, nes tai leidžia pašalinti atskiras dalis, jei kažkas negerai, tačiau jis nėra toks efektyvus ar tvarkingas kaip išgraviruotas PCB (tolesnis darbas), tai taip pat reiškia daugybę jungiamųjų laidų tarp komponentus.

7 veiksmas: kodo įkėlimas

Įkelkite kodą į „Arduino“arba gaukite kodą iš „Github“repo

github.com/smooth-jamie/datalogger.git

8 žingsnis: kalibravimas

Kalibravimas
Kalibravimas
Kalibravimas
Kalibravimas
Kalibravimas
Kalibravimas

Teoriškai išmatuota srovė bus kelių dalykų rezultatas:

Išmatuoti stiprintuvai = (((a *0,45)/150)/(1,1/5000))/1000, kur „a“yra stiprintuvo signalo įtampa

0,45 yra stiprintuvo grandinės Vout vidutinė teisinė vertė, 150 yra op-amp stiprinimas (Rf / Rin = 150k / 1k), 1,1 yra visos CT įtampos išėjimas, kai išmatuoti stiprintuvai yra 5A, 5000 yra tiesiog 5A mA, o 1000 yra transformatoriaus apsisukimų skaičius. Tai galima supaprastinti taip:

Išmatuoti stiprintuvai = (b * 9.216) / 5406555, kur b yra ADC reikšmė

Ši formulė buvo išbandyta naudojant „Arduino“10 bitų ADC, o skirtumas tarp multimetro ir „Arduino“sukurtų verčių buvo pastebėtas 11%, o tai yra nepriimtinas nukrypimas. Mano pageidaujamas kalibravimo metodas yra įrašyti ADC reikšmę prieš srovę į multimetrą skaičiuoklėje ir nubraižyti trečiosios eilės daugianarį. Naudojant kubinę formulę, galima gauti geresnių rezultatų apskaičiuojant išmatuotą srovę:

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

Koeficientai a, b, c ir d apskaičiuojami naudojant „Excel“iš paprastos duomenų lentelės, x yra jūsų ADC reikšmė.

Norėdami gauti duomenis, naudoju keraminį 1k kintamąjį rezistorių (reostatą) ir 12v transformatorių, kad sumažintumėte tinklo kintamąją įtampą nuo 240 V, o tai suteiks man galimybę sukurti kintamos srovės šaltinį nuo 13 mA iki 100 mA. Kuo daugiau duomenų taškų bus surinkta, tuo geriau, tačiau norėčiau gauti 10 duomenų taškų, kad gautumėte tikslią tendenciją. Pridėtas „Excel“šablonas apskaičiuos jums koeficientus, tada belieka juos įvesti į „arduino“kodą

69 kodo eilutėje matysite, kur įvesti koeficientus

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

kuri yra tokia pati kaip „Excel“failo 1 lapo formulė:

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

Kur x = kalibruojamo kanalo adc0

9 žingsnis: Užbaikite

Baigti
Baigti
Baigti
Baigti
Baigti
Baigti
Baigti
Baigti

Įdėkite jį į projekto aptvarą. Maitinimo šaltinį baigiau perjungimo jungikliu, kad įjungčiau/išjungčiau visą maitinimo šaltinį, ir IEC „8 pav.“Jungtį, skirtą tinklo įėjimui. Susukite viską kartu ir būsite pasiruošę išbandyti.

Tolesnis darbas

Visas projektas buvo išjuoktas gana greitai, todėl yra daug kur tobulėti, išgraviruota grandinė ir geresni komponentai. Idealiu atveju visa tai būtų išgraviruota arba lituojama ant FR4, o ne džemperių. Kaip jau sakiau anksčiau, yra daugybė dalykų, kurių nepaminėjau, bet jei yra kažkas konkretaus, kurį norėtumėte žinoti, praneškite man komentaruose ir aš atnaujinsiu instrukciją!

Atnaujinta 2016-12-18

Dabar pridėjau 16x2 skystųjų kristalų ekraną, naudodamas I2C „kuprinę“, kad galėčiau stebėti pirmuosius keturis kanalus, pridėsiu dar vieną, kad galėčiau stebėti paskutinius keturis, kai jis atkeliaus per paštą.

Kreditai

Šį projektą įgyvendino visi mano „Arduino“eskizui naudojamų bibliotekų autoriai, įskaitant DS3231 biblioteką, „Adafruit ADS1015“biblioteką ir „Arduino SD“biblioteką

Rekomenduojamas: