Spisu treści:

Podgrzewacz rosy Raspberry Pi do kamery All-sky: 7 kroków
Podgrzewacz rosy Raspberry Pi do kamery All-sky: 7 kroków

Wideo: Podgrzewacz rosy Raspberry Pi do kamery All-sky: 7 kroków

Wideo: Podgrzewacz rosy Raspberry Pi do kamery All-sky: 7 kroków
Wideo: Astrophotography from $100 to $10,000 2024, Lipiec
Anonim
Podgrzewacz rosy Raspberry Pi do kamery All-sky
Podgrzewacz rosy Raspberry Pi do kamery All-sky

[Spójrz w kroku 7 na zmianę używanego przekaźnika]

Jest to ulepszenie kamery całego nieba, którą zbudowałem zgodnie ze znakomitym przewodnikiem Thomasa Jaquina (Wireless All Sky Camera) Częstym problemem, który występuje w przypadku kamer nieba (i teleskopów), jest to, że na kopule kamery będzie skraplać się rosa, gdy robi się zimniej noc, która zasłania widok nocnego nieba. Rozwiązaniem jest dodanie podgrzewacza rosy, który ogrzeje kopułę do temperatury powyżej punktu rosy lub temperatury, w której woda będzie się na kopule skraplać.

Typowym sposobem na to jest przepuszczenie prądu przez kilka rezystorów, które następnie się nagrzeją i użyje ich jako źródła ciepła. W tym przypadku, ponieważ kamera ma już Raspberry Pi, chciałem użyć go do sterowania obwodem rezystora za pomocą przekaźnika, włączając je i wyłączając w razie potrzeby, aby utrzymać określoną temperaturę kopuły powyżej punktu rosy. Czujnik temperatury znajduje się w kopule do sterowania. Postanowiłem pobrać lokalne dane pogodowe dotyczące temperatury i wilgotności z National Weather Service, aby uzyskać wymagane informacje o punkcie rosy, zamiast dodawać kolejny czujnik i potrzebuję penetracji obudowy kamery, która może przeciekać.

Raspberry Pi ma nagłówek GPIO, który umożliwia płytkom rozszerzeń sterowanie urządzeniami fizycznymi, ale samo IO nie jest zaprojektowane do obsługi prądu wymaganego przez obwód zasilania rezystora. Potrzebne są więc dodatkowe komponenty. Planuję użyć przekaźnika do odizolowania obwodu zasilania, więc do połączenia z Pi potrzebny jest układ scalony sterownika przekaźnika. Potrzebuję również czujnika temperatury do odczytu temperatury wewnątrz kopuły, więc potrzebny jest przetwornik analogowo-cyfrowy (ADC), aby Pi mógł odczytać temperaturę. Te komponenty są dostępne pojedynczo, ale można również kupić „czapkę” dla Pi, która zawiera te urządzenia na płycie, którą po prostu podłącza się do GPIO Pi.

Poszedłem z Pimoroni Explorer pHAT, który ma całą gamę I/O, ale dla moich celów ma cztery wejścia analogowe o zakresie 0-5 V i cztery wyjścia cyfrowe odpowiednie do sterowania przekaźnikami.

Do kopułkowego czujnika temperatury użyłem TMP36, który mi się podobał, ponieważ ma proste równanie liniowe do wyprowadzania temperatury z odczytu napięcia. W mojej pracy używam termistorów i RTD, ale są one nieliniowe i dlatego są bardziej skomplikowane do wdrożenia od podstaw.

Użyłem zestawu Perma Proto Bonnet Mini firmy Adafruit jako płytki drukowanej do przylutowania przekaźnika, listwy zaciskowej i innych przewodów, które są ładne, ponieważ są dopasowane do Pi i mają obwody odpowiednie do tego, co oferuje Pi.

To są główne rzeczy. Skończyło się na tym, że otrzymałem prawie wszystko od Digikey, ponieważ oprócz wszystkich normalnych części obwodów, mają tam również części Adafruit, więc łatwo jest uzyskać wszystko na raz. Oto link do koszyka ze wszystkimi zamówionymi przeze mnie częściami:

www.digikey.com/short/z7c88f

Zawiera kilka szpul drutu na przewody połączeniowe, jeśli już je masz, nie potrzebujesz ich.

Kieszonkowe dzieci

  • Pimoroni Explorer pHAT
  • Czujnik temperatury TMP36
  • Rezystory 150 Ohm 2W
  • Przekaźnik 1A 5VDC SPDT
  • Blok zacisków śrubowych
  • Płytka drukowana
  • Drut
  • wsporniki płytek drukowanych
  • lutownica i lutownica

Lista części na digikey:

www.digikey.com/short/z7c88f

Krok 1: Uwagi dotyczące teorii elektrycznej

Ważne jest, aby upewnić się, że używane komponenty są odpowiednio zwymiarowane, aby wytrzymać moc i prąd, które zobaczą, w przeciwnym razie możesz mieć przedwczesną awarię, a nawet pożar!

Głównymi komponentami, o które należy się martwić w tym przypadku, jest prąd znamionowy styków przekaźnika i moc znamionowa rezystorów.

Ponieważ jedynym obciążeniem w naszym obwodzie mocy są rezystory, możemy po prostu obliczyć całkowitą rezystancję, umieścić ją w prawie Ohma i obliczyć prąd w naszym obwodzie.

Całkowita rezystancja rezystorów równoległych: 1/R_T =1/R_1 +1/R_2 +1/R_3 +1/R_N

Jeżeli poszczególne rezystancje są równe, można je zredukować do: R_T=R/N. Tak więc dla czterech równych rezystorów jest to R_T=R/4.

Używam czterech oporników 150 Ω, więc mój całkowity opór przez cztery z nich wynosi (150 Ω)/4=37,5 Ω.

Prawo Ohma to po prostu Napięcie = Prąd X Rezystancja (V=I×R). Możemy to zmienić, aby określić prąd, aby uzyskać I=V/R. Jeśli podłączymy napięcie z naszego zasilacza i naszą rezystancję, otrzymamy I=(12 V)/(37,5 Ω)= 0,32 A. Oznacza to, że przynajmniej nasz przekaźnik musiałby mieć prąd znamionowy 0,32 A. Czyli przekaźnik 1A, którego używamy, jest ponad 3 razy większy od potrzebnego rozmiaru, co jest wystarczającą ilością.

W przypadku rezystorów musimy określić ilość mocy przechodzącej przez każdy z nich. Równanie potęgowe ma kilka postaci (poprzez podstawienie prawem Ohma), ale najwygodniejsze dla nas jest P=E^2/R. Dla naszego indywidualnego rezystora wynosi to P=(12V)^2/150Ω=0,96 W. Będziemy więc potrzebować przynajmniej 1 wata rezystora, ale 2 waty da nam dodatkowy współczynnik bezpieczeństwa.

Całkowita moc obwodu wynosiłaby po prostu 4 x 0,96 W lub 3,84 W (możesz również umieścić całkowity opór w równaniu mocy i uzyskać ten sam wynik).

Wszystko to piszę, więc jeśli chcesz wygenerować więcej mocy (więcej ciepła), możesz uruchomić swoje liczby i obliczyć potrzebne rezystory, ich wartość znamionową i ocenę potrzebnego przekaźnika.

Początkowo próbowałem uruchomić obwód z napięciem 5 woltów z szyny zasilającej Raspberry Pi, ale moc generowana na rezystor wynosi tylko P=(5V)^2/150Ω=0,166W, co daje w sumie 0,66W, co nie t wystarczy, aby wygenerować więcej niż kilka stopni wzrostu temperatury.

Krok 2: Krok 1: Lutowanie

Krok 1: Lutowanie
Krok 1: Lutowanie
Krok 1: Lutowanie
Krok 1: Lutowanie
Krok 1: Lutowanie
Krok 1: Lutowanie

Dobra, dość list części i teorii, przejdźmy do projektowania obwodów i lutowania!

Narysowałem obwód na Proto-Bonnet na dwa różne sposoby, raz jako schemat okablowania, a raz jako wizualną reprezentację płytki. Jest też oznaczone zdjęcie płytki pHAT Pimoroni Explorer, pokazujące okablowanie łączące ją z Proto-Bonnet.

W Explorer pHAT 40-pinowe złącze, które jest z nim dostarczane, musi być przylutowane do płyty, jest to połączenie między nim a Raspberry Pi. Jest wyposażony w listwę zaciskową dla I/O, ale jej nie użyłem, zamiast tego po prostu przylutowałem przewody bezpośrednio do płytki. Proto-Bonnet zawiera również połączenia dla nagłówka, ale w tym przypadku nie jest używany.

Czujnik temperatury jest podłączony bezpośrednio do płytki Explorer pHAT za pomocą przewodów, aby zniwelować różnicę między lokalizacją Raspberry Pi a wnętrzem kopułki kamery, w której się znajduje.

Blok zacisków śrubowych i przekaźnik sterujący to dwa elementy, które są przylutowane do płyty Proto-Bonnet, na schemacie są oznaczone T1, T2, T3 (dla trzech zacisków śrubowych) i CR1 dla przekaźnika.

Rezystory są przylutowane do wyprowadzeń, które również przechodzą z Raspberry Pi do kamery kopułkowej, łączą się z Proto-Bonnet za pomocą zacisków śrubowych na T1 i T3. Zapomniałem zrobić zdjęcie zespołu, zanim zainstalowałem kamerę z powrotem na moim dachu, ale próbowałem równomiernie rozmieścić rezystory wokół kopuły, z tylko dwoma przewodami wracającymi do Proto-Maski. Wejdź do kopuły przez otwory po przeciwnych stronach rury, a czujnik temperatury wchodzi przez trzeci otwór, równomiernie rozmieszczony między dwoma opornikami przy krawędzi kopuły.

Krok 3: Krok 2: Montaż

Krok 2: Montaż
Krok 2: Montaż

Gdy wszystko zostanie zlutowane, możesz zainstalować go na swojej kamerze all-sky. Zamontuj Explorer pHAT na Rasperry Pi, wpychając go na 40-pinową główkę, a następnie Proto-Maska jest montowana obok niej na górze Pi za pomocą kilku dystansów. Inną opcją byłoby użycie elementów dystansowych na górze Explorera, ale ponieważ używałem obudowy ABS Pipe, sprawiło to, że Pi było zbyt duże, aby zmieścić się dalej.

Poprowadź czujnik temperatury w górę obudowy do jego lokalizacji i zainstaluj również wiązkę rezystora. Następnie podłącz wiązkę do listwy zaciskowej na płycie prototypowej.

Do programowania!

Krok 4: Krok 3: Ładowanie biblioteki Explorer PHAT i programowanie testowe

Zanim będziemy mogli użyć Explorer pHAT, musimy załadować dla niego bibliotekę z Pimoroni, aby Pi mogło się z nią komunikować.

Na swoim Raspberry Pi otwórz terminal i wprowadź:

curl https://get.pimoroni.com/explorerhat | grzmotnąć

Wpisz odpowiednio „y” lub „n”, aby zakończyć instalację.

Następnie będziemy chcieli uruchomić prosty program do testowania wejść i wyjść, aby upewnić się, że nasze okablowanie jest prawidłowe. Załączony plik DewHeater_TestProg.py to skrypt Pythona, który wyświetla temperaturę oraz włącza i wyłącza przekaźnik co dwie sekundy.

czas importu

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} woltów, {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('Przekaźnik włączony') time.sleep(opóźnienie) V1 = explorerhat.output.two.off() print('Przekaźnik wyłączony') time.sleep(opóźnienie)

Możesz otworzyć plik na swoim Raspberry Pi (w moim został otwarty w Thonny, ale jest tam również wiele innych edytorów Pythona), a następnie go uruchomić i powinien zacząć pokazywać temperaturę, a usłyszysz włączanie i wyłączanie przekaźnika! Jeśli nie, sprawdź okablowanie i obwody.

Krok 5: Krok 4: Ładowanie programowania podgrzewacza rosy

Oto pełne programowanie podgrzewacza rosy. Robi kilka rzeczy:

  • Co pięć minut pobiera bieżącą temperaturę zewnętrzną i punkt rosy z określonej lokalizacji National Weather Service. Jeśli nie otrzyma danych, utrzymuje poprzednią temperaturę i próbuje ponownie za kolejne pięć minut.

    • NWS prosi o umieszczenie informacji kontaktowych w żądaniach API, w przypadku problemów z żądaniem wie, z kim się skontaktować. Jest to w wierszu 40 programowania, zastąp '[email protected]' swoim własnym adresem e-mail.
    • Musisz wejść na stronę weather.gov i wyszukać prognozę dla swojego obszaru, aby uzyskać identyfikator stacji, czyli najbliższą stację pogodową w NWS. Identyfikator stacji znajduje się w () po nazwie lokalizacji. Wpisz to w linii 17 programowania. Obecnie pokazuje KPDX lub Portland w stanie Oregon.
    • Jeśli jesteś poza USA, istnieje inna możliwość wykorzystania danych z OpenWeatherMap.org. Sam tego nie próbowałem, ale możesz spojrzeć na ten przykład tutaj: Reading-JSON-With-Raspberry-Pi
  • Zwróć uwagę, że temperatury z NWS i czujnika temperatury są w stopniach Celsjusza, podobnie jak w przypadku kamery ASI, więc dla spójności utrzymywałem je wszystkie w stopniach Celsjusza, zamiast konwertować na stopnie Fahrenheita, do czego jestem bardziej przyzwyczajony.
  • Następnie odczytuje temperaturę z czujnika kopułkowego i jeśli jest mniej niż 10 stopni powyżej punktu rosy to załącza przekaźnik. Jeśli jest większa niż 10,5 stopnia powyżej punktu rosy, wyłącza przekaźnik. W razie potrzeby możesz zmienić te ustawienia.
  • Raz na minutę rejestruje bieżące wartości temperatur, punktu rosy i stanu przekaźników w pliku.csv, dzięki czemu można zobaczyć, jak to działa w czasie.

#Program sterowania podgrzewaczem rosy Raspberry Pi

#Grudzień 2019 #Brian Plett #Wykorzystuje Pimoroni Explorer pHAT, czujnik temperatury i przekaźnik #do sterowania obwodem rezystora jako podgrzewaczem rosy dla kamery całego nieba #Zbiera temperaturę powietrza na zewnątrz i punkt rosy ze strony NWS #utrzymuje temperaturę wewnętrzną 10 stopnie powyżej punktu rosy czas importu import data/godzina import żądania import csv import os import explorerhat #ID stacji to najbliższa stacja pogodowa w NWS. Wejdź na weather.gov i wyszukaj prognozę dla swojego obszaru, #ID stacji jest w () po nazwie lokalizacji. settings = { 'station_ID':'KPDX', } #Alternatywny adres URL informacji o pogodzie #BASE_URL = "https://api.openweathermap.org/data/2.5/weather?appid={0}&zip={1}, { 2}&jednostki={3}"

#Pogoda URL do pobierania danych

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

#opóźnienie sterowania przekaźnikiem, sekundy

ControlDelay = 2 A=0 B=0 while True: #data do użycia w nazwie pliku dziennika datestr = datetime.datetime.now().strftime("%Y%m%d") #data i godzina do użycia dla każdego wiersza danych localtime = datetime.datetime.now().strftime("%Y/%m/%d %H:%M") #ścieżka ścieżki pliku CSV = '/home/pi/allsky/DewHeaterLogs/DewHeatLog{}.csv' while B == 0: spróbuj: #Wyciągnij temperaturę i punkt rosy z NWS co 60 sekund 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()["właściwości"]["temperatura"]["wartość"] dewRaw = weather_data.json()["właściwości"]["punkt rosy"]["wartość"] #diagnostyczny wydruk surowych danych temperatury print(oatRaw, dewRaw) OAT = round(oatRaw, 3) Dew = round(dewRaw, 3) z wyjątkiem: A = 0 B = 1 break A = 0 B = 1 przerwa jeśli A < 300: A = A + ControlDelay inaczej: B = 0 #Odczytaj surowe napięcie z Raspberry Pi Explorer PHat i przekonwertuj na temperaturę 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() #druk diagnostyczny pokazujący temperatury, punkty rosy i stan wyjścia przekaźnikowego print(' { 0:5.2f} degC, {1:5.2f} degC, {2:5.2f} deg C {3:5.0f}'.format(round(OAT, 3), round(rosa, 3), round(tempC, 3), explorerhat.output.two.read())) #10 sekund po przejściu minuty, zapisz dane do pliku CSV, jeśli A ==10: if os.path.isfile(path.format(datestr)): print(path.format(datestr)) z open(path.format(datestr), "a") jako csvfile: txtwrite = csv.writer(csvfile) txtwrite.writerow([czas lokalny, OAT, Dew, tempC, explorerhat. output.two.read()]) else: fieldnames = ['data', 'Temperatura powietrza na zewnątrz', 'Punkt rosy', 'Temperatura kopuły', 'Stan przekaźnika'] with open(path.format(datestr), "w ") as csvfile: txtwrite = csv.writer(csvfile) txtwrite.writerow(nazwy pól) txtwrite.writerow([czas lokalny, OAT, Dew, tempC, explorerhat.output.two.read()]) time.sleep(ControlDelay)

Zapisałem to w nowym folderze w folderze allsky o nazwie DewHeaterLogs.

Spróbuj uruchomić to przez chwilę, aby upewnić się, że wszystko wygląda dobrze, zanim przejdziesz do uruchomienia go jako skryptu.

Krok 6: Krok 5: Uruchamianie skryptu przy starcie

Aby uruchomić skrypt Dew Heater zaraz po uruchomieniu Raspberry Pi, postępowałem zgodnie z instrukcjami tutaj:

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

Dla skryptu Launchera stworzyłem to:

#!/kosz/sz

# launcher.sh # przejdź do katalogu domowego, następnie do tego katalogu, wykonaj skrypt Pythona, a następnie wróć do domu cd / cd home/pi/allsky/DewHeaterLogs sleep 90 sudo python DewHeater_Web.py & cd /

Gdy to zrobisz, powinieneś być gotowy. Ciesz się aparatem bez rosy!

Krok 7: Zaktualizuj grudzień 2020 r

Mniej więcej w połowie zeszłego roku mój podgrzewacz rosy przestał działać, więc wyłączyłem kod, dopóki nie mogłem na niego spojrzeć. W końcu miałem trochę czasu na przerwę zimową i stwierdziłem, że przekaźnik, którego użyłem, wykazywał wysoką rezystancję na stykach podczas pracy, prawdopodobnie z powodu przeciążenia.

Zaktualizowałem go więc o przekaźnik o wyższej wartości znamionowej, jeden ze stykiem 5A zamiast styku 1A. Poza tym jest to przekaźnik mocy, a nie przekaźnik sygnału, więc mam nadzieję, że to pomaga. Jest to TE PCH-105D2H, 000. Dodałem też kilka zacisków śrubowych do Explorer pHAT, więc w razie potrzeby mogłem łatwo odłączyć grzałkę i czujnik temperatury. Wszystkie 3 z nich znajdują się w tym koszyku poniżej:

Koszyk Digikey

Należy pamiętać, że styki tego przekaźnika są inne niż poprzednie, więc miejsce podłączenia jest nieco inne, ale powinno być proste. Polaryzacja nie ma znaczenia dla cewki, FYI.

Zalecana: