İçindekiler:
- Adım 1: Arkasındaki Hikaye…
- Adım 2: Nasıl Çalışır?
- Adım 3: Malzeme ve Araçlar
- 4. Adım: İşleri Birlikte Düzeltin
- Adım 5: İşleri Bir Araya Getirin
- Adım 6: Sensörlerin Bağlanması
- 7. Adım: Denetleyici Yazılımı
- Adım 8: Sonuç
Video: Hata Toleranslı Sıcaklık Sensörü Ağ Kontrolörü: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
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
Dişi pin başlıklarını Arduino kartı başlıklarına yapıştırın:
- "Analog" pin başlığının yanında 1×4 başlık, A0–A4 pinleriyle yan yana
- 1×6 başlık, ilk dijital pin başlığının yanında, 2–7 pinleri ile yan yana
- 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
1 telli bus hattının kablolanması:
- 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
- Bu telin ucunu SCL pin ucuna lehimleyin (dahili olarak A5'e bağlı)
- 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
- 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)
- 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ı
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ı
SerialTermometre çizimi denetleyiciyi çalıştırır. Github'da bulabilirsiniz. Arduino IDE kullanarak açın ve yükleyin.
Adım adım:
- 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.
- 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.
- Arduino IDE'nizde SerialThermometer taslağını açın.
- Modifiye edilmiş Arduino kartınızı USB kablosu ile bilgisayarınıza bağlayın (standart yol)
- Arduino IDE'nizi kullanarak çizimi yükleyin
- Araçlar ile Seri Monitörü Açın | Seri Monitör
- 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:
Arduino Klavye Joystick Genişletici Kutusu ve Ses Kontrolörü Deej Kullanan Şey: 8 Adım
Arduino Klavye Joystick Genişletici Kutusu ve Ses Denetleyicisi Deej Kullanan Şey: Neden Bir süredir klavyeme arayüz öğelerini veya oyunlardaki ve simülatörlerdeki diğer daha küçük görevleri kontrol etmek için küçük bir joystick eklemek istiyordum (MS Flight Sim, Elite: Dangerous, Yıldız Savaşları: Filolar, vb.). Ayrıca, Elite için: Tehlikeli, ben
Sıçrama Hareket Kontrolörü. (Progetto Arduino): 4 Adım
Sıçrama Hareket Kontrolörü. (Progetto Arduino): L'intento di questo progetto è quello di utilizzare il Leap Motion her kontrol için yoğun bir şekilde renklendirilmiş ve farklı hareketler için RGB'yi yönetti.Referans:Leap Motion SDK: https:// geliştirici-archive.leapmotion.com/doc
Pil Şarj ve Deşarj Kontrolörü: 3 Adım
Pil Şarj ve Deşarj Kontrol Cihazı: Birkaç yıldır Li-Ion hücreler için kötü bir şarj cihazı kullanıyorum. Bu yüzden Li-Ion hücreleri şarj edip boşaltabilen kendiminkini yapmak istedim. Ek olarak, kendi şarj cihazımda voltajı, sıcaklığı ve
Arduino Uno ile LM35 Sıcaklık Sensörü Kullanarak Sıcaklık Okuma: 4 Adım
Arduino Uno ile LM35 Sıcaklık Sensörü Kullanarak Sıcaklık Okuma: Merhaba arkadaşlar bu derste LM35'i Arduino ile nasıl kullanacağımızı öğreneceğiz. Lm35, -55 °C ile 150 °C arasındaki sıcaklık değerlerini okuyabilen bir sıcaklık sensörüdür. Sıcaklıkla orantılı analog voltaj sağlayan 3 terminalli bir cihazdır. Yüksek
ESP32 NTP Sıcaklık Problu Steinhart-Hart Düzeltmeli ve Sıcaklık Alarmlı Pişirme Termometresi: 7 Adım (Resimli)
ESP32 NTP Sıcaklık Probu Steinhart-Hart Düzeltme ve Sıcaklık Alarmı ile Pişirme Termometresi.: "Yaklaşan bir projeyi" tamamlama yolculuğunda, "Steinhart-Hart Düzeltme ve Sıcaklık Alarmlı ESP32 NTP Sıcaklık Probu Pişirme Termometresi"; bir NTP sıcaklık probunu nasıl eklediğimi gösteren bir Eğitilebilirliktir, piezo b