Arduino Polska Forum
Kilka czujników temp. + termostat 2-przekaznikowy - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Instalacja i rozwiązywanie problemów (https://forum.arduinopolska.pl/dzial-instalacja-i-rozwi%C4%85zywanie-problem%C3%B3w)
+--- Wątek: Kilka czujników temp. + termostat 2-przekaznikowy (/watek-kilka-czujnik%C3%B3w-temp-termostat-2-przekaznikowy)

Strony: 1 2


Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 11-03-2017

Witam.
Potrzebuję pomocy Sad
Potrzebuję dodać do obecnego kodu drugi przekaźnik który załączał by się od 50*C
Próbuję na wszelkie sposoby i cały czas jest załączony.

Do tego dodać 2 czujnik temperatury DS18B20 i trzeci Max 6675 aby wyświetlały się w dolnej linijce wyświetlacza
Kod:
#include <OneWire.h>

Kod:
#include <DallasTemperature.h>
#include <Wire.h>  // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>

int p1 = 8;
int p2 = 6;
int p1state = 0;
int p2state = 0;


LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define ONE_WIRE_BUS 7


OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw = 40; // ustaw temperature
int przekaznik = 12; // pin przekaznik



void setup(void)


{
pinMode(przekaznik,OUTPUT);



 lcd.begin(16, 2);
  lcd.print("Regulator Temp:");
 sensors.begin();
 Serial.begin(9600);
}

void wys(void){
sensors.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("T=");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("    ");
lcd.print("N=");
lcd.print(nastaw);
;
if (sensors.getTempCByIndex(0) < (nastaw)) {
     digitalWrite(przekaznik,HIGH);
  } else {
     digitalWrite(przekaznik,LOW);



 


       }
       
  }

void loop(void)
{
p1state = digitalRead(p1);
 p2state = digitalRead(p2);
 if(p1state == HIGH){nastaw=nastaw+1;}
 if(p2state == HIGH){nastaw=nastaw-1;}
 wys();



}


Proszę o pomoc bo już mnie głowa rozbolała od szukania
Pozdrawiam Minek


RE: Kilka czujników temp. + termostat 2-przekaznikowy - namok - 11-03-2017

Naucz się podstaw programowania korzystając z dowolnego kursu arduino a zrobisz to z zamkniętymi oczami.
Przykład oprogramowania kilku czujników temperatury znajdziesz w przykładach dołączonych do biblioteki, a jeśli angielski jest problemem to znajdziesz takie przykłady po polsku.


RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017

Gdybym nie męczył się z tym kilka dni to bym nie pisał na forum!
Takie podstawy to jeszcze rozumie (pod warunkiem że są pojedyncze)
gdyby mi ten drugi przekaźnik zadziałał to może dalej bym poszedł.
znam już trochę i pewnie pisząc robię jakiś błąd i w tym problem.
Kod:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>  // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>

int p1 = 8;
int p2 = 6;
int p1state = 0;
int p2state = 0;

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define ONE_WIRE_BUS 7

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw = 40; // ustaw temperature
int przekaznik = 12; // pin przekaznik
int przekaznik1 = 11; // pin przekaznik

void setup(void)

{
pinMode(przekaznik,OUTPUT);
pinMode(przekaznik1,OUTPUT);

lcd.begin(16, 2);
  lcd.print("Regulator Temp:");
 sensors.begin();
 Serial.begin(9600);
}

void wys(void){
sensors.requestTemperatures();
lcd.setCursor(0,0);
lcd.print("T=");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("    ");
lcd.print("N=");
lcd.print(nastaw);
;
if (sensors.getTempCByIndex(0) < (nastaw)) {
     digitalWrite(przekaznik,HIGH);
  } else {
     digitalWrite(przekaznik,LOW);
 if (sensors.getTempCByIndex(0) < (50)) {
     digitalWrite(przekaznik1,HIGH);
  } else {
     digitalWrite(przekaznik1,LOW);    
       }
  }
void loop(void)
{
p1state = digitalRead(p1);
 p2state = digitalRead(p2);
 if(p1state == HIGH){nastaw=nastaw+1;}
 if(p2state == HIGH){nastaw=nastaw-1;}
 wys();

}



RE: Kilka czujników temp. + termostat 2-przekaznikowy - ryro.glw - 12-03-2017

niepotrzebnie odczytujesz temperature z ds18 kilka razy pod rzad, odczytaj ja raz i przypisz do zmiennej a potem juz dzialaj na zmiennej

wyslane z Tapatalka


RE: Kilka czujników temp. + termostat 2-przekaznikowy - namok - 12-03-2017

Podstawowa rzecz w programowaniu to formatowanie kodu. Pilnując porządku wiele błędów widać od razu. Poniżej wstawiam Twój kod z zastosowaniem automatycznego formatowania:
Kod:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>  // Comes with Arduino IDE
#include <LiquidCrystal_I2C.h>

int p1 = 8;
int p2 = 6;
int p1state = 0;
int p2state = 0;

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#define ONE_WIRE_BUS 7

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int nastaw = 40; // ustaw temperature
int przekaznik = 12; // pin przekaznik
int przekaznik1 = 11; // pin przekaznik

void setup(void)

{
 pinMode(przekaznik, OUTPUT);
 pinMode(przekaznik1, OUTPUT);

 lcd.begin(16, 2);
 lcd.print("Regulator Temp:");
 sensors.begin();
 Serial.begin(9600);
}

void wys(void) {
 sensors.requestTemperatures();
 lcd.setCursor(0, 0);
 lcd.print("T=");
 lcd.print(sensors.getTempCByIndex(0));
 lcd.print("    ");
 lcd.print("N=");
 lcd.print(nastaw);
 ;
 if (sensors.getTempCByIndex(0) < (nastaw)) {
   digitalWrite(przekaznik, HIGH);
 } else {
   digitalWrite(przekaznik, LOW);
   if (sensors.getTempCByIndex(0) < (50)) {
     digitalWrite(przekaznik1, HIGH);
   } else {
     digitalWrite(przekaznik1, LOW);
   }
 }
 void loop(void)
 {
   p1state = digitalRead(p1);
   p2state = digitalRead(p2);
   if (p1state == HIGH) {
     nastaw = nastaw + 1;
   }
   if (p2state == HIGH) {
     nastaw = nastaw - 1;
   }
   wys();

 }

Jeśli używasz bibliotek to podawaj ich źródła.


RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017

Witam zacząłem od nowa bo sam już się pogubiłemSmile
Pierwsze uruchomienie z 3 czujnikami 2x DS18B20 i 1 Max6675
Na wyświetlaczu pokazuje mi 2 dobre temp. z czujników Ds i 0.00 z czujnika Max
Jak rozwiąże ten problem to dopisze się regulacje temp. z konkretnego czujnika.
Pozdrawiam
Kod PHP:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>  //
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DS18B20.h>
#include "max6675.h"
 //Definicje, definicje:
 #define SO_PIN  2  // 6675 Serial Output
#define CS_PIN  3  // 6675 Chip Select
#define CK_PIN  4  // 6675 Clock Pin

#define TOO_HOT  75.0  // To try limit calculation
#define TOO_COLD 62.5 
MAX6675 thermocouple(CK_PINCS_PINSO_PIN);
LiquidCrystal_I2C lcd(0x3F21045673POSITIVE);

OneWire oneWire(7); //Podłączenie do 7
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki
float DegreesC;
DeviceAddress a = { 0x280xFF0x6E0xE50x330x160x40x2E };
DeviceAddress b = { 0x280xFF0x30xE70x330x160x40xD4 };

void setup(void) {
 
 Serial.begin(9600);
 
 
  sensors
.begin(); //Inicjalizacja czujnikow
 
lcd.begin(162); //Deklaracja typu
 
lcd.setCursor(0,0);
 
lcd.print("W=");
 
lcd.print(sensors.getTempCByIndex(0));
 
  lcd.setCursor(0,1);
 
lcd.print("P=");
 
lcd.print(sensors.getTempCByIndex(1));
 
lcd.setCursor(8,1);
 
lcd.print("S=");
lcd.print(DegreesC);
}
 
void loop(void) { 
 
 sensors.requestTemperatures(); //Pobranie temperatury czujnika
 
 Serial.print("Woda: ");
 
 Serial.println(sensors.getTempCByIndex(0));  //Wyswietlenie informacji
 
 delay(500);
 
 Serial.print("Powietrze: ");
 
 Serial.println(sensors.getTempCByIndex(1));  //Wyswietlenie informacji
 
 delay(500);
 
 DegreesC thermocouple.readCelsius();
 
 Serial.print("C = "); 
 
 Serial.println(DegreesC);
 
 delay(250);




RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017

Na monitorze portu mam takie odczyty:
a: 20.81
b: 20.69
C: 25.25
-127.00
a: 20.81
b: 20.62
C: 25.25
-127.00
Na wyświetlaczu widnieje pod czujnikiem -127
Jakieś pomysły?
Kod PHP:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>  //
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DS18B20.h>
#include "max6675.h" 
 //Definicje, definicje:
#define SO_PIN  2  // 6675 Serial Output
#define CS_PIN  3  // 6675 Chip Select
#define CK_PIN  4  // 6675 Clock Pin

#define TOO_HOT  75.0  // To try limit calculation
#define TOO_COLD 62.5 
MAX6675 thermocouple(CK_PINCS_PINSO_PIN);
float DegreesC
LiquidCrystal_I2C lcd(0x3F21045673POSITIVE);

OneWire oneWire(7); //Podłączenie do 7
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki

DeviceAddress a = { 0x280xFF0x6E0xE50x330x160x40x2E };
DeviceAddress b = { 0x280xFF0x30xE70x330x160x40xD4 };

void setup(void) {
 
 Serial.begin(9600);
 
 
  sensors
.begin(); //Inicjalizacja czujnikow
 
lcd.begin(162); //Deklaracja typu
 
lcd.setCursor(0,0);
 
lcd.print("W=");
 
lcd.print(sensors.getTempCByIndex(0));
 
  lcd.setCursor(0,1);
 
lcd.print("P=");
 
lcd.print(sensors.getTempCByIndex(1));
 
lcd.setCursor(8,1);
 
lcd.print("S=");
 
lcd.print(sensors.getTempCByIndex(3));

}
 
void loop(void) { 
 
 sensors.requestTemperatures(); //Pobranie temperatury czujnika
 
 Serial.print("a: ");
 
 Serial.println(sensors.getTempCByIndex(0));  //Wyswietlenie informacji
 
 delay(500);
 
 Serial.print("b: ");
 
 Serial.println(sensors.getTempCByIndex(1));  //Wyswietlenie informacji
 
 delay(500);

 
  DegreesC thermocouple.readCelsius();

 
  Serial.print("C: "); 
 
  Serial.println(DegreesC);
 
  Serial.println(sensors.getTempCByIndex(3));
 
  delay(500);




RE: Kilka czujników temp. + termostat 2-przekaznikowy - -adamek - 12-03-2017

Serial.println(sensors.getTempCByIndex(3)); Co to jest ?


RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017

(12-03-2017, 13:51)-adamek napisał(a): Serial.println(sensors.getTempCByIndex(3)); Co to jest ?

próbowałem odnieś się do czujnika 6675 aby był widoczny na wyświetlaczu


RE: Kilka czujników temp. + termostat 2-przekaznikowy - Minek3 - 12-03-2017

Przy tych ustawieniach dobrze pokazuje na monitorze portów ale na wyświetlaczu 0.00
Woda: 47.81
Powietrze: 21.81
C = 27.50
Woda: 47.81
Powietrze: 21.81
C = 28.00


Kod PHP:
#include <LiquidCrystal_I2C.h>
#include <Wire.h>  //
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DS18B20.h>
#include "max6675.h"
 //Definicje, definicje:
 #define SO_PIN  2  // 6675 Serial Output
#define CS_PIN  3  // 6675 Chip Select
#define CK_PIN  4  // 6675 Clock Pin

#define TOO_HOT  75.0  // To try limit calculation
#define TOO_COLD 62.5 
MAX6675 thermocouple(CK_PINCS_PINSO_PIN);
LiquidCrystal_I2C lcd(0x3F21045673POSITIVE);

OneWire oneWire(7); //Podłączenie do 7
DallasTemperature sensors(&oneWire); //Przekazania informacji do biblioteki
float DegreesC;
DeviceAddress a = { 0x280xFF0x6E0xE50x330x160x40x2E };
DeviceAddress b = { 0x280xFF0x30xE70x330x160x40xD4 };

void setup(void) {
 
 Serial.begin(9600);
 
 
  sensors
.begin(); //Inicjalizacja czujnikow
 
lcd.begin(162); //Deklaracja typu
 
lcd.setCursor(0,0);
 
lcd.print("W=");
 
lcd.print(sensors.getTempCByIndex(0));
 
  lcd.setCursor(0,1);
 
lcd.print("P=");
 
lcd.print(sensors.getTempCByIndex(1));
 
lcd.setCursor(8,1);
 
lcd.print("C=");
lcd.print(DegreesC);
}
 
void loop(void) { 
 
 sensors.requestTemperatures(); //Pobranie temperatury czujnika
 
 Serial.print("Woda: ");
 
 Serial.println(sensors.getTempCByIndex(0));  //Wyswietlenie informacji
 
 delay(500);
 
 Serial.print("Powietrze: ");
 
 Serial.println(sensors.getTempCByIndex(1));  //Wyswietlenie informacji
 
 delay(500);
 
 Serial.print("C = "); 
 
 Serial.println(DegreesC);
 
 DegreesC thermocouple.readCelsius();
 
 delay(250);