Cuprins:

Încălzitor de rouă Raspberry Pi pentru cameră cu tot cerul: 7 pași
Încălzitor de rouă Raspberry Pi pentru cameră cu tot cerul: 7 pași

Video: Încălzitor de rouă Raspberry Pi pentru cameră cu tot cerul: 7 pași

Video: Încălzitor de rouă Raspberry Pi pentru cameră cu tot cerul: 7 pași
Video: Casa abandonată a imigranților germani din SUA ~ Războiul i-a schimbat! 2024, Iulie
Anonim
Încălzitor de rouă Raspberry Pi pentru cameră cu tot cerul
Încălzitor de rouă Raspberry Pi pentru cameră cu tot cerul

[Uitați-vă la Pasul 7 pentru o modificare a releului utilizat]

Acesta este un upgrade la o cameră cu tot cerul pe care am construit-o în urma ghidului excelent al lui Thomas Jaquin (Wireless All Sky Camera). noapte, care ascunde vederea spre cerul nopții. Soluția este să adăugați un încălzitor de rouă care va încălzi cupola pentru a fi peste punctul de rouă sau temperatura la care apa se va condensa pe cupolă.

O modalitate obișnuită de a face acest lucru este să treceți curentul prin mai multe rezistențe, care apoi se vor încălzi și să le utilizați ca sursă de căldură. În acest caz, deoarece camera are deja un Raspberry Pi, am vrut să o folosesc pentru a controla circuitul rezistorului printr-un releu, pornindu-le și oprindu-le după cum este necesar pentru a menține o anumită temperatură a cupolei peste punctul de rouă. Un senzor de temperatură este amplasat în cupolă pentru control. Am decis să extrag datele locale privind temperatura și umiditatea vremii de la Serviciul Național de Meteorologie pentru informațiile referitoare la punctul de rouă, mai degrabă decât să adaug un alt senzor și am nevoie de o penetrare în carcasa camerei mele care ar putea să se scurgă.

Raspberry Pi are un antet GPIO care permite plăcilor de expansiune să controleze dispozitivele fizice, dar IO în sine nu este conceput pentru a gestiona curentul pe care îl solicită un circuit de alimentare al rezistorului. Deci sunt necesare componente suplimentare. Am de gând să folosesc un releu pentru a izola circuitul de alimentare, așa că este necesar un driver de releu IC pentru a interfața cu Pi. De asemenea, am nevoie de un senzor de temperatură pentru a citi temperatura din interiorul cupolei, deci este nevoie de un convertor analog-digital (ADC), astfel încât Pi să poată citi temperatura. Aceste componente sunt disponibile individual, dar puteți cumpăra și o „pălărie” pentru Pi care conține aceste dispozitive pe o placă care se conectează doar la GPIO-ul Pi.

Am mers cu Pimoroni Explorer pHAT, care are o gamă întreagă de I / O, dar pentru scopurile mele, are patru intrări analogice cuprinse între 0-5V și patru ieșiri digitale potrivite pentru conducerea releelor.

Pentru senzorul de temperatură al cupolei, am folosit un TMP36, care mi-a plăcut deoarece are o ecuație liniară simplă pentru a obține temperatura din citirea tensiunii. Folosesc termistori și RTD-uri la locul de muncă, dar sunt neliniare și, prin urmare, sunt mai complicate de implementat de la zero.

Am folosit kitul Adafruit Perma Proto Bonnet Mini ca placă de circuite pentru a lipi releul, blocul de borne și alte cabluri, ceea ce este frumos, deoarece este dimensionat pentru Pi și are circuite relevante pentru ceea ce oferă Pi.

Acestea sunt principalele lucruri. Am ajuns să primesc aproape totul de la Digikey, deoarece stocează piesele Adafruit în plus față de toate componentele normale ale circuitului, astfel încât este ușor să obțineți totul dintr-o dată. Iată un link către un coș de cumpărături cu toate piesele pe care le-am comandat:

www.digikey.com/short/z7c88f

Include câteva bobine de sârmă pentru firele jumper, dacă aveți deja unele, nu aveți nevoie de ea.

Provizii

  • Pimoroni Explorer pHAT
  • Senzor de temperatură TMP36
  • Rezistențe de 150 Ohm 2W
  • Releu 1D 5VDC SPDT
  • Șurub bloc de borne
  • Placă de circuit
  • Sârmă
  • distanțe ale plăcilor de circuit
  • lipit și lipit

Lista pieselor pe digikey:

www.digikey.com/short/z7c88f

Pasul 1: Note de teorie electrică

Este important să vă asigurați că componentele utilizate sunt dimensionate corespunzător pentru a gestiona puterea și curentul pe care le vor vedea, altfel s-ar putea să aveți defecțiuni premature sau chiar incendii!

Principalele componente de care trebuie să vă faceți griji în acest caz sunt puterea curentă a contactelor releului și puterea rezistențelor.

Deoarece singura sarcină din circuitul nostru de putere sunt rezistențele, putem calcula rezistența totală, o putem pune în legea lui Ohm și putem calcula curentul din circuitul nostru.

Rezistența totală a rezistențelor paralele: 1 / R_T = 1 / R_1 + 1 / R_2 + 1 / R_3 + 1 / R_N

Dacă rezistențele individuale sunt egale, se poate reduce la: R_T = R / N. Deci, pentru patru rezistențe egale este R_T = R / 4.

Folosesc patru rezistențe de 150 Ω, deci rezistența mea totală prin cele patru este (150 Ω) /4=37,5 Ω.

Legea lui Ohm este doar tensiunea = rezistența curentului X (V = I × R). Putem rearanja asta pentru a determina curentul pentru a obține I = V / R. Dacă ne conectăm tensiunea de la sursa de alimentare și rezistența noastră, obținem I = (12 V) / (37,5 Ω) = 0,32 A. Deci, asta înseamnă că cel puțin, releul nostru ar trebui să fie evaluat la 0,32 A. releul 1A pe care îl folosim este de peste 3 ori dimensiunea necesară, ceea ce este suficient.

Pentru rezistențe, trebuie să determinăm cantitatea de putere care trece prin fiecare. Ecuația de putere vine în mai multe forme (prin substituirea cu legea lui Ohm), dar ceea ce este cel mai convenabil pentru noi este P = E ^ 2 / R. Pentru rezistorul nostru individual, acesta devine P = (12V) ^ 2 / 150Ω = 0,96 W. Deci, vom dori cel puțin un rezistor de 1 watt, dar un 2 watt ne va oferi un factor suplimentar de siguranță.

Puterea totală a circuitului ar fi doar 4 x 0,96 W sau 3,84 W (Puteți, de asemenea, să puneți rezistența totală în ecuația de putere și să obțineți același rezultat).

Scriu toate acestea, așa că, în cazul în care doriți să fie generată mai multă energie (mai multă căldură), puteți rula numerele și puteți calcula rezistențele necesare, valoarea lor și valoarea releului necesar.

Am încercat inițial să rulez circuitul cu cei 5 volți de la șina de alimentare Raspberry Pi, dar puterea generată pe rezistor este doar P = (5V) ^ 2 / 150Ω = 0,166 W, pentru un total de 0,66 W, care nu era suficient pentru a genera mai mult de câteva grade de creștere a temperaturii.

Pasul 2: Pasul 1: lipire

Pasul 1: lipire
Pasul 1: lipire
Pasul 1: lipire
Pasul 1: lipire
Pasul 1: lipire
Pasul 1: lipire

Bine, destule liste de piese și teorie, să trecem la proiectarea și lipirea circuitului!

Am desenat circuitul pe Proto-Bonnet în două moduri diferite, o dată ca schemă de cablare și o dată ca reprezentare vizuală a plăcii. Există, de asemenea, o fotografie marcată a plăcii pHAT Pimoroni Explorer, care arată cablajul care merge între aceasta și Proto-Bonnet.

Pe Explorer pHAT, antetul cu 40 de pini care vine cu acesta trebuie lipit pe placa, aceasta este conexiunea dintre acesta și Raspberry Pi. Acesta vine cu un antet de terminal pentru I / O, dar nu l-am folosit, ci doar s-au lipit firele direct pe placă. Proto-Bonnet include, de asemenea, conexiuni pentru antet, dar nu este utilizat în acest caz.

Senzorul de temperatură este conectat direct la placa Explorer pHAT folosind fire pentru a face diferența dintre locația Raspberry Pi și interiorul camerei Dome unde este amplasat.

Blocul terminal cu șurub și releul de comandă sunt cele două componente lipite pe placa Proto-Bonnet, în schemă sunt etichetate T1, T2, T3 (pentru cele trei borne cu șurub) și CR1 pentru releu.

Rezistențele sunt lipite pe cabluri care merg de asemenea de la Raspberry Pi la Camera Dome, se conectează la Proto-Bonnet prin bornele cu șurub de la T1 și T3. Am uitat să fac o fotografie a ansamblului înainte de a instala camera înapoi pe acoperișul meu, dar am încercat să așez rezistențele uniform în jurul cupolei, cu doar două fire care se întorceau la Proto-Bonnet. Intră în cupolă prin găuri de pe părțile opuse ale conductei, cu senzorul de temperatură care intră printr-o a treia gaură, distanțată uniform între două dintre rezistoarele din apropierea marginii cupolei.

Pasul 3: Pasul 2: Asamblare

Pasul 2: Asamblare
Pasul 2: Asamblare

Odată ce totul este lipit împreună, îl puteți instala pe camera dvs. all-sky. Montați Explorer pHAT pe Rasperry Pi, împingându-l pe antetul cu 40 de pini, iar apoi Proto-Bonnet este montat adiacent pe deasupra lui Pi folosind niște standoffs. O altă opțiune ar fi utilizarea standoff-urilor deasupra Explorer-ului, dar, din moment ce foloseam carcasa ABS Pipe, a făcut Pi-ul prea mare pentru a se potrivi mai mult.

Treceți senzorul de temperatură în sus la carcasă până la locația sa și instalați și cablajul rezistenței. Apoi conectați cablajul la blocul de borne de pe placa proto.

La programare!

Pasul 4: Pasul 3: Încărcarea bibliotecii Explorer PHAT și testarea programării

Înainte de a putea folosi Explorer pHAT, trebuie să încărcăm biblioteca pentru acesta din Pimoroni, astfel încât Pi să poată comunica cu acesta.

Pe Raspberry Pi, deschideți terminalul și introduceți:

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

Tastați „y” sau „n” după caz pentru a finaliza instalarea.

În continuare, vom dori să rulăm un program simplu pentru a testa intrările și ieșirile, pentru a ne asigura că cablajul nostru este corect. DewHeater_TestProg.py atașat este un script python care afișează temperatura și pornește și oprește releul la fiecare două secunde.

timpul de import

import exploratorhat 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)

Puteți deschide fișierul pe raspberry Pi, (pe al meu s-a deschis în Thonny, dar există și o mulțime de alți editori Python acolo), apoi îl puteți rula și ar trebui să înceapă să arate temperatura și veți auzi releu făcând clic pe și oprit! Dacă nu, verificați cablurile și circuitele.

Pasul 5: Pasul 4: Încărcarea programării încălzitorului de rouă

Iată programarea completă a încălzitorului de rouă. Face mai multe lucruri:

  • Trage temperatura exterioară curentă și punctul de rouă dintr-o anumită locație a Serviciului Național Meteorologic la fiecare cinci minute. Dacă nu obține date, păstrează temperaturile anterioare și încearcă din nou în alte cinci minute.

    • NWS solicită ca informațiile de contact să fie incluse în solicitările API, în cazul în care există probleme cu solicitarea, ei știu cu cine să contacteze. Aceasta este în linia 40 a programării, vă rugăm să înlocuiți „[email protected]” cu propria dvs. adresă de e-mail.
    • Va trebui să accesați weather.gov și să căutați o prognoză pentru zona dvs., pentru a obține ID-ul stației, care este cea mai apropiată stație meteo de la NWS. ID-ul stației este în () după numele locației. Introduceți acest lucru în linia 17 a programării. În prezent arată KPDX sau Portland, Oregon.
    • Dacă vă aflați în afara SUA, există o altă posibilitate de a utiliza datele de la OpenWeatherMap.org. Nu am încercat-o eu, dar puteți vedea acest exemplu aici: Reading-JSON-With-Raspberry-Pi
  • Rețineți că temperaturile de la NWS și de la senzorul de temperatură sunt în grade Celsius, la fel ca și cele pentru camera ASI, așa că, pentru consistență, le-am păstrat pe toate Centrigrade, mai degrabă decât să le convertesc în Fahrenheit, ceea ce sunt cel mai obișnuit cu care.
  • Apoi, citește temperatura din senzorul cupolei și, dacă este la mai puțin de 10 grade peste punctul de rouă, atunci pornește releul. Dacă este mai mare de 10,5 grade peste punctul de rouă, oprește releul. Puteți modifica aceste setări, dacă doriți.
  • O dată pe minut, înregistrează valorile curente pentru temperaturi, punctul de rouă și starea releului într-un fișier.csv, astfel încât să puteți vedea cum funcționează în timp.

Programul de control #Raspberry Pi Dew Heater

#Dec 2019 #Brian Plett # Folosește Pimoroni Explorer pHAT, un senzor de temperatură și un releu #pentru a controla un circuit de rezistență ca încălzitor de rouă pentru o cameră cu tot cerul # Trage temperatura aerului exterior și punctul de rouă de pe site-ul web NWS # păstrează temperatura internă 10 grade deasupra punctului de rouă timp de import Accesați weather.gov și căutați un forcast pentru zona dvs., ID-ul stației este în () după numele locației. settings = {'station_ID': 'KPDX',} #Alternate URL for weather information #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2} & units = {3}"

#Weather URL pentru recuperarea datelor

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

# întârziere pentru controlul relei, secunde

ControlDelay = 2 A = 0 B = 0 în timp ce este adevărat: #data de utilizat în numele fișierului jurnal datestr = datetime.datetime.now (). Strftime ("% Y% m% d") #date și ora de utilizare pentru fiecare rând de date localtime = datetime.datetime.now (). strftime ("% Y /% m /% d% H:% M") #CSV cale cale fișier = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' în timp ce B == 0: încercați: # Temperatura de tragere și punctul de rouă de la NWS la fiecare 60 de secunde 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"] ["punct de rouă"] ["valoare"] #program de diagnostic pentru tipărirea datelor de temperatură brută (oatRaw, dewRaw) OAT = rotund (oatRaw, 3) Rouă = rotund (rouăRaw, 3) cu excepția: A = 0 B = 1 pauză A = 0 B = 1 pauză dacă A <300: A = A + Control Întârziere altceva: B = 0 #Citiți tensiunea brută de la Raspberry Pi Explorer PHat și convertiți la temperatura 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 care arată temperaturile, punctele de rouă și starea de ieșire a releului print ('{ 0: 5.2f} degC, {1: 5.2f} degC, {2: 5.2f} deg C {3: 5.0f} ". Format (rotund (OAT, 3), rotund (rouă, 3), rotund (tempC, 3), explorerhat.output.two.read ())) # 10 secunde după trecerea minutului, scrieți datele într-un fișier CSV dacă A == 10: dacă os.path.isfile (path.format (datestr)): print (path.format (datestr)) cu open (path.format (datestr), "a") ca csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow ([localtime, OAT, Dew, tempC, exploratorhat. output.two.read ()]) else: fieldnames = ['date', 'Outdoor Air Temp', 'Dewpoint', 'Dome Temp', 'Relay State'] cu open (path.format (datestr), "w ") ca csvfile: txtwrite = csv.writer (csvfile) txtwrite.writerow (nume de câmp) txtwrite.writerow ([localtime, OAT, Dew, tempC, explorerhat.output.two.read ()]) time.sleep (ControlDelay)

Am salvat acest lucru într-un folder nou sub folderul allsky numit DewHeaterLogs.

Încercați să rulați acest lucru puțin pentru a vă asigura că totul arată bine, înainte de a trece la rularea acestuia ca un script.

Pasul 6: Pasul 5: Rularea scriptului la pornire

Pentru a rula scriptul Dew Heater imediat ce pornește Raspberry Pi, am urmat instrucțiunile de aici:

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

Pentru scriptul Launcher, am creat acest lucru:

#! / bin / sh

# launcher.sh # navigați la directorul de acasă, apoi la acest director, apoi executați scriptul python, apoi înapoi acasă cd / cd acasă / pi / allsky / DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd /

Odată ce ați făcut acest lucru, ar trebui să fiți bine să mergeți. Bucurați-vă de o cameră foto fără rouă!

Pasul 7: Actualizați decembrie 2020

Cam la jumătatea anului trecut, încălzitorul meu de rouă a încetat să funcționeze, așa că am dezactivat codul până când am putut să-l arunc o privire. În cele din urmă a avut ceva timp în timpul pauzelor de iarnă și am constatat că releul pe care l-am folosit arăta o rezistență ridicată la contactele sale în timpul funcționării, probabil din cauza supraîncărcării.

Așa că l-am actualizat cu un releu cu rating mai mare, unul cu un contact de 5A, mai degrabă decât un contact de 1A. De asemenea, este mai degrabă un releu de putere decât un releu de semnal, așa că sper că va ajuta. Este un TE PCH-105D2H, 000. Am adăugat și câteva terminale cu șurub pentru Explorer pHAT, așa că aș putea deconecta cu ușurință încălzitorul și senzorul de temperatură, după cum este necesar. Toate cele 3 se află în acest coș de cumpărături de mai jos:

Coș de cumpărături Digikey

Rețineți că pinii pentru acest releu sunt diferiți de cel anterior, deci locul în care vă conectați este ușor diferit, dar ar trebui să fie simplu. Polaritatea nu contează pentru bobină, FYI.

Recomandat: