Innholdsfortegnelse:

Raspberry Pi Dew Heater for All-sky Camera: 7 trinn
Raspberry Pi Dew Heater for All-sky Camera: 7 trinn

Video: Raspberry Pi Dew Heater for All-sky Camera: 7 trinn

Video: Raspberry Pi Dew Heater for All-sky Camera: 7 trinn
Video: Create Your Own AllSky Camera (UPDATED!) 2024, November
Anonim
Raspberry Pi Dew Heater for All-sky Camera
Raspberry Pi Dew Heater for All-sky Camera

[Se på trinn 7 for en endring av reléet som brukes]

Dette er en oppgradering til et all-sky-kamera jeg bygde etter Thomas Jaquins utmerkede guide (Wireless All Sky Camera) Et vanlig problem som oppstår for sky-kameraer (og teleskoper også) er at dugg vil kondensere på kamerakuppelen etter hvert som det blir kaldere kl. natt, noe som skjuler utsikten over nattehimmelen. Løsningen er å legge til en duggvarmer som vil varme kuppelen til å være over duggpunktet, eller temperaturen der vann vil kondensere på kuppelen.

En vanlig måte å gjøre dette på er å føre strøm gjennom flere motstander, som deretter vil varme opp, og bruke det som varmekilde. I dette tilfellet, siden kameraet allerede har en Raspberry Pi, ønsket jeg å bruke det til å kontrollere motstandskretsen via et relé, slå dem av og på etter behov for å opprettholde en viss kuppeltemperatur over duggpunktet. En temperatursensor er plassert i kuppelen for kontroll. Jeg bestemte meg for å trekke lokale værtemperatur- og fuktighetsdata fra National Weather Service for nødvendig duggpunktinformasjon, i stedet for å legge til en annen sensor, og trenger en penetrasjon i kamerahuset mitt som kan lekke.

Raspberry Pi har en GPIO -topptekst som gjør det mulig for ekspansjonskort å kontrollere fysiske enheter, men selve IO -en er ikke designet for å håndtere strømmen som en motstandskraftkrets krever. Så det er nødvendig med flere komponenter. Jeg planlegger å bruke et relé for å isolere strømkretsen, så en relédriver -IC er nødvendig for å koble til Pi. Jeg trenger også en temperatursensor for å lese temperaturen inne i kuppelen, så en analog til digital omformer (ADC) er nødvendig for at Pi kan lese temperaturen. Disse komponentene er tilgjengelige individuelt, men du kan også kjøpe en "hatt" for Pi som inneholder disse enhetene på et brett som bare kobles til GPIO på Pi.

Jeg gikk med Pimoroni Explorer pHAT, som har et helt utvalg av I/O, men for mine formål har den fire analoge innganger i området 0-5V, og fire digitale utganger som er egnet for kjørereléer.

For kuppeltemperaturføleren brukte jeg en TMP36, som jeg likte fordi den har en enkel lineær ligning for å hente temperatur fra spenningsavlesningen. Jeg bruker termistorer og RTD på jobben min, men de er ikke-lineære og er derfor mer kompliserte å implementere fra bunnen av.

Jeg brukte Adafruit's Perma Proto Bonnet Mini -sett som kretskort for å lodde reléet, rekkeklemmen og andre ledninger til, noe som er fint ettersom det er dimensjonert for Pi, og har kretser som er relevante for det Pi tilbyr.

Det er de viktigste tingene. Jeg endte opp med å få det meste fra Digikey, ettersom de lagerfører deler av Adafruit i tillegg til alle de vanlige kretsdelene, så det gjør det enkelt å få alt på en gang. Her er en lenke til en handlevogn med alle delene jeg bestilte:

www.digikey.com/short/z7c88f

Den inneholder et par trådruller for hoppetrådene. Hvis du allerede har noen, trenger du det ikke.

Rekvisita

  • Pimoroni Explorer pHAT
  • TMP36 temperatursensor
  • 150 Ohm 2W motstander
  • 1A 5VDC SPDT -relé
  • Skru rekkeklemmen
  • Kretskort
  • Metalltråd
  • kretskortavvik
  • lodde og loddejern

Deleliste på digikey:

www.digikey.com/short/z7c88f

Trinn 1: Merknader om elektrisk teori

Det er viktig å sørge for at komponentene som brukes har riktig størrelse for å håndtere strømmen og strømmen de vil se, ellers kan du få for tidlig feil eller til og med brann!

Hovedkomponentene å bekymre seg for i dette tilfellet er nåværende vurdering av relékontaktene og motstandenes effekt.

Siden den eneste belastningen i kraftkretsen vår er motstandene, kan vi bare beregne den totale motstanden, sette den inn i Ohms lov og beregne strømmen i kretsen vår.

Total motstand av parallelle motstander: 1/R_T = 1/R_1 +1/R_2 +1/R_3 +1/R_N

Hvis de enkelte motstandene er like, kan den reduseres til: R_T = R/N. Så for fire like motstander er det R_T = R/4.

Jeg bruker fire 150 Ω motstander, så min totale motstand gjennom de fire er (150 Ω) /4=37,5 Ω.

Ohms lov er bare Spenning = Gjeldende X -motstand (V = I × R). Vi kan omorganisere det for å bestemme strømmen for å få I = V/R. Hvis vi kobler til spenningen fra strømforsyningen og motstanden vår, får vi I = (12 V)/(37,5 Ω) = 0,32 A. Så det betyr i det minste at reléet vårt må vurderes til 0,32 A. 1A -reléet vi bruker er over 3 ganger størrelsen som trengs, noe som er rikelig.

For motstandene må vi bestemme mengden strøm som går gjennom hver enkelt. Kraftligningen kommer i flere former (gjennom substitusjon med Ohms lov), men det som er mest praktisk for oss er P = E^2/R. For vår individuelle motstand blir dette P = (12V)^2/150Ω = 0,96 W. Så vi vil ha minst en 1 watt motstand, men en 2 watt vil gi oss en ekstra sikkerhetsfaktor.

Den totale effekten til kretsen vil bare være 4 x 0,96 W eller 3,84 W (Du kan også sette den totale motstanden i effektligningen og få det samme resultatet).

Jeg skriver alt dette ut, så hvis du vil at mer strøm skal genereres (mer varme), kan du kjøre tallene dine og beregne motstandene som trengs, deres vurdering og karakteren til reléet som trengs.

Jeg prøvde først å kjøre kretsen med 5 volt fra Raspberry Pi power rail, men effekten generert per motstand er bare P = (5V)^2/150Ω = 0,166 W, totalt 0,66 W, som ikke var ' t nok til å generere mer enn et par grader av temperaturstigning.

Trinn 2: Trinn 1: Lodding

Trinn 1: Lodding
Trinn 1: Lodding
Trinn 1: Lodding
Trinn 1: Lodding
Trinn 1: Lodding
Trinn 1: Lodding

Ok, nok med delelister og teori, la oss komme til kretsdesign og lodding!

Jeg har tegnet kretsen på Proto-Bonnet på to forskjellige måter, en gang som et ledningsskjema og en gang som en visuell fremstilling av brettet. Det er også et markert bilde av Pimoroni Explorer pHAT-kortet, som viser ledningene som går mellom det og Proto-Bonnet.

På Explorer pHAT må 40 -pinners topptekst som følger med loddes til brettet, dette er forbindelsen mellom den og Raspberry Pi. Den leveres med en terminaloverskrift for I/O, men jeg brukte den ikke, i stedet loddet bare ledninger direkte til brettet. Proto-Bonnet inneholder også tilkoblinger for toppteksten, men den brukes ikke i dette tilfellet.

Temperatursensoren er koblet direkte til Explorer pHAT -kortet ved hjelp av ledninger for å gjøre forskjellen mellom plasseringen av Raspberry Pi og innsiden av kamerakuppelen der den er plassert.

Skrueklemmen og kontrollreléet er de to komponentene som er loddet til Proto-Bonnet-kortet, i skjematikken er de merket T1, T2, T3 (for de tre skrueterminalene) og CR1 for reléet.

Motstandene er loddet til ledninger som også går fra Raspberry Pi til Camera Dome, de kobles til Proto-Bonnet via skrueterminalene på T1 og T3. Jeg glemte å ta et bilde av enheten før jeg installerte kameraet tilbake på taket mitt, men jeg prøvde å plassere motstandene jevnt rundt kuppelen, med bare to ledninger som kom tilbake til Proto-panseret. Gå inn i kuppelen gjennom hull på motsatte sider av røret, med temperatursensoren inn via et tredje hull, jevnt fordelt mellom to av motstandene nær kanten av kuppelen.

Trinn 3: Trinn 2: Montering

Trinn 2: Montering
Trinn 2: Montering

Når alt er loddet sammen, kan du installere det på kameraet i all himmel. Monter Explorer pHAT på Rasperry Pi, skyv den på 40-pinners topptekst, og deretter monteres Proto-panseret ved siden av den på toppen av Pi ved hjelp av noen avstand. Et annet alternativ ville være å bruke standoffs på toppen av Explorer, men siden jeg brukte ABS -rørkapslingen, gjorde det Pi for stor til å passe lenger.

Før temperatursensoren oppover kabinettet til stedet, og installer også motstandsselen. Deretter kobles selen til rekkeklemmen på proto-kortet.

Over til programmeringen!

Trinn 4: Trinn 3: Laster inn Explorer PHAT -biblioteket og testprogrammering

Før vi kan bruke Explorer pHAT, må vi laste inn biblioteket for det fra Pimoroni slik at Pi kan kommunisere med det.

Åpne terminalen på Raspberry Pi og skriv inn:

krølle https://get.pimoroni.com/explorerhat | bash

Skriv 'y' eller 'n' etter behov for å fullføre installasjonen.

Deretter vil vi kjøre et enkelt program for å teste innganger og utganger, for å sikre at ledningene våre er riktige. Den vedlagte DewHeater_TestProg.py er et python -skript som viser temperaturen og slår reléet på og av hvert annet sekund.

importtid

import explorerhat delay = 2 while True: T1 = explorerhat.analog.one.read () tempC = ((T1*1000) -500)/10 tempF = tempC*1.8 +32 print ('{0: 5.3f} volt, {1: 5.3f} degC, {2: 5.2f} deg F'.format (rund (T1, 3), rund (tempC, 3), rund (tempF, 3))) V1 = explorerhat.output.two. on () print ('Relay on') time.sleep (delay) V1 = explorerhat.output.two.off () print ('Relay off') time.sleep (forsinkelse)

Du kan åpne filen på bringebær Pi, (på min åpnet den i Thonny, men det er mange andre Python -redaktører der ute også), og deretter kjøre den, og den skal begynne å vise temperaturen, og du vil høre stafett klikk på og av! Hvis ikke, må du sjekke ledningene og kretsene dine.

Trinn 5: Trinn 4: Lasting av programmering av duggvarmer

Her er hele duggvarmerens programmering. Den gjør flere ting:

  • Trekker gjeldende utetemperatur og duggpunkt fra et gitt National Weather Service -sted hvert femte minutt. Hvis den ikke får data, beholder den de tidligere temperaturene og prøver igjen om fem minutter til.

    • NWS ber om at kontaktinformasjon inkluderes i API -forespørslene, hvis det er problemer med forespørselen, vet de hvem de skal kontakte. Dette er i linje 40 i programmeringen. Bytt ut '[email protected]' med din egen e -postadresse.
    • Du må gå til weather.gov og slå opp en værmelding for ditt område for å få stasjons -ID, som er nærmeste værstasjon på NWS. Stasjons -ID er i () etter stedsnavnet. Skriv inn dette i linje 17 i programmeringen. For tiden viser den KPDX, eller Portland, Oregon.
    • Hvis du er utenfor USA, er det en annen mulighet for å bruke data fra OpenWeatherMap.org. Jeg har ikke prøvd det selv, men du kan se på dette eksemplet her: Reading-JSON-With-Raspberry-Pi
  • Vær oppmerksom på at temperaturene fra NWS og fra temperatursensoren er i grader Celsius, som er for ASI -kameraet, så for konsistens beholdt jeg dem alle Centrigrade i stedet for å konvertere til Fahrenheit, noe jeg er mer vant til.
  • Deretter leser den temperaturen fra kuppelsensoren, og hvis den er mindre enn 10 grader over duggpunktet, slår den på reléet. Hvis den er større enn 10,5 grader over duggpunktet, slår den av reléet. Du kan endre disse innstillingene hvis du ønsker det.
  • En gang i minuttet logger den gjeldende verdier for temperaturer, duggpunkt og reléstatus til en.csv -fil, slik at du kan se hvordan den gjør det over tid.

#Raspberry Pi Dew Heater kontrollprogram

#Desember 2019 #Brian Plett #Bruker Pimoroni Explorer pHAT, en temperatursensor og et relé #for å kontrollere en motstandskrets som en duggvarmer for et all-sky kamera #Trekker utetemperatur og duggpunkt fra NWS nettsted #holder intern temperatur 10 grader over duggpunkt import tid import datetime importforespørsler import csv import os import explorerhat #Station ID er nærmeste værstasjon på NWS. Gå til weather.gov og slå opp forcast for ditt område, #stasjon -ID er i () etter stedsnavn. settings = {'station_ID': 'KPDX',} #Alternate URL for weather information #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2} & enheter = {3}"

#Vær -URL for å gjenopprette data

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

#forsinkelse for relékontroll, sekunder

ControlDelay = 2 A = 0 B = 0 mens True: #dato for bruk i loggfilnavn datestr = datetime.datetime.now (). Strftime ("%Y%m%d") #dato og tid som skal brukes for hver datarad localtime = datetime.datetime.now (). strftime ("%Y/%m/%d%H:%M") #CSV filsti sti = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' mens B == 0: prøv: #Trekk temperatur og duggpunkt fra NWS hvert 60 sekund final_url = BASE_URL.format (innstillinger ["station_ID"]) weather_data = requests.get (final_url, timeout = 5, headers = {'User-agent ':' Raspberry Pi 3+ Allsky Camera [email protected] '}) oatRaw = weather_data.json () ["egenskaper"] ["temperatur"] ["verdi"] dewRaw = weather_data.json () ["egenskaper"] ["duggpunkt"] ["verdi"] #diagnostisk utskrift for utskrift av rådata (oatRaw, dewRaw) OAT = round (oatRaw, 3) Dew = round (dewRaw, 3) unntatt: A = 0 B = 1 pause A = 0 B = 1 pause hvis A <300: A = A + ControlDelay else: B = 0 #Les råspenning fra Raspberry Pi Explorer PHat og konverter til temperatur 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 () #diagnostisk utskrift som viser temperaturer, duggpunkter og reléutgangstilstand ('{ 0: 5.2f} degC, {1: 5.2f} degC, {2: 5.2f} deg C {3: 5.0f} '. Format (rund (OAT, 3), rund (Dew, 3), rund (tempC, 3), explorerhat.output.two.read ())) #10 sekunder etter at minuttet ruller over, skriv data til en CSV -fil hvis A == 10: hvis os.path.isfile (path.format (datestr)): print (path.format (datestr)) med open (path.format (datestr), "a") som csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow ([localtime, OAT, Dew, tempC, explorerhat. output.two.read ()]) else: fieldnames = ['date', 'Outdoor Air Temp', 'Dewpoint', 'Dome Temp', 'Relay State'] with open (path.format (datestr), "w ") som csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow (feltnavn) txtwrite.writerow ([lokal tid, OAT, Dew, tempC, explorerhat.output.two.read ()]) time.sleep (ControlDelay)

Jeg lagret dette i en ny mappe under allsky -mappen som heter DewHeaterLogs.

Prøv å kjøre dette litt for å sikre at alt ser bra ut, før du går videre til å kjøre det som et skript.

Trinn 6: Trinn 5: Kjøre skript ved oppstart

For å kjøre Dew Heater -skriptet så snart Raspberry Pi starter, fulgte jeg instruksjonene her:

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

For Launcher -skriptet opprettet jeg dette:

#!/bin/sh

# launcher.sh # naviger til hjemmekatalogen, deretter til denne katalogen, kjør deretter python -skript, deretter tilbake hjem cd/cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd/

Når dette er gjort, bør du være i gang. Nyt å ha et duggfritt kamera!

Trinn 7: Oppdater desember 2020

Omtrent halvveis i fjor sluttet duggvarmeren min å fungere, så jeg deaktiverte koden til jeg kunne se på den. Endelig hadde jeg litt tid i vinterpausen, og fant ut at reléet jeg brukte viste høy motstand på tvers av kontaktene under drift, sannsynligvis fra overbelastning.

Så jeg oppdaterte det med et relé med høyere karakter, et med en 5A kontakt i stedet for 1A kontakt. Det er også et effektrelé i stedet for et signalrelé, så jeg håper det hjelper. Det er en TE PCH-105D2H, 000. Jeg har også lagt til noen skrueterminaler for Explorer pHAT, slik at jeg enkelt kan koble fra varmeren og temperatursensoren etter behov. Alle disse tre er i denne handlekurven nedenfor:

Digikey handlevogn

Vær oppmerksom på at pinnene for dette reléet er forskjellige enn det forrige, så der du kobler til er litt annerledes, men bør være grei. Polariteten spiller ingen rolle for spolen, FYI.

Anbefalt: