- Popularny post
-
Liczba zawartości
121 -
Rejestracja
-
Ostatnia wizyta
-
Wygrane w rankingu
3
Odpowiedzi dodane przez AdamK
-
-
Dzięki jolo !
Miałem pewne problemy w którym miejscu umieścić te kilka linii kodu, ale już jest OK i układ działa.
Rzeczywiście, nie wziąłem pod wzgląd, że można skorzystać z wilgotności zmierzonej.
Teraz pozostaje tylko umieścić to w obudowie i dość przydatny gadżet gotowy.
-
Z kodów przedstawionych tu przez Jola skleciłem program, który pokazuje na wyświetlaczu temperaturę powietrza, wilgotność oraz temperaturę punktu rosy.
Wszystko działa. Zapakuję to w pudełko i będę używał jako mini stację pogodową ostrzegającą o możliwości wystąpienia rosy.
Na razie żadnej automatyki... grzałki jak dotąd będę włączał ręcznie.
Żeby ten układ należycie spełniał swoją funkcję alarmową chciałbym jeszcze dodać mrugającą czerwoną diodę LED w momencie kiedy wystąpi możliwość roszenia.
I tu mam problem jak taki warunek dopisać do istniejącego programu - nie potrafię sam tego zrobić.
Czy ktoś mógłby mi pomóc dopisać taką sekwencję?
Zastanawiam się też jak bardzo temperatura powietrza musi się zbliżyć do temperatury punktu rosy, żeby warunek włączenia alarmu został spełniony?
Dwa, jeden, a może ułamek stopnia Celsjusza?
Uwaga do foto: w momencie robienia zdjęcia w układzie brakowało DHT22
Poniżej program, który z pewnością zawiera błędy (przepraszam znawców tematu), ale działa.
Dołączyłem do niego linię w części setup():
digitalWrite(7, LOW); //LED czerwony - możliwość powstania rosy
więcej w temacie mrugającej diody nie potrafię...
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Timer.h>
#include <dht.h>
#include <EEPROM.h>
#include <LiquidCrystal.h>#define DS8120_PIN 6
#define DHT22_PIN 9OneWire oneWire(DS8120_PIN);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer;
dht DHT;
Timer timer;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
boolean DS1820connected = false;
boolean DHT22connected = false;
float currentTemp; // bieżąca temperatura z czujnika DHT
float currentHum; // bieżąca wilgotność z czujnika DHT
float currentDewpoint; // obliczony punkt rosy na podstawie danych z czujnika DHT
float currentDSTemp; // bieżąca temperatura z czujnika DS przymocowanego do lustravoid setup() {
int chk = DHT.read22(DHT22_PIN);
if(chk == DHTLIB_OK) DHT22connected = true; {
pinMode(9, OUTPUT); // dwa wiersze do regulacji kontrastu wyświetlacza
analogWrite(9, 100); // regulacja
}
digitalWrite(7, LOW); //LED czerwony - możliwość powstania rosy
sensors.begin();
DS1820connected = sensors.getAddress(insideThermometer, 0);
if(DS1820connected) sensors.setResolution(insideThermometer, 10);
lcd.begin(16, 2);
timer.every(1000, updateSensors);
}void loop() {
timer.update();
}void printData() {
Serial.println(currentTemp);
}void updateSensors() {
if (DS1820connected) {
sensors.requestTemperaturesByAddress(insideThermometer); // przy 10 bitowej dokładności trwa 188ms
timer.after(188, readTemp);
currentDSTemp = sensors.getTempC(insideThermometer);
}
if (DHT22connected) {
DHT.read22(DHT22_PIN);
currentTemp = DHT.temperature;
currentHum = DHT.humidity;
currentDewpoint = dewPoint(currentTemp, currentHum);
}
}void readTemp() {
currentTemp = sensors.getTempC(insideThermometer);
updateLCD();
}// dewPoint function NOAA
// reference (1) : http://wahiduddin.net/calc/density_algorithms.htm
// reference (2) : http://www.colorado.edu/geography/weather_station/Geog_site/about.htm
//
double dewPoint(double celsius, double humidity)
{
// (1) Saturation Vapor Pressure = ESGG(T)
double RATIO = 373.15 / (273.15 + celsius);
double RHS = -7.90298 * (RATIO - 1);
RHS += 5.02808 * log10(RATIO);
RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ;
RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
RHS += log10(1013.246);// factor -3 is to adjust units - Vapor Pressure SVP * humidity
double VP = pow(10, RHS - 3) * humidity;// (2) DEWPOINT = F(Vapor Pressure)
double T = log(VP/0.61078); // temp var
return (241.88 * T) / (17.558 - T);
}void updateLCD() {
lcd.clear();
lcd.print("Temp [C]= ");
lcd.print(currentTemp);
lcd.setCursor(0, 1);
lcd.print("RH=");
lcd.print(currentHum,0);
lcd.print("% DP=");
lcd.print(currentDewpoint,1);
lcd.print("C");
}- 3
-
SUPER !!! Żałuję, że się nie zapisałem na to cudo :-(
-
Też wybudowałem swoją astrobudkę z pierem za miastem na działce ogrodniczej. Jednak obecnie nie zaryzykowałbym pozostawienie tam nawet części sprzętu w obawie przed kradzieżą czy dewastacją. Ciągłe przenoszenie całego sprzętu tam i spowrotem oraz jego każdorazowy montaż i demontaż jest dość wkurzające na dłuższą metę...
Zastanawiałem się nad zbudowaniem solidnej stalowej osłony montażu... Założenie refraktora z pozostałym osprzętem byłoby już "bułką z masłem".
Napiszcie jakie stosujecie zabezpieczenia sprzętu przed zakusami meneli i złodzieji...
-
Wszystko jasne, dziękuję za odpowiedzi.
Foto rzeczywiście bardzo fajne!
Pozdrawiam
-
Canon 60Da , f/5.6 , iso 1250 , obiektyw 135 mm, czas 7x180s
NEQ 6 bez prowadzenia
Pytanie laika: jak mogłeś zrobić 3 minutowe ujęcia bez prowadzenia?
Pozdrawiam
Mgławica Irys NGC7023
w Obiekty głębokiego kosmosu
Napisano
W końcu i ja odważyłem się pokazać efekt dwu nie przespanych nocy 1/2 maja br.
Cały czas uczę się obróbki...
NGC7023 w Cefeuszu - niezbyt popularna na Forum.
Sky-Watcher ED80 OTA 80/600 + F/R x 0,85, montaż Celestron Advanced VX, kamera Orion StarShoot Pro v2.0 Deep Space Color
Czasy: 16 x 900 sek.