İçindekiler:

All-sky Kamera için Raspberry Pi Çiğ Isıtıcı: 7 Adım
All-sky Kamera için Raspberry Pi Çiğ Isıtıcı: 7 Adım

Video: All-sky Kamera için Raspberry Pi Çiğ Isıtıcı: 7 Adım

Video: All-sky Kamera için Raspberry Pi Çiğ Isıtıcı: 7 Adım
Video: Savaş Cebeci ile Kaan Kazgan yakında yine kapışabilir | 2024, Temmuz
Anonim
All-sky Kamera için Raspberry Pi Çiğ Isıtıcı
All-sky Kamera için Raspberry Pi Çiğ Isıtıcı

[Kullanılan rölede değişiklik için 7. Adıma bakın]

Bu, Thomas Jaquin'in mükemmel rehberini (Wireless All Sky Camera) izleyerek oluşturduğum tüm gökyüzü kamerasına yapılan bir yükseltmedir. gece gökyüzünün görünümünü engelleyen gece. Çözüm, kubbeyi çiğlenme noktasının veya suyun kubbe üzerinde yoğunlaşacağı sıcaklığın üzerinde olacak şekilde ısıtacak bir çiy ısıtıcısı eklemektir.

Bunu yapmanın yaygın bir yolu, akımı daha sonra ısınacak olan birkaç dirençten geçirmek ve bunu ısı kaynağı olarak kullanmaktır. Bu durumda, kamera zaten bir Raspberry Pi'ye sahip olduğundan, çiy noktasının üzerinde belirli bir kubbe sıcaklığını korumak için gerektiğinde bunları açıp kapatarak direnç devresini bir röle aracılığıyla kontrol etmek için bunu kullanmak istedim. Kontrol için kubbede bir sıcaklık sensörü bulunur. Gerekli çiğlenme noktası bilgisi için başka bir sensör eklemek yerine Ulusal Hava Durumu Servisi'nden yerel hava sıcaklığı ve nem verilerini almaya karar verdim ve kamera muhafazama sızabilecek bir girişe ihtiyacım var.

Raspberry Pi, genişletme kartlarının fiziksel cihazları kontrol etmesine izin veren bir GPIO başlığına sahiptir, ancak IO'nun kendisi, bir direnç güç devresinin taleplerini karşılamak için tasarlanmamıştır. Bu nedenle ek bileşenlere ihtiyaç vardır. Güç devresini izole etmek için bir röle kullanmayı planlıyorum, bu nedenle Pi ile arayüz oluşturmak için bir röle sürücüsü IC'si gerekiyor. Ayrıca kubbe içindeki sıcaklığı okumak için bir sıcaklık sensörüne ihtiyacım var, bu nedenle Pi'nin sıcaklığı okuyabilmesi için bir analogdan dijitale dönüştürücüye (ADC) ihtiyaç var. Bu bileşenler ayrı ayrı mevcuttur, ancak Pi'nin GPIO'suna takılan bir panoda bu cihazları içeren Pi için bir 'şapka' da satın alabilirsiniz.

Tam bir G/Ç aralığına sahip olan Pimoroni Explorer pHAT ile gittim, ancak amaçlarım için 0-5V aralığında dört analog girişe ve röleleri sürmeye uygun dört dijital çıkışa sahip.

Kubbe sıcaklık sensörü için, voltaj okumasından sıcaklık elde etmek için basit bir lineer denkleme sahip olduğu için sevdiğim bir TMP36 kullandım. İşimde termistörler ve RTD'ler kullanıyorum, ancak bunlar doğrusal değil ve bu nedenle sıfırdan uygulanması daha karmaşık.

Röle, terminal bloğu ve diğer kabloları lehimlemek için devre kartı olarak Adafruit'in Perma Proto Bonnet Mini kitini kullandım, bu Pi için boyutlandırılmış olduğu kadar güzel ve Pi'nin sunduklarıyla ilgili devrelere sahip.

Ana şeyler bunlar. Tüm normal devre parçalarına ek olarak Adafruit'in parçalarını da stokladıklarından, çoğu şeyi Digikey'den aldım, bu yüzden her şeyi bir kerede almayı kolaylaştırıyor. İşte sipariş ettiğim tüm parçaların bulunduğu bir alışveriş sepetinin bağlantısı:

www.digikey.com/short/z7c88f

Atlama telleri için birkaç makara teli içerir, zaten varsa, buna ihtiyacınız yoktur.

Gereçler

  • Pimoroni Kaşif pHAT
  • TMP36 sıcaklık sensörü
  • 150 Ohm 2W dirençler
  • 1A 5VDC SPDT Röle
  • Vidalı terminal bloğu
  • Devre kartı
  • Tel
  • devre kartı zıtlıkları
  • lehim ve havya

digikey'deki parça listesi:

www.digikey.com/short/z7c88f

Adım 1: Elektrik Teorisi Notları

Kullanılan bileşenlerin, görecekleri güç ve akımı kaldıracak şekilde uygun boyutta olduğundan emin olmak önemlidir, aksi takdirde erken arıza ve hatta yangın yaşayabilirsiniz!

Bu durumda endişe edilecek ana bileşenler, röle kontaklarının akım derecesi ve dirençlerin güç derecesidir.

Güç devremizdeki tek yük dirençler olduğundan, sadece toplam direnci hesaplayabilir, bunu Ohm yasasına koyabilir ve devremizdeki akımı hesaplayabiliriz.

Paralel dirençlerin Toplam Direnci: 1/R_T =1/R_1 +1/R_2 +1/R_3 +1/R_N

Bireysel dirençler eşitse, şuna indirgenebilir: R_T=R/N. Yani dört eşit direnç için R_T=R/4.

Dört adet 150 Ω direnç kullanıyorum, bu nedenle dördü boyunca toplam direncim (150 Ω)/4=37.5 Ω.

Ohm yasası sadece Gerilim = Akım X Direncidir (V=I×R). I=V/R elde etmek için akımı belirlemek için bunu yeniden düzenleyebiliriz. Gerilimimizi güç kaynağımızdan ve direncimizden takarsak, I=(12 V)/(37,5 Ω)= 0,32 A elde ederiz. Yani bu, minimumda, rölemizin 0,32 A olarak derecelendirilmesi gerekir. Kullandığımız 1A röle, gereken boyutun 3 katından fazla, bu da fazlasıyla yeterli.

Dirençler için, her birinden geçen güç miktarını belirlememiz gerekir. Güç denklemi çeşitli biçimlerde gelir (Ohm yasasıyla ikame yoluyla), ancak bizim için en uygun olanı P=E^2/R'dir. Bireysel direncimiz için bu P=(12V)^2/150Ω=0.96 W olur. Yani en az 1 watt'lık bir direnç isteyeceğiz, ancak 2 watt bize ekstra bir güvenlik faktörü verecektir.

Devrenin toplam gücü sadece 4 x 0,96 W veya 3,84 W olacaktır (Ayrıca toplam direnci güç denklemine koyabilir ve aynı sonucu elde edebilirsiniz).

Tüm bunları yazıyorum, böylece daha fazla güç üretilmesini (daha fazla ısı) istemeniz durumunda, sayılarınızı çalıştırabilir ve gereken dirençleri, derecelerini ve gereken rölenin derecesini hesaplayabilirsiniz.

Başlangıçta devreyi Raspberry Pi güç rayından 5 volt ile çalıştırmayı denedim, ancak direnç başına üretilen güç toplam 0,66 W için sadece P=(5V)^2/150Ω=0.166 W, t Birkaç dereceden fazla sıcaklık artışı oluşturmaya yetecek kadar.

Adım 2: Adım 1: Lehimleme

Adım 1: Lehimleme
Adım 1: Lehimleme
Adım 1: Lehimleme
Adım 1: Lehimleme
Adım 1: Lehimleme
Adım 1: Lehimleme

Tamam, parça listeleri ve teori bu kadar yeter, gelelim devre tasarımına ve lehimlemeye!

Devreyi Proto-Bonnet'te iki farklı şekilde çizdim, bir kez kablolama şeması ve bir kez de kartın görsel temsili olarak. Ayrıca Pimoroni Explorer pHAT kartının, onunla Proto-Bonnet arasındaki kablolamayı gösteren işaretli bir fotoğrafı da var.

Explorer pHAT'ta, beraberinde gelen 40 pinli başlığın karta lehimlenmesi gerekiyor, bu, Raspberry Pi ile arasındaki bağlantıdır. G/Ç için bir terminal başlığı ile birlikte gelir, ancak ben kullanmadım, bunun yerine kabloları doğrudan karta lehimledim. Proto-Bonnet ayrıca başlık için bağlantılar içerir, ancak bu durumda kullanılmaz.

Sıcaklık sensörü, Raspberry Pi'nin konumu ile bulunduğu Kamera Dome'unun içi arasındaki farkı telafi etmek için teller kullanılarak doğrudan Explorer pHAT kartına bağlanır.

Vidalı Terminal bloğu ve kontrol Rölesi, Proto-Bonnet kartına lehimlenen iki bileşendir, şemada T1, T2, T3 (üç vidalı terminal için) ve röle için CR1 olarak etiketlenmiştir.

Dirençler, Raspberry Pi'den Camera Dome'a giden kablolara lehimlenmiştir, T1 ve T3'teki vidalı terminaller aracılığıyla Proto-Bonnet'e bağlanırlar. Kamerayı çatıma geri takmadan önce montajın fotoğrafını çekmeyi unuttum, ancak sadece iki kablo Proto-Bonnet'e geri gelecek şekilde dirençleri kubbenin etrafına eşit aralıklarla yerleştirmeye çalıştım. Kubbeye borunun karşıt taraflarındaki deliklerden girin, sıcaklık sensörü kubbenin kenarına yakın iki rezistör arasında eşit aralıklarla yerleştirilmiş üçüncü bir delikten girer.

Adım 3: Adım 2: Montaj

2. Adım: Montaj
2. Adım: Montaj

Hepsi birlikte lehimlendikten sonra, tüm gökyüzü kameranıza kurabilirsiniz. Explorer pHAT'ı Rasperry Pi'ye monte edin, 40 pinli başlığın üzerine itin ve ardından Proto-Bonnet, bazı zıtlıklar kullanılarak Pi'nin üstüne bitişik olarak monte edilir. Başka bir seçenek de Explorer'ın üstünde zıtlıklar kullanmaktı, ancak ABS Boru muhafazasını kullandığım için Pi'yi artık sığmayacak kadar büyük yaptı.

Sıcaklık sensörünü muhafazanın yukarısına, bulunduğu yere yönlendirin ve direnç kablo demetini de takın. Ardından kablo demetini proto-kart üzerindeki terminal bloğuna bağlayın.

Programlamaya devam!

Adım 4: Adım 3: Explorer PHAT Kitaplığını Yükleme ve Programlamayı Test Etme

Explorer pHAT'ı kullanmadan önce, Pi'nin onunla iletişim kurabilmesi için kütüphaneyi Pimoroni'den yüklememiz gerekiyor.

Raspberry Pi'nizde terminali açın ve şunu girin:

curl https://get.pimoroni.com/explorerhat | bash

Yüklemeyi tamamlamak için uygun şekilde 'y' veya 'n' yazın.

Ardından, kablolamamızın doğru olduğundan emin olmak için girişleri ve çıkışları test etmek için basit bir program çalıştırmak isteyeceğiz. Ekli DewHeater_TestProg.py, sıcaklığı görüntüleyen ve röleyi her iki saniyede bir açıp kapatan bir python betiğidir.

ithalat zamanı

import explorerhat gecikme = 2 iken True: T1 = explorerhat.analog.one.read() tempC = ((T1*1000)-500)/10 tempF = tempC*1.8 +32 print(' {0:5.3f} volt, {1:5.3f} dereceC, {2:5.2f} derece F'.format(yuvarlak(T1, 3), yuvarlak(tempC, 3), yuvarlak(tempF, 3))) V1 = explorerhat.output.two. on() print('Röle açık') time.sleep(gecikme) V1 = explorerhat.output.two.off() print('Röle kapalı') time.sleep(gecikme)

Dosyayı ahududu Pi'nizde açabilirsiniz (benimkinde Thonny'de açıldı, ama orada başka birçok Python editörü de var) ve sonra çalıştırın ve sıcaklığı göstermeye başlamalıdır ve duyacaksınız. Röle tıklayarak ve kapatarak! Değilse, kablolarınızı ve devrelerinizi biraz kontrol edin.

Adım 5: Adım 4: Çiğ Isıtıcı Programlamanın Yüklenmesi

İşte tam çiy ısıtıcısı programlaması. Birkaç şey yapar:

  • Her beş dakikada bir belirli bir Ulusal Hava Durumu Servisi konumundan mevcut dış ortam sıcaklığını ve çiğlenme noktasını çeker. Veri almazsa, önceki sıcaklıkları korur ve beş dakika sonra tekrar dener.

    • NWS, API isteklerine iletişim bilgilerinin dahil edilmesini ister, istekte sorun olması durumunda kiminle iletişime geçileceğini bilir. Bu, programlamanın 40. satırındadır, lütfen '[email protected]' kısmını kendi e-posta adresinizle değiştirin.
    • NWS'deki en yakın hava istasyonu olan İstasyon Kimliğini almak için weather.gov'a gitmeniz ve bölgeniz için bir hava tahmini aramanız gerekecek. İstasyon kimliği, konum adından sonra () içindedir. Bunu programlamanın 17. satırına girin. Şu anda KPDX veya Portland, Oregon'u gösteriyor.
    • ABD dışındaysanız, OpenWeatherMap.org'dan gelen verileri kullanmanın başka bir olasılığı daha vardır. Kendim denemedim ama şu örneğe buradan bakabilirsiniz: Reading-JSON-With-Raspberry-Pi
  • NWS'den ve sıcaklık sensöründen gelen sıcaklıkların, ASI kamera için olduğu gibi Santigrat derece cinsinden olduğuna dikkat edin, bu nedenle tutarlılık için Fahrenhayt'a dönüştürmek yerine hepsini Santigrat olarak tuttum, ki buna daha çok alışkınım.
  • Ardından dome sensöründen sıcaklığı okur ve çiğ noktasının 10 dereceden az üzerindeyse röleyi açar. Çiğ noktasının 10.5 dereceden fazla üzerinde ise röleyi kapatır. İsterseniz bu ayarları değiştirebilirsiniz.
  • Dakikada bir kez, sıcaklıklar, çiğlenme noktası ve röle durumu için mevcut değerleri bir.csv dosyasına kaydeder, böylece zaman içinde nasıl olduğunu görebilirsiniz.

#Raspberry Pi Çiğ Isıtıcı kontrol programı

#Dec 2019 #Brian Plett #Tüm gökyüzü kamerası için bir çiy ısıtıcısı olarak bir direnç devresini kontrol etmek için Pimoroni Explorer pHAT, bir sıcaklık sensörü ve bir röle kullanır #NWS web sitesinden dış hava sıcaklığını ve çiğlenme noktasını çeker #iç sıcaklığı tutar 10 çiğ noktasının üzerindeki dereceler içe aktarma saati içe aktarma tarihsaat içe aktarma istekleri içe aktarma csv içe aktarma işletim sistemi içe aktarma explorerhat #Station ID, NWS'deki en yakın hava durumu istasyonudur. Weather.gov'a gidin ve bölgeniz için tahmini arayın, #station ID, konum adından sonra () içindedir. settings = { 'station_ID':'KPDX', } #Hava durumu bilgileri için alternatif URL #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2}&birimler={3}"

Verileri almak için #Weather URL'si

BASE_URL = "https://api.weather.gov/stations/{0}/observations/latest"

#röle kontrolü için gecikme, saniye

ControlDelay = 2 A=0 B=0 iken True: #date günlük dosya adında kullanılacak datestr = datetime.datetime.now().strftime("%Y%m%d") #date & time her veri satırı için kullanılacak localtime = datetime.datetime.now().strftime("%Y/%m/%d %H:%M") #CSV dosya yolu yolu = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' while B == 0: deneyin: #NWS'den her 60 saniyede bir sıcaklık ve çiğlenme noktası çekin final_url = BASE_URL.format(settings["station_ID"]) weather_data = request.get(final_url, timeout= 5, headers = {'User-agent) ': 'Raspberry Pi 3+ Allsky Camera [email protected]'}) oatRaw = weather_data.json()["özellikler"]["sıcaklık"]["değer"] dewRaw = weather_data.json()["özellikler"]["dewpoint"]["value"] Ham sıcaklık verileri için #diagnostic print print(oatRaw, dewRaw) OAT = round(oatRaw, 3) Dew = round(dewRaw, 3) hariç: A = 0 B = 1 ara A = 0 B = A < 300 ise 1 ara: A = A + Kontrol Gecikmesi başka: B = 0 #Raspberry Pi Explorer PHat'tan ham voltajı okuyun ve sıcaklığa dönüştürün T1 = explorerhat.analog.one.read() tempC = ((T1 *1 000)-500)/10 #tempF = tempC*1.8 +32 if (tempC Dew + 10.5): V1 = explorerhat.output.two.off() #diagnostic print sıcaklıkları, çiğ noktalarını ve röle çıkış durumunu gösteren print(' { 0:5.2f} dereceC, {1:5.2f} dereceC, {2:5.2f} derece C {3:5.0f}'.format(yuvarlak(OAT, 3), yuvarlak(Çiy, 3), yuvarlak(tempC, 3), explorerhat.output.two.read())) Dakika geçtikten sonra #10 saniye, eğer A ==10 ise bir CSV dosyasına veri yazın: if os.path.isfile(path.format(datestr)): print(path.format(datestr)) open(path.format(datestr), "a") ile csvfile olarak: txtwrite = csv.writer(csvfile) txtwrite.writerow([localtime, OAT, Dew, tempC, explorerhat. output.two.read()]) başka: fieldnames = ['date', 'Dış Hava Sıcaklığı', 'Çiğlenme noktası', 'Dome Temp', 'Röle Durumu'] open(path.format(datestr), "w ") csvfile olarak: txtwrite = csv.writer(csvfile) txtwrite.writerow(fieldnames) txtwrite.writerow([localtime, OAT, Dew, tempC, explorerhat.output.two.read()]) time.sleep(ControlDelay)

Bunu, DewHeaterLogs adlı allsky klasörünün altındaki yeni bir klasöre kaydettim.

Komut dosyası olarak çalıştırmaya geçmeden önce her şeyin iyi göründüğünden emin olmak için bunu biraz çalıştırmayı deneyin.

Adım 6: Adım 5: Komut Dosyasını Başlangıçta Çalıştırma

Ahududu Pi başlar başlamaz Dew Heater komut dosyasını çalıştırmak için buradaki talimatları izledim:

www.instructables.com/id/Raspberry-Pi-Laun…

Başlatıcı betiği için şunu oluşturdum:

#!/bin/sh

# launcher.sh # ana dizine, ardından bu dizine gidin, ardından python betiğini çalıştırın, ardından ana sayfaya dönün cd / cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd /

Bu yapıldıktan sonra, gitmek için iyi olmalısın. Çiy bırakmayan bir kameraya sahip olmanın keyfini çıkarın!

7. Adım: Aralık 2020'yi Güncelleyin

Geçen yılın yaklaşık yarısında, çiy ısıtıcım çalışmayı durdurdu, bu yüzden bir göz atana kadar kodu devre dışı bıraktım. Sonunda kış tatilinde biraz zaman geçirdim ve kullandığım rölenin, muhtemelen aşırı yüklenme nedeniyle çalışırken kontaklarında yüksek direnç gösterdiğini fark ettim.

Bu yüzden, 1A kontağı yerine 5A kontağı olan daha yüksek dereceli bir röle ile güncelledim. Ayrıca bir sinyal rölesinden ziyade bir güç rölesi, bu yüzden yardımcı olacağını umuyorum. Bu bir TE PCH-105D2H, 000. Ayrıca Explorer pHAT için bazı vidalı terminaller ekledim, böylece gerektiğinde ısıtıcı ve sıcaklık sensörünü kolayca ayırabildim. Bunların 3'ü de aşağıdaki bu alışveriş sepetinde:

Digikey alışveriş sepeti

Bu rölenin pinlerinin öncekinden farklı olduğuna dikkat edin, bu nedenle kabloyu bağladığınız yer biraz farklıdır, ancak basit olmalıdır. Bobin için polarite önemli değil, bilginize.

Önerilen: