Ilgu procesu, kas izteikti strāvā un spriegumā, piemēram, akumulatoru un akumulatoru lādēšanai, mērīšanai un savlaicīgai fiksēšanai zibatmiņā. Ir iespējams vienlaikus noteikt temperatūru.
Ieejas signāla parametri:
strāva I = 25mka - 2a
spriegums U = 0 - 5V
temperatūra t = -30 - + 120gС
laiku nosaka iekšējais iebūvētais kvarca pulkstenis
Uzturs:
no avota 12v / 0,3a
Es patērēju <70m
Konstrukcija:
Skaitītājs ir samontēts uz diviem moduļiem Arduino Nano savienots, izmantojot ModBus protokolu, sk. Diagrammu. Viens Arduino ir uzstādīts uz stāvvada ar spaiļu blokiem. Moduļi ir savienoti caur savienotājiem. Pati vadi un moduļi ir izolēti no termiskās kambrikas bojājumiem.
Ieejas signāli tiek padoti caur skrūvju spailēm
Priekšējā panelī ir šķidro kristālu indikators ar izmērītajiem parametriem un gaismas diodes, kas norāda diapazona maiņu vai diapazonu.
Skaitītājs ir samontēts korpusā 145x85x40.
Temperatūras sensors tiek veikts caur savienotāju. Signāla pārraide tiek organizēta uz divu vadu līnijas. Padeves rezistors savienotājā.
Programmēšanas ērtībai Arduino USB savienotāji ir ārēji.
Shēma
Shēmu var lejupielādēt no faila Meter.rar
Divi Arduino tika izvēlēti divu iemeslu dēļ: Arduino Nano bija pieejami un to nepietika vienā atmiņā, un sensorus plānots pievienot vēl. Turklāt es gribēju apgūt Arduino asociāciju, tam tika izvēlēts ModBus tīkla protokols. ModBus definē vienu galveno procesoru - galveno un vairākus vergus - Slave. Šajā darbā ir viens vergs, uz tā ir temperatūras, sprieguma un strāvas mērījums. On Master - pulkstenis un ieraksts failā. Miesas atmiņai jābūt mazākai par 4 GB, un tai jābūt formatētai FAT.
Tā kā bija plānots izmērīt strāvas no μA līdz A, strāvas mēra 4 diapazonos (sk. Diapazonu tabulu), Arduino vergs uzrauga pāreju no viena diapazona uz otru, veidojot atbilstošo šunta kodu pašreizējai izmērītajai strāvai no M1-2. Tuvojoties diapazona robežai, tiek ieslēgts nākamais diapazons, tas ir, pašreizējais taustiņš no T1-1 --- T2-2 tiek izslēgts un nākamais ir ieslēgts. Šajā gadījumā maksimālais šunts = 100ohm ir pastāvīgi ieslēgts. Ja diapazonā ir pārsniegta vērtība, iedegas gaismas diodes D8, D9.
Sadalot strāvas mērījumus diapazonos
Uout_max = 5v KusOU = 20 Δ = Ish / 1024
Operatīvā pastiprinātāja M1-2 pastiprinājums ir iestatīts = 20 un pēc tam nemainās. (Uz priekšējā paneļa tas ir uzstādīts kļūdaini).
Spriegumu mēra caur OU M1-1 sekotāju.Op-amp un Arduino ieejas shēmas ir aizsargātas ar diodēm (Zener diodes atrodas Arduino, bet es nezinu parametrus, tāpēc labāk to pārspīlēt).
LCD1602 ir izvēlēts kā indikators. Tas ir savienots ar Arduino Master. Turklāt indikatoru var savienot ar abiem Arduino, vienkārši pārslēdzot Arduino savienotājus. (Kad barošana ir izslēgta.) Savienojums ar Arduino Slave tiek parādīts ar pārtrauktu līniju (to izmantoja, rakstot programmas). Izmantojot galveno savienojumu (ar galveno) LCD1602, 4 ekrānus var parādīt, pārslēdzot slīdņa slēdža slīdni p1-p2.
1. ekrāns: no augšas pakalpojuma informācija par apmaiņu starp Arduino: C ir apmaiņu skaits starp Arduino, E ir kļūdu skaits, apmainoties ar šunta shēmu;
grunts diena - mēneša laiks.
2. ekrāns: U1, I1, šunta Nr. (0.00 apakšējā labajā pusē, rezerve)
3. ekrāns: U2, temperatūra, (gaidīšanas režīms)
4. ekrāns: iespējota SD ierakstīšana, ierakstīšanas laiks stundās, faila rindas numurs,
00- strāvas diapazona1 stāvoklis 0-normāls 1 ārpus diapazona, sprieguma diapazona1 stāvoklis, ārēja avota fiksētā jauda
Kad savienots ar Slave - 2 ekrāniem. Slēdzis p3 ļauj ierakstīt Micro Flesh atmiņā.
Strāvas padeve tiek izvēlēta 12v, lai iegūtu op-amp lineāros raksturlielumus (lai izvairītos no aizsprostojumiem diapazona malās). Tā paša iemesla dēļ tika izmantots negatīvs spriegums no formētāja KR1006VI1. Izmantojot Arduino ģeneratoru, rodas mazāk stabils spriegums. Lai ģenerētu 5 V enerģiju, tika izmantots atkāpes pārveidotājs, taču jūs varat iztikt bez tā, piegādājot + 12 V VIN Arduino Nano ieejām.
Kopīgai Arduino programmēšanai ir iespējas, jo komunikācija ar datoru ir aizņemta ar ModBus protokolu. Lai ielādētu skici vienā no Arduino, otrā jāiespējo RST atiestatīšanas signāls. Lai to izdarītu, izmantojiet džemperus Block S, Block M. Vai arī nospiediet un turiet Arduino moduļu atiestatīšanas pogas, līdz lejupielāde ir pabeigta. Tas ir mazāk ērti un ir iespēja sabojāt lejupielādi. Tā kā es plānoju paplašināt savu USB Arduino ierīci, es izvilku lietu.
Paredzēts, ka tranzistors T5 (FR024N) ir paredzēts, lai ieslēgtu / izslēgtu procesu, piemēram, akumulatora uzlādes un izlādes procesu. Kamēr tas nav iesaistīts.
Programmatūra.
Maksimāli košļājams, ka iesācēji (un arī es pats) nesāpēs un var kalpot par atsauces materiālu, bet nepretendē uz optimitāti.
Bibliotēkas un programmu kodi atrodas Izmeritel PRO.rar failā.
Skice galvenajam ModBus_Master10_SD_T_10_2. Skice verdzim ModBus-Slave10_T_UI_10_2. Pārējā bibliotēka.
Programmēts Arduino1.6.0 vidē. Tajā ir SD, LiquidCrystal un Wire bibliotēkas lejupielāde nav nepieciešama.
Laiks stundās tiek iestatīts šādi: Iestatiet reālo laiku un ielādējiet skici. Pēc tam komentējiet datuma un laika iestatīšanas līnijas un atkārtoti ielādējiet skici.
Programmas rezultāts būs laika un datuma (stundas), strāvas, sprieguma, temperatūras norādīšana LCD1602 un šo parametru ierakstīšana IZMER1.TXT failā Micro Flesh atmiņā. Failā būs šāda veida tabula:
0; 19.04.2013; 00:11:10; Zap (h) = 0,05; tc = 29,31; U1 = 1,71; I1 = 0,00; P1 = 0,00; U2 = 0,14; DiaI norma; DiaU norma; C = 762
1; 19.04.2013; 00:11:16; Zap (h) = 0,05; tc = 29,38; U1 = 1,79; I1 = 0,00; P1 = 0,00; U2 = 0,19; DiaI norma; DiaU norma; C = 788
2; 19.04.2013; 00:11:22; Zap (h) = 0,05; tc = 29,38; U1 = 1,54; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 813
3; 19.04.2013; 00:11:28; Zap (h) = 0,05; tc = 29,31; U1 = 1,30; I1 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 839
4; 19.04.2013; 00:11:34; Zap (h) = 0,05; tc = 29,31; U1 = 1,90; I1 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 864
5; 19.04.2013; 00:11:40; Zap (h) = 0,05; tc = 29,25; U1 = 1,53; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 890
6; 19.04.2013; 00:11:46; Zap (h) = 0,05; tc = 29,19; U1 = 2,03; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 915
7; 19.04.2013; 00:11:52; Zap (h) = 0,05; tc = 29,13; U1 = 1,81; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 941
8; 19.04.2013; 00:11:58; Zap (h) = 0,05; tc = 29,00; U1 = 1,30; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 966
9; 19.04.2013; 00:12:04; Zap (h) = 0,07; tc = 28,94; U1 = 1,25; I1 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 992
10; 19.04.2013; 00:12:10; Zap (h) = 0,07; tc = 29,00; U1 = 1,85; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1017
11; 19.04.2013; 00:12:16; Zap (h) = 0,07; tc = 29,00; U1 = 1,21; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1043
12; 19.04.2013; 00:12:23; Zap (h) = 0,07; tc = 28,94; U1 = 1,55; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1068
13; 19.04.2013; 00:12:29; Zap (h) = 0,07; tc = 28,88; U1 = 1,82; I1 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1094
14; 19.04.2013; 00:12:35; Zap (h) = 0,07; tc = 28,88; U1 = 1,30; I1 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1119
kur kolonnas atrodas n / a; Datums laiks ierakstīšanas laiks stundās; temperatūra izmērītais spriegums U1; izmērītā strāva I1; otrais izmērītais spriegums U2; informācija par mērīšanas diapazona iziešanu / neesamību; pakalpojumu informācija par apmaiņu skaitu starp Arduino.
Mērījumu ierakstīšanas intervāls tika izvēlēts uz 6 sekundēm, to ir viegli mainīt, aizstājot #define CYCLE_TIME_F 3000 konstantes vērtību ar citu ar formulu Tsec = Constant (ms) * 2/1000 Master.
Turklāt šo tabulu var attēlot jauku grafiku veidā.
Rakstot programmas, es izmantoju materiālus. Izsaku pateicību autoram.