Inhaltsverzeichnis:

Raspberry Pi Tauheizung für All-Sky-Kamera - Gunook
Raspberry Pi Tauheizung für All-Sky-Kamera - Gunook

Video: Raspberry Pi Tauheizung für All-Sky-Kamera - Gunook

Video: Raspberry Pi Tauheizung für All-Sky-Kamera - Gunook
Video: AllSky Kamera mit Raspberry Pi 4 in ein wetterfestes Gehäuse einbauen - DIY - Teil 2 2024, November
Anonim
Raspberry Pi Tauheizung für All-Sky-Kamera
Raspberry Pi Tauheizung für All-Sky-Kamera

[Siehe Schritt 7 für eine Änderung des verwendeten Relais]

Dies ist ein Upgrade zu einer All-Sky-Kamera, die ich nach Thomas Jaquins ausgezeichnetem Leitfaden (Wireless All Sky Camera) gebaut habe Nacht, die den Blick auf den Nachthimmel verstellt. Die Lösung besteht darin, eine Tauheizung hinzuzufügen, die die Kuppel auf über den Taupunkt oder die Temperatur erhitzt, bei der Wasser auf der Kuppel kondensiert.

Ein üblicher Weg, dies zu tun, besteht darin, Strom durch mehrere Widerstände zu leiten, die sich dann erhitzen, und diese als Wärmequelle zu verwenden. Da die Kamera in diesem Fall bereits über einen Raspberry Pi verfügt, wollte ich diesen verwenden, um die Widerstandsschaltung über ein Relais zu steuern und sie nach Bedarf ein- und auszuschalten, um eine bestimmte Domtemperatur über dem Taupunkt zu halten. Zur Kontrolle befindet sich in der Kuppel ein Temperatursensor. Ich beschloss, lokale Wettertemperatur- und Luftfeuchtigkeitsdaten vom National Weather Service für die erforderlichen Taupunktinformationen abzurufen, anstatt einen weiteren Sensor hinzuzufügen, und benötige ein Eindringen in mein Kameragehäuse, das auslaufen könnte.

Der Raspberry Pi verfügt über einen GPIO-Header, der es Erweiterungsplatinen ermöglicht, physische Geräte zu steuern, aber der IO selbst ist nicht dafür ausgelegt, den Strom zu verarbeiten, den ein Widerstandsstromkreis erfordert. Es werden also zusätzliche Komponenten benötigt. Ich plane, ein Relais zu verwenden, um den Stromkreis zu isolieren, daher wird ein Relaistreiber-IC benötigt, um mit dem Pi verbunden zu werden. Ich benötige auch einen Temperatursensor, um die Temperatur in der Kuppel abzulesen, daher wird ein Analog-Digital-Wandler (ADC) benötigt, damit der Pi die Temperatur lesen kann. Diese Komponenten sind einzeln erhältlich, aber Sie können auch einen "Hut" für den Pi kaufen, der diese Geräte auf einer Platine enthält, die einfach in den GPIO des Pi gesteckt wird.

Ich habe mich für den Pimoroni Explorer pHAT entschieden, der über eine ganze Reihe von E / A verfügt, aber für meine Zwecke hat er vier analoge Eingänge im Bereich von 0-5 V und vier digitale Ausgänge, die zum Ansteuern von Relais geeignet sind.

Für den Kuppeltemperatursensor habe ich einen TMP36 verwendet, der mir gefallen hat, weil er eine einfache lineare Gleichung hat, um die Temperatur aus dem Spannungsmesswert abzuleiten. Ich verwende Thermistoren und RTDs bei meiner Arbeit, aber sie sind nicht linear und daher von Grund auf komplizierter zu implementieren.

Ich habe das Perma Proto Bonnet Mini-Kit von Adafruit als Platine verwendet, um das Relais, den Klemmenblock und andere Verdrahtungen anzulöten, was schön ist, da es für den Pi dimensioniert ist und eine Schaltung enthält, die für das, was der Pi bietet, relevant ist.

Das sind die wichtigsten Dinge. Am Ende habe ich fast alles von Digikey bekommen, da sie neben allen normalen Schaltungsteilen auch die Teile von Adafruit auf Lager haben, so dass es einfach ist, alles auf einmal zu bekommen. Hier ist ein Link zu einem Warenkorb mit allen von mir bestellten Teilen:

www.digikey.com/short/z7c88f

Es enthält ein paar Drahtspulen für die Überbrückungsdrähte, wenn Sie bereits welche haben, brauchen Sie sie nicht.

Lieferungen

  • Pimoroni Explorer pHAT
  • TMP36 Temperatursensor
  • 150 Ohm 2W Widerstände
  • 1A 5VDC SPDT-Relais
  • Schraubklemmenblock
  • Leiterplatte
  • Kabel
  • Leiterplattenabstandshalter
  • Löten & Lötkolben

Teileliste auf digikey:

www.digikey.com/short/z7c88f

Schritt 1: Hinweise zur elektrischen Theorie

Es ist wichtig, sicherzustellen, dass die verwendeten Komponenten die richtige Größe haben, um die Leistung und den Strom zu bewältigen, die sie sehen, andernfalls kann es zu einem vorzeitigen Ausfall oder sogar zu einem Brand kommen!

Die wichtigsten Komponenten, über die Sie sich in diesem Fall Gedanken machen müssen, sind der Nennstrom der Relaiskontakte und die Nennleistung der Widerstände.

Da die einzige Last in unserem Stromkreis die Widerstände sind, können wir einfach den Gesamtwiderstand berechnen, in das Ohmsche Gesetz umwandeln und den Strom in unserem Stromkreis berechnen.

Gesamtwiderstand der Parallelwiderstände: 1/R_T =1/R_1 +1/R_2 +1/R_3 +1/R_N

Bei gleichen Einzelwiderständen kann er reduziert werden auf: R_T=R/N. Für vier gleiche Widerstände ist es also R_T=R/4.

Ich verwende vier 150--Widerstände, daher beträgt mein Gesamtwiderstand durch die vier (150 Ω) / 4 = 37,5 Ω.

Das Ohmsche Gesetz ist nur Spannung = Strom x Widerstand (V = I × R). Wir können das neu anordnen, um den Strom zu bestimmen, um I = V / R zu erhalten. Wenn wir unsere Spannung von unserem Netzteil und unseren Widerstand anschließen, erhalten wir I = (12 V) / (37,5 Ω) = 0,32 A. Das bedeutet also, dass unser Relais mindestens mit 0,32 A bewertet werden muss Das 1A-Relais, das wir verwenden, ist mehr als dreimal so groß wie die benötigte Größe, was viel ist.

Für die Widerstände müssen wir die Strommenge bestimmen, die durch jeden einzelnen fließt. Die Potenzgleichung gibt es in verschiedenen Formen (durch Substitution mit dem Ohmschen Gesetz), aber am bequemsten für uns ist P=E^2/R. Für unseren individuellen Widerstand wird dies zu P = (12 V) ^ 2 / 150 Ω = 0,96 W. Wir wollen also mindestens einen 1-Watt-Widerstand, aber 2 Watt geben uns einen zusätzlichen Sicherheitsfaktor.

Die Gesamtleistung der Schaltung beträgt nur 4 x 0,96 W oder 3,84 W (Sie können auch den Gesamtwiderstand in die Leistungsgleichung einsetzen und das gleiche Ergebnis erhalten).

Ich schreibe all dies auf. Falls Sie also mehr Strom erzeugen möchten (mehr Wärme), können Sie Ihre Zahlen ausführen und die benötigten Widerstände, ihre Nennleistung und die Nennleistung des benötigten Relais berechnen.

Ich habe anfangs versucht, die Schaltung mit den 5 Volt von der Raspberry Pi-Stromschiene zu betreiben, aber die pro Widerstand erzeugte Leistung beträgt nur P = (5 V) ^ 2 / 150 Ω = 0,166 W, also insgesamt 0,66 W, was nicht der Fall war. t genug, um einen Temperaturanstieg von mehr als ein paar Grad zu erzeugen.

Schritt 2: Schritt 1: Löten

Schritt 1: Löten
Schritt 1: Löten
Schritt 1: Löten
Schritt 1: Löten
Schritt 1: Löten
Schritt 1: Löten

Okay, genug von Stücklisten und Theorie, kommen wir zum Schaltungsdesign und zum Löten!

Ich habe die Schaltung auf der Proto-Bonnet auf zwei verschiedene Arten gezeichnet, einmal als Schaltplan und einmal als visuelle Darstellung der Platine. Es gibt auch ein markiertes Foto des Pimoroni Explorer pHAT-Boards, das die Verkabelung zwischen ihm und der Proto-Bonnet zeigt.

Beim Explorer pHAT muss der mitgelieferte 40-Pin-Header an die Platine gelötet werden, dies ist die Verbindung zwischen ihm und dem Raspberry Pi. Es kommt mit einem Klemmenkopf für die E / A, aber ich habe ihn nicht verwendet, sondern nur Drähte direkt an die Platine gelötet. Die Proto-Bonnet enthält auch Anschlüsse für den Header, wird aber in diesem Fall nicht verwendet.

Der Temperatursensor ist direkt mit der Explorer pHAT-Platine verbunden, indem Drähte verwendet werden, um den Unterschied zwischen der Position des Raspberry Pi und dem Inneren des Camera Dome, in dem er sich befindet, auszugleichen.

Der Schraubklemmenblock und das Steuerrelais sind die beiden Komponenten, die auf die Proto-Bonnet-Platine gelötet sind, im Schaltplan sind sie mit T1, T2, T3 (für die drei Schraubklemmen) und CR1 für das Relais bezeichnet.

Die Widerstände werden an Leitungen gelötet, die auch vom Raspberry Pi zum Camera Dome führen, sie werden über die Schraubklemmen an T1 und T3 mit der Proto-Bonnet verbunden. Ich habe vergessen, ein Foto von der Montage zu machen, bevor ich die Kamera wieder auf meinem Dach installiert habe, aber ich habe versucht, die Widerstände gleichmäßig um die Kuppel herum zu verteilen, wobei nur zwei Drähte zur Proto-Bonnet zurückkommen. Sie treten in die Kuppel durch Löcher auf gegenüberliegenden Seiten des Rohres ein, wobei der Temperatursensor durch ein drittes Loch eintritt, das gleichmäßig zwischen zwei der Widerstände nahe der Kante der Kuppel beabstandet ist.

Schritt 3: Schritt 2: Montage

Schritt 2: Montage
Schritt 2: Montage

Sobald alles zusammengelötet ist, können Sie es auf Ihrer All-Sky-Kamera installieren. Montieren Sie den Explorer pHAT auf dem Rasperry Pi, schieben Sie ihn auf den 40-Pin-Header, und dann wird die Proto-Bonnet mit einigen Abstandshaltern daneben auf dem Pi montiert. Eine andere Option wäre, Abstandshalter auf dem Explorer zu verwenden, aber da ich das ABS-Rohrgehäuse verwendet habe, wurde der Pi zu groß, um mehr zu passen.

Verlegen Sie den Temperatursensor das Gehäuse hinauf zu seiner Position und installieren Sie auch den Widerstandskabelbaum. Verdrahten Sie dann den Kabelbaum mit dem Klemmenblock auf der Proto-Platine.

Auf zur Programmierung!

Schritt 4: Schritt 3: Laden der Explorer-PHAT-Bibliothek und Testprogrammierung

Bevor wir den Explorer pHAT verwenden können, müssen wir die Bibliothek dafür von Pimoroni laden, damit der Pi mit ihm kommunizieren kann.

Öffnen Sie auf Ihrem Raspberry Pi das Terminal und geben Sie ein:

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

Geben Sie 'y' oder 'n' je nach Bedarf ein, um die Installation abzuschließen.

Als nächstes wollen wir ein einfaches Programm ausführen, um die Ein- und Ausgänge zu testen, um sicherzustellen, dass unsere Verdrahtung korrekt ist. Die angehängte DewHeater_TestProg.py ist ein Python-Skript, das die Temperatur anzeigt und das Relais alle zwei Sekunden ein- und ausschaltet.

Importzeit

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(round(T1, 3), round(tempC, 3), round(tempF, 3))) V1 = Explorerhat.output.two. on() print('Relais an') time.sleep(delay) V1 = explorerhat.output.two.off() print('Relay off') time.sleep(delay)

Sie können die Datei auf Ihrem Raspberry Pi öffnen (auf meinem wurde sie in Thonny geöffnet, aber es gibt auch viele andere Python-Editoren) und dann ausführen, und sie sollte die Temperatur anzeigen, und Sie werden das hören Relais an und aus! Wenn nicht, überprüfen Sie Ihre Verkabelung und Stromkreise.

Schritt 5: Schritt 4: Laden der Tauheizungsprogrammierung

Hier ist die vollständige Programmierung der Tauheizung. Es macht mehrere Dinge:

  • Ruft alle fünf Minuten die aktuelle Außentemperatur und den Taupunkt von einem bestimmten Standort des National Weather Service ab. Wenn es keine Daten erhält, behält es die vorherigen Temperaturen bei und versucht es in weiteren fünf Minuten erneut.

    • Die NWS fordert, dass Kontaktinformationen in die API-Anfragen aufgenommen werden, falls es Probleme mit der Anfrage gibt, wissen sie, an wen sie sich wenden müssen. Dies steht in Zeile 40 der Programmierung, bitte ersetzen Sie '[email protected]' durch Ihre eigene E-Mail-Adresse.
    • Sie müssen zu weather.gov gehen und eine Wettervorhersage für Ihre Region suchen, um die Stations-ID zu erhalten, die die nächste Wetterstation bei der NWS ist. Die Stations-ID steht in () nach dem Ortsnamen. Tragen Sie diese in Zeile 17 der Programmierung ein. Derzeit wird KPDX oder Portland, Oregon angezeigt.
    • Wenn Sie sich außerhalb der USA befinden, besteht eine weitere Möglichkeit, Daten von OpenWeatherMap.org zu verwenden. Ich habe es selbst nicht ausprobiert, aber Sie können sich dieses Beispiel hier ansehen: Reading-JSON-With-Raspberry-Pi
  • Beachten Sie, dass die Temperaturen vom NWS und vom Temperatursensor in Grad Celsius angegeben sind, ebenso wie die für die ASI-Kamera. Aus Gründen der Konsistenz habe ich sie alle Celsius belassen, anstatt in Fahrenheit umzurechnen, was ich eher gewohnt bin.
  • Als nächstes liest es die Temperatur vom Kuppelsensor ab, und wenn sie weniger als 10 Grad über dem Taupunkt liegt, schaltet es das Relais ein. Wenn es mehr als 10,5 Grad über dem Taupunkt liegt, schaltet es das Relais aus. Sie können diese Einstellungen bei Bedarf ändern.
  • Einmal pro Minute protokolliert es die aktuellen Werte für Temperaturen, Taupunkt und Relaisstatus in einer.csv-Datei, damit Sie sehen können, wie es sich im Laufe der Zeit verhält.

#Raspberry Pi Dew Heater Steuerprogramm

#Dec 2019 #Brian Plett #Verwendet Pimoroni Explorer pHAT, einen Temperatursensor und ein Relais #um eine Widerstandsschaltung als Tauheizung für eine All-Sky-Kamera zu steuern #Zieht die Außenlufttemperatur und den Taupunkt von der NWS-Website #hält die Innentemperatur bei 10 Grad über Taupunkt Import Zeit Import DatumZeit Import Anfragen Import csv Import os Import explorerhat #Station ID ist die nächste Wetterstation am NWS. Gehen Sie zu weather.gov und suchen Sie nach der Vorhersage für Ihre Region. #Stations-ID ist in () nach dem Ortsnamen. settings = { 'station_ID':'KPDX', } #Alternative URL für Wetterinformationen #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2}&Einheiten={3}"

#Wetter-URL zum Abrufen von Daten

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

#Verzögerung für Relaissteuerung, Sekunden

ControlDelay = 2 A=0 B=0 während True: #Datum, das im Protokolldateinamen verwendet werden soll datestr = datetime.datetime.now().strftime("%Y%m%d") #Datum und Uhrzeit für jede Datenzeile localtime = datetime.datetime.now().strftime("%Y/%m/%d %H:%M") #CSV-Dateipfadpfad = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' while B == 0: try: #Pull Temperatur und Taupunkt alle 60 Sekunden aus NWS final_url = BASE_URL.format(settings["station_ID"]) weather_data = request.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"]["taupunkt"]["wert"] #diagnostic print for raw temperature data print(oatRaw, dewRaw) OAT = round(oatRaw, 3) Dew = round(dewRaw, 3) außer: A = 0 B = 1 break A = 0 B = 1 Pause wenn A < 300: A = A + ControlDelay sonst: B = 0 #Rohspannung vom Raspberry Pi Explorer PHat lesen und in Temperatur umwandeln 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() #diagnostic print zeigt Temperaturen, Taupunkte und Relaisausgangszustand 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 Sekunden nach Ablauf der Minute, Daten in eine CSV-Datei schreiben, wenn A ==10: if os.path.isfile(path.format(datestr)): print(path.format(datestr)) mit 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', 'Dewpoint', 'Dome Temp', 'Relay State'] with open(path.format(datestr), "w ") als csvfile: txtwrite = csv.writer(csvfile) txtwrite.writerow(fieldnames) txtwrite.writerow([localtime, OAT, Dew, tempC, explorerhat.output.two.read()]) time.sleep(ControlDelay)

Ich habe dies in einem neuen Ordner unter dem allsky-Ordner namens DewHeaterLogs gespeichert.

Versuchen Sie, dies eine Weile auszuführen, um sicherzustellen, dass alles gut aussieht, bevor Sie es als Skript ausführen.

Schritt 6: Schritt 5: Ausführen des Skripts beim Start

Um das Dew Heater-Skript auszuführen, sobald der Raspberry Pi startet, habe ich die Anweisungen hier befolgt:

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

Für das Launcher-Skript habe ich Folgendes erstellt:

#!/bin/sh

# launcher.sh # zum Home-Verzeichnis navigieren, dann zu diesem Verzeichnis, dann Python-Skript ausführen, dann zurück nach Hause cd / cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd /

Sobald dies erledigt ist, sollte es losgehen. Genießen Sie eine taufreie Kamera!

Schritt 7: Update Dezember 2020

Ungefähr zur Hälfte des letzten Jahres funktionierte mein Tauheizer nicht mehr, also habe ich den Code deaktiviert, bis ich ihn mir ansehen konnte. Hatte endlich etwas Zeit über die Winterpause und stellte fest, dass das von mir verwendete Relais während des Betriebs einen hohen Widerstand an seinen Kontakten zeigte, wahrscheinlich durch Überlastung.

Also habe ich es mit einem höher bewerteten Relais aktualisiert, eines mit einem 5A-Kontakt anstelle eines 1A-Kontakts. Außerdem ist es eher ein Leistungsrelais als ein Signalrelais, also hoffe ich, dass es hilft. Es ist ein TE PCH-105D2H, 000. Ich habe auch einige Schraubklemmen für den Explorer pHAT hinzugefügt, damit ich die Heizung und den Temperatursensor bei Bedarf leicht trennen konnte. Alle 3 davon befinden sich in diesem Warenkorb unten:

Digikey-Warenkorb

Beachten Sie, dass sich die Pins für dieses Relais von denen des vorherigen unterscheiden, so dass die Verdrahtung etwas anders ist, aber unkompliziert sein sollte. Die Polarität spielt für die Spule keine Rolle, FYI.

Empfohlen: