Akülerin ve akülerin şarj - deşarjı gibi akım ve voltajda ifade edilen uzun süreçlerin flaş belleğinde zamanında ölçüm yapmak ve sabitlemek için. Sıcaklığı aynı anda sabitlemek mümkündür.
Giriş sinyali parametreleri:
akım I = 25mka - 2a
gerilim U = 0-5V
sıcaklık t = -30 - + 120gС
zaman dahili dahili kuvars saat tarafından ayarlanır
Güç kaynağı:
12v / 0.3a kaynağından
I tüketimi <70ma
inşaat:
Sayaç iki modüle monte edilir Arduino Nano ModBus protokolü üzerinden bağlanmıştır, şemaya bakınız. Bir Arduino klemensli bir yükselticiye monte edilmiştir. Modüller konektörlerle bağlanır. Kablolar ve modüllerin kendileri termal-kambik hatalardan yalıtılmıştır.
Giriş sinyalleri vidalı terminallerden beslenir
Ön panelde, ölçülen parametrelerin ve LED'lerin bir aralığın veya aralığın dışında olduğunu gösteren bir sıvı kristal göstergesi vardır.
Sayaç 145x85x40 gövdeye monte edilmiştir.
Sıcaklık sensörü konektörden yapılır. Sinyal iletimi iki telli bir hat üzerinde düzenlenir. Konnektördeki besleme direnci.
Programlama kolaylığı için Arduino USB konektörleri haricitir.
düzen
Şema dosyadan indirilebilir Izmeritel.rar
İki Arduino iki nedenden dolayı seçildi: Arduino Nano mevcuttu ve bir bellekte yeterli değildi ve sensörlerin daha fazla eklenmesi planlanıyor. Buna ek olarak, Arduino derneğinde ustalaşmak istedim, bunun için ModBus ağ protokolü seçildi. ModBus bir ana işlemci - Master ve birkaç slave - Slave'i tanımlar. Bu çalışmada, bir Slave var, üzerinde sıcaklık, voltaj ve akım ölçümü. Master'da - bir saat ve bir dosyaya kayıt. Meyve eti belleği 4 GB'tan az olmalı ve FAT biçiminde olmalıdır.
ΜA'dan A'ya kadar akımların ölçülmesi planlandığından, akımlar 4 aralıkta ölçülür (Aralıklar tablosuna bakın), Arduino Slave bir aralıktan diğerine geçişi izler ve M1-2'den akım ölçülen akım için karşılık gelen şant kodunu oluşturur. Aralığın sınırına yaklaşırken, bir sonraki aralık açılır, yani T1-1 --- T2-2'deki geçerli anahtar kapatılır ve bir sonraki aralık açılır. Bu durumda, maksimum şönt = 100ohm sürekli açıktır. Aralıktaki değerin aşılması durumunda, D8, D9 LED'leri yanar.
Akım ölçümünün aralıklara bölünmesi
Uout_max = 5v KusOU = 20 Δ = İş / 1024
İşlemsel amplifikatör M1-2'nin kazancı = 20 olarak ayarlanır ve daha sonra değişmez. (Ön panele yanlış monte edilmiştir).
Voltaj, OU M1-1'deki bir takipçi tarafından ölçülür.Op-amp ve Arduino'nun giriş devreleri diyotlarla korunur (zener diyotları Arduino'dadır, ancak parametreleri bilmiyorum, bu nedenle aşırıya kaçmak daha iyidir).
Gösterge olarak LCD1602 seçilir. Arduino Master'a bağlıdır. Ayrıca, gösterge Arduino konektörlerini değiştirerek her iki Arduino'ya da bağlanabilir. (Güç kapalıyken.) Arduino Slave'e bağlantı kesikli bir çizgiyle (program yazılırken kullanılır) gösterilir. LCD1602 üzerindeki ana bağlantıyla (Master'a), kayar anahtar sürgüsü p1-p2 değiştirilerek 4 ekran görüntülenebilir.
Ekran1: Arduino arasındaki değiş tokuşun servis bilgileri yukarıdan: C, Arduino arasındaki değiş tokuş sayısı, E şantın Ş-No değişimi sırasında hata sayısı;
alt gün - ay zamanı.
Ekran2: U1, I1, Şant No., (0.00 alt sağ rezerv)
Ekran3: U2, sıcaklık, (bekleme)
Screen4: SD kaydı etkin, saat cinsinden kayıt süresi, dosyadaki satır numarası,
00- akım aralığının durumu1 0-normal 1-aralık dışında, voltaj aralığı1'in durumu, harici bir kaynağın sabit gücü
Slave - 2 ekranlarına bağlandığında. Anahtar p3, Micro Flesh belleğe kayıt yapılmasını sağlar.
Güç kaynağı, op-amp'in doğrusal özelliklerini elde etmek için 12v seçilmiştir (aralığın kenarlarındaki tıkanmaları önlemek için). Aynı nedenle KR1006VI1'deki şekillendiriciden gelen negatif voltaj kullanılmıştır. Arduino jeneratörü kullanmak daha az kararlı bir voltaj üretir. 5v güç üretmek için bir adım aşağı dönüştürücü kullanıldı, ancak VIN Arduino Nano girişlerine + 12V sağlayarak onsuz yapabilirsiniz.
Ortak programlama Arduino'nun özellikleri vardır, çünkü bilgisayar ile iletişim ModBus protokolü ile meşgul. Arduino'dan birine bir çizim yüklemek için, diğerinde RST sıfırlama sinyalini etkinleştirmeniz gerekir. Bunu yapmak için, Blok S, Blok M jumper'larını kullanın veya indirme bitene kadar Arduino modülleri üzerindeki sıfırlama düğmelerini basılı tutun, bu daha az uygundur ve indirmeye zarar verme şansı vardır. USB Arduino cihazımı genişletmeyi planladığım için kasayı çektim.
Transistörün T5'in (FR024N), örneğin bir pilin şarj deşarjı gibi bir işlemi açmak / kapatmak için kullanılması gerekiyor. Dahil olmasa da.
Yazılım.
Yeni başlayanların (ve kendimin) zarar vermeyeceği ve referans malzeme olarak hizmet edebileceği, ancak iyimserlik iddiasında bulunmadığı maksimum çiğnenebilir.
Kütüphaneler ve program kodları Izmeritel PRO.rar dosyasında bulunur.
Ana ModBus_Master10_SD_T_10_2 için çizim. Bağımlı ModBus-Slave için kroki10_T_UI_10_2. Kütüphanenin geri kalanı.
Arduino ortamında programlanmıştır 1.6.0. SD, LiquidCrystal, Wire kütüphanelerini indirmenize gerek yoktur.
Saat cinsinden süre, Kurulum'da aşağıdaki gibi ayarlanır. Gerçek zamanı ayarlayın ve çizimi yükleyin. Ardından tarih ve saati ayarlamak için satırları yorumlayın ve çizimi yeniden yükleyin.
Programın sonucu saat ve tarih (saat), akım, voltaj, LCD1602'deki sıcaklık göstergesi ve bu parametrelerin IZMER1.TXT dosyasına Micro Flesh belleğinde kaydedilmesi olacaktır. Dosya şu tür bir tablo içerecektir:
0; 2019/04/13; 0:11:10; Zap (h) = 0.05; tc = 29.31; U1 = 1.71; 11 = 0.00; P1 = 0.00; U2 = 0.14; DiaI normu; DiaU normu; C = 762
1 'dir; 2019/04/13; 0:11:16; Zap (h) = 0.05; tc = 29.38; U1 = 1.79; 11 = 0.00; P1 = 0.00; U2 = 0.19; DiaI normu; DiaU normu; C = 788
2; 2019/04/13; 0:11:22; Zap (h) = 0.05; tc = 29.38; U1 = 1.54; 11 = 0.00; P1 = 0.00; U2 = 0.16; DiaI normu; DiaU normu; C = 813
3; 2019/04/13; 0:11:28; Zap (h) = 0.05; tc = 29.31; U1 = 1.30; 11 = 0.00; P1 = 0.00; U2 = 0.17; DiaI normu; DiaU normu; C = 839
4; 2019/04/13; 0:11:34; Zap (h) = 0.05; tc = 29.31; U1 = 1.90; 11 = 0.00; P1 = 0.00; U2 = 0.17; DiaI normu; DiaU normu; C = 864
5; 2019/04/13; 0:11:40; Zap (h) = 0.05; tc = 29,25; U1 = 1.53; 11 = 0.00; P1 = 0.00; U2 = 0.16; DiaI normu; DiaU normu; C = 890
6; 2019/04/13; 0:11:46; Zap (h) = 0.05; tc = 29,19; U1 = 2.03; 11 = 0.00; P1 = 0.00; U2 = 0.18; DiaI normu; DiaU normu; C = 915
7; 2019/04/13; 0:11:52; Zap (h) = 0.05; tc = 29,13; U1 = 1.81; 11 = 0.00; P1 = 0.00; U2 = 0.18; DiaI normu; DiaU normu; C = 941
8; 2019/04/13; 0:11:58; Zap (h) = 0.05; tc = 29.00; U1 = 1.30; 11 = 0.00; P1 = 0.00; U2 = 0.16; DiaI normu; DiaU normu; C = 966
9; 2019/04/13; 0:12:04; Zap (h) = 0,07; tc = 28.94; U1 = 1.25; 11 = 0.00; P1 = 0.00; U2 = 0.17; DiaI normu; DiaU normu; C = 992
10; 2019/04/13; 0:12:10; Zap (h) = 0,07; tc = 29.00; U1 = 1.85; 11 = 0.00; P1 = 0.00; U2 = 0.16; DiaI normu; DiaU normu; C = 1017
11; 2019/04/13; 0:12:16; Zap (h) = 0,07; tc = 29.00; U1 = 1.21; 11 = 0.00; P1 = 0.00; U2 = 0.18; DiaI normu; DiaU normu; C = 1043
12; 2019/04/13; 0:12:23; Zap (h) = 0,07; tc = 28.94; U1 = 1.55; 11 = 0.00; P1 = 0.00; U2 = 0.18; DiaI normu; DiaU normu; C = 1068
13; 2019/04/13; 0:12:29; Zap (h) = 0,07; tc = 28,88; U1 = 1.82; 11 = 0.00; P1 = 0.00; U2 = 0.16; DiaI normu; DiaU normu; C = 1094
14; 2019/04/13; 0:12:35; Zap (h) = 0,07; tc = 28,88; U1 = 1.30; 11 = 0.00; P1 = 0.00; U2 = 0.18; DiaI normu; DiaU normu; C = 1119
burada sütunlar n / a; tarihi; zaman; saat cinsinden kayıt süresi; sıcaklık; ölçülen voltaj U1; ölçülen akım 11; ölçülen ikinci voltaj U2; ölçüm aralığının çıkışı / yokluğu hakkında bilgi; Arduino arasındaki değişim sayısı hakkında servis bilgisi.
Ölçüm kayıt aralığı 6 saniye boyunca seçildi, #define CYCLE_TIME_F 3000 sabitinin değerini Master'daki Tsec = Sabit (ms) * 2/1000 formülüyle başka bir değerle değiştirerek değiştirmek kolaydır.
Ayrıca bu tablo güzel grafikler şeklinde sunulabilir.
Program yazarken materyal kullandım. Yazara şükranlarımı sunuyorum.