Untuk mengukur dan menetapkan dalam masa pada memori kilat proses panjang yang dinyatakan dalam arus dan voltan, seperti caj - pelepasan bateri dan bateri. Ia adalah mungkin untuk membaiki suhu secara serentak.
Parameter isyarat input:
semasa I = 25mka - 2a
voltan U = 0 - 5V
suhu t = -30 - + 120 грі
masa ditetapkan oleh jam tangan kuar terbina dalaman
Pemakanan:
dari sumber 12v / 0.3a
Saya menggunakan <70ma
Pembinaan:
Meter dipasang pada dua modul Arduino Nano disambungkan melalui protokol ModBus, lihat gambar rajah. Satu Arduino dipasang pada riser dengan blok terminal. Modul disambungkan melalui penyambung. Wayar dan modul itu sendiri terisolasi daripada kesalahan haba.
Isyarat masukan disalurkan melalui terminal skru
Di panel hadapan terdapat penunjuk kristal cecair dari parameter yang diukur dan LED yang menunjukkan penukaran julat atau luar jangkauan.
Meter dipasang di perumahan 145x85x40.
Sensor suhu dilakukan melalui penyambung. Penghantaran isyarat dianjurkan pada talian dua wayar. Perintang Feed dalam penyambung.
Untuk kemudahan pengaturcaraan, penyambung USB Arduino adalah luaran.
Skim
Skim boleh dimuat turun dari fail Meter.rar
Dua Arduino dipilih untuk dua sebab: Arduino Nano tersedia dan tidak mencukupi pada satu ingatan, dan ia dirancang untuk menambahkan lagi sensor. Di samping itu, saya mahu menguasai persatuan Arduino, untuk ini protokol rangkaian ModBus dipilih. ModBus mentakrifkan satu pemproses utama - Master dan beberapa hamba - Hamba. Dalam kerja ini, terdapat satu budak, di atasnya adalah ukuran suhu, voltan dan arus. Pada Guru - jam dan rekod ke fail. Memori daging mesti kurang dari 4GB dan diformatkan di FAT.
Oleh kerana ia dirancang untuk mengukur arus dari μA ke A, arus diukur dalam 4 rentang (lihat jadual Ranges), Arduino Slave memantau peralihan dari satu rentang ke rentang yang lain, membentuk kod shunt yang sama untuk arus diukur semasa dari M1-2. Apabila menghampiri sempadan julat, julat seterusnya dihidupkan, iaitu kunci semasa dari T1-1 --- T2-2 dimatikan dan seterusnya akan dihidupkan. Dalam kes ini, shunt maksimum = 100ohm sentiasa dihidupkan. Sekiranya terdapat lebihan nilai dalam julat, LED D8, D9 diterangi.
Membahagikan pengukuran semasa ke julat
Uout_max = 5v KusOU = 20 Δ = Ish / 1024
Keuntungan penguat operasi M1-2 ditetapkan = 20 dan kemudian tidak berubah. (Di panel hadapan ia dipasang secara salah).
Voltan diukur melalui pengikut di OU M1-1.Litar input op-amp dan Arduino dilindungi oleh dioda (zener diodes berada di Arduino, tetapi saya tidak tahu parameter, oleh itu lebih baik untuk keterlaluan).
LCD1602 dipilih sebagai penunjuk. Ia disambungkan kepada Master Arduino. Selain itu, penunjuk boleh disambungkan kepada Arduino hanya dengan menukar penyambung Arduino. (Apabila kuasa dimatikan.) Sambungan kepada Hamba Arduino ditunjukkan dengan garis putus-putus (yang digunakan semasa menulis program). Dengan sambungan utama (kepada Master) pada LCD1602, 4 skrin dapat dipaparkan dengan menukar slider suis slaid p1-p2.
Skrin1: dari atas maklumat perkhidmatan pertukaran antara Arduino: C adalah bilangan pertukaran antara Arduino, E adalah bilangan kesilapan semasa pertukaran Sh-Bil shunt;
hari bawah - waktu sebulan.
Screen2: U1, I1, No Shunt, (0.00 ke bawah rizab kanan)
Screen3: U2, suhu, (ui- standby)
Screen4: Rakaman SD diaktifkan, rakaman waktu dalam jam, nombor baris dalam fail,
00- julat julat semasa 1 0-normal julat, julat julat voltan1, kuasa tetap sumber luaran
Apabila disambungkan ke skrin Hamba - 2. Suis p3 membolehkan rakaman dalam memori Mikro Flesh.
Bekalan kuasa dipilih 12v untuk mendapatkan ciri-ciri linear op-amp (untuk mengelakkan penyumbatan pada tepi julat). Atas sebab yang sama, voltan negatif dari pembentuk pada KR1006VI1 digunakan. Menggunakan penjana Arduino menghasilkan voltan kurang stabil. Untuk menjana kuasa 5v, penukar langkah turun telah digunakan, tetapi anda boleh melakukannya tanpa membekalkan + 12V ke input VIN Arduino Nano.
Pengaturcaraan bersama Arduino mempunyai ciri-ciri, kerana komunikasi dengan komputer sibuk dengan protokol ModBus. Untuk memuatkan lakaran ke salah satu Arduino, di sisi lain anda perlu mengaktifkan isyarat reset RST. Untuk melakukan ini, gunakan jumper Blok S, Blok M. Atau tekan dan tahan butang reset pada mod Arduino sehingga muat turun selesai, yang kurang mudah dan ada kemungkinan untuk merosakkan muat turun. Oleh kerana saya merancang untuk mengembangkan peranti USB Arduino saya, saya menarik keluar kes itu.
Transistor T5 (FR024N) sepatutnya digunakan untuk menghidupkan / mematikan proses, contohnya, pelepasan cas bateri. Walaupun ia tidak terlibat.
Perisian.
Ia sangat mengunyah bahawa pemula (dan saya sendiri) tidak akan menyakiti dan boleh berfungsi sebagai bahan rujukan, tetapi tidak menuntut optimality.
Perpustakaan dan kod program terletak di fail Izmiritel PRO.rar.
Lakaran untuk tuan ModBus_Master10_SD_T_10_2. Lakaran untuk budak ModBus-Slave10_T_UI_10_2. Selebihnya perpustakaan.
Diprogramkan dalam persekitaran Arduino1.6.0. Ia mengandungi perpustakaan SD, LiquidCrystal, Wire tidak perlu memuat turun.
Masa dalam jam ditetapkan dalam Setup seperti berikut. Tetapkan masa sebenar dan muatkan lakaran. Kemudian komenkan baris untuk menetapkan tarikh dan masa dan muat semula lakaran.
Hasil dari program ini akan menjadi petunjuk masa dan tarikh (jam), arus, voltan, suhu pada LCD1602 dan rakaman parameter ini dalam fail IZMER1.TXT dalam memori Micro Flesh. Fail ini akan mengandungi jadual jenis ini:
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
di mana lajur terletak n / a; Tarikh masa rakaman waktu dalam jam; suhu voltan diukur U1; diukur semasa I1; voltan diukur kedua U2; maklumat mengenai keluar / ketiadaan julat ukuran; maklumat perkhidmatan mengenai jumlah pertukaran antara Arduino.
Selang rakaman pengukuran telah dipilih selama 6 saat, mudah untuk menukarnya dengan menggantikan nilai #define CYCLE_TIME_F 3000 malar dengan yang lain dengan formula Tsec = Constant (ms) * 2/1000 dalam Sarjana.
Selanjutnya jadual ini boleh dibentangkan dalam bentuk grafik bagus.
Apabila menulis program saya menggunakan bahan. Saya mengucapkan terima kasih kepada penulis.