Inhoudsopgave:

Raspberry Pi Dew Heater voor All-sky Camera - Ajarnpa
Raspberry Pi Dew Heater voor All-sky Camera - Ajarnpa

Video: Raspberry Pi Dew Heater voor All-sky Camera - Ajarnpa

Video: Raspberry Pi Dew Heater voor All-sky Camera - Ajarnpa
Video: Astrophotography from $100 to $10,000 2024, Juli-
Anonim
Raspberry Pi Dew Heater voor All-sky Camera
Raspberry Pi Dew Heater voor All-sky Camera

[Kijk bij stap 7 voor een wijziging in het gebruikte relais]

Dit is een upgrade naar een all-sky camera die ik heb gebouwd volgens de uitstekende gids van Thomas Jaquin (Wireless All Sky Camera). nacht, die het zicht op de nachtelijke hemel verduistert. De oplossing is om een dauwverwarmer toe te voegen die de koepel verwarmt tot boven het dauwpunt, of de temperatuur waarbij water op de koepel condenseert.

Een gebruikelijke manier om dit te doen is om stroom door verschillende weerstanden te laten lopen, die dan zullen opwarmen, en die als warmtebron te gebruiken. In dit geval, aangezien de camera al een Raspberry Pi heeft, wilde ik die gebruiken om het weerstandscircuit via een relais te besturen, en ze indien nodig in en uit te schakelen om een bepaalde koepeltemperatuur boven het dauwpunt te houden. In de koepel bevindt zich een temperatuursensor voor de regeling. Ik besloot om lokale weerstemperatuur- en vochtigheidsgegevens van de National Weather Service te halen voor de vereiste dauwpuntinformatie, in plaats van nog een sensor toe te voegen, en een penetratie in mijn camerabehuizing nodig had die zou kunnen lekken.

De Raspberry Pi heeft een GPIO-header waarmee uitbreidingskaarten fysieke apparaten kunnen besturen, maar de IO zelf is niet ontworpen om de stroom aan te kunnen die een weerstandsstroomcircuit vereist. Er zijn dus extra componenten nodig. Ik ben van plan een relais te gebruiken om het stroomcircuit te isoleren, dus een relaisstuurprogramma-IC is nodig om te communiceren met de Pi. Ik heb ook een temperatuursensor nodig om de temperatuur in de koepel te lezen, dus een analoog naar digitaal converter (ADC) is nodig zodat de Pi de temperatuur kan lezen. Deze componenten zijn afzonderlijk verkrijgbaar, maar je kunt ook een 'hoed' voor de Pi kopen die deze apparaten bevat op een bord dat gewoon in de GPIO van de Pi wordt gestoken.

Ik ging voor de Pimoroni Explorer pHAT, die een hele reeks I/O's heeft, maar voor mijn doeleinden heeft hij vier analoge ingangen met een bereik van 0-5V en vier digitale uitgangen die geschikt zijn voor het aansturen van relais.

Voor de dome-temperatuursensor heb ik een TMP36 gebruikt, wat ik leuk vond omdat het een eenvoudige lineaire vergelijking heeft om de temperatuur af te leiden uit de spanningsmeting. Ik gebruik thermistoren en RTD's op mijn werk, maar ze zijn niet-lineair en daarom ingewikkelder om helemaal opnieuw te implementeren.

Ik heb de Perma Proto Bonnet Mini-kit van Adafruit gebruikt als printplaat om het relais, het aansluitblok en andere bedrading aan te solderen, wat fijn is omdat het formaat is voor de Pi en circuits heeft die relevant zijn voor wat de Pi biedt.

Dat zijn de belangrijkste dingen. Uiteindelijk kreeg ik bijna alles van Digikey, omdat ze Adafruit's onderdelen in voorraad hebben naast alle normale circuitonderdelen, dus het maakt het eenvoudig om alles in één keer te krijgen. Hier is een link naar een winkelwagentje met alle onderdelen die ik heb besteld:

www.digikey.com/short/z7c88f

Het bevat een paar spoelen met draad voor de jumperdraden, als je er al een hebt, heb je het niet nodig.

Benodigdheden

  • Pimoroni Explorer pHAT
  • TMP36 temperatuursensor
  • 150 Ohm 2W weerstanden
  • 1A 5VDC SPDT-relais
  • Schroefklemmenblok
  • Printplaat
  • Draad
  • afstandhouders voor printplaten
  • soldeer & soldeerbout

Onderdelenlijst op digikey:

www.digikey.com/short/z7c88f

Stap 1: Aantekeningen elektrische theorie

Het is belangrijk om ervoor te zorgen dat de gebruikte componenten de juiste afmetingen hebben om het vermogen en de stroom die ze zullen zien aan te kunnen, anders zou u voortijdige storing of zelfs brand kunnen hebben!

De belangrijkste componenten om je in dit geval zorgen over te maken, zijn de stroomsterkte van de relaiscontacten en het vermogen van de weerstanden.

Omdat de enige belasting in ons stroomcircuit de weerstanden zijn, kunnen we gewoon de totale weerstand berekenen, dat in de wet van Ohm zetten en de stroom in ons circuit berekenen.

Totale weerstand van parallelle weerstanden: 1/R_T =1/R_1 +1/R_2 +1/R_3 +1/R_N

Als de individuele weerstanden gelijk zijn, kan deze worden teruggebracht tot: R_T=R/N. Dus voor vier gelijke weerstanden is het R_T=R/4.

Ik gebruik vier weerstanden van 150 Ω, dus mijn totale weerstand door de vier is (150 Ω)/4=37,5 Ω.

De wet van Ohm is gewoon Spanning = Stroom X Weerstand (V=I×R). We kunnen dat herschikken om de stroom te bepalen om I=V/R te krijgen. Als we onze spanning van onze voeding en onze weerstand aansluiten, krijgen we I=(12 V)/(37,5 Ω)= 0,32 A. Dus dat betekent dat ons relais minimaal 0,32 A moet hebben. Dus het 1A-relais dat we gebruiken is meer dan 3 keer zo groot als nodig is, wat voldoende is.

Voor de weerstanden moeten we de hoeveelheid stroom bepalen die door elke weerstand gaat. De machtsvergelijking komt in verschillende vormen (door substitutie met de wet van Ohm), maar wat voor ons het handigst is, is P = E ^ 2 / R. Voor onze individuele weerstand wordt dit P=(12V)^2/150Ω=0,96 W. We willen dus minimaal een weerstand van 1 watt, maar een 2 watt geeft ons een extra veiligheidsfactor.

Het totale vermogen van het circuit zou slechts 4 x 0,96 W of 3,84 W zijn (je kunt ook de totale weerstand in de vermogensvergelijking opnemen en hetzelfde resultaat krijgen).

Ik schrijf dit allemaal op, dus als je meer vermogen wilt genereren (meer warmte), kun je je cijfers uitvoeren en de benodigde weerstanden berekenen, hun rating en de rating van het benodigde relais.

Ik heb in eerste instantie geprobeerd het circuit te laten lopen met de 5 volt van de Raspberry Pi-stroomrail, maar het gegenereerde vermogen per weerstand is slechts P = (5V) ^ 2 / 150Ω = 0,166 W, voor een totaal van 0,66 W, wat 'was' t genoeg om meer dan een paar graden temperatuurstijging te genereren.

Stap 2: Stap 1: Solderen

Stap 1: Solderen
Stap 1: Solderen
Stap 1: Solderen
Stap 1: Solderen
Stap 1: Solderen
Stap 1: Solderen

Oké, genoeg onderdelenlijsten en theorie, laten we naar het circuitontwerp en het solderen gaan!

Ik heb het circuit op de Proto-Bonnet op twee verschillende manieren getekend, een keer als bedradingsschema en een keer als een visuele weergave van het bord. Er is ook een gemarkeerde foto van het Pimoroni Explorer pHAT-bord, waarop de bedrading tussen het en de Proto-Bonnet te zien is.

Op de Explorer pHAT moet de 40 pins header die erbij zit op het bord gesoldeerd worden, dit is de verbinding tussen deze en de Raspberry Pi. Het wordt geleverd met een terminalheader voor de I / O, maar ik heb het niet gebruikt, in plaats daarvan heb ik draden rechtstreeks op het bord gesoldeerd. De Proto-Bonnet bevat ook aansluitingen voor de header, maar wordt in dit geval niet gebruikt.

De temperatuursensor is rechtstreeks aangesloten op het Explorer pHAT-bord met behulp van draden om het verschil te maken tussen de locatie van de Raspberry Pi en de binnenkant van de Camera Dome waar deze zich bevindt.

Het schroefklemmenblok en het besturingsrelais zijn de twee componenten die op het Proto-Bonnet-bord zijn gesoldeerd, in het schema zijn ze gelabeld met T1, T2, T3 (voor de drie schroefklemmen) en CR1 voor het relais.

De weerstanden zijn gesoldeerd aan draden die ook van de Raspberry Pi naar de Camera Dome gaan, ze worden via de schroefklemmen op T1 en T3 op de Proto-Bonnet aangesloten. Ik vergat een foto van de montage te maken voordat ik de camera weer op mijn dak installeerde, maar ik probeerde de weerstanden gelijkmatig rond de koepel te verdelen, met slechts twee draden die terugkwamen op de Proto-Bonnet. Ze gaan de koepel binnen via gaten aan weerszijden van de pijp, waarbij de temperatuursensor binnenkomt via een derde gat, gelijkmatig verdeeld tussen twee van de weerstanden nabij de rand van de koepel.

Stap 3: Stap 2: Montage

Stap 2: Montage
Stap 2: Montage

Zodra alles aan elkaar is gesoldeerd, kunt u het op uw all-sky camera installeren. Monteer de Explorer pHAT op de Rasperry Pi, duw hem op de 40-pins header en vervolgens wordt de Proto-Bonnet ernaast bovenop de Pi gemonteerd met behulp van enkele afstandhouders. Een andere optie zou zijn om afstandhouders bovenop de Explorer te gebruiken, maar aangezien ik de ABS-buisbehuizing gebruikte, werd de Pi te groot om er nog meer in te passen.

Leid de temperatuursensor door de behuizing naar zijn locatie en installeer ook de weerstandskabelboom. Sluit vervolgens de kabelboom aan op het aansluitblok op het proto-board.

Op naar de programmering!

Stap 4: Stap 3: De Explorer PHAT-bibliotheek laden en de programmering testen

Voordat we de Explorer pHAT kunnen gebruiken, moeten we de bibliotheek ervoor laden vanuit Pimoroni zodat de Pi ermee kan communiceren.

Open op je Raspberry Pi de terminal en voer in:

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

Typ 'y' of 'n' om de installatie te voltooien.

Vervolgens willen we een eenvoudig programma uitvoeren om de in- en uitgangen te testen, om er zeker van te zijn dat onze bedrading correct is. De bijgevoegde DewHeater_TestProg.py is een python-script dat de temperatuur weergeeft en het relais elke twee seconden in- en uitschakelt.

import tijd

importeer explorerhat vertraging = 2 terwijl 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(round(T1, 3), round(tempC, 3), round(tempF, 3))) V1 = explorerhat.output.two. on() print('Relais aan') time.sleep(vertraging) V1 = explorerhat.output.two.off() print('Relais uit') time.sleep(vertraging)

Je kunt het bestand openen op je Raspberry Pi (op de mijne is het geopend in Thonny, maar er zijn ook tal van andere Python-editors), en het vervolgens uitvoeren, en het zou de temperatuur moeten beginnen te tonen, en je hoort de relais klikken aan en uit! Zo niet, controleer dan uw bedrading en circuits.

Stap 5: Stap 4: De programmering van de dauwverwarmer laden

Hier is de volledige programmering van de dauwverwarmer. Het doet verschillende dingen:

  • Haalt elke vijf minuten de huidige buitentemperatuur en het dauwpunt van een bepaalde locatie van de National Weather Service. Als het geen gegevens krijgt, behoudt het de vorige temperaturen en probeert het het over vijf minuten opnieuw.

    • De NWS verzoekt om contactgegevens op te nemen in de API-verzoeken, als er problemen zijn met het verzoek, weten ze met wie ze contact moeten opnemen. Dit staat in regel 40 van de programmering, vervang de '[email protected]' door uw eigen e-mailadres.
    • U moet naar weather.gov gaan en een voorspelling voor uw gebied opzoeken om de station-ID te krijgen, het dichtstbijzijnde weerstation op de NWS. De stations-ID staat in () achter de locatienaam. Vul dit in regel 17 van de programmering in. Momenteel toont het KPDX, of Portland, Oregon.
    • Als u zich buiten de VS bevindt, is er een andere mogelijkheid om gegevens van OpenWeatherMap.org te gebruiken. Ik heb het zelf niet geprobeerd, maar je kunt dit voorbeeld hier bekijken: Reading-JSON-With-Raspberry-Pi
  • Merk op dat de temperaturen van de NWS en van de temperatuursensor in graden Celsius zijn, net als die voor de ASI-camera, dus voor de consistentie heb ik ze allemaal op Celsius gehouden in plaats van te converteren naar Fahrenheit, wat ik meer gewend ben aan.
  • Vervolgens leest het de temperatuur van de dome-sensor en als het minder dan 10 graden boven het dauwpunt is, schakelt het het relais in. Als het meer dan 10,5 graden boven het dauwpunt is, wordt het relais uitgeschakeld. U kunt deze instellingen desgewenst wijzigen.
  • Eenmaal per minuut registreert het de huidige waarden voor temperaturen, dauwpunt en relaisstatus in een.csv-bestand, zodat u kunt zien hoe het in de loop van de tijd presteert.

#Raspberry Pi Dew Heater-besturingsprogramma

#dec 2019 #Brian Plett #Gebruikt Pimoroni Explorer pHAT, een temperatuursensor en een relais #om een weerstandscircuit te besturen als een dauwverwarmer voor een all-sky camera #Trekt de buitenluchttemperatuur en het dauwpunt van de NWS-website #houdt de interne temperatuur 10 graden boven dauwpunt importtijd import datumtijd importverzoeken import csv import os import explorerhat #Station ID is het dichtstbijzijnde weerstation op de NWS. Ga naar weather.gov en zoek de voorspelling voor uw gebied op, #station-ID staat in () achter de locatienaam. settings = { 'station_ID':'KPDX', } #Alternatieve URL voor weersinformatie #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2}&eenheden={3}"

#Weer-URL om gegevens op te halen

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

#vertraging voor relaisbesturing, seconden

ControlDelay = 2 A=0 B=0 while True: #date to use in log filename datestr = datetime.datetime.now().strftime("%Y%m%d") #date & time te gebruiken voor elke datarij localtime = datetime.datetime.now().strftime("%Y/%m/%d %H:%M") #CSV-bestandspad path = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' while B == 0: probeer: #Trek temperatuur en dauwpunt elke 60 seconden uit NWS final_url = BASE_URL.format(settings["station_ID"]) weather_data = requests.get(final_url, timeout= 5, headers = {'User-agent ': 'Raspberry Pi 3+ Allsky Camera [email protected]'}) oatRaw = weather_data.json()["properties"]["temperature"]["value"] dewRaw = weather_data.json()["properties"]["dauwpunt"]["waarde"] #diagnostic print voor ruwe temperatuurgegevens print(oatRaw, dewRaw) OAT = round(oatRaw, 3) Dew = round(dewRaw, 3) behalve: A = 0 B = 1 break A = 0 B = 1 pauze als A < 300: A = A + ControlDelay anders: B = 0 #Lees ruwe spanning van Raspberry Pi Explorer PHat en converteer naar temperatuur 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() #diagnostische afdruk met temperaturen, dauwpunten en relaisuitgangsstatus print(' { 0:5.2f} degC, {1:5.2f} degC, {2:5.2f} deg C {3:5.0f}'.format(round(OAT, 3), round(Dew, 3), round(tempC, 3), explorerhat.output.two.read())) #10 seconden nadat de minuut voorbij is, schrijf gegevens naar een CSV-bestand als A ==10: if os.path.isfile(path.format(datestr)): print(path.format(datestr)) met open(path.format(datestr), "a") als csvfile: txtwrite = csv.writer(csvfile) txtwrite.writerow([localtime, OAT, Dew, tempC, explorerhat. output.two.read()]) else: fieldnames = ['date', 'Outdoor Air Temp', 'Dauwpoint', 'Dome Temp', 'Relay State'] met open(path.format(datestr), "w ") als csv-bestand: txtwrite = csv.writer(csv-bestand) txtwrite.writerow(veldnamen) txtwrite.writerow([localtime, OAT, Dew, tempC, explorerhat.output.two.read()]) time.sleep(ControlDelay)

Ik heb dit opgeslagen in een nieuwe map onder de allsky-map genaamd DewHeaterLogs.

Probeer dit een tijdje uit te voeren om er zeker van te zijn dat alles er goed uitziet, voordat u het als een script uitvoert.

Stap 6: Stap 5: Script uitvoeren bij opstarten

Om het Dew Heater-script uit te voeren zodra de Raspberry Pi opstart, heb ik de instructies hier gevolgd:

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

Voor het Launcher-script heb ik dit gemaakt:

#!/bin/sh

# launcher.sh # navigeer naar de thuismap, dan naar deze map, voer dan het python-script uit en dan terug naar huis cd / cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd /

Als dit eenmaal is gebeurd, zou je goed moeten zijn om te gaan. Geniet van een dauwvrije camera!

Stap 7: update december 2020

Ongeveer halverwege vorig jaar stopte mijn dauwverwarmer met werken, dus ik heb de code uitgeschakeld totdat ik ernaar kon kijken. Eindelijk wat tijd gehad tijdens de winterstop en ontdekte dat het relais dat ik gebruikte een hoge weerstand vertoonde over de contacten tijdens het gebruik, waarschijnlijk door overbelasting.

Dus ik heb het geüpdatet met een relais met een hogere nominale waarde, een met een 5A-contact in plaats van 1A-contact. Het is ook een vermogensrelais in plaats van een signaalrelais, dus ik hoop dat het helpt. Het is een TE PCH-105D2H, 000. Ik heb ook enkele schroefklemmen voor de Explorer pHAT toegevoegd, zodat ik de verwarming en temperatuursensor indien nodig gemakkelijk kon loskoppelen. Deze staan alle 3 in dit winkelwagentje hieronder:

Digikey-winkelwagentje

Houd er rekening mee dat de pinnen voor dit relais anders zijn dan de vorige, dus waar u naartoe gaat, is iets anders, maar moet eenvoudig zijn. De polariteit maakt niet uit voor de spoel, FYI.

Aanbevolen: