Indholdsfortegnelse:

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

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

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

[Se trin 7 for en ændring af det anvendte relæ]

Dette er en opgradering til et all-sky-kamera, jeg byggede efter Thomas Jaquins fremragende guide (Wireless All Sky Camera) Et almindeligt problem, der opstår for sky-kameraer (og også teleskoper) er, at dug vil kondensere på kamerakuppelen, når det bliver koldere ved nat, hvilket tilslører udsigten til nattehimlen. Løsningen er at tilføje en dugvarmer, der vil opvarme kuplen til at være over dugpunktet, eller den temperatur, ved hvilken vand vil kondensere på kuplen.

En almindelig måde at gøre dette på er at køre strøm gennem flere modstande, som derefter vil varme op og bruge det som varmekilde. I dette tilfælde, da kameraet allerede har en Raspberry Pi, ville jeg bruge det til at styre modstandskredsløbet via et relæ, tænde og slukke dem efter behov for at opretholde en bestemt kuppeltemperatur over dugpunktet. En temperatursensor er placeret i kuplen til kontrol. Jeg besluttede at trække lokale vejrtemperatur- og fugtighedsdata fra National Weather Service for de krævede dugpunktsoplysninger i stedet for at tilføje en anden sensor og have brug for en penetration i mit kamerahus, der kunne lække.

Raspberry Pi har et GPIO -header, der giver mulighed for udvidelseskort til at styre fysiske enheder, men selve IO'en er ikke designet til at håndtere strømmen, som en modstandskraft kræver. Så der er brug for yderligere komponenter. Jeg planlægger at bruge et relæ til at isolere strømkredsløbet, så en relædriver -IC er nødvendig for at interface med Pi. Jeg har også brug for en temperatursensor for at aflæse temperaturen inde i kuplen, så en analog til digital omformer (ADC) er nødvendig, så Pi kan aflæse temperaturen. Disse komponenter fås individuelt, men du kan også købe en 'hat' til Pi'en, der indeholder disse enheder på et kort, der bare kan tilsluttes GPIO'en til Pi.

Jeg gik med Pimoroni Explorer pHAT, som har en hel række I/O, men til mine formål har den fire analoge indgange i området 0-5V og fire digitale udgange, der er egnede til kørselsrelæer.

Til dome -temperatursensoren brugte jeg en TMP36, som jeg kunne lide, fordi den har en simpel lineær ligning til at udlede temperaturen fra spændingsaflæsning. Jeg bruger termistorer og FTU'er på mit job, men de er ikke-lineære og er derfor mere komplicerede at implementere fra bunden.

Jeg brugte Adafruit's Perma Proto Bonnet Mini kit som printkort til at lodde relæet, terminalblokken og andre ledninger til, hvilket er rart, da det er dimensioneret til Pi, og har kredsløb, der er relevante for hvad Pi tilbyder.

Det er de vigtigste ting. Jeg endte med at få det meste fra Digikey, da de lagerfører Adafruit's dele ud over alle de normale kredsløbsdele, så det gør det enkelt at få alt på én gang. Her er et link til en indkøbskurv med alle de dele, jeg har bestilt:

www.digikey.com/short/z7c88f

Det indeholder et par trådruller til jumpertrådene, hvis du allerede har nogle, har du ikke brug for det.

Forbrugsvarer

  • Pimoroni Explorer pHAT
  • TMP36 temperatursensor
  • 150 Ohm 2W modstande
  • 1A 5VDC SPDT Relæ
  • Skru klemrække
  • Kredsløbsplade
  • Tråd
  • kredsløbskort standoffs
  • lodde og loddejern

Reservedelsliste på digikey:

www.digikey.com/short/z7c88f

Trin 1: Noter om elektrisk teori

Det er vigtigt at sikre, at de anvendte komponenter er korrekt dimensioneret til at håndtere den strøm og strøm, de vil se, ellers kan du få for tidlig svigt eller endda brand!

Hovedkomponenterne at bekymre sig om i dette tilfælde er relækontakternes aktuelle vurdering og modstandernes effekt.

Da den eneste belastning i vores effektkredsløb er modstandene, kan vi bare beregne den samlede modstand, sætte det i Ohms lov og beregne strømmen i vores kredsløb.

Samlet modstand for parallelle modstande: 1/R_T = 1/R_1 +1/R_2 +1/R_3 +1/R_N

Hvis de enkelte modstande er ens, kan den reduceres til: R_T = R/N. Så for fire lige modstande er det R_T = R/4.

Jeg bruger fire 150 Ω modstande, så min samlede modstand gennem de fire er (150 Ω) /4=37,5 Ω.

Ohms lov er bare Spænding = Strøm X Modstand (V = I × R). Vi kan omarrangere det for at bestemme strømmen for at få I = V/R. Hvis vi tilslutter vores spænding fra vores strømforsyning og vores modstand, får vi I = (12 V)/(37,5 Ω) = 0,32 A. Så det betyder i det mindste, at vores relæ skal vurderes til 0,32 A. 1A -relæet, vi bruger, er over 3 gange den nødvendige størrelse, hvilket er rigeligt.

For modstandene skal vi bestemme mængden af strøm, der går gennem hver enkelt. Effektligningen findes i flere former (gennem substitution med Ohms lov), men det, der er mest bekvemt for os, er P = E^2/R. For vores individuelle modstand bliver dette P = (12V)^2/150Ω = 0,96 W. Så vi vil have mindst en 1 watt modstand, men en 2 watt vil give os en ekstra sikkerhedsfaktor.

Kredsløbets samlede effekt ville bare være 4 x 0,96 W eller 3,84 W (Du kan også sætte den samlede modstand i effektligningen og få det samme resultat).

Jeg skriver alt dette ud, så hvis du ønsker, at der skal genereres mere strøm (mere varme), kan du køre dine tal og beregne de nødvendige modstande, deres vurdering og vurderingen af det nødvendige relæ.

Jeg forsøgte oprindeligt at køre kredsløbet med de 5 volt fra Raspberry Pi power rail, men den effekt, der genereres pr. Modstand, er bare P = (5V)^2/150Ω = 0,166 W, i alt 0,66 W, hvilket ikke var ' t nok til at generere mere end et par grader af temperaturstigning.

Trin 2: Trin 1: Lodning

Trin 1: Lodning
Trin 1: Lodning
Trin 1: Lodning
Trin 1: Lodning
Trin 1: Lodning
Trin 1: Lodning

Okay, nok med delelister og teori, lad os komme til kredsløbets design og lodning!

Jeg har tegnet kredsløbet på Proto-Bonnet på to forskellige måder, en gang som et ledningsskema og en gang som en visuel fremstilling af tavlen. Der er også et markeret billede af Pimoroni Explorer pHAT-kortet, der viser ledningerne, der går mellem det og Proto-motorhjelmen.

På Explorer pHAT skal det 40 -benede header, der følger med, loddes til brættet, dette er forbindelsen mellem det og Raspberry Pi. Det leveres med et terminalhoved til I/O, men jeg brugte det ikke, i stedet loddet ledninger direkte til brættet. Proto-Bonnet indeholder også forbindelser til headeren, men den bruges ikke i dette tilfælde.

Temperatursensoren er forbundet direkte til Explorer pHAT -kortet ved hjælp af ledninger til at udgøre forskellen mellem placeringen af Raspberry Pi og indersiden af kamerakupplen, hvor den er placeret.

Skrueklemmen og kontrolrelæet er de to komponenter, der er loddet til Proto-Bonnet-kortet, i skematisk er de mærket T1, T2, T3 (for de tre skrueterminaler) og CR1 for relæet.

Modstandene er loddet til ledninger, der også går fra Raspberry Pi til Camera Dome, de forbinder til Proto-motorhjelmen via skrueterminalerne ved T1 og T3. Jeg glemte at tage et foto af samlingen, før jeg installerede kameraet tilbage på mit tag, men jeg forsøgte at placere modstandene jævnt rundt om kuplen, med kun to ledninger, der kom tilbage til Proto-motorhjelmen. Gå ind i kuplen gennem huller på modsatte sider af røret, med temperatursensoren ind via et tredje hul, jævnt fordelt mellem to af modstandene nær kanten af kuplen.

Trin 3: Trin 2: Montering

Trin 2: Montering
Trin 2: Montering

Når det hele er loddet sammen, kan du installere det på dit all-sky kamera. Monter Explorer pHAT på Rasperry Pi, skub den på 40-benet header, og derefter monteres Proto-motorhjelmen ved siden af den oven på Pi ved hjælp af nogle standoffs. En anden mulighed ville være at bruge standoffs oven på Explorer, men da jeg brugte ABS Pipe -kabinettet, gjorde det Pi for stor til at passe mere.

Før temperatursensoren op af kabinettet til dens placering, og installer også modstandsselen. Led derefter selen til klemrækken på proto-kortet.

Videre til programmeringen!

Trin 4: Trin 3: Indlæser Explorer PHAT -biblioteket og testprogrammering

Før vi kan bruge Explorer pHAT, skal vi indlæse biblioteket til det fra Pimoroni, så Pi kan kommunikere med det.

Åbn terminalen på din Raspberry Pi, og indtast:

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

Skriv 'y' eller 'n' efter behov for at afslutte installationen.

Dernæst vil vi køre et simpelt program til at teste input og output for at sikre, at vores ledninger er korrekte. Den vedhæftede DewHeater_TestProg.py er et python -script, der viser temperaturen og tænder og slukker relæet hvert andet 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 åbne filen på din hindbær Pi (på min åbnede den i Thonny, men der er også mange andre Python -redaktører derude), og derefter køre den, og den skulle begynde at vise temperaturen, og du vil høre relæ klikker til og fra! Hvis ikke, skal du tjekke nogle af dine ledninger og kredsløb.

Trin 5: Trin 4: Indlæsning af programmering af dugvarmer

Her er den fulde dugvarmer programmering. Det gør flere ting:

  • Trækker den aktuelle udetemperatur og dugpunkt fra et givet National Weather Service -sted hvert femte minut. Hvis den ikke får data, beholder den de tidligere temperaturer og prøver igen om fem minutter.

    • NWS anmoder om, at kontaktoplysninger indgår i API -anmodningerne, hvis der er problemer med anmodningen, ved de, hvem de skal kontakte. Dette er i linje 40 i programmeringen. Udskift venligst '[email protected]' med din egen e -mail -adresse.
    • Du bliver nødt til at gå til weather.gov og slå en vejrudsigt op for dit område for at få stations -id'et, som er den nærmeste vejrstation på NWS. Stations -id'et er i () efter placeringsnavnet. Indtast dette i linje 17 i programmeringen. I øjeblikket viser det KPDX eller Portland, Oregon.
    • Hvis du er uden for USA, er der en anden mulighed for at bruge data fra OpenWeatherMap.org. Jeg har ikke selv prøvet det, men du kan se på dette eksempel her: Reading-JSON-With-Raspberry-Pi
  • Bemærk, at temperaturerne fra NWS og fra temperatursensoren er i grader Celsius, ligesom dem er for ASI -kameraet, så for konsistens bevarede jeg dem alle Centrigrade frem for at konvertere til Fahrenheit, hvilket er det, jeg er mere vant til.
  • Dernæst læser den temperaturen fra kuppelsensoren, og hvis den er mindre end 10 grader over dugpunktet, så tænder den for relæet. Hvis det er større end 10,5 grader over dugpunktet, slukker det for relæet. Du kan ændre disse indstillinger, hvis det ønskes.
  • En gang i minuttet logger det de aktuelle værdier for temperaturer, dugpunkt og relæstatus til en.csv -fil, så du kan se, hvordan det gør over tid.

#Raspberry Pi Dew Heater kontrolprogram

#December 2019 #Brian Plett #Bruger Pimoroni Explorer pHAT, en temperatursensor og et relæ #til at styre et modstandskredsløb som dugvarmer til et helt himmelkamera #Trækker udetemperatur og dugpunkt fra NWS-webstedet #holder intern temperatur 10 grader over dugpunkt import tid import datetime import anmodninger import csv import os import explorerhat #Station ID er nærmeste vejrstation på NWS. Gå til weather.gov og slå forcast til dit område, #station -id er i () efter placeringsnavn. settings = {'station_ID': 'KPDX',} #Alternativ URL for vejrinformation #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2} & enheder = {3}"

#Weather URL for at gendanne data

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

#forsinkelse til relækontrol, sekunder

ControlDelay = 2 A = 0 B = 0 mens True: #dato til brug i logfilnavn datestr = datetime.datetime.now (). Strftime ("%Y%m%d") #dato & tid til brug for hver datarække localtime = datetime.datetime.now (). strftime ("%Y/%m/%d%H:%M") #CSV filsti sti = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' mens B == 0: prøv: #Træk temperatur og dugpunkt fra NWS hvert 60 sekund final_url = BASE_URL.format (indstillinger ["station_ID"]) weather_data = requests.get (final_url, timeout = 5, headers = {'User-agent ':' Raspberry Pi 3+ Allsky Camera [email protected] '}) oatRaw = weather_data.json () ["egenskaber"] ["temperatur"] ["værdi"] dewRaw = weather_data.json () ["egenskaber"] ["dugpunkt"] ["værdi"] #diagnostisk print til udskrivning af rådata -temperatur (oatRaw, dewRaw) OAT = rund (oatRaw, 3) Dug = rund (dewRaw, 3) undtagen: A = 0 B = 1 pause A = 0 B = 1 pause hvis A <300: A = A + ControlDelay else: B = 0 #Læs rå spænding 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 print, der viser temperaturer, dugpunkter og relæudgangstilstandsudskrivning ('{ 0: 5.2f} degC, {1: 5.2f} degC, {2: 5.2f} deg C {3: 5.0f} '. Format (rund (OAT, 3), rund (Dug, 3), rund (tempC, 3), explorerhat.output.two.read ())) #10 sekunder efter, 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 (feltnavne) txtwrite.writerow ([lokal tid, OAT, dug, tempC, explorerhat.output.two.read ()]) time.sleep (ControlDelay)

Jeg gemte dette i en ny mappe under allsky -mappen kaldet DewHeaterLogs.

Prøv at køre dette lidt for at sikre, at alt ser godt ud, før du går videre til at køre det som et script.

Trin 6: Trin 5: Kørsel af script ved opstart

For at køre Dew Heater -scriptet, så snart Raspberry Pi starter, fulgte jeg instruktionerne her:

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

Til Launcher -scriptet oprettede jeg dette:

#!/bin/sh

# launcher.sh # naviger til hjemmekatalog, derefter til denne mappe, derefter udføre python script, derefter hjem cd/cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd/

Når dette er gjort, skal du være god til at gå. Nyd at have et dugfrit kamera!

Trin 7: Opdater dec 2020

Omkring halvvejs i sidste år holdt min dugvarmer op med at fungere, så jeg deaktiverede koden, indtil jeg kunne se den. Endelig havde lidt tid i løbet af vinterpausen, og fandt ud af, at det relæ, jeg brugte, viste en høj modstand på tværs af sine kontakter under drift, sandsynligvis fra at være overbelastet.

Så jeg opdaterede det med et højere klassificeret relæ, et med en 5A kontakt frem for 1A kontakt. Det er også et effektrelæ frem for et signalrelæ, så jeg håber det hjælper. Det er en TE PCH-105D2H, 000. Jeg tilføjede også nogle skrueterminaler til Explorer pHAT, så jeg let kunne afbryde varmelegemet og temperatursensoren efter behov. Alle 3 af disse er på denne indkøbskurv herunder:

Digikey indkøbskurv

Vær opmærksom på, at benene til dette relæ er anderledes end det forrige, så hvor du leder til er lidt anderledes, men bør være ligetil. Polariteten betyder ikke noget for spolen, FYI.

Anbefalede: