Turinys:

Raspberry Pi rasos šildytuvas viso dangaus fotoaparatui: 7 žingsniai
Raspberry Pi rasos šildytuvas viso dangaus fotoaparatui: 7 žingsniai

Video: Raspberry Pi rasos šildytuvas viso dangaus fotoaparatui: 7 žingsniai

Video: Raspberry Pi rasos šildytuvas viso dangaus fotoaparatui: 7 žingsniai
Video: Apleisti vokiečių imigrantų namai JAV ~ karas juos pakeitė! 2024, Lapkritis
Anonim
Raspberry Pi rasos šildytuvas, skirtas viso dangaus fotoaparatui
Raspberry Pi rasos šildytuvas, skirtas viso dangaus fotoaparatui

[Norėdami pakeisti naudojamą relę, žiūrėkite 7 veiksmą]

Tai yra viso dangaus fotoaparato, kurį sukūriau vadovaudamasi puikiu Thomaso Jaquino vadovu („Wireless All Sky Camera“), atnaujinimas. Dažna dangaus kamerų (ir teleskopų) problema yra ta, kad, atšalus, ant fotoaparato kupolo kondensuojasi rasa. nakties, kuri užgožia naktinio dangaus vaizdą. Sprendimas yra pridėti rasos šildytuvą, kuris sušildys kupolą, kad jis būtų virš rasos taško, arba temperatūrą, kurioje vanduo susikondensuos ant kupolo.

Įprastas būdas tai padaryti yra praleisti srovę per kelis rezistorius, kurie vėliau įkaista, ir naudoti ją kaip šilumos šaltinį. Šiuo atveju, kadangi fotoaparatas jau turi „Raspberry Pi“, norėjau jį panaudoti valdydamas rezistoriaus grandinę per relę, įjungdamas ir išjungdamas, jei reikia, kad palaikytų tam tikrą kupolo temperatūrą virš rasos taško. Temperatūros jutiklis yra kupole valdymui. Aš nusprendžiau iš Nacionalinės orų tarnybos gauti vietos oro temperatūros ir drėgmės duomenis, kad gautumėte reikalingą rasos taško informaciją, o ne pridėti kitą jutiklį, ir man reikia įsiskverbti į fotoaparato korpusą, kuris gali nutekėti.

„Raspberry Pi“turi GPIO antraštę, leidžiančią išplėtimo plokštėms valdyti fizinius įrenginius, tačiau pats IO nėra skirtas valdyti srovės, kurią reikalauja rezistoriaus maitinimo grandinė. Taigi reikia papildomų komponentų. Aš planuoju naudoti relę maitinimo grandinei izoliuoti, todėl norint sujungti su Pi reikia relės tvarkyklės IC. Man taip pat reikia temperatūros jutiklio, kad galėčiau nuskaityti temperatūrą kupolo viduje, todėl reikalingas analoginis -skaitmeninis keitiklis (ADC), kad Pi galėtų nuskaityti temperatūrą. Šiuos komponentus galima įsigyti atskirai, tačiau taip pat galite nusipirkti „kepurę“„Pi“, kurioje yra šie įrenginiai, plokštėje, kuri tiesiog prijungiama prie „Pi“GPIO.

Aš nuėjau su „Pimoroni Explorer pHAT“, turinčiu daugybę įvesties/išvesties diapazono, tačiau mano tikslais jis turi keturis analoginius įėjimus, kurių diapazonas yra 0–5 V, ir keturis skaitmeninius išėjimus, tinkamus vairavimo relėms.

Kupolo temperatūros jutikliui aš naudoju TMP36, kuris man patiko, nes turi paprastą tiesinę lygtį temperatūrai išvesti iš įtampos. Savo darbe naudoju termistorius ir RTD, tačiau jie yra nelinijiniai, todėl juos įgyvendinti yra sudėtingiau.

Aš naudoju „Adafruit“„Perma Proto Bonnet Mini“rinkinį kaip grandinės plokštę, kad lituosiu relę, gnybtų bloką ir kitus laidus, kurie yra gražūs, nes yra tinkami „Pi“, ir turi grandines, susijusias su „Pi“pasiūlymais.

Tai yra pagrindiniai dalykai. Aš galiausiai gavau viską iš „Digikey“, nes juose, be visų įprastų grandinės dalių, yra „Adafruit“dalių, todėl viską paprasta gauti vienu metu. Čia yra nuoroda į pirkinių krepšelį su visomis mano užsakytomis dalimis:

www.digikey.com/short/z7c88f

Jame yra pora laidų ritinių, skirtų jungiamiesiems laidams, jei jau turite, jums to nereikia.

Prekės

  • Pimoroni Explorer pHAT
  • TMP36 temperatūros jutiklis
  • 150 omų 2W rezistoriai
  • 1A 5VDC SPDT relė
  • Sraigtinis gnybtų blokas
  • Grandinės plokštė
  • Viela
  • grandinės plokštės atotrūkiai
  • lituoklis ir lituoklis

„Digikey“dalių sąrašas:

www.digikey.com/short/z7c88f

1 žingsnis: Elektros teorijos pastabos

Svarbu užtikrinti, kad naudojami komponentai būtų tinkamo dydžio, kad būtų galima valdyti jų matomą galią ir srovę, nes priešingu atveju galite sugesti arba net užsidegti!

Pagrindiniai komponentai, dėl kurių šiuo atveju reikia nerimauti, yra dabartinė relės kontaktų vertė ir rezistorių galia.

Kadangi vienintelė mūsų maitinimo grandinės apkrova yra rezistoriai, mes galime tiesiog apskaičiuoti bendrą varžą, įtraukti ją į Omo dėsnį ir apskaičiuoti srovę mūsų grandinėje.

Bendra lygiagrečių rezistorių varža: 1/R_T = 1/R_1 +1/R_2 +1/R_3 +1/R_N

Jei atskiros varžos yra vienodos, ją galima sumažinti iki: R_T = R/N. Taigi keturiems vienodiems rezistoriams tai R_T = R/4.

Aš naudoju keturis 150 Ω rezistorius, todėl mano bendras pasipriešinimas per keturis iš jų yra (150 Ω)/4 = 37,5 Ω.

Omo dėsnis yra tik įtampa = dabartinė X varža (V = I × R). Mes galime tai pertvarkyti, kad nustatytume srovę, kad gautume I = V/R. Jei įjungsime įtampą iš maitinimo šaltinio ir pasipriešinimo, gausime I = (12 V)/(37,5 Ω) = 0,32 A. Taigi tai reiškia, kad bent jau mūsų relė turi būti įvertinta 0,32 A. mūsų naudojama 1A relė yra daugiau nei 3 kartus didesnė už reikalingą, o tai yra daug.

Rezistorių atveju turime nustatyti energijos kiekį, einantį per kiekvieną. Galios lygtis yra kelių formų (pakeičiama Ohmo dėsniu), tačiau mums patogiausia yra P = E^2/R. Mūsų individualiam rezistoriui tai tampa P = (12V)^2/150Ω = 0,96 W. Taigi norėsime bent 1 vato rezistoriaus, tačiau 2 vatai suteiks mums papildomą saugumo koeficientą.

Bendra grandinės galia būtų tik 4 x 0,96 W arba 3,84 W (taip pat galite įtraukti bendrą pasipriešinimą į galios lygtį ir gauti tą patį rezultatą).

Aš visa tai rašau, taigi, jei norite, kad būtų sukurta daugiau energijos (daugiau šilumos), galite paleisti savo skaičius ir apskaičiuoti reikalingus rezistorius, jų vertę ir reikalingos relės reitingą.

Iš pradžių aš bandžiau paleisti grandinę 5 voltais iš Raspberry Pi maitinimo bėgio, tačiau vienam rezistoriui sukurta galia yra tik P = (5V)^2/150Ω = 0,166 W, iš viso 0,66 W, o tai nebuvo t pakanka, kad temperatūra pakiltų daugiau nei pora laipsnių.

2 žingsnis: 1 žingsnis: litavimas

1 žingsnis: litavimas
1 žingsnis: litavimas
1 žingsnis: litavimas
1 žingsnis: litavimas
1 žingsnis: litavimas
1 žingsnis: litavimas

Gerai, pakaks dalių sąrašų ir teorijos, pereikime prie grandinės projektavimo ir litavimo!

Aš nupiešiau grandinę „Proto-Bonnet“dviem skirtingais būdais: vieną kartą kaip elektros instaliacijos schemą, o kitą-kaip vizualų plokštės vaizdą. Taip pat yra pažymėta „Pimoroni Explorer pHAT“plokštės nuotrauka, kurioje rodomi laidai, einantys tarp jos ir „Proto-Bonnet“.

„Explorer pHAT“prie jo pridedama 40 kontaktų antraštė, pridedama prie plokštės, tai yra ryšys tarp jos ir „Raspberry Pi“. Komplekte yra įvesties/išvesties gnybtų antraštė, bet aš jos nenaudojau, o tiesiog lituosiu laidus tiesiai prie plokštės. „Proto-Bonnet“taip pat apima antraštės jungtis, tačiau šiuo atveju jis nenaudojamas.

Temperatūros jutiklis yra prijungtas tiesiai prie „Explorer“pHAT plokštės, naudojant laidus, kad būtų galima nustatyti skirtumą tarp „Raspberry Pi“vietos ir „Camera Dome“vidinės pusės, kurioje jis yra.

Sraigtinis gnybtų blokas ir valdymo relė yra du komponentai, prilituoti prie „Proto-Bonnet“plokštės, schemoje jie pažymėti kaip T1, T2, T3 (trijų varžtų gnybtai) ir CR1-relė.

Rezistoriai yra lituojami prie laidų, kurie taip pat eina iš „Raspberry Pi“į „Camera Dome“, jie jungiasi prie „Proto-Bonnet“per varžtų gnybtus T1 ir T3. Pamiršau nufotografuoti surinkimą prieš sumontuodamas fotoaparatą ant savo stogo, tačiau bandžiau tolygiai išdėstyti rezistorius aplink kupolą, o tik du laidai grįžo į „Proto-Bonnet“. Įeikite į kupolą per skyles, esančias priešingose vamzdžio pusėse, o temperatūros jutiklis įeina per trečiąją skylę, tolygiai išdėstytą tarp dviejų rezistorių šalia kupolo krašto.

3 žingsnis: 2 žingsnis: surinkimas

2 žingsnis: Surinkimas
2 žingsnis: Surinkimas

Kai viskas bus sulituota, galite ją įdiegti į visą dangų fotoaparatą. Sumontuokite „Explorer pHAT“ant „Rasperry Pi“, stumdami jį ant 40 kontaktų antraštės, o tada „Proto-Bonnet“yra sumontuotas greta jo ant „Pi“viršaus, naudojant tam tikrus apribojimus. Kitas variantas būtų naudoti atskirtis „Explorer“viršuje, tačiau kadangi naudojau ABS vamzdžių korpusą, Pi tapo per didelis, kad netilptų.

Nukreipkite temperatūros jutiklį į korpusą iki jo vietos ir taip pat sumontuokite rezistoriaus diržus. Tada prijunkite diržus prie gnybtų bloko ant plokštės.

Pirmyn prie programavimo!

4 veiksmas: 3 veiksmas: įkelkite „Explorer PHAT“biblioteką ir išbandykite programavimą

Kad galėtume naudoti „Explorer pHAT“, turime įkelti biblioteką iš „Pimoroni“, kad „Pi“galėtų su juo bendrauti.

„Raspberry Pi“atidarykite terminalą ir įveskite:

garbanoti https://get.pimoroni.com/explorerhat | mušti

Norėdami užbaigti diegimą, įveskite „y“arba „n“.

Toliau norėsime paleisti paprastą programą, kad patikrintume įėjimus ir išėjimus, kad įsitikintume, jog mūsų laidai yra teisingi. Pridedamas „DewHeater_TestProg.py“yra „python“scenarijus, rodantis temperatūrą ir įjungiantis bei išjungiantis relę kas dvi sekundes.

importo laikas

importuoti „explorerhat delay“= 2, o tiesa: T1 = explorerhat.analog.one.read () tempC = ((T1*1000) -500)/10 tempF = tempC*1.8 +32 print ('{0: 5.3f} voltai, {1: 5.3f} degC, {2: 5.2f} ° F “. Formatas (apvalus (T1, 3), apvalus (tempC, 3), apvalus (tempF, 3))) V1 = explorerhat.output.two. on () print („Relay on“) time.sleep (delay) V1 = explorerhat.output.two.off () print („Relay off“) time.sleep (delsa)

Galite atidaryti failą savo aviečių „Pi“(mano atveju jis buvo atidarytas „Thonny“, bet ten taip pat yra daug kitų „Python“redaktorių), tada paleiskite jį, ir jis turėtų pradėti rodyti temperatūrą, ir išgirsite relė spustelėja ir išjungia! Jei ne, patikrinkite laidus ir grandines.

5 veiksmas: 4 veiksmas: rasos šildytuvo programavimo įkėlimas

Čia yra visas rasos šildytuvo programavimas. Tai daro keletą dalykų:

  • Kas penkias minutes ištraukia esamą lauko temperatūrą ir rasos tašką iš tam tikros Nacionalinės meteorologijos tarnybos vietos. Jei jis negauna duomenų, jis palaiko ankstesnę temperatūrą ir bando dar kartą po penkių minučių.

    • NWS prašo įtraukti kontaktinę informaciją į API užklausas, jei kyla problemų dėl užklausos, jie žino, su kuo susisiekti. Tai yra 40 programavimo eilutėje, pakeiskite „[email protected]“savo el. Pašto adresu.
    • Norėdami gauti stoties ID, kuri yra artimiausia NWS orų stotis, turėsite eiti į weather.gov ir ieškoti savo vietovės prognozės. Stoties ID yra () po vietos pavadinimo. Įveskite tai į programavimo 17 eilutę. Šiuo metu jis rodo KPDX arba Portlandą, Oregoną.
    • Jei esate ne JAV, yra dar viena galimybė naudoti „OpenWeatherMap.org“duomenis. Aš pats to neišbandžiau, bet šį pavyzdį galite pažiūrėti čia: Reading-JSON-With-Raspberry-Pi
  • Atkreipkite dėmesį, kad temperatūra iš NWS ir temperatūros jutiklio yra Celsijaus laipsniai, kaip ir ASI fotoaparate, todėl nuoseklumui aš juos visus laikiau „Centrigrade“, o ne konvertavau į „Fahrenheit“, prie ko aš labiau įpratęs.
  • Tada jis nuskaito temperatūrą iš kupolo jutiklio ir, jei ji yra mažiau nei 10 laipsnių virš rasos taško, įjungia relę. Jei jis yra didesnis nei 10,5 laipsnių virš rasos taško, relė išjungiama. Jei norite, galite pakeisti šiuos nustatymus.
  • Kartą per minutę jis registruoja dabartines temperatūros, rasos taško ir relės būsenos vertes į.csv failą, kad galėtumėte pamatyti, kaip tai vyksta laikui bėgant.

#Aviečių Pi rasos šildytuvo valdymo programa

#Dec 2019 #Brian Plett #Naudoja „Pimoroni Explorer pHAT“, temperatūros jutiklį ir relę #, kad valdytų rezistorių grandinę kaip rasos šildytuvas viso dangaus fotoaparatui #Ištraukia išorės oro temperatūrą ir rasos tašką iš NWS svetainės #saugo vidinę temperatūrą 10 laipsnių virš rasos taško importavimo laiko importavimo datos laiko importo užklausos importuoti csv importuoti importuoti naršyklę #Station ID yra artimiausia NWS oro stotis. Eikite į weather.gov ir ieškokite savo vietovės forcast, #station ID yra () po vietovės pavadinimo. settings = {'station_ID': 'KPDX',} #Alternate URL for information for weather #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2} ir vienetai = {3}"

#Weather URL duomenims atkurti

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

#dėl relės valdymo, sekundės

„ControlDelay“= 2 A = 0 B = 0, o tiesa: #data, kurią reikia naudoti žurnalo failo pavadinime datestr = datetime.datetime.now (). Strftime ("%Y%m%d") #data ir laikas naudoti kiekvienai duomenų eilutei localtime = datetime.datetime.now (). strftime ("%Y/%m/%d%H:%M") #CSV failo kelio kelias = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' o B == 0: pabandykite: #Traukite temperatūrą ir rasos tašką iš NWS kas 60 sekundžių 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 () ["ypatybės"] ["temperatūra"] ["vertė"] dewRaw = weather_data.json () ["ypatybės"] ["rasos taškas"] ["vertė"] #diagnostinis spausdinimas neapdorotiems temperatūros duomenims spausdinti (oatRaw, rasaRaw) OAT = apvalus (oatRaw, 3) rasa = apvalus (dewRaw, 3), išskyrus: A = 0 B = 1 pertrauka A = 0 B = 1 pertrauka, jei A <300: A = A + ControlDelay else: B = 0 #Skaitykite neapdorotą įtampą iš Raspberry Pi Explorer PHat ir konvertuokite į temperatūrą T1 = explorerhat.analog.one.read () tempC = ((T1 *1 000) -500)/10 #tempF = tempC*1,8 +32, jei (tempC Dew + 10,5): V1 = explorerhat.output.two.off () #diagnostinis spausdinimas, rodantis temperatūrą, rasos taškus ir relės išvesties būsenos spausdinimą ('{ 0: 5,2 °} ° C, {1: 5,2 °} ° C, {2: 5,2 °} ° C {3: 5,0 °} formato (apvalus (OAT, 3), apvalus (rasa, 3), apvalus (tempC), 3), explorerhat.output.two.read ())) Praėjus 10 sekundžių po minutės apsisukimo, įrašykite duomenis į CSV failą, jei A == 10: jei os.path.isfile (path.format (datestr)): print (path.format (datestr)) su open (path.format (datestr), "a") kaip csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow ([vietos laikas, OAT, Dew, tempC, explorerhat. output.two.read ()]) else: fieldnames = ['data', 'Lauko oro temperatūra', 'Rasos taškas', 'Kupolo temperatūra', 'Relės būsena'] su atvira (path.format (datestr), "w ") kaip csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow (laukų pavadinimai) txtwrite.writerow ([vietos laikas, OAT, rasa, tempC, explorerhat.output.two.read ()]) time.sleep (ControlDelay)

Išsaugojau tai naujame aplanke, esančiame „Allsky“aplanke, pavadintame „DewHeaterLogs“.

Pabandykite šiek tiek paleisti, kad įsitikintumėte, jog viskas atrodo gerai, prieš pereidami prie scenarijaus paleidimo.

6 veiksmas: 5 veiksmas: paleiskite scenarijų paleidžiant

Norėdami paleisti „Dew Heater“scenarijų, kai tik „Raspberry Pi“paleidžiamas, vykdžiau čia pateiktas instrukcijas:

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

„Launcher“scenarijui sukūriau tai:

#!/bin/sh

# launcher.sh # eikite į namų katalogą, tada į šį katalogą, tada paleiskite „python“scenarijų, tada grįžkite namo į cd/cd home/pi/allsky/„DewHeaterLogs“miego režimą 90 sudo python DewHeater_Web.py & cd/

Kai tai bus padaryta, turėtumėte gerai eiti. Mėgaukitės fotoaparatu be rasos!

7 veiksmas: atnaujinkite 2020 m. Gruodžio mėn

Maždaug praėjusių metų viduryje mano rasos šildytuvas nustojo veikti, todėl išjungiau kodą, kol galėjau į jį pasižiūrėti. Pagaliau turėjau šiek tiek laiko per žiemos pertrauką ir sužinojau, kad mano naudojama relė veikdama rodo didelį atsparumą savo kontaktams, tikriausiai dėl perkaitimo.

Taigi atnaujinau ją su aukštesnės vardinės relės, viena su 5A kontaktu, o ne 1A kontaktu. Be to, tai yra maitinimo relė, o ne signalinė, todėl tikiuosi, kad tai padės. Tai TE PCH-105D2H, 000. Aš taip pat pridėjau keletą varžtų gnybtų, skirtų „Explorer pHAT“, kad prireikus galėčiau lengvai atjungti šildytuvą ir temperatūros jutiklį. Visi šie 3 yra šiame pirkinių krepšelyje žemiau:

„Digikey“pirkinių krepšelis

Atminkite, kad šios relės kaiščiai skiriasi nuo ankstesnės, todėl vieta, kur jungiate, yra šiek tiek kitokia, tačiau turėtų būti paprasta. Ritiniui poliškumas nesvarbus, FYI.

Rekomenduojamas: