Table des matières:

Réchauffeur de rosée Raspberry Pi pour caméra All-Sky : 7 étapes
Réchauffeur de rosée Raspberry Pi pour caméra All-Sky : 7 étapes

Vidéo: Réchauffeur de rosée Raspberry Pi pour caméra All-Sky : 7 étapes

Vidéo: Réchauffeur de rosée Raspberry Pi pour caméra All-Sky : 7 étapes
Vidéo: Необычный случай с Алексом Льюисом (документальный фильм о чудесном чуде) - Реальные истории 2024, Juillet
Anonim
Réchauffeur de rosée Raspberry Pi pour caméra All-Sky
Réchauffeur de rosée Raspberry Pi pour caméra All-Sky

[Regardez l'étape 7 pour un changement au relais utilisé]

Il s'agit d'une mise à niveau d'une caméra tout ciel que j'ai construite en suivant l'excellent guide de Thomas Jaquin (Wireless All Sky Camera). nuit, ce qui obscurcit la vue du ciel nocturne. La solution consiste à ajouter un réchauffeur de rosée qui chauffera le dôme pour qu'il soit au-dessus du point de rosée, ou de la température à laquelle l'eau se condensera sur le dôme.

Une façon courante de le faire est de faire passer du courant à travers plusieurs résistances, qui se réchaufferont ensuite, et de l'utiliser comme source de chaleur. Dans ce cas, étant donné que la caméra dispose déjà d'un Raspberry Pi, je voulais l'utiliser pour contrôler le circuit de résistance via un relais, en les allumant et en les éteignant au besoin pour maintenir une certaine température du dôme au-dessus du point de rosée. Un capteur de température est situé dans le dôme pour le contrôle. J'ai décidé d'extraire les données météorologiques locales de température et d'humidité du National Weather Service pour les informations de point de rosée requises, plutôt que d'ajouter un autre capteur, et j'ai besoin d'une pénétration dans le boîtier de ma caméra qui pourrait fuir.

Le Raspberry Pi a un en-tête GPIO qui permet aux cartes d'extension de contrôler les périphériques physiques, mais l'IO lui-même n'est pas conçu pour gérer le courant demandé par un circuit d'alimentation de résistance. Des composants supplémentaires sont donc nécessaires. Je prévois d'utiliser un relais pour isoler le circuit d'alimentation, donc un circuit intégré de pilote de relais est nécessaire pour s'interfacer avec le Pi. J'ai également besoin d'un capteur de température pour lire la température à l'intérieur du dôme, donc un convertisseur analogique-numérique (ADC) est nécessaire pour que le Pi puisse lire la température. Ces composants sont disponibles individuellement, mais vous pouvez également acheter un « chapeau » pour le Pi qui contient ces appareils sur une carte qui se branche simplement sur le GPIO du Pi.

Je suis allé avec le Pimoroni Explorer pHAT, qui a toute une gamme d'E/S, mais pour mes besoins, il a quatre entrées analogiques allant de 0 à 5 V et quatre sorties numériques adaptées à la commande de relais.

Pour le capteur de température du dôme, j'ai utilisé un TMP36, que j'ai aimé car il a une équation linéaire simple pour dériver la température de la lecture de la tension. J'utilise des thermistances et des RTD dans mon travail, mais ils ne sont pas linéaires et sont donc plus compliqués à mettre en œuvre à partir de zéro.

J'ai utilisé le kit Perma Proto Bonnet Mini d'Adafruit comme carte de circuit imprimé pour souder le relais, le bornier et d'autres câblages, ce qui est agréable car il est dimensionné pour le Pi et possède des circuits correspondant à ce que propose le Pi.

Ce sont les choses principales. J'ai fini par obtenir presque tout de Digikey, car ils stockent les pièces d'Adafruit en plus de toutes les pièces de circuit normales, ce qui facilite l'obtention de tout à la fois. Voici un lien vers un panier avec toutes les pièces que j'ai commandées:

www.digikey.com/short/z7c88f

Il comprend quelques bobines de fil pour les fils de connexion, si vous en avez déjà, vous n'en avez pas besoin.

Fournitures

  • Pimoroni Explorer pHAT
  • Capteur de température TMP36
  • Résistances 150 Ohm 2W
  • Relais SPDT 1A 5VDC
  • Bornier à vis
  • Circuit imprimé
  • Câble
  • entretoises de circuits imprimés
  • soudure et fer à souder

Liste des pièces sur digikey:

www.digikey.com/short/z7c88f

Étape 1: Notes de théorie électrique

Il est important de s'assurer que les composants utilisés sont correctement dimensionnés pour gérer la puissance et le courant qu'ils verront, sinon vous pourriez avoir une défaillance prématurée, voire un incendie !

Les principaux composants à prendre en compte dans ce cas sont le courant nominal des contacts du relais et la puissance nominale des résistances.

Étant donné que la seule charge de notre circuit d'alimentation est constituée des résistances, nous pouvons simplement calculer la résistance totale, la mettre dans la loi d'Ohm et calculer le courant dans notre circuit.

Résistance totale des résistances parallèles: 1/R_T =1/R_1 +1/R_2 +1/R_3 +1/R_N

Si les résistances individuelles sont égales, il peut être réduit à: R_T=R/N. Donc pour quatre résistances égales c'est R_T=R/4.

J'utilise quatre résistances de 150, donc ma résistance totale à travers les quatre est de (150 Ω)/4=37,5 Ω.

La loi d'Ohm est juste Tension = Courant X Résistance (V = I × R). Nous pouvons réorganiser cela pour déterminer le courant pour obtenir I=V/R. Si nous branchons notre tension à partir de notre alimentation et de notre résistance, nous obtenons I=(12 V)/(37,5)= 0,32 A. Cela signifie donc qu'au minimum, notre relais devrait être évalué à 0,32 A. Donc le relais 1A que nous utilisons est plus de 3 fois la taille nécessaire, ce qui est largement suffisant.

Pour les résistances, nous devons déterminer la quantité d'énergie qui les traverse. L'équation de puissance se présente sous plusieurs formes (par substitution par la loi d'Ohm), mais ce qui nous convient le mieux est P=E^2/R. Pour notre résistance individuelle, cela devient P=(12V)^2/150Ω=0.96 W. Nous voudrons donc au moins une résistance de 1 watt, mais une 2 watt nous donnera un facteur de sécurité supplémentaire.

La puissance totale du circuit ne serait que de 4 x 0,96 W, soit 3,84 W (vous pouvez également mettre la résistance totale dans l'équation de puissance et obtenir le même résultat).

J'écris tout cela, donc au cas où vous voudriez générer plus de puissance (plus de chaleur), vous pouvez exécuter vos nombres et calculer les résistances nécessaires, leur valeur nominale et la valeur nominale du relais nécessaire.

J'ai d'abord essayé de faire fonctionner le circuit avec les 5 volts du rail d'alimentation Raspberry Pi, mais la puissance générée par résistance est juste P=(5V)^2/150Ω=0,166 W, pour un total de 0,66 W, ce qui n'était pas t suffisant pour générer plus de quelques degrés d'élévation de température.

Étape 2: Étape 1: Souder

Étape 1: Souder
Étape 1: Souder
Étape 1: Souder
Étape 1: Souder
Étape 1: Souder
Étape 1: Souder

Bon, assez de listes de pièces et de théorie, passons à la conception du circuit et à la soudure !

J'ai dessiné le circuit sur le Proto-Bonnet de deux manières différentes, une fois comme schéma de câblage et une fois comme représentation visuelle de la carte. Il y a aussi une photo annotée de la carte Pimoroni Explorer pHAT, montrant le câblage qui la relie au Proto-Bonnet.

Sur l'Explorer pHAT, l'embase à 40 broches qui l'accompagne doit être soudée à la carte, c'est la connexion entre elle et le Raspberry Pi. Il est livré avec un en-tête de borne pour les E/S, mais je ne l'ai pas utilisé, j'ai simplement soudé des fils directement sur la carte. Le Proto-Bonnet comprend également des connexions pour l'en-tête, mais il n'est pas utilisé dans ce cas.

Le capteur de température est câblé directement à la carte Explorer pHAT à l'aide de fils pour compenser la différence entre l'emplacement du Raspberry Pi et l'intérieur du Camera Dome où il se trouve.

Le bornier à vis et le relais de contrôle sont les deux composants qui sont soudés à la carte Proto-Bonnet, dans le schéma, ils sont étiquetés T1, T2, T3 (pour les trois bornes à vis) et CR1 pour le relais.

Les résistances sont soudées à des fils qui vont également du Raspberry Pi au Camera Dome, ils se connectent au Proto-Bonnet via les bornes à vis en T1 et T3. J'ai oublié de prendre une photo de l'ensemble avant de réinstaller la caméra sur mon toit, mais j'ai essayé d'espacer les résistances uniformément autour du dôme, avec seulement deux fils revenant au Proto-Bonnet. L'entrée dans le dôme par des trous sur les côtés opposés du tuyau, le capteur de température entrant par un troisième trou, régulièrement espacé entre deux des résistances près du bord du dôme.

Étape 3: Étape 2: Assemblage

Étape 2: Assemblage
Étape 2: Assemblage

Une fois que tout est soudé ensemble, vous pouvez l'installer sur votre caméra all-sky. Montez l'Explorer pHAT sur le Rasperry Pi, en le poussant sur l'en-tête à 40 broches, puis le Proto-Bonnet est monté à côté de lui sur le Pi à l'aide de quelques entretoises. Une autre option consisterait à utiliser des entretoises au-dessus de l'Explorer, mais comme j'utilisais le boîtier ABS Pipe, cela rendait le Pi trop gros pour s'adapter davantage.

Acheminez le capteur de température dans le boîtier jusqu'à son emplacement et installez également le faisceau de résistance. Ensuite, câblez le faisceau au bornier de la proto-carte.

Place à la programmation !

Étape 4: Étape 3: Chargement de la bibliothèque Explorer PHAT et test de la programmation

Avant de pouvoir utiliser l'Explorer pHAT, nous devons charger la bibliothèque correspondante à partir de Pimoroni afin que le Pi puisse communiquer avec lui.

Sur votre Raspberry Pi, ouvrez le terminal et saisissez:

boucle https://get.pimoroni.com/explorerhat | frapper

Tapez 'y' ou 'n' selon le cas pour terminer l'installation.

Ensuite, nous voudrons exécuter un programme simple pour tester les entrées et les sorties, afin de nous assurer que notre câblage est correct. Le DewHeater_TestProg.py attaché est un script python qui affiche la température et active et désactive le relais toutes les deux secondes.

heure d'importation

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} volts, {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('Relay on') time.sleep(delay) V1 = explorerhat.output.two.off() print('Relay off') time.sleep(delay)

Vous pouvez ouvrir le fichier sur votre raspberry Pi (sur le mien, il s'est ouvert dans Thonny, mais il existe également de nombreux autres éditeurs Python), puis l'exécuter, et il devrait commencer à afficher la température, et vous entendrez le relais en cliquant dessus et en dehors! Sinon, vérifiez votre câblage et vos circuits.

Étape 5: Étape 4: Chargement de la programmation du réchauffeur de rosée

Voici la programmation complète du réchauffeur de rosée. Il fait plusieurs choses:

  • Extrait la température extérieure actuelle et le point de rosée d'un emplacement donné du National Weather Service toutes les cinq minutes. S'il n'obtient pas de données, il conserve les températures précédentes et réessaye dans cinq minutes.

    • Le NWS demande que les informations de contact soient incluses dans les demandes d'API, en cas de problème avec la demande, ils savent qui contacter. Ceci est à la ligne 40 de la programmation, veuillez remplacer le '[email protected]' par votre propre adresse e-mail.
    • Vous devrez aller sur weather.gov et rechercher une prévision pour votre région, pour obtenir l'ID de la station, qui est la station météo la plus proche du NWS. L'ID de la station est entre () après le nom de l'emplacement. Inscrivez-le à la ligne 17 de la programmation. Actuellement, il montre KPDX, ou Portland, Oregon.
    • Si vous êtes en dehors des États-Unis, il existe une autre possibilité d'utiliser les données d'OpenWeatherMap.org. Je ne l'ai pas essayé moi-même, mais vous pouvez regarder cet exemple ici: Reading-JSON-With-Raspberry-Pi
  • Notez que les températures du NWS et du capteur de température sont en degrés centigrades, tout comme celles de la caméra ASI, donc par souci de cohérence, je les ai toutes conservées centrigrades plutôt que de les convertir en degrés Fahrenheit, ce à quoi je suis plus habitué.
  • Ensuite, il lit la température du capteur du dôme, et si elle est inférieure à 10 degrés au-dessus du point de rosée, il active le relais. S'il est supérieur à 10,5 degrés au-dessus du point de rosée, le relais s'éteint. Vous pouvez modifier ces paramètres si vous le souhaitez.
  • Une fois par minute, il enregistre les valeurs actuelles des températures, du point de rosée et de l'état du relais dans un fichier.csv afin que vous puissiez voir son évolution dans le temps.

Programme de contrôle du chauffe-eau #Raspberry Pi Dew

#Déc 2019 #Brian Plett #Utilise Pimoroni Explorer pHAT, un capteur de température et un relais #pour contrôler un circuit de résistance en tant que réchauffeur de rosée pour une caméra tout le ciel #Pull la température de l'air extérieur et le point de rosée du site Web NWS #conserve la température interne 10 degrés au-dessus du point de rosée heure d'importation date d'importation demandes d'importation importation csv importation os importation explorerhat #L'ID de la station est la station météorologique la plus proche du NWS. Allez sur weather.gov et recherchez forcast pour votre région, #station ID est entre () après le nom de l'emplacement. settings = { 'station_ID':'KPDX', } #URL alternative pour les informations météo #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2}&unités={3}"

#URL météo pour récupérer les données

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

#delay pour le contrôle du relais, secondes

ControlDelay = 2 A=0 B=0 while True: #date à utiliser dans le nom du fichier journal datestr = datetime.datetime.now().strftime("%Y%m%d") #date et heure à utiliser pour chaque ligne de données localtime = datetime.datetime.now().strftime("%Y/%m/%d %H:%M") #CSV file path path = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' tandis que B == 0: essayez: #Pull température et point de rosée du NWS toutes les 60 secondes 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"]["point de rosée"]["valeur"] #diagnostic print pour les données de température brute print(oatRaw, dewRaw) OAT = round(oatRaw, 3) Dew = round(dewRaw, 3) sauf: A = 0 B = 1 break A = 0 B = 1 pause si A < 300: A = A + ControlDelay sinon: B = 0 #Lire la tension brute de Raspberry Pi Explorer PHat et convertir en température 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 montrant les températures, les points de rosée et l'état de sortie du relais 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 secondes après le passage de la minute, écrivez les données dans un fichier CSV si A ==10: if os.path.isfile(path.format(datestr)): print(path.format(datestr)) avec open(path.format(datestr), "a") comme fichier csv: 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'] avec open(path.format(datestr), "w ") en tant que fichier csv: txtwrite = csv.writer(csvfile) txtwrite.writerow(fieldnames) txtwrite.writerow([localtime, OAT, Dew, tempC, explorerhat.output.two.read()]) time.sleep(ControlDelay)

J'ai enregistré cela dans un nouveau dossier sous le dossier allsky appelé DewHeaterLogs.

Essayez de l'exécuter un peu pour vous assurer que tout semble bon, avant de l'exécuter en tant que script.

Étape 6: Étape 5: Exécution du script au démarrage

Pour exécuter le script Dew Heater dès le démarrage du Raspberry Pi, j'ai suivi les instructions ici:

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

Pour le script Launcher, j'ai créé ceci:

#!/bin/sh

# launcher.sh # accédez au répertoire personnel, puis à ce répertoire, puis exécutez le script python, puis revenez à la maison cd / cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd /

Une fois cela fait, vous devriez être prêt à partir. Profitez d'un appareil photo sans rosée !

Étape 7: mise à jour décembre 2020

À peu près au milieu de l'année dernière, mon réchauffeur de rosée a cessé de fonctionner, j'ai donc désactivé le code jusqu'à ce que je puisse y jeter un œil. J'ai finalement passé un peu de temps pendant les vacances d'hiver et j'ai constaté que le relais que j'utilisais montrait une résistance élevée entre ses contacts pendant le fonctionnement, probablement à cause d'une surcharge.

Je l'ai donc mis à jour avec un relais plus puissant, un avec un contact 5A plutôt qu'un contact 1A. C'est aussi un relais de puissance plutôt qu'un relais de signal, donc j'espère que cela aide. C'est un TE PCH-105D2H, 000. J'ai également ajouté des bornes à vis pour l'Explorer pHAT, afin que je puisse facilement déconnecter le réchauffeur et le capteur de température au besoin. Tous les 3 d'entre eux sont sur ce panier ci-dessous:

Panier Digikey

Sachez que les broches de ce relais sont différentes de la précédente, donc l'endroit où vous câblez est légèrement différent, mais devrait être simple. La polarité n'a pas d'importance pour la bobine, pour info.

Conseillé: