Talaan ng mga Nilalaman:

Raspberry Pi Dew Heater para sa All-sky Camera: 7 Mga Hakbang
Raspberry Pi Dew Heater para sa All-sky Camera: 7 Mga Hakbang

Video: Raspberry Pi Dew Heater para sa All-sky Camera: 7 Mga Hakbang

Video: Raspberry Pi Dew Heater para sa All-sky Camera: 7 Mga Hakbang
Video: ASIAIR vs. LAPTOP vs. EAGLE 2024, Hulyo
Anonim
Raspberry Pi Dew Heater para sa All-sky Camera
Raspberry Pi Dew Heater para sa All-sky Camera

[Tingnan ang Hakbang 7 para sa isang pagbabago sa ginamit na relay]

Ito ay isang pag-upgrade sa isang all-sky camera na itinayo ko kasunod sa mahusay na patnubay ni Thomas Jaquin (Wireless All Sky Camera) Ang isang karaniwang problema na nangyayari sa mga sky camera (at mga teleskopyo din) ay ang hamog na bubuo sa simboryo ng camera habang lumalamig ito sa gabi, na nakakubli ng tanawin ng langit sa gabi. Ang solusyon ay upang magdagdag ng isang heater ng hamog na magpapainit ng simboryo upang maging sa itaas ng dewpoint, o ang temperatura kung saan ang tubig ay dumadaloy sa simboryo.

Ang isang karaniwang paraan upang magawa ito ay upang patakbuhin ang kasalukuyang sa pamamagitan ng maraming mga resistors, na kung saan ay magpapainit, at gamitin iyon bilang mapagkukunan ng init. Sa kasong ito, dahil ang camera ay mayroon nang Raspberry Pi, nais kong gamitin iyon upang makontrol ang resistor circuit sa pamamagitan ng isang relay, i-on at i-off ang mga ito kung kinakailangan upang mapanatili ang isang tiyak na temperatura ng simboryo sa itaas ng dewpoint. Ang isang sensor ng temperatura ay matatagpuan sa simboryo para sa kontrol. Nagpasya akong hilahin ang lokal na data ng temperatura ng temperatura at kahalumigmigan mula sa National Weather Service para sa kinakailangang impormasyon ng dewpoint, sa halip na magdagdag ng isa pang sensor, at kailangan ng isang pagtagos sa pabahay ng aking camera na maaaring tumagas.

Ang Raspberry Pi ay may isang header ng GPIO na nagbibigay-daan para sa mga board ng pagpapalawak upang makontrol ang mga pisikal na aparato, ngunit ang IO mismo ay hindi idinisenyo upang hawakan ang kasalukuyang mga pangangailangan ng resistor ng circuit ng kuryente. Kaya kailangan ng mga karagdagang sangkap. Nagpaplano akong gumamit ng isang relay upang ihiwalay ang circuit ng kuryente, kaya kailangan ng isang relay driver na IC upang makipag-ugnay sa Pi. Kailangan ko rin ng isang sensor ng temperatura upang mabasa ang temperatura sa loob ng simboryo, kaya kailangan ng isang analog sa digital converter (ADC) upang mabasa ng Pi ang temperatura. Ang mga sangkap na ito ay magagamit nang paisa-isa, ngunit maaari ka ring bumili ng isang 'sumbrero' para sa Pi na naglalaman ng mga aparatong ito sa isang board na plug lamang sa GPIO ng Pi.

Nagpunta ako sa Pimoroni Explorer PHAT, na may isang buong saklaw ng I / O, ngunit para sa aking mga hangarin, mayroon itong apat na mga input ng analog na may saklaw na 0-5V, at apat na digital na output na angkop para sa pagmamaneho ng mga relay.

Para sa sensor ng temperatura ng simboryo, gumamit ako ng isang TMP36, na nagustuhan ko dahil mayroon itong isang simpleng linear equation upang makuha ang temperatura mula sa pagbabasa ng boltahe. Gumagamit ako ng mga thermistor at RTD sa aking trabaho, ngunit ang mga ito ay hindi linear at samakatuwid ay mas kumplikado upang ipatupad mula sa simula.

Ginamit ko ang Adafruit's Perma Proto Bonnet Mini kit bilang circuit board upang maghinang ang relay, terminal block, at iba pang mga kable, na maganda dahil ito ay sukat para sa Pi, at may kaugnayan sa circuitry sa inaalok ng Pi.

Iyon ang pangunahing bagay. Natapos kong makuha ang lahat mula sa Digikey, habang inilalagay nila ang mga bahagi ng Adafruit bilang karagdagan sa lahat ng mga normal na bahagi ng circuit, kaya't ginagawang simple upang makuha ang lahat nang sabay-sabay. Narito ang isang link sa isang shopping cart kasama ang lahat ng mga bahagi na iniutos ko:

www.digikey.com/short/z7c88f

Nagsasama ito ng isang pares ng mga wire ng kawad para sa mga jumper wires, kung mayroon ka na, hindi mo ito kailangan.

Mga gamit

  • Pimoroni Explorer PHAT
  • Sensor ng temperatura ng TMP36
  • 150 Ohm 2W resistors
  • 1A 5VDC SPDT Relay
  • Screw terminal block
  • Circuit board
  • Kawad
  • mga standoff ng circuit board
  • panghinang at bakal na bakal

Listahan ng mga bahagi sa digikey:

www.digikey.com/short/z7c88f

Hakbang 1: Mga Tala ng Teoryang Elektrikal

Mahalagang matiyak na ang mga sangkap na ginamit ay wastong laki upang hawakan ang lakas at kasalukuyang makikita nila, kung hindi man ay maaaring magkaroon ka ng napaaga na pagkabigo, o kahit sunog!

Ang mga pangunahing sangkap na dapat mag-alala sa kasong ito ay ang kasalukuyang rating ng mga contact ng relay, at ang rating ng kuryente ng mga resistor.

Dahil ang nag-iisang pag-load sa aming circuit ng kuryente ay ang mga resistors, maaari lamang nating kalkulahin ang kabuuang paglaban, ilagay iyon sa batas ng Ohm, at kalkulahin ang kasalukuyang sa aming circuit.

Kabuuang Paglaban ng mga parallel resistors: 1 / R_T = 1 / R_1 + 1 / R_2 + 1 / R_3 + 1 / R_N

Kung ang mga indibidwal na paglaban ay pantay, maaari itong mabawasan sa: R_T = R / N. Kaya para sa apat na pantay na resistors ito ay R_T = R / 4.

Gumagamit ako ng apat na 150 Ω resistors, kaya ang aking kabuuang paglaban sa kanilang apat ay (150 Ω) /4=37.5 Ω.

Ang batas ni Ohm ay Boltahe lamang = Kasalukuyang X Paglaban (V = I × R). Maaari nating isaayos ulit iyon upang matukoy ang kasalukuyang nakakakuha ng I = V / R. Kung na-plug namin ang aming boltahe mula sa aming supply ng kuryente at aming paglaban, nakukuha namin ang I = (12 V) / (37.5 Ω) = 0.32 A. Kaya't nangangahulugan iyon sa isang minimum, ang aming relay ay kailangang ma-rate sa 0.32 A. Kaya ang 1A relay na ginagamit namin ay higit sa 3 beses sa laki na kinakailangan, na kung saan ay marami.

Para sa mga resistors, kailangan nating matukoy ang dami ng lakas na dumadaan sa bawat isa. Ang equation power ay nagmula sa maraming mga form (sa pamamagitan ng pagpapalit sa batas ng Ohm), ngunit kung ano ang pinaka maginhawa para sa amin ay P = E ^ 2 / R. Para sa aming indibidwal na risistor, ito ay nagiging P = (12V) ^ 2 / 150Ω = 0.96 W. Kaya't gugustuhin namin ang kahit isang 1 watt risistor, ngunit ang isang 2 wat ay magbibigay sa amin ng labis na kadahilanan ng kaligtasan.

Ang kabuuang lakas ng circuit ay magiging 4 x 0.96 W, o 3.84 W (Maaari mo ring ilagay ang kabuuang paglaban sa equation ng kuryente at makuha ang parehong resulta).

Isusulat ko ang lahat ng ito, kaya kung sakaling nais mo ng higit na lakas na mabuo (mas maraming init), maaari mong patakbuhin ang iyong mga numero, at kalkulahin ang mga resistors na kinakailangan, ang kanilang rating, at ang rating ng relay na kinakailangan.

Sa una ay sinubukan kong patakbuhin ang circuit na may 5 volts mula sa Raspberry Pi power rail, ngunit ang lakas na nabuo bawat risistor ay P = (5V) ^ 2 / 150Ω = 0.166 W, para sa isang kabuuang 0.66 W, na hindi t sapat upang makabuo ng higit sa isang pares ng degree ng pagtaas ng temperatura.

Hakbang 2: Hakbang 1: Paghihinang

Hakbang 1: Paghihinang
Hakbang 1: Paghihinang
Hakbang 1: Paghihinang
Hakbang 1: Paghihinang
Hakbang 1: Paghihinang
Hakbang 1: Paghihinang

Okay, sapat na ng mga listahan ng bahagi at teorya, makarating tayo sa disenyo ng circuit at paghihinang!

Inilabas ko ang circuit sa Proto-Bonnet ng dalawang magkakaibang paraan, isang beses bilang isang scheme ng mga kable, at isang beses bilang isang visual na representasyon ng board. Mayroon ding marka-up na larawan ng Pimoroni Explorer pHAT board, na ipinapakita ang mga kable na dumadaan sa pagitan nito at ng Proto-Bonnet.

Sa Explorer PHAT, ang 40 pin header na kasama nito ay kailangang solder sa board, ito ang koneksyon sa pagitan nito at ng Raspberry Pi. Ito ay may isang header ng terminal para sa I / O, ngunit hindi ko ito ginamit, sa halip ay soldered na mga wire lamang nang direkta sa board. Kasama rin sa Proto-Bonnet ang mga koneksyon para sa header, ngunit hindi ito ginagamit sa kasong ito.

Ang sensor ng temperatura ay wired direkta sa Explorer pHAT board gamit ang mga wire upang mabuo ang pagkakaiba sa pagitan ng lokasyon ng Raspberry Pi at sa loob ng Camera Dome kung saan ito matatagpuan.

Ang Screw Terminal block at ang control Relay ay ang dalawang mga sangkap na na-solder sa board ng Proto-Bonnet, sa eskematiko na ang mga ito ay may label na T1, T2, T3 (para sa tatlong mga terminal ng tornilyo), at CR1 para sa relay.

Ang mga resistor ay solder sa mga lead na nagmumula din sa Raspberry Pi papunta sa Camera Dome, kumonekta sila sa Proto-Bonnet sa pamamagitan ng mga screw terminal sa T1 at T3. Nakalimutan kong kumuha ng litrato ng pagpupulong bago ko mai-install muli ang camera sa aking bubong, ngunit sinubukan kong palabasin nang pantay ang mga resistor sa paligid ng simboryo, na may dalawang wires lamang na babalik sa Proto-Bonnet. Ang ipasok ang simboryo sa pamamagitan ng mga butas sa tapat ng tubo, na may sensor ng temperatura na pumapasok sa pamamagitan ng isang pangatlong butas, pantay ang pagitan ng dalawa sa mga resistors na malapit sa gilid ng simboryo.

Hakbang 3: Hakbang 2: Assembly

Hakbang 2: Assembly
Hakbang 2: Assembly

Kapag na-solder na ang lahat, maaari mo itong mai-install sa iyong all-sky camera. I-mount ang Explorer PHAT sa Rasperry Pi, itulak ito sa 40 pin header, at pagkatapos ang Proto-Bonnet ay naka-mount katabi nito sa tuktok ng Pi gamit ang ilang mga standoff. Ang isa pang pagpipilian ay gagamit ng mga standoff sa tuktok ng Explorer, ngunit dahil gumagamit ako ng enclosure ng ABS Pipe, ginawa nitong masyadong malaki ang Pi upang magkasya pa.

Ruta ang sensor ng temperatura hanggang sa enclosure sa lokasyon nito, at i-install din ang resistor harness. Pagkatapos ay i-wire ang harness sa terminal block sa proto-board.

Sa programa!

Hakbang 4: Hakbang 3: Nilo-load ang Explorer PHAT Library, at Pagsubok ng Programming

Bago namin magamit ang Explorer PHAT, kailangan naming i-load ang silid-aklatan para dito mula sa Pimoroni upang ang Pi ay maaaring makipag-usap dito.

Sa iyong Raspberry Pi, buksan ang terminal at ipasok ang:

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

I-type ang 'y' o 'n' na naaangkop upang matapos ang pag-install.

Susunod, nais naming magpatakbo ng isang simpleng programa upang subukan ang mga input at output, upang matiyak na ang aming mga kable ay tama. Ang nakalakip na DewHeater_TestProg.py ay isang python script na nagpapakita ng temperatura, at pinapagana at pinapatay ang relay bawat dalawang segundo.

oras ng pag-import

i-import ang explorerhat delay = 2 habang True: T1 = explorerhat.analog.one.read () tempC = ((T1 * 1000) -500) / 10 tempF = tempC * 1.8 +32 print ('{0: 5.3f} volts, {1: 5.3f} degC, {2: 5.2f} deg F'.format (bilog (T1, 3), bilog (tempC, 3), bilog (tempF, 3))) V1 = explorerhat.output.two. sa () print ('Relay on') time.s Sleep (antala) V1 = explorerhat.output.two.off () print ('Relay off') time. sleep (antala)

Maaari mong buksan ang file sa iyong raspberry Pi, (sa minahan binuksan ito sa Thonny, ngunit maraming iba pang mga editor ng Python doon din), at pagkatapos ay patakbuhin ito, at dapat itong magsimulang ipakita ang temperatura, at maririnig mo ang relay pag-click sa at off! Kung hindi, gawin ang ilang pagsusuri sa iyong mga kable at circuit.

Hakbang 5: Hakbang 4: Nilo-load ang Programming ng Heater ng Heater

Narito ang buong programa ng heater ng heater. Gumagawa ito ng maraming bagay:

  • Kinukuha ang kasalukuyang panlabas na temperatura at hamog mula sa isang naibigay na lokasyon ng Pambansang Panahon ng Serbisyo bawat limang minuto. Kung hindi ito nakakuha ng data, pinapanatili nito ang nakaraang mga temperatura at subukang muli sa isa pang limang minuto.

    • Hinihiling ng NWS na ang impormasyon sa pakikipag-ugnay ay isama sa mga kahilingan sa API, kung sakaling may mga isyu sa kahilingan, alam nila kung sino ang makikipag-ugnay. Nasa linya 40 ng programa ito, mangyaring palitan ang '[email protected]' ng iyong sariling email address.
    • Kailangan mong pumunta sa weather.gov at maghanap ng isang pagtataya para sa iyong lugar, upang makuha ang Station ID, na kung saan ay ang pinakamalapit na istasyon ng panahon sa NWS. Ang istasyon ID ay nasa () pagkatapos ng pangalan ng lokasyon. Ipasok ito sa linya 17 ng programa. Ipinapakita nito sa kasalukuyan ang KPDX, o Portland, Oregon.
    • Kung nasa labas ka ng USA, may isa pang posibilidad na magamit ang data mula sa OpenWeatherMap.org. Hindi ko ito nasubukan mismo, ngunit maaari mong tingnan ang halimbawang ito dito: Pagbasa-JSON-With-Raspberry-Pi
  • Tandaan na ang mga temperatura mula sa NWS at mula sa sensor ng temperatura ay nasa degree Centigrade, tulad ng mga para sa ASI camera, kaya para sa pagkakapare-pareho, pinananatili ko silang lahat sa Centrigrade sa halip na mag-convert sa Fahrenheit, na kung saan mas masasanay ako.
  • Susunod, binabasa nito ang temperatura mula sa sensor ng simboryo, at kung ito ay mas mababa sa 10 degree sa itaas ng dewpoint, pagkatapos ay binuksan nito ang relay. Kung ito ay mas malaki sa 10.5 degree sa itaas ng dewpoint, pinapatay nito ang relay. Maaari mong baguhin ang mga setting na ito kung ninanais.
  • Minsan sa isang minuto, nai-log nito ang kasalukuyang mga halaga para sa temperatura, dewpoint, at katayuan ng relay sa isang.csv file upang makita mo kung paano ito ginagawa sa paglipas ng panahon.

#Raspberry Pi Dew Heater control program

#Dec 2019 #Brian Plett # Gumagamit ng Pimoroni Explorer pHAT, isang temperatura sensor, at isang relay # upang makontrol ang isang resistor circuit bilang isang heater heater para sa isang all-sky camera #Pulls sa labas ng temperatura ng hangin at dewpoint mula sa website ng NWS #keeps panloob na temperatura 10 degree sa itaas ng dewpoint oras ng pag-import ng mga kahilingan sa pag-import ng datos import csv import os import explorerhat #Station ID ay ang pinakamalapit na istasyon ng panahon sa NWS. Pumunta sa weather.gov at hanapin ang forcast para sa iyong lugar, ang #station ID ay nasa () pagkatapos ng pangalan ng lokasyon. setting = {'station_ID': 'KPDX',} #Alternate URL para sa impormasyon ng panahon #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2} at mga unit = {3}"

#Weather URL upang mag-retreive ng data

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

#delay para sa relay control, segundo

ControlDelay = 2 A = 0 B = 0 habang True: #date upang magamit sa log filename datestr = datime.datime.now (). Strftime ("% Y% m% d") #date & time na gagamitin para sa bawat row ng data localtime = datetime.datetime.now (). strftime ("% Y /% m /% d% H:% M") #CSV path path path = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' habang B == 0: subukan: #Pull temperatura at dewpoint mula sa NWS tuwing 60 segundo final_url = BASE_URL.format (setting ["station_ID"]) weather_data = requests.get (final_url, timeout = 5, headers = {'User-agent ':' Raspberry Pi 3+ Allsky Camera [email protected] '}) oatRaw = weather_data.json () ["mga pag-aari"] ["temperatura"] ["halaga"] dewRaw = weather_data.json () ["mga pag-aari"] ["dewpoint"] ["halaga"] #diagnostic print para sa naka-print na data ng raw na temperatura (oatRaw, dewRaw) OAT = bilog (oatRaw, 3) Dew = bilog (dewRaw, 3) maliban sa: A = 0 B = 1 break A = 0 B = 1 break kung A <300: A = A + ControlDelay else: B = 0 #Basahin ang boltahe mula sa Raspberry Pi Explorer PHat at i-convert sa temperatura T1 = explorerhat.analog.one.read () tempC = ((T1 * 1 000) -500) / 10 #tempF = tempC * 1.8 +32 kung (tempC Dew + 10.5): V1 = explorerhat.output.two.off () #diagnostic print na nagpapakita ng mga temperatura, dewpoint, at relay output state print ('{ 0: 5.2f} degC, {1: 5.2f} degC, {2: 5.2f} deg C {3: 5.0f} 'format. (Bilog (OAT, 3), bilog (Dew, 3), bilog (tempC, 3), explorerhat.output.two.read ())) # 10 segundo pagkatapos gumulong ang minuto, isulat ang data sa isang CSV file kung A == 10: kung os.path.isfile (path.format (datestr)): print (path.format (datestr)) na may bukas (path.format (datestr), "a") bilang csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow ([localtime, OAT, Dew, tempC, explorerhat. output.two.read ()]) iba pa: fieldnames = ['date', 'Outdoor Air Temp', 'Dewpoint', 'Dome Temp', 'Relay State'] na may bukas (path.format (datestr), "w ") as csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow (fieldnames) txtwrite.writerow ([localtime, OAT, Dew, tempC, explorerhat.output.two.read ()]) time.s Sleep (ControlDelay)

Na-save ko ito sa isang bagong folder sa ilalim ng allsky folder na tinatawag na DewHeaterLogs.

Subukang patakbuhin ito nang kaunti upang matiyak na ang lahat ay mukhang maganda, bago magpatuloy sa pagpapatakbo nito bilang isang script.

Hakbang 6: Hakbang 5: Pagpapatakbo ng Script sa Startup

Upang patakbuhin ang script ng Dew Heater sa sandaling magsimula ang Raspberry Pi, sinunod ko ang mga tagubilin dito:

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

Para sa script ng Launcher, nilikha ko ito:

#! / bin / sh

# launcher.sh # mag-navigate sa direktoryo ng bahay, pagkatapos sa direktoryong ito, pagkatapos ay magpatupad ng python script, pagkatapos ay bumalik sa home cd / cd home / pi / allsky / DewHeaterLogs matulog 90 sudo python DewHeater_Web.py & cd /

Kapag tapos na ito, dapat ay mabuti kang pumunta. Masisiyahan sa pagkakaroon ng isang walang-hamog na camera!

Hakbang 7: I-update ang Dis 2020

Halos kalahati ng nakaraang taon, tumigil ang pagtatrabaho ng aking heater ng hamog, kaya't hindi ko pinagana ang code hanggang sa tingnan ko ito. Sa wakas ay nagkaroon ng ilang oras sa taglamig, at natagpuan na ang relay na ginamit ko ay nagpapakita ng isang mataas na paglaban sa mga contact nito habang tumatakbo, marahil mula sa labis na karga.

Kaya't na-update ko ito sa isang mas mataas na rate na relay, ang isa ay mayroong 5A contact kaysa sa 1A contact. Gayundin ito ay isang power relay sa halip na isang signal relay, kaya't umaasa akong makakatulong ito. Ito ay isang TE PCH-105D2H, 000. Nagdagdag din ako ng ilang mga terminal ng tornilyo para sa Explorer PHAT, kaya madali kong idiskonekta ang heater at sensor ng temperatura kung kinakailangan. Ang lahat ng 3 sa mga ito ay nasa shopping cart na ito sa ibaba:

Digikey shopping cart

Magkaroon ng kamalayan na ang mga pin para sa relay na ito ay naiiba kaysa sa naunang isa, kaya kung saan ka mag-wire sa medyo naiiba, ngunit dapat na prangka. Ang polarity ay hindi mahalaga sa likid, FYI.

Inirerekumendang: