Pro měření a stanovení času na flash paměti dlouhých procesů vyjádřených v proudu a napětí, jako je nabíjení - vybíjení baterií a baterií. Je možné současně fixovat teplotu.
Parametry vstupního signálu:
proud I = 25mka - 2a
napětí U = 0 - 5V
teplota t = -30 - + 120 gС
čas je nastaven interními vestavěnými hodinami z křemene
Výživa:
ze zdroje 12v / 0,3a
I spotřeba <70 ma
Konstrukce:
Měřič je namontován na dvou modulech Arduino Nano připojeno pomocí protokolu ModBus, viz diagram. Jeden Arduino je namontován na stoupačce s koncovými bloky. Moduly jsou připojeny přes konektory. Dráty a samotné moduly jsou izolovány od tepelně-cambrických poruch.
Vstupní signály jsou vedeny přes šroubové svorky
Na předním panelu je indikátor tekutých krystalů měřených parametrů a LED diody indikující přepínání rozsahu nebo mimo rozsah.
Měřič je smontován v krytu 145x85x40.
Čidlo teploty se provádí přes konektor. Přenos signálu je organizován na dvouvodičové lince. Přiveďte rezistor do konektoru.
Pro snadné programování jsou konektory Arduino USB externí.
Schéma
Schéma lze stáhnout ze souboru Meter.rar
Dva Arduino byli vybráni ze dvou důvodů: Arduino Nano bylo k dispozici a na jedné paměti nestačilo a je plánováno další přidávání senzorů. Kromě toho jsem chtěl ovládnout asociaci Arduino, proto byl vybrán síťový protokol ModBus. ModBus definuje jeden hlavní procesor - Master a několik slave - Slave. V této práci je jeden Slave, na něm je měření teploty, napětí a proudu. On Master - hodiny a záznam do souboru. Paměť těla musí být menší než 4 GB a musí být naformátována ve formátu FAT.
Protože bylo plánováno měřit proudy od μA do A, proudy se měří ve 4 rozsazích (viz tabulka Ranges), Arduino Slave monitoruje přechod z jednoho rozsahu do druhého a vytváří odpovídající zkratovací kód pro aktuální měřený proud z M1-2. Když se přibližuje k hranici rozsahu, je zapnut další rozsah, to znamená, že aktuální klíč je odpojen od T1-1 --- T2-2 a další je zapnutý. V tomto případě je maximální zkrat = 100 ohmů trvale zapnutý. Při překročení hodnoty v rozsahu se rozsvítí LED D8, D9.
Rozdělení měření proudu na rozsahy
Uout_max = 5 V KusOU = 20 A = Ish / 1024
Zisk operačního zesilovače M1-2 je nastaven na 20 a poté se nemění. (Na předním panelu je namontován chybně).
Napětí se měří pomocí sledovače na OU M1-1.Vstupní obvody operačního zesilovače a Arduina jsou chráněny diodami (zenerovy diody jsou v Arduinu, ale neznám parametry, proto je lepší to přehánět).
Jako indikátor je vybrán LCD1602. Je připojen k Arduino Master. Navíc lze indikátor připojit k oběma Arduino jednoduše přepnutím Arduino konektorů. (Když je napájení vypnuto.) Připojení k Arduino Slave je zobrazeno přerušovanou čarou (která byla použita při psaní programů). S hlavním připojením (k hlavnímu) na LCD1602 lze zobrazit 4 obrazovky přepnutím posuvného spínače p1-p2.
Screen1: shora servisní informace o výměně mezi Arduino: C je počet výměn mezi Arduino, E je počet chyb během výměny Sh-No. of shunt;
dolní den - měsíc.
Screen2: U1, I1, Shunt No., (0,00 vpravo dole)
Screen3: U2, teplota, (v pohotovostním režimu)
Screen4: SD nahrávání povoleno, doba záznamu v hodinách, číslo řádku v souboru,
00- stav proudového rozsahu1 0-normální 1-mimo rozsah, stav rozsahu napětí1, stálý výkon externího zdroje
Při připojení k obrazovkám Slave - 2. Přepínač p3 umožňuje záznam do paměti Micro Flesh.
Napájecí zdroj je vybrán 12v pro získání lineárních charakteristik operačního zesilovače (aby se zabránilo blokování na okrajích rozsahu). Ze stejného důvodu bylo použito záporné napětí shaper na KR1006VI1. Použití generátoru Arduino vytváří méně stabilní napětí. Pro výrobu 5V energie byl použit konvertor typu down-down, ale bez něj se můžete obejít dodáním + 12V do vstupů VIN Arduino Nano.
Společné programování Arduino má vlastnosti, protože komunikace s počítačem je zaneprázdněna protokolem ModBus. Chcete-li načíst skicu do jednoho z Arduino, na druhé straně musíte povolit resetovací signál RST. Chcete-li to provést, použijte propojky Block S, Block M. Nebo stiskněte a držte resetovací tlačítka na modulech Arduino, dokud stahování neskončí, což je méně pohodlné a existuje možnost poškození stahování. Vzhledem k tomu, že plánuji rozšířit své zařízení USB Arduino, vytáhl jsem pouzdro.
Tranzistor T5 (FR024N) má být použit k zapnutí / vypnutí procesu, například vybití baterie. I když to není zapojeno.
Software.
Je maximálně žvýkací, že začátečníci (a já sám) neublíží a mohou sloužit jako referenční materiál, ale netvrdí, že jsou optimální.
Knihovny a programové kódy jsou umístěny v souboru Izmeritel PRO.rar.
Skica pro master ModBus_Master10_SD_T_10_2. Skica pro otroka ModBus-Slave10_T_UI_10_2. Zbytek knihovny.
Naprogramováno v prostředí Arduino1.6.0. Obsahuje knihovny SD, LiquidCrystal, Wire není třeba stahovat.
Čas v hodinách je nastaven v Nastavení následovně. Nastavte reálný čas a načtěte náčrt. Poté komentujte řádky pro nastavení data a času a načtěte náčrt.
Výsledkem programu bude indikace času a data (hodiny), proudu, napětí, teploty na LCD1602 a zaznamenání těchto parametrů do souboru IZMER1.TXT do paměti Micro Flesh. Soubor bude obsahovat tabulku tohoto druhu:
0; 13.03.2019; 00:11:10; Zap (h) = 0,05; tc = 29,31; U1 = 1,71; 11 = 0,00; P1 = 0,00; U2 = 0,14; DiaI norma; DiaU norma; C = 762
1; 13.03.2019; 00:11:16; Zap (h) = 0,05; tc = 29,38; U1 = 1,79; 11 = 0,00; P1 = 0,00; U2 = 0,19; DiaI norma; DiaU norma; C = 788
2; 13.03.2019; 00:11:22; Zap (h) = 0,05; tc = 29,38; U1 = 1,54; 11 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 813
3; 13.03.2019; 00:11:28; Zap (h) = 0,05; tc = 29,31; U1 = 1,30; 11 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 839
4; 13.03.2019; 00:11:34; Zap (h) = 0,05; tc = 29,31; U1 = 1,90; 11 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 864
5; 13.03.2019; 00:11:40; Zap (h) = 0,05; tc = 29,25; U1 = 1,53; 11 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 890
6; 13.03.2019; 00:11:46; Zap (h) = 0,05; tc = 29,19; U1 = 2,03; 11 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 915
7; 13.03.2019; 00:11:52; Zap (h) = 0,05; tc = 29,13; U1 = 1,81; 11 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 941
8; 13.03.2019; 00:11:58; Zap (h) = 0,05; tc = 29,00; U1 = 1,30; 11 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 966
9; 13.03.2019; 00:12:04; Zap (h) = 0,07; tc = 28,94; U1 = 1,25; 11 = 0,00; P1 = 0,00; U2 = 0,17; DiaI norma; DiaU norma; C = 992
10; 13.03.2019; 00:12:10; Zap (h) = 0,07; tc = 29,00; U1 = 1,85; 11 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1017
11; 13.03.2019; 00:12:16; Zap (h) = 0,07; tc = 29,00; U1 = 1,21; 11 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1043
12; 13.03.2019; 00:12:23; Zap (h) = 0,07; tc = 28,94; U1 = 1,55; 11 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1068
13; 13.03.2019; 00:12:29; Zap (h) = 0,07; tc = 28,88; U1 = 1,82; 11 = 0,00; P1 = 0,00; U2 = 0,16; DiaI norma; DiaU norma; C = 1094
14; 13.03.2019; 00:12:35; Zap (h) = 0,07; tc = 28,88; U1 = 1,30; 11 = 0,00; P1 = 0,00; U2 = 0,18; DiaI norma; DiaU norma; C = 1119
kde jsou sloupce umístěny n / a; Datum čas doba záznamu v hodinách; teplota měřené napětí U1; měřený proud I1; druhé měřené napětí U2; informace o výstupu / nepřítomnosti měřicího rozsahu; servisní informace o počtu výměn mezi Arduino.
Interval záznamu měření byl vybrán po dobu 6 sekund, je snadné jej změnit nahrazením hodnoty konstanty #define CYCLE_TIME_F 3000 za jinou vzorcem Tsec = Constant (ms) * 2/1000 v Master.
Tato tabulka může být dále prezentována ve formě pěkných grafů.
Při psaní programů jsem použil materiály. Vyjadřuji vděčnost autorovi.