Innehållsförteckning:
- Tillbehör
- Steg 1: Anteckningar om elektrisk teori
- Steg 2: Steg 1: Lödning
- Steg 3: Steg 2: Montering
- Steg 4: Steg 3: Ladda Explorer PHAT -biblioteket och testa programmering
- Steg 5: Steg 4: Ladda daggvärmaren Programmering
- Steg 6: Steg 5: Kör skript vid start
- Steg 7: Uppdatera december 2020
Video: Raspberry Pi Daggvärmare för All-sky-kamera: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
[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
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
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:
Inställning för extern Bluetooth GPS -leverantör för Android -enheter: 8 steg
Inställning för extern Bluetooth GPS-leverantör för Android-enheter: Den här instruktionsboken kommer att förklara hur du skapar din egen externa Bluetooth-aktiverade GPS för din telefon, tänd vad som helst för ungefär $ 10. Materialräkning: NEO 6M U-blox GPSHC-05 bluetooth-modul Kunskap om gränssnitt Blutooth LavenergimodulerArdui
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva