Innehållsförteckning:

Raspberry Pi Daggvärmare för All-sky-kamera: 7 steg
Raspberry Pi Daggvärmare för All-sky-kamera: 7 steg

Video: Raspberry Pi Daggvärmare för All-sky-kamera: 7 steg

Video: Raspberry Pi Daggvärmare för All-sky-kamera: 7 steg
Video: Astrophotography from $100 to $10,000 2024, Juli
Anonim
Raspberry Pi daggvärmare för all-sky-kamera
Raspberry Pi daggvärmare för all-sky-kamera

[Titta på steg 7 för en ändring av det använda reläet]

Detta är en uppgradering till en all-sky-kamera jag byggde efter Thomas Jaquins utmärkta guide (Wireless All Sky Camera) Ett vanligt problem som uppstår för sky-kameror (och teleskop också) är att dagg kondenserar på kamerakupolen när det blir kallare vid natt, vilket skymmer sikten på natthimlen. Lösningen är att lägga till en daggvärmare som värmer kupolen så att den ligger ovanför daggpunkten, eller temperaturen vid vilken vatten kondenserar på kupolen.

Ett vanligt sätt att göra detta är att köra ström genom flera motstånd, som sedan värms upp och använder det som värmekälla. I det här fallet, eftersom kameran redan har en Raspberry Pi, ville jag använda den för att styra motståndskretsen via ett relä, slå på och av dem efter behov för att bibehålla en viss kupeltemperatur över daggpunkten. En temperatursensor finns i kupolen för kontroll. Jag bestämde mig för att hämta lokala vädertemperatur- och luftfuktighetsdata från National Weather Service för daggpunktsinformation som krävs, snarare än att lägga till en annan sensor, och behöver en penetration i mitt kamerahus som kan läcka.

Raspberry Pi har ett GPIO -sidhuvud som gör det möjligt för expansionskort att styra fysiska enheter, men själva IO: n är inte utformad för att hantera strömmen som en motståndskraft kräver. Så ytterligare komponenter behövs. Jag planerar att använda ett relä för att isolera strömkretsen, så en relädrivrutins IC behövs för att ansluta till Pi. Jag behöver också en temperatursensor för att avläsa temperaturen inuti kupolen, så en analog till digital omvandlare (ADC) behövs så att Pi kan läsa temperaturen. Dessa komponenter är tillgängliga individuellt, men du kan också köpa en "hatt" för Pi som innehåller dessa enheter på ett kort som bara ansluts till Pi: ns GPIO.

Jag gick med Pimoroni Explorer pHAT, som har ett helt sortiment av I/O, men för mina ändamål har den fyra analoga ingångar från 0-5V och fyra digitala utgångar som är lämpliga för drivreläer.

För kupeltemperatursensorn använde jag en TMP36, vilket jag gillade eftersom den har en enkel linjär ekvation för att härleda temperaturen från spänningsavläsningen. Jag använder termistorer och RTD på mitt jobb, men de är olinjära och är därför mer komplicerade att implementera från grunden.

Jag använde Adafruits Perma Proto Bonnet Mini -kit som kretskort för att löda reläet, kopplingsblocket och andra ledningar till, vilket är trevligt eftersom det är dimensionerat för Pi och har kretsar som är relevanta för vad Pi erbjuder.

Det är de viktigaste sakerna. Jag slutade med att få det mesta från Digikey, eftersom de lagerför Adafruits delar utöver alla normala kretsdelar, så det gör det enkelt att få allt på en gång. Här är en länk till en kundvagn med alla delar jag beställt:

www.digikey.com/short/z7c88f

Den innehåller ett par trådrullar för bygeln, om du redan har några behöver du det inte.

Tillbehör

  • Pimoroni Explorer pHAT
  • TMP36 temperaturgivare
  • 150 Ohm 2W motstånd
  • 1A 5VDC SPDT -relä
  • Skruvplint
  • Kretskort
  • Tråd
  • kretskortets avstängningar
  • löd- och lödkolv

Reservdelar på digikey:

www.digikey.com/short/z7c88f

Steg 1: Anteckningar om elektrisk teori

Det är viktigt att se till att komponenterna som används har rätt storlek för att hantera strömmen och strömmen de kommer att se, annars kan du få för tidigt fel eller till och med eld!

Huvudkomponenterna att oroa sig för i det här fallet är reläkontakternas nuvarande klassificering och motståndets effekt.

Eftersom den enda belastningen i vår effektkrets är motstånden, kan vi bara beräkna det totala motståndet, sätta in det i Ohms lag och beräkna strömmen i vår krets.

Totalt motstånd för parallella motstånd: 1/R_T = 1/R_1 +1/R_2 +1/R_3 +1/R_N

Om de enskilda motstånden är lika kan det reduceras till: R_T = R/N. Så för fyra lika motstånd är det R_T = R/4.

Jag använder fyra 150 Ω motstånd, så mitt totala motstånd genom de fyra är (150 Ω) /4=37,5 Ω.

Ohms lag är bara Spänning = Ström X Motstånd (V = I × R). Vi kan ordna om det för att bestämma strömmen för att få I = V/R. Om vi kopplar in vår spänning från vår strömförsörjning och vårt motstånd, får vi I = (12 V)/(37,5 Ω) = 0,32 A. Så det betyder att vårt relä åtminstone måste klassas till 0,32 A. 1A -reläet vi använder är över 3 gånger den storlek som behövs, vilket är gott.

För motstånden måste vi bestämma mängden effekt som går igenom var och en. Kraftekvationen finns i flera former (genom substitution med Ohms lag), men det som är bekvämast för oss är P = E^2/R. För vårt individuella motstånd blir detta P = (12V)^2/150Ω = 0,96 W. Så vi kommer att vilja ha minst ett 1 watts motstånd, men ett 2 watt ger oss en extra säkerhetsfaktor.

Kretsens totala effekt skulle bara vara 4 x 0,96 W eller 3,84 W (Du kan också lägga det totala motståndet i effektekvationen och få samma resultat).

Jag skriver allt detta, så om du vill att mer kraft ska genereras (mer värme) kan du köra dina siffror och beräkna de motstånd som behövs, deras betyg och betyget för det relä som behövs.

Jag försökte initialt köra kretsen med de 5 volt från Raspberry Pi power rail, men effekten genererad per motstånd är bara P = (5V)^2/150Ω = 0,166 W, totalt 0,66 W, vilket inte var ' t tillräckligt för att generera mer än ett par graders temperaturökning.

Steg 2: Steg 1: Lödning

Steg 1: Lödning
Steg 1: Lödning
Steg 1: Lödning
Steg 1: Lödning
Steg 1: Lödning
Steg 1: Lödning

Okej, nog med dellistor och teori, låt oss komma till kretsdesign och lödning!

Jag har ritat kretsen på Proto-Bonnet på två olika sätt, en gång som ett kopplingsschema och en gång som en visuell representation av kortet. Det finns också ett markerat foto av Pimoroni Explorer pHAT-kortet som visar ledningarna som går mellan det och Proto-Bonnet.

På Explorer pHAT måste 40 -stiftshuvudet som följer med lödas till brädet, det här är kopplingen mellan det och Raspberry Pi. Den levereras med ett terminalhuvud för I/O, men jag använde det inte, utan lödde bara ledningar direkt till kortet. Proto-Bonnet innehåller också anslutningar för rubriken, men den används inte i det här fallet.

Temperatursensorn är ansluten direkt till Explorer pHAT -kortet med hjälp av trådar för att göra skillnaden mellan placeringen av Raspberry Pi och insidan av kamerakupolen där den ligger.

Skruvplintblocket och styrreläet är de två komponenterna som är lödda på Proto-Bonnet-kortet, i schemat är de märkta T1, T2, T3 (för de tre skruvplintarna) och CR1 för reläet.

Motstånden är lödda till ledningar som också går från Raspberry Pi till Camera Dome, de ansluter till Proto-Bonnet via skruvterminalerna vid T1 och T3. Jag glömde att ta ett foto av enheten innan jag installerade kameran tillbaka på mitt tak, men jag försökte placera ut motstånden jämnt runt kupolen, med bara två ledningar som kom tillbaka till Proto-Bonnet. Gå in i kupolen genom hål på motsatta sidor av röret, med temperaturgivaren in via ett tredje hål, jämnt fördelat mellan två av motstånden nära kanten av kupolen.

Steg 3: Steg 2: Montering

Steg 2: Montering
Steg 2: Montering

När allt är lödt ihop kan du installera det på din all-sky-kamera. Montera Explorer pHAT på Rasperry Pi, skjut den på 40-stiftshuvudet och sedan monteras Proto-motorhuven intill den ovanpå Pi med några avstängningar. Ett annat alternativ skulle vara att använda distans ovanpå Explorer, men eftersom jag använde ABS -rörhöljet gjorde det Pi för stort för att passa längre.

Dra temperaturgivaren upp i höljet till dess plats och installera också motståndsselen. Dra sedan kabelnätet till kopplingsplinten på proto-kortet.

Till programmeringen!

Steg 4: Steg 3: Ladda Explorer PHAT -biblioteket och testa programmering

Innan vi kan använda Explorer pHAT måste vi ladda biblioteket för det från Pimoroni så att Pi kan kommunicera med det.

Öppna terminalen på din Raspberry Pi och ange:

curl https://get.pimoroni.com/explorerhat | våldsamt slag

Skriv 'y' eller 'n' efter behov för att avsluta installationen.

Därefter vill vi köra ett enkelt program för att testa ingångar och utgångar för att säkerställa att våra ledningar är korrekta. Den bifogade DewHeater_TestProg.py är ett python -skript som visar temperaturen och slår på och av reläet varannan 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 (delay)

Du kan öppna filen på din hallon Pi, (på min öppnades den i Thonny, men det finns också många andra Python -redaktörer där ute) och sedan köra den, så ska den börja visa temperaturen så hör du reläklickning på och av! Om inte, gör en kontroll av dina ledningar och kretsar.

Steg 5: Steg 4: Ladda daggvärmaren Programmering

Här är hela daggvärmaren programmering. Det gör flera saker:

  • Dra den aktuella utomhustemperaturen och daggpunkten från en given National Weather Service -plats var femte minut. Om den inte får data behåller den tidigare temperaturer och försöker igen om ytterligare fem minuter.

    • NWS begär att kontaktinformation ska ingå i API -begärandena, om det uppstår problem med begäran vet de vem de ska kontakta. Detta är i rad 40 i programmeringen, ersätt '[email protected]' med din egen e -postadress.
    • Du måste gå till weather.gov och leta upp en prognos för ditt område för att få stations -ID, som är närmaste väderstation på NWS. Stationens ID finns i () efter platsnamnet. Ange detta i rad 17 i programmeringen. För närvarande visar det KPDX, eller Portland, Oregon.
    • Om du befinner dig utanför USA finns det en annan möjlighet att använda data från OpenWeatherMap.org. Jag har inte provat det själv, men du kan titta på det här exemplet här: Reading-JSON-With-Raspberry-Pi
  • Observera att temperaturerna från NWS och från temperatursensorn är i grader Celsius, liksom de för ASI -kameran, så för konsistens behöll jag dem alla Centrigrade istället för att konvertera till Fahrenheit, vilket är vad jag är mer van vid.
  • Därefter läser den temperaturen från kupolsensorn, och om den är mindre än 10 grader över daggpunkten, slår den på reläet. Om den är större än 10,5 grader över daggpunkten stänger den av reläet. Du kan ändra dessa inställningar om så önskas.
  • En gång i minuten loggar den de aktuella värdena för temperaturer, daggpunkt och relästatus till en.csv -fil så att du kan se hur det går över tiden.

#Raspberry Pi daggvärmare kontrollprogram

#December 2019 #Brian Plett #Använder Pimoroni Explorer pHAT, en temperatursensor och ett relä #för att styra en motståndskrets som daggvärmare för en all-sky-kamera #Dra ut lufttemperatur och daggpunkt från NWS webbplats #håller intern temperatur 10 grader över daggpunkt import tid import datetime import begäranden import csv import os import explorerhat #Station ID är närmaste väderstation på NWS. Gå till weather.gov och leta upp forcast för ditt område, #station ID finns i () efter platsnamn. settings = {'station_ID': 'KPDX',} #Alternat URL för väderinformation #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2} & enheter = {3}"

#Weather URL för att återskapa data

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

#fördröjning för reläkontroll, sekunder

ControlDelay = 2 A = 0 B = 0 medan True: #date att använda i loggfilnamnet datestr = datetime.datetime.now (). Strftime ("%Y%m%d") #date & time to use for each data row localtime = datetime.datetime.now (). strftime ("%Y/%m/%d%H:%M") #CSV -sökväg för sökväg = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' medan B == 0: försök: #Dragningstemperatur och daggpunkt från NWS var 60: e sekund final_url = BASE_URL.format (inställningar ["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"] ["värde"] dewRaw = weather_data.json () ["egenskaper"] ["daggpunkt"] ["värde"] #diagnostisk utskrift för utskrift av rådata temperatur (oatRaw, dewRaw) OAT = rund (oatRaw, 3) Dagg = rund (dewRaw, 3) utom: A = 0 B = 1 bryt A = 0 B = 1 brytning om A <300: A = A + ControlDelay else: B = 0 #Läs rå spänning från Raspberry Pi Explorer PHat och konvertera till temperatur T1 = explorerhat.analog.one.read () tempC = ((T1 *1 000) -500)/10 #tempF = tempC*1,8 +32 if (tempC dagg + 10,5): V1 = explorerhat.output.two.off () #diagnostisk utskrift som visar temperaturer, daggpunkter och reläutgångsutskrift ('{ 0: 5.2f} degC, {1: 5.2f} degC, {2: 5.2f} deg C {3: 5.0f} '. Format (rund (OAT, 3), rund (Dagg, 3), rund (tempC, 3), explorerhat.output.two.read ())) #10 sekunder efter att minuten rullar över, skriv data till en CSV -fil om A == 10: om 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 csvfil: txtwrite = csv.writer (csvfile) txtwrite.writerow (fältnamn) txtwrite.writerow ([lokal tid, OAT, dagg, tempC, explorerhat.output.two.read ()]) time.sleep (ControlDelay)

Jag sparade detta i en ny mapp under allsky -mappen som heter DewHeaterLogs.

Prova att köra det här lite för att se till att allt ser bra ut innan du kör det som ett skript.

Steg 6: Steg 5: Kör skript vid start

För att köra Dew Heater -skriptet så snart Raspberry Pi startar följde jag instruktionerna här:

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

För Launcher -skriptet skapade jag detta:

#!/bin/sh

# launcher.sh # navigera till hemkatalogen, sedan till den här katalogen, kör sedan python -skript, sedan tillbaka hem cd/cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd/

När detta är gjort bör du vara bra att gå. Njut av att ha en daggfri kamera!

Steg 7: Uppdatera december 2020

Ungefär halvvägs under förra året slutade min daggvärmare att fungera, så jag inaktiverade koden tills jag kunde titta på den. Hade äntligen lite tid under vinteruppehållet och fann att reläet jag använde visade ett högt motstånd över sina kontakter under drift, troligen från överbelastning.

Så jag uppdaterade det med ett högre klassat relä, ett med en 5A kontakt snarare än 1A kontakt. Det är också ett effektrelä snarare än ett signalrelä, så jag hoppas att det hjälper. Det är en TE PCH-105D2H, 000. Jag har också lagt till några skruvterminaler för Explorer pHAT, så att jag enkelt kunde koppla bort värmaren och temperaturgivaren efter behov. Alla tre av dessa finns i den här kundvagnen nedan:

Digikey kundvagn

Var medveten om att stiften för detta relä är annorlunda än det föregående, så där du kopplar till är något annorlunda, men bör vara enkelt. Polariteten spelar ingen roll för spolen, FYI.

Rekommenderad: