Termometr rekuperatora

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
Janetscha
Młodszy majsterkowicz
Posty: 3
Rejestracja: 31 paź 2016, 21:22

Termometr rekuperatora

Post autor: Janetscha » 8 gru 2018, 21:31

Witam wszystkich

Uruchomiłem cyfrowy termometr z trzema czujnikami DS18B20 i wyświetlaczem lcd. ( Arduino Mega + DFRobot LCD )
Mierzy on temperatury w trzech miejscach centrali wentylacyjnej (rekuperatora).
Do pełni szczęścia brakuje mi wyliczania sprawności centrali i pokazania jej na wyświetlaczu.
Wylicza się ją ze wzoru :

h = (t2 – t1)/(t3 – t1) · 100%

t1 - temperatura pierwszy czujnik

t2 - temperatura drugi czujnik

t3- temperatura trzeci czujnik

Mimo bardzo wielu prób napisania czegoś sensownego na pewno
z powodu małej wiedzy tematu programowania stanąłem w miejscu.
Stąd moja prośba o pomoc do wszystkich życzliwych i potrafiących więcej w temacie na tym forum.
Dla zainteresowanych załączam kod.

Kod: Zaznacz cały

#include <LiquidCrystal.h>
#include <OneWire.h> 
#include <DallasTemperature.h> 

#define ONE_WIRE_BUS 33          // Czerpnia
#define SECOND_BUS 35            // Nawiew
#define THIRD_BUS 37            // Wywiew

OneWire oneWire(ONE_WIRE_BUS);
OneWire secondWire(SECOND_BUS);
OneWire thirdWire(THIRD_BUS);

DallasTemperature sensor1(&oneWire);
DallasTemperature sensor2(&secondWire);
DallasTemperature sensor3(&thirdWire);

float sensorOneTemperature = 0.0;
float sensorTwoTemperature = 0.0;
float sensorThreeTemperature = 0.0;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup(void)
{
 
 sensor1.begin();
 sensor2.begin();
 sensor3.begin();

 sensor1.setResolution(11);
 sensor2.setResolution(11);    
 sensor3.setResolution(11);
 
 lcd.begin (16,2); 
 

 lcd.clear();
}

void loop(void)
{ 

 sensor1.requestTemperatures(); 
 sensorOneTemperature = sensor1.getTempCByIndex(0);
 sensor2.requestTemperatures(); 
 sensorTwoTemperature = sensor2.getTempCByIndex(0);
 sensor3.requestTemperatures(); 
 sensorThreeTemperature = sensor3.getTempCByIndex(0);

 displayTemperatures();
}
void displayTemperatures(){
 
 lcd.setCursor(0,0);
 lcd.print("C");                
 lcd.print(sensorOneTemperature,1);   //Czerpnia
 lcd.print((char)223);
 lcd.print("C");
 
 
 lcd.setCursor(8,0);
 lcd.print("N");                  // Nawiew
 lcd.print(sensorTwoTemperature,1);
 lcd.print((char)223);
 lcd.print("C");
 
  
 lcd.setCursor(0,1);
 lcd.print("W");                  // Wywiew
 lcd.print(sensorThreeTemperature,1);
 lcd.print((char)223);
 lcd.print("C");
}
Pozdrawiam

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


Awatar użytkownika
ethanak
Złota rączka
Posty: 756
Rejestracja: 21 lis 2015, 14:41
Kontakt:

Re: Termometr rekuperatora

Post autor: ethanak » 9 gru 2018, 14:33

A te t1, t2 i t3 to mają być w Kelvinach czy w stopniach Fahrenheita?
Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie.
To jest ewidentna bezczelność!
Janetscha
Młodszy majsterkowicz
Posty: 3
Rejestracja: 31 paź 2016, 21:22

Re: Termometr rekuperatora

Post autor: Janetscha » 9 gru 2018, 16:32

Witam
Czujniki pokazują temperaturę w stopniach Celsiusza
Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 448
Rejestracja: 29 mar 2015, 15:05

Re: Termometr rekuperatora

Post autor: Slawek » 11 gru 2018, 20:07

Biblioteka DallasTemperature domyślnie konwertuje odczyt od celsjusza.
Proszę bardzo :

Kod: Zaznacz cały

#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 33          // Czerpnia
#define SECOND_BUS 35            // Nawiew
#define THIRD_BUS 37            // Wywiew

OneWire oneWire(ONE_WIRE_BUS);
OneWire secondWire(SECOND_BUS);
OneWire thirdWire(THIRD_BUS);

DallasTemperature sensor1(&oneWire);
DallasTemperature sensor2(&secondWire);
DallasTemperature sensor3(&thirdWire);

float sensorOneTemperature = 0.0;
float sensorTwoTemperature = 0.0;
float sensorThreeTemperature = 0.0;
float sprawnosc;

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup(void)
{
	
	sensor1.begin();
	sensor2.begin();
	sensor3.begin();

	sensor1.setResolution(11);
	sensor2.setResolution(11);
	sensor3.setResolution(11);
	
	lcd.begin (16,2);
	

	lcd.clear();
}

void loop(void)
{

	sensor1.requestTemperatures();
	sensorOneTemperature = sensor1.getTempCByIndex(0);
	sensor2.requestTemperatures();
	sensorTwoTemperature = sensor2.getTempCByIndex(0);
	sensor3.requestTemperatures();
	sensorThreeTemperature = sensor3.getTempCByIndex(0);
	
	if(sensorThreeTemperature - sensorOneTemperature != 0) sprawnosc = (sensorTwoTemperature - sensorOneTemperature)/(sensorThreeTemperature - sensorOneTemperature) * 100;
	else sprawnosc = 0;

	displayTemperatures();
}
void displayTemperatures(){
	
	lcd.setCursor(0,0);
	lcd.print("C");
	lcd.print(sensorOneTemperature,1);   //Czerpnia
	lcd.print((char)223);
	lcd.print("C");
	
	
	lcd.setCursor(8,0);
	lcd.print("N");                  // Nawiew
	lcd.print(sensorTwoTemperature,1);
	lcd.print((char)223);
	lcd.print("C");
	
	
	lcd.setCursor(0,1);
	lcd.print("W");                  // Wywiew
	lcd.print(sensorThreeTemperature,1);
	lcd.print((char)223);
	lcd.print("C");
	

	lcd.setCursor(0,2);
	lcd.print("S");                  // sprawnosc
	lcd.print(sprawnosc,1);
	lcd.print("%");

}
Janetscha
Młodszy majsterkowicz
Posty: 3
Rejestracja: 31 paź 2016, 21:22

Re: Termometr rekuperatora

Post autor: Janetscha » 17 gru 2018, 22:44

Bardzo dziękuję
Ze względu na wyjazd mogłem sprawdzić czy działa dopiero dzisiaj.
Wszystko ok.
Jeszcze raz dziękuję za pomoc i pozdrawiam.
ODPOWIEDZ

Strony partnerskie: