Til måling og fastsættelse af tid i flashhukommelse af lange processer udtrykt i strøm og spænding, såsom opladning - udladning af batterier og batterier. Det er muligt at fastsætte temperaturen samtidigt.
Parametre for indgangssignal:
nuværende I = 25mka - 2a
spænding U = 0 - 5V
temperatur t = -30 - + 120 gС
tiden indstilles af det interne indbyggede kvartsur
Strømforsyning:
fra kilden 12v / 0,3a
Jeg forbrug <70ma
konstruktion:
Måleren samles på to moduler Arduino Nano tilsluttet via ModBus-protokol, se diagram. Én Arduino er monteret på en stigning med terminalblokke. Modulerne tilsluttes via stik. Ledningerne og modulerne i sig selv er isoleret fra termisk-kambriske fejl.
Inputsignaler føres gennem skrueterminaler
På frontpanelet er der en flydende krystalindikator for de målte parametre og LED'er, der indikerer omskiftning af et område eller uden for rækkevidde.
Måleren samles i et hus 145x85x40.
Temperatursensoren udføres gennem stikket. Signaltransmission er organiseret på en to-leder linje. Fødemodstand i stikket.
For at lette programmeringen er Arduino USB-stik eksterne.
ordningen
Ordningen kan downloades fra filen Izmeritel.rar
To Arduino blev valgt af to grunde: Arduino Nano var tilgængelige og ikke nok i en hukommelse, og det er planlagt at tilføje sensorer yderligere. Derudover ønskede jeg at mestre Arduino-foreningen, for dette blev ModBus-netværksprotokol valgt. ModBus definerer en masterprocessor - Master og flere slaver - Slave. I dette arbejde er der en slave, der er en måling af temperatur, spænding og strøm. On Master - et ur og en filindgang. Kødhukommelsen skal være mindre end 4 GB og formateret i FAT.
Da det var planlagt at måle strømme fra μA til A, måles strømme i 4 intervaller (se Ranges-tabellen), Arduino Slave overvåger overgangen fra et område til et andet og danner den tilsvarende shuntkode for den aktuelle målte strøm fra M1-2. Når du nærmer dig grænsen til området, tændes det næste interval, det vil sige, den aktuelle nøgle er deaktiveret fra T1-1 --- T2-2, og den næste er tændt. I dette tilfælde er den maksimale shunt = 100 ohm konstant tændt. Hvis der er et overskud af værdien i området, lyser LED'erne D8, D9.
Opdeling af strømmåling i intervaller
Uout_max = 5v KusOU = 20 Δ = Ish / 1024
Forøgelsen af driftsforstærkeren M1-2 indstilles = 20 og ændres derefter ikke. (På frontpanelet er det monteret forkert).
Spændingen måles gennem en efterfølger på OU M1-1.Indgangskredsløbene til op-amp og Arduino er beskyttet af dioder (zener-dioder er i Arduino, men jeg ved ikke parametrene, derfor er det bedre at overdrive).
LCD1602 er valgt som en indikator. Det er forbundet med Arduino Master. Desuden kan indikatoren tilsluttes begge Arduino ved blot at skifte Arduino-stik. (Når strømmen er slukket.) Forbindelsen til Arduino-slaven vises med en stiplet linje (som blev brugt ved skrivning af programmer). Med hovedforbindelsen (til masteren) på LCD1602 kan du vise 4 skærme ved at skifte skyderen til glidekontakten p1-p2.
Skærm1: ovenfra er serviceoplysningerne om udvekslingen mellem Arduino: C er antallet af udvekslinger mellem Arduino, E er antallet af fejl under udvekslingen af Sh-nr. Til shunt;
nederste dag - månedstid.
Skærm2: U1, I1, Shunt No., (0,00 nede til højre-reserve)
Skærm3: U2, temperatur, (u-standby)
Skærm4: SD-optagelse aktiveret, optagelsestid i timer, linjenummer i fil,
00- nuværende rækkevidde1 0-normal 1 uden for rækkevidde, spændingsområde1, fast effekt fra en ekstern kilde
Når der er forbindelse til Slave - 2 skærme. Skift p3 muliggør optagelse i Micro Flesh hukommelse.
Strømforsyningen vælges 12v for at opnå lineære egenskaber ved op-forstærkeren (for at undgå blokeringer ved kanterne af området). Af samme grund blev der anvendt negativ spænding fra shaperen ved KR1006VI1. Brug af en Arduino-generator producerer en mindre stabil spænding. For at generere 5V strøm blev der brugt en nedadgående konverter, men du kan undvære det ved at levere + 12V til VIN Arduino Nano-indgange.
Fælles programmering Arduino har funktioner, da kommunikationen med computeren er optaget med ModBus-protokollen. For at indlæse en skitse i en af Arduino, skal du på den anden side aktivere RST-nulstillingssignalet. For at gøre dette skal du bruge hopperne Block S, Block M. Eller tryk og hold nulstillingsknapperne på Arduino-modulerne, indtil downloadet er afsluttet, hvilket er mindre praktisk, og der er en chance for at ødelægge downloadet. Da jeg planlægger at udvide min USB Arduino-enhed, trak jeg sagen ud.
Transistoren T5 (FR024N) skal bruges til at tænde / slukke for en proces, f.eks. En opladning-afladning af et batteri. Mens det ikke er involveret.
Software.
Det tygges maksimalt, at begyndere (og jeg selv) ikke vil skade og kan fungere som referencemateriale, men hævder ikke at være optimale.
Biblioteker og programkoder findes i filen Izmeritel PRO.rar.
Skitse til master ModBus_Master10_SD_T_10_2. Skitse til slave ModBus-Slave10_T_UI_10_2. Resten af biblioteket.
Programmeret i miljøet i Arduino1.6.0. Det indeholder biblioteker SD, LiquidCrystal, Wire behøver ikke at downloade.
Tiden i timer indstilles i Setup som følger. Indstil realtid, og indlæs skitsen. Kommenter derefter linjerne til indstilling af dato og klokkeslæt, og indlæs skitsen igen.
Resultatet af programmet vil være indikationen af tid og dato (timer), strøm, spænding, temperatur på LCD1602 og optagelse af disse parametre i IZMER1.TXT-filen i Micro Flesh-hukommelse. Filen vil indeholde en tabel af denne art:
0; 2019/04/13; 00:11:10; Zap (h) = 0,05; tc = 29,31; U1 = 1,71; 11 = 0,00; Pl = 0,00; U2 = 0,14; DiaI norma; DiaU norma; C = 762
1; 2019/04/13; 00:11:16; Zap (h) = 0,05; tc = 29,38; U1 = 1,79; 11 = 0,00; Pl = 0,00; U2 = 0,19; DiaI norma; DiaU norma; C = 788
2; 2019/04/13; 00:11:22; Zap (h) = 0,05; tc = 29,38; U1 = 1,54; 11 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 813
3; 2019/04/13; 00:11:28; Zap (h) = 0,05; tc = 29,31; U1 = 1,30; 11 = 0,00; Pl = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 839
4; 2019/04/13; 00:11:34; Zap (h) = 0,05; tc = 29,31; U1 = 1,90; 11 = 0,00; Pl = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 864
5; 2019/04/13; 00:11:40; Zap (h) = 0,05; tc = 29,25; U1 = 1,53; 11 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 890
6; 2019/04/13; 00:11:46; Zap (h) = 0,05; tc = 29,19; U1 = 2,03; 11 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 915
7; 2019/04/13; 00:11:52; Zap (h) = 0,05; tc = 29,13; U1 = 1,81; 11 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 941
8; 2019/04/13; 00:11:58; Zap (h) = 0,05; tc = 29,00; U1 = 1,30; 11 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 966
9; 2019/04/13; 00:12:04; Zap (h) = 0,07; tc = 28,94; U1 = 1,25; 11 = 0,00; Pl = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 992
10; 2019/04/13; 00:12:10; Zap (h) = 0,07; tc = 29,00; U1 = 1,85; 11 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1017
11; 2019/04/13; 00:12:16; Zap (h) = 0,07; tc = 29,00; U1 = 1,21; 11 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1043
12; 2019/04/13; 00:12:23; Zap (h) = 0,07; tc = 28,94; U1 = 1,55; 11 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1068
13; 2019/04/13; 00:12:29; Zap (h) = 0,07; tc = 28,88; U1 = 1,82; 11 = 0,00; Pl = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1094
14; 2019/04/13; 00:12:35; Zap (h) = 0,07; tc = 28,88; U1 = 1,30; 11 = 0,00; Pl = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1119
hvor kolonnerne er placeret n / a; dato; tid; optagelsestid i timer; temperatur; målt spænding U1; målt strøm I1; den anden målte spænding U2; information om udgang / fravær af måleområdet; serviceinformation om antallet af udvekslinger mellem Arduino.
Målingsoptagelsesintervallet blev valgt i 6 sekunder, det er let at ændre det ved at erstatte værdien af #define CYCLE_TIME_F 3000-konstanten med en anden med formlen Tsec = Konstant (ms) * 2/1000 i Master.
Denne tabel kan yderligere præsenteres i form af pæne grafer.
Når jeg skrev programmer, brugte jeg materialer. Jeg udtrykker min taknemmelighed til forfatteren.