İçindekiler:
- Gereçler
- Adım 1: Isıtıcı PCB'sini tasarlama
- Adım 2: Denetleyici PCB'sini Tasarlama
- Adım 3: CircuitPython Önyükleyici
- Adım 4: CircuitPython Kodu
- Adım 5: Montaj
- Adım 6: Biten Proje
Video: Termokromik Sıcaklık ve Nem Göstergesi - PCB Versiyonu: 6 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bir süre önce Termokromik Sıcaklık ve Nem Göstergesi adlı bir proje yaptım ve burada peltier elementler tarafından ısıtılan/soğutulan bakır plakalardan 7 segmentli bir ekran yaptım. Bakır plakalar, sıcaklıkla renk değiştiren termokromik bir folyo ile kaplanmıştır. Bu proje, yorumlar bölümünde DmitriyU2 kullanıcısı tarafından önerildiği gibi, peltier yerine ısıtma izli bir PCB kullanan ekranın daha küçük bir versiyonudur. Bir PCB ısıtıcı kullanmak, çok daha basit ve daha kompakt bir tasarım sağlar. Isıtma ayrıca daha verimlidir ve bu da daha hızlı renk değişimine yol açar.
Ekranın nasıl çalıştığını görmek için videoyu izleyin.
Birkaç PCB kaldığı için bu ekranı Tindie mağazamda da satıyorum.
Gereçler
- Isıtıcı PCB (Gerber dosyaları için GitHub'a bakın)
- Kontrol PCB'si (Gerber dosyaları ve BoM için GitHub'a bakın)
- DHT22 sensörü (ör. ebay.de)
- 3D baskılı stand (stl dosyası için GitHub'a bakın)
- Termokromik Yapışkanlı Levha, 150x150 mm, 30-35°C (SFXC)
- M2x6 cıvata + somun
- 2x pin başlığı 1x9, 2,54 mm (ör. mouser.com)
- 2x SMD kart konektörü 1x9, 2,54 mm (ör. mouser.com)
Adım 1: Isıtıcı PCB'sini tasarlama
Isıtıcı PCB, Eagle'da tasarlanmıştır. Kullandığım termokromik levhaların standart ölçüsü 150x150 mm olduğu için PCB boyutları 100x150 mm'dir. İlk önce Fusion360'ta dxf olarak kaydedilen ve ardından Eagle'a aktarılan segmentlerin bir taslağını yaptım. Segmentler, aralarında frezelenmiş boşluklara sahiptir ve yalnızca küçük köprülerle birbirine bağlanır. Bu, bireysel segmentlerin ısı yalıtımını iyileştirir ve bu nedenle daha hızlı ısıtmaya izin verir ve 'termal karışmayı' azaltır. Segmentler, Eagle'daki menderes aracı kullanılarak üst katmandaki (kırmızı ile gösterilen) PCB izleriyle dolduruldu. PCBWay tarafından ekstra maliyet olmadan üretilebilecek minimum boyut olan 6 mil'lik bir palet genişliği ve aralığı kullandım. Her iz, daha sonra çok daha kalın 32 mil izleri kullanılarak alt katman (mavi olarak görülen) aracılığıyla pimlere bağlanan iki yol arasında kıvrılır. Tüm segmentler ortak bir zemini paylaşıyor.
Belirli bir sıcaklık artışı için gerekli olan ısıtma gücü için herhangi bir hesaplama yapmadım ve bir segmentin beklenen direncini hesaplamadım. Değişken görev döngüsüne sahip bir PWM sinyali kullanılarak ısıtma gücünün herhangi bir ayarının yapılabileceğini düşündüm. Daha sonra, ~%5 görev döngüsü kullanılarak 5V USB bağlantı noktasından güç verildiğinde segmentlerin oldukça hızlı ısındığını buldum. 17 segmentin tümünü ısıtırken toplam akım yaklaşık 1,6 A'dır.
Tüm pano dosyaları GitHub'ımda bulunabilir.
Adım 2: Denetleyici PCB'sini Tasarlama
PCB ısıtıcısını kontrol etmek için GlassCube projemde de kullandığım bir SAMD21E18 MCU seçiyorum. Bu mikro denetleyici, 17 ısıtıcı segmentin tümünü kontrol etmek ve DHT22 sensörünü okumak için yeterli pime sahiptir. Ayrıca yerel USB'ye sahiptir ve Adafruit'in CircuitPython önyükleyicisi ile flash'lanabilir. Güç kaynağı olarak ve MCU'yu programlamak için bir mikro USB konektörü kullanıldı. Isıtıcı segmentleri, 9 adet çift kanallı MOSFET (SP8K24FRATB) tarafından kontrol edilir. Bunlar 6 A'ya kadar işleyebilir ve kapı eşik voltajı <2,5 V'a sahiptir, böylece MCU'dan gelen 3,3 V mantık sinyali ile anahtarlanabilirler. Isıtıcı kontrol devresini tasarlamama yardımcı olması için bu konuyu çok faydalı buldum.
PCB'leri PCBWay'den ve elektronik parçaları Mouser'dan ayrı olarak sipariş ettim ve maliyetten tasarruf etmek için PCB'leri kendim monte ettim. Parçaları elle yerleştirdiğim bir lehim pastası dağıtıcısı kullandım ve kızılötesi IC ısıtıcı ile lehimledim. Ancak, ilgili bileşenlerin nispeten büyük miktarı ve gerekli yeniden çalışma nedeniyle bu oldukça sıkıcıydı ve gelecekte bir montaj hizmeti kullanmayı düşünüyorum.
Yine tahta dosyaları GitHub'ımda bulunabilir. Burada, mikro USB yerine bir USB-C konektörü kullanan PCB'nin geliştirilmiş bir sürümünü bulabilirsiniz. Ayrıca DHT22 sensörü için geçiş deliklerinin aralığını düzelttim ve önyükleyicinin J-Link aracılığıyla daha kolay yanıp sönmesi için 10 pimli bir konektör ekledim.
Adım 3: CircuitPython Önyükleyici
İlk başta SAMD21'i Adafruit'in Trinket M0'ına dayalı bir UF2 önyükleyici ile flashladım. Bibloda ısıtma için kullandığım pinlerden birine bağlı bir LED olduğu için bootloader'ın biraz değiştirilmesi gerekiyordu. Aksi takdirde bu pin boot sonrası kısa bir süreliğine yükselecek ve bağlı segmenti tam güçle ısıtacaktır. Önyükleyicinin yanıp sönmesi, SWD ve SWC bağlantı noktaları aracılığıyla MCU'ya bir J-Link bağlanarak yapılır. Tüm süreç Adafruit web sitesinde ayrıntılı olarak açıklanmaktadır. Önyükleyiciyi kurduktan sonra, MCU, mikro USB bağlantı noktası aracılığıyla bağlandığında bir flash sürücü olarak tanınır ve sonraki önyükleyiciler, bir UF2 dosyasını sürücüye sürükleyerek kolayca kurulabilir.
Bir sonraki adım olarak bir CircuitPython önyükleyici kurmak istedim. Ancak, kartım Trinket M0'a bağlı olmayan birçok pin kullandığından, önce kart konfigürasyonunu biraz değiştirmek zorunda kaldım. Yine bunun için Adafruit web sitesinde harika bir eğitim var. Temel olarak, mpconfigboard.h dosyasındaki birkaç göz ardı edilen pini yorumlamak ve ardından her şeyi yeniden derlemek yeterlidir. Özel önyükleyici dosyaları GitHub'ımda da mevcuttur.
Adım 4: CircuitPython Kodu
CircuitPython önyükleyici yüklendikten sonra, kodunuzu doğrudan USB flash sürücüye code.py dosyası olarak kaydederek kartı programlayabilirsiniz. Yazdığım kod DHT22 sensörünü okuyor ve ardından karşılık gelen segmentleri ısıtarak dönüşümlü olarak sıcaklık ve nemi gösteriyor. Daha önce de belirtildiği gibi ısıtma, MOSFET'leri bir PWM sinyali ile değiştirerek yapılır. Pinleri PWM çıkışları olarak yapılandırmak yerine, gecikmeleri kullanarak kodda 100 Hz'lik düşük anahtarlama frekansına sahip "sahte" bir PWM sinyali oluşturdum. Akım tüketimini daha da azaltmak için segmentleri aynı anda değil, yukarıdaki şemada gösterildiği gibi sırayla açıyorum. Segmentlerin ısınmasını daha eşit hale getirmek için de birkaç püf noktası var. Her şeyden önce görev döngüsü her segment için biraz farklıdır. Örneğin, "%" işaretinin kısa çizgisi, daha yüksek direnci nedeniyle çok daha büyük bir görev döngüsüne ihtiyaç duyar. Ayrıca, diğer birçok segmentle çevrili segmentlerin daha az ısıtılması gerektiğini buldum. Ek olarak, bir segment önceki "çalışmada" ısıtıldıysa, görev döngüsü bir sonrakinde azaltılabilir. Son olarak, ısıtma ve soğutma süresi, DHT22 sensörü tarafından uygun şekilde ölçülen ortam sıcaklığına uyarlanır. Makul zaman sabitlerini bulmak için, işyerinde şansıma erişebildiğim bir iklim odasındaki ekranı gerçekten kalibre ettim.
Kodun tamamını GitHub'ımda bulabilirsiniz.
Adım 5: Montaj
Ekranın montajı oldukça kolaydır ve aşağıdaki adımlara bölünebilir.
- PCB'yi ısıtmak için dişi pin başlıklarını lehimleyin
- Isıtıcı PCB'ye kendinden yapışkanlı termokromik levha takın
- DHT22 sensörünü kontrol PCB'sine lehimleyin ve M2 cıvata ve somunla sabitleyin
- Erkek pin başlıklarını kontrolör PCB'sine lehimleyin
- Her iki PCB'yi de bağlayın ve 3D baskılı standa yerleştirin
Adım 6: Biten Proje
Şu anda oturma odamızda sürekli çalışan bitmiş ekrandan oldukça memnunum. Orijinal termokromik ekranımın daha küçük, daha basit bir versiyonunu yapma amacıma kesinlikle ulaştım ve öneri için kullanıcı DmitriyU2'ye bir kez daha teşekkür etmek istiyorum. Proje ayrıca Eagle'da PCB tasarım becerilerimi geliştirmeme yardımcı oldu ve MOSFET'lerin anahtar olarak kullanımını öğrendim.
PCB'ler için güzel bir muhafaza yaparak tasarımı daha da geliştirebiliriz. Ben de aynı tarzda bir dijital saat yapmayı düşünüyorum.
Bu projeyi beğendiyseniz, yeniden yapabilir veya Tindie mağazamdan satın alabilirsiniz. Ayrıca PCB tasarım yarışmasında bana oy vermeyi düşünün.
PCB Tasarım Yarışmasında Jüri Ödülü
Önerilen:
DHT 11 Sıcaklık ve Nem Göstergesi: 4 Adım
DHT 11 Sıcaklık ve Nem Göstergesi: Gerekli Parçalar (İngiltere Alışveriş Stoku)Arduino Nano - https://www.amazon.co.uk/Arduino- Compatible-Nano-CH340-USB/dp/B00ZABSNUSDHT 11 Sensör - https://www. .adafruit.com/product/3861.3"; OLED Yeşil Ekran https://www.amazon.co.uk/DSD-TECH-Screen-Support
Arduino ile Sıcaklık ve Nem Göstergesi: 7 Adım (Resimli)
Arduino ile Sıcaklık ve Nem Göstergesi: Bu talimat Arduino ile sıcaklık ve nem gösterebilen bir kutunun nasıl yapıldığını gösterecektir. sıkıştırılmış f
Termokromik Sıcaklık ve Nem Göstergesi: 10 Adım (Resimli)
Termokromik Sıcaklık ve Nem Göstergesi: Bir süredir bu proje üzerinde çalışıyorum. Orijinal fikir, bir ticaret fuarı için işyerinde bir TEC kontrol cihazı göstericisi yaptıktan sonra aklıma geldi. GEM'lerin ısıtma ve soğutma yeteneklerini göstermek için termokromik boya kullanıyorduk
Arduino 24 Saat Sıcaklık Nem Göstergesi: 3 Adım (Resimli)
Arduino 24 Saat Sıcaklık Nem Göstergesi: DHT11, başlamak için harika bir sensördür. Arduino'ya bağlanmak ucuz ve kolaydır. Sıcaklık ve nemi yaklaşık %2 doğrulukla bildirir ve bu talimat, 24 saatlik geçmişi gösteren grafiksel bir ekran olarak bir Gameduino 3 kullanır.W
Arduino İle Sıcaklık ve Nem Göstergesi ve Veri Toplama ve İşleme: 13 Adım (Resimli)
Arduino ve İşleme ile Sıcaklık ve Nem Görüntüleme ve Veri Toplama: Giriş: Bu, bir Arduino kartı, bir Sensör (DHT11), bir Windows bilgisayar ve Sıcaklık, Nem verilerini dijital olarak görüntülemek için bir İşleme (ücretsiz indirilebilir) programı kullanan bir projedir. çubuk grafik formu, saati ve tarihi görüntüleyin ve bir sayım süresi çalıştırın