Para sa pagsukat at pag-aayos ng oras sa flash memory ng mahabang proseso na ipinahayag sa kasalukuyan at boltahe, tulad ng pagsingil - paglabas ng mga baterya at baterya. Posible na sabay na ayusin ang temperatura.
Mga parameter ng input ng:
kasalukuyang I = 25mka - 2a
boltahe U = 0 - 5V
temperatura t = -30 - + 120gі
ang oras ay itinakda ng panloob na built-in na relo ng kuwarts
Nutrisyon:
mula sa mapagkukunan 12v / 0.3a
Kinonsumo ko ang <70ma
Konstruksyon:
Ang metro ay tipunin sa dalawang mga module Arduino Nano konektado sa pamamagitan ng Protocol ng ModBus, tingnan ang diagram. Ang isang Arduino ay naka-mount sa isang riser na may mga block block. Ang mga module ay konektado sa pamamagitan ng mga konektor. Ang mga wire at ang mga module mismo ay insulated mula sa thermal-cambric faults.
Ang mga signal ng input ay pinakain sa pamamagitan ng mga terminal ng tornilyo
Sa harap na panel ay may isang tagapagpahiwatig na likido-kristal ng mga sinusukat na mga parameter at LED na nagpapahiwatig ng paglilipat ng isang saklaw o wala sa saklaw.
Ang metro ay tipunin sa isang pabahay 145x85x40.
Ang sensor ng temperatura ay isinasagawa sa pamamagitan ng konektor. Ang paghahatid ng signal ay isinaayos sa isang linya ng dalawang kawad. Ang risistor ng feed sa konektor.
Para sa kadalian ng pagprograma, ang mga konektor ng Arduino USB ay panlabas.
Scheme
Maaaring mai-download ang iskema mula sa file Meter.rar
Dalawang Arduino ang napili sa dalawang kadahilanan: Ang Arduino Nano ay magagamit at hindi sapat sa isang memorya, at ito ay pinlano na magdagdag pa ng mga sensor. Bilang karagdagan, nais kong makabisado ang samahan ng Arduino, para sa napiling protocol ng network ng ModBus. Tinutukoy ng ModBus ang isang master processor - Master at maraming mga alipin - Alipin. Sa gawaing ito, mayroong isang Alipin, sa ibabaw nito ay isang pagsukat ng temperatura, boltahe at kasalukuyang. Sa Master - isang orasan at tala sa isang file. Ang memorya ng laman ay dapat na mas mababa sa 4GB at na-format sa FAT.
Dahil pinlano nitong sukatin ang mga alon mula sa AA hanggang A, ang mga alon ay sinusukat sa 4 na saklaw (tingnan ang talahanayan ng Ranges), sinusubaybayan ng Arduino Slave ang paglipat mula sa isang saklaw patungo sa isa pa, na bumubuo ng kaukulang code ng shunt para sa kasalukuyang sinusukat na kasalukuyang mula sa M1-2. Kapag papalapit sa hangganan ng saklaw, ang susunod na saklaw ay naka-on, iyon ay, ang kasalukuyang key mula sa T1-1 --- T2-2 ay naka-off at ang susunod na nakabukas. Sa kasong ito, ang maximum na shunt = 100ohm ay patuloy na. Kung may labis na halaga sa saklaw, ang mga LEDs D8, D9 ay naiilaw.
Paghahati ng kasalukuyang pagsukat sa mga saklaw
Uout_max = 5v KusOU = 20 Δ = Ish / 1024
Ang pakinabang ng pagpapatakbo ng amplifier M1-2 ay nakatakda = 20 at pagkatapos ay hindi nagbabago. (Sa harap na panel ito ay naka-mount nang mali).
Ang boltahe ay sinusukat sa pamamagitan ng isang tagasunod sa OU M1-1.Ang mga input circuit ng op-amp at Arduino ay protektado ng mga diode (ang mga zener diode ay nasa Arduino, ngunit hindi ko alam ang mga parameter, samakatuwid ito ay mas mahusay na overdo ito).
Ang LCD1602 ay pinili bilang isang tagapagpahiwatig. Ito ay konektado sa Arduino Master. Bukod dito, ang tagapagpahiwatig ay maaaring konektado sa parehong Arduino sa pamamagitan lamang ng paglipat ng mga konektor ng Arduino. (Kapag nawala ang kapangyarihan.) Ang koneksyon sa Alduino Alipin ay ipinapakita sa isang putol na linya (na ginamit kapag nagsusulat ng mga programa). Gamit ang pangunahing koneksyon (sa Master) sa LCD1602, 4 na mga screen ang maaaring ipakita sa pamamagitan ng paglipat ng slide switch slider p1-p2.
Screen1: mula sa itaas ng impormasyon ng serbisyo ng palitan sa pagitan ng Arduino: C ang bilang ng mga palitan sa pagitan ng Arduino, E ang bilang ng mga pagkakamali sa panahon ng pagpapalitan ng Sh-No. ng shunt;
ilalim ng araw - oras ng buwan.
Screen2: U1, I1, Shunt No., (0.00 ibaba-reserba)
Screen3: U2, temperatura, (ui-standby)
Screen4: pinagana ang pag-record ng SD, oras ng pag-record sa mga oras, numero ng linya sa file,
00- estado ng kasalukuyang saklaw1 0-normal na 1-out ng saklaw, estado ng saklaw ng boltahe1, nakapirming kapangyarihan ng isang panlabas na mapagkukunan
Kapag nakakonekta sa Slave - 2 screen. Lumipat ang p3 na nagbibigay-daan sa pag-record sa memorya ng Micro Flesh.
Ang power supply ay napili 12v upang makakuha ng mga guhit na katangian ng op-amp (upang maiwasan ang mga blockage sa mga gilid ng saklaw). Sa parehong dahilan, ginamit ang negatibong boltahe mula sa shaper sa KR1006VI1. Ang paggamit ng isang generator ng Arduino ay gumagawa ng hindi gaanong matatag na boltahe. Upang makabuo ng 5v power, ginamit ang isang step-down converter, ngunit magagawa mo nang wala ito sa pamamagitan ng pagbibigay ng + 12V sa VIN Arduino Nano input.
Ang magkasanib na programming Arduino ay may mga tampok, dahil ang komunikasyon sa computer ay abala sa Protocol ng ModBus. Upang mai-load ang isang sketch sa isa sa Arduino, sa kabilang banda na kailangan mo upang paganahin ang signal ng RST reset. Upang gawin ito, gamitin ang mga jumper ng Block S, I-block ang M. O pindutin at hawakan ang mga pindutan ng pag-reset sa mga module ng Arduino hanggang matapos ang pag-download, na hindi gaanong maginhawa at may isang pagkakataon na masira ang pag-download. Dahil plano kong palawakin ang aking USB Arduino na aparato, hinila ko ang kaso.
Ang transistor T5 (FR024N) ay dapat na gamitin upang i-on / off ang isang proseso, halimbawa, isang pag-aalis ng isang baterya. Habang hindi ito kasangkot.
Software.
Ito ay pinakamataas na chewed na ang mga nagsisimula (at ako mismo) ay hindi makakasakit at maaaring magsilbing sanggunian na materyal, ngunit hindi inaangkin na pagiging maaasahan.
Matatagpuan ang mga aklatan at mga code ng programa sa file na Izmeritel PRO.rar.
Sketch para sa master ModBus_Master10_SD_T_10_2. Sketch para sa alipin ModBus-Slave10_T_UI_10_2. Ang natitirang bahagi ng aklatan.
Nai-program sa kapaligiran ng Arduino1.6.0. Naglalaman ito ng mga aklatan SD, LiquidCrystal, Wire ay hindi kailangang i-download.
Ang oras sa oras ay nakatakda sa Setup tulad ng sumusunod. Itakda ang tunay na oras at i-load ang sketch. Pagkatapos ay magkomento sa mga linya para sa pagtatakda ng petsa at oras at i-reload ang sketch.
Ang resulta ng programa ay magiging indikasyon ng oras at petsa (oras), kasalukuyang, boltahe, temperatura sa LCD1602 at ang pag-record ng mga parameter na ito sa IZMER1.TXT file sa Micro Flesh memory. Ang file ay maglalagay ng isang talahanayan ng ganitong uri:
0; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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; 04/13/2019; 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
kung saan matatagpuan ang mga haligi n / a; Petsa oras pag-record ng oras sa oras; temperatura sinusukat boltahe U1; sinusukat ang kasalukuyang I1; ang pangalawang sinusukat boltahe U2; impormasyon tungkol sa exit / kawalan ng saklaw ng pagsukat; impormasyon ng serbisyo sa bilang ng mga palitan sa pagitan ng Arduino.
Ang pagitan ng pag-record ng pagsukat ay napili para sa 6 segundo, madaling baguhin ito sa pamamagitan ng pagpapalit ng halaga ng #define CYCLE_TIME_F 3000 na pare-pareho sa isa pa ng formula na Tsec = Constant (ms) * 2/1000 sa Master.
Karagdagang talahanayan na ito ay maaaring iharap sa anyo ng mga magagandang grap.
Kapag nagsusulat ng mga programa ginamit ko ang mga materyales. Nagpahayag ako ng pasasalamat sa may-akda.