İçindekiler:

Hata Toleranslı Sıcaklık Sensörü Ağ Kontrolörü: 8 Adım
Hata Toleranslı Sıcaklık Sensörü Ağ Kontrolörü: 8 Adım

Video: Hata Toleranslı Sıcaklık Sensörü Ağ Kontrolörü: 8 Adım

Video: Hata Toleranslı Sıcaklık Sensörü Ağ Kontrolörü: 8 Adım
Video: 19-GMT PLC Pt-100,Pt-1000, Termokupl, mV ve NTC Bağlantısı ve Sıcaklık Ölçümü #gmt#pt100 #temprature 2024, Temmuz
Anonim
Hata Toleranslı Sıcaklık Sensörü Ağ Kontrolörü
Hata Toleranslı Sıcaklık Sensörü Ağ Kontrolörü

Bu Eğitim Tablosu, bir Arduino Uno kartının, hatalı sensörlerin otomatik olarak izole edilmesini sağlayan bir dizi DS18B20 sıcaklık sensörü için tek amaçlı bir denetleyiciye nasıl dönüştürüleceğini gösterir.

Kontrolör, Arduino Uno ile 8 sensöre kadar yönetebilir. (Arduino Mega ile veya hafif bir yazılım değişikliği ile çok daha fazlası.)

Adım 1: Arkasındaki Hikaye…

Birkaç yıl önce babamın serasında pi tabanlı ısıtma kontrolörüm için bir DS18B20 sıcaklık sensörü ağı kurdum. Ne yazık ki, kontrolörün güvenilirliği, temel olarak sık sensör kesintileri nedeniyle zayıftı. Birden fazla kurulum denedim - parazit gücü, doğrudan güç, ağı pi'ye bağlamanın yanı sıra Atmega tabanlı özel karta bağlama (bunun birincil amacı valf motorlarını sürmekti).

Daha da kötüsü, yaz aylarında neredeyse hiç sorun yaşanmazken, sensör ağının güvenilirliği esas olarak kış gecelerinde düştü! Burada neler oluyor?

Hangi sensörün soruna neden olduğunu araştırmak için bunları tek tek açma/kapatma veya herhangi bir kombinasyonunu etkinleştirme ihtiyacı ortaya çıktı.

Adım 2: Nasıl Çalışır?

DS18B20 (sıcaklık sensörü), birden fazla sensörün ortak veri bağlantısını (bir kablo) paylaşmasına izin veren tescilli 1 kablolu protokol kullanır. Bu ortak veri bağlantısı, Arduino'nun GPIO pinlerinden birine ve bir çekme direnci aracılığıyla + 5 V'a bağlanır - alışılmadık bir şey değil, birçok talimat bu kurulumu kapsar.

İşin püf noktası, her sensörün güç kablolarının ayrı ayrı açılıp kapatılabilmesi için kendi (özel) GPIO pinlerine bağlı olmasıdır. Örneğin, bir sensörde pin #3'e bağlı Vcc kablosu ve pin #2'ye GND bağlıysa, pin #3'ü HIGH olarak ayarlamak sensör için güç sağlarken (sürpriz değil), pin #2'yi LOW olarak ayarlamak toprak sağlar (küçük bir sürpriz için). ben mi). Her iki pimi de giriş moduna ayarlamak, sensörü ve kablolarını (neredeyse) tamamen izole edecektir - içinde hangi arıza (örneğin bir kısayol) olursa olsun, diğerlerini etkilemeyecektir.

(Veri kablosunu bir şekilde Arduino'ya bağlı başka bir şeye bağlamanın gerçekten parazite neden olacağını söylemek doğru olur, ancak kurulumumda neredeyse imkansız).

DS18B20'nin 1, 5 mA'ya kadar tükettiğine dikkat edin, bir Arduino pini 40 mA'ya kadar kaynak yapabilir / batırabilir, bu nedenle sensörleri doğrudan GPIO pinleri ile beslemek tamamen güvenlidir.

Adım 3: Malzeme ve Araçlar

Malzeme

  • 1 Arduino UNO kartı
  • 3 dişi pin başlığı: 1×4, 1×6 ve 1×6 (veya daha uzun – 1×40 başlıktan kestim)
  • bir yapıştırıcı
  • bir parça çıplak bakır tel (en az 10 cm)
  • bir yalıtım bandı
  • lehimleme sarf malzemeleri (tel, flux…)

Aletler

  • lehimleme ekipmanı (demir, tutucular,…)
  • küçük kesme pensesi

4. Adım: İşleri Birlikte Düzeltin

İşleri Birlikte Düzeltin
İşleri Birlikte Düzeltin

Dişi pin başlıklarını Arduino kartı başlıklarına yapıştırın:

  1. "Analog" pin başlığının yanında 1×4 başlık, A0–A4 pinleriyle yan yana
  2. 1×6 başlık, ilk dijital pin başlığının yanında, 2–7 pinleri ile yan yana
  3. 1×6 başlık, ikinci dijital pin başlığının yanında, 8-13 pinli yan yana

Başlıklarımın biraz daha uzun olduğuna dikkat edin… eksileri ve artıları yok sanırım.

Adım 5: İşleri Bir Araya Getirin

İşleri Bir Araya Bağlayın
İşleri Bir Araya Bağlayın
İşleri Bir Araya Bağlayın
İşleri Bir Araya Bağlayın

1 telli bus hattının kablolanması:

  1. Yapıştırılmış başlıkların tüm uçlarını, bir parça çıplak tel lehimleyerek "dijital" tarafa (2-13 pinlerine bitişik) bağlayın
  2. Bu telin ucunu SCL pin ucuna lehimleyin (dahili olarak A5'e bağlı)
  3. Bir parça çıplak tel lehimleyerek "analog" taraftaki (pimler A0–A3) yapıştırılmış başlığın tüm uçlarını bağlayın
  4. Bu telin ucunu A4 ve A5 uçlarına lehimleyin (A6 ve A7'ye sahip bir kartım olduğu için A5 ve A6 kullandım)
  5. Bu telin diğer ucu ile +5 V pin ucu arasına 4k7 direnç lehimleyin

Notlar:

  • A0–A5 pinleri, "analog" olarak işaretlenmiş olsalar da, GPIO dijital pinleri olarak da kullanılabilir.
  • "Dijital" taraftaki SCL pini "analog" taraftaki A5'e dahili olarak bağlıdır; başlıklara bağlı, bu 1 telli bus hattını oluşturur
  • A4 (analog giriş olarak kullanılır), tanılama amacıyla veri yolunun voltajını ölçer. Doğrudan otobüse bağlı olmasının nedeni budur.
  • A6 ve A7 içeren bir kartım olduğu için A4 yerine A6 kullandım; Aslında A7'yi 1 telli bus master olarak kullanmak istedim ancak bu iki pin dijital GPIO'lar olarak yapılandırılamaz.
  • Sensör konektörlerinin yanlış bağlanmasını önlemek için, her erkek konektörden kullanılmayan kontağı (herhangi bir kabloya bağlı olmayan) atlayabilir / kesebilir ve yapıştırılmış pim başlığındaki ilgili deliğe takabilirsiniz.

Adım 6: Sensörlerin Bağlanması

Sensörlerin Bağlanması
Sensörlerin Bağlanması

Az önce sekiz adet 2×2 soket dizisi oluşturdunuz. 2×2 Dupont konnektörleri sensör kablolarına lehimleyip birleştirebilir ve bu soketlere bağlayabilirsiniz. Yazılım, pinleri, çift pinler GND pinleri ve tek pinler Vcc pinleri olacak şekilde yapılandırır. Her sensör için Vcc pini sadece GND pini + 1'dir. 2×2 soketinin diğer iki pininden biri (yapıştırılmış & lehimli başlıktaki bu iki pinden biri) sensörün veri kablosu içindir. Hangisini kullandığınız önemli değil.

7. Adım: Denetleyici Yazılımı

Kontrolör Yazılımı
Kontrolör Yazılımı

SerialTermometre çizimi denetleyiciyi çalıştırır. Github'da bulabilirsiniz. Arduino IDE kullanarak açın ve yükleyin.

Adım adım:

  1. Arduino IDE'nizi açın ve DallasTemperature kitaplığını ve tüm bağımlılıklarını Sketch | Kitaplığı Dahil Et | Kütüphaneleri Yönetin.
  2. Git deposunu klonlayın. Git'e aşina değilseniz, bu zip dosyasını bilgisayarınızın herhangi bir yerinden indirin ve paketinden çıkarın.
  3. Arduino IDE'nizde SerialThermometer taslağını açın.
  4. Modifiye edilmiş Arduino kartınızı USB kablosu ile bilgisayarınıza bağlayın (standart yol)
  5. Arduino IDE'nizi kullanarak çizimi yükleyin
  6. Araçlar ile Seri Monitörü Açın | Seri Monitör
  7. Birkaç fiziksel ölçümü ve ardından sıcaklık okumalarını içeren tanı çıktısını görmelisiniz – her bir sensör soketi tek bir hat üzerinde. Sensör sayısı ayrı ayrı açıldığında ve hepsi birlikte açıldığında farklılık gösteriyorsa, çözümlenene kadar tanılama döngüleri devam eder. Ancak endişelenmeyin, teşhis de sıcaklık ölçümleri sağlar!

Tanılama çıktısı hakkında daha fazla ayrıntı için açıklamalı resme bakın.

Adım 8: Sonuç

Sensör ağı arızalarımın uzun kablolamamın yüksek kapasitansından kaynaklandığına dair güçlü bir his var - her sensör için yaklaşık 10 m LIYY 314 (3 × 0, 14 mm²) kablo. Deneylerim, 1 kablolu veri yolu ile toprak arasında 0,01 μF civarında veya daha yüksek bir kapasitans varsa iletişimin koptuğunu gösterdi, sanırım 4k7 çekme direnci, veri yolunu protokol sınırlarına uyacak kadar hızlı + 5 V'a çekemediği için.

Kurulumumda, 3'ten fazla sensör birbirine bağlandığında olur. Ardından, kontrolör tanılama döngüsünde dönerek sıcaklık sensörünü sensör bazında ölçer (soğuk olan da…)

Ama aynı zamanda 5. sensör (28:ff:f2:41:51:17:04:31) oldukça kötü görünüyor (belki yanlış lehimleme), bu yüzden daha fazla araştırabilirim!

Önerilen: