• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem po dodaniu komend
#11
Tak bo albo temp wyszła poza zakres czujnika albo ardu pogubił komunikację z nimi wtedy wyświetla -127
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#12
(30-11-2016, 00:48)Automatyk napisał(a): Funkcja delay jest odpowiedzialna za ten błąd ten wątek juz tu był gdzieś poruszony musisz użyć innej funkcji np millis

(02-12-2016, 18:14)JasQ napisał(a): Tak bo albo temp wyszła poza zakres czujnika albo ardu pogubił komunikację z nimi wtedy wyświetla -127

Tak . Tylko czy temperatura 15 stopni (do takiej spada temperatura gdy nie palę ) jest poza zakresem czujników DS18B20 ? Na pewno nie . I jeszcze jeden ciekawy efekt jaki zaobserwowałem . Wczoraj tak jak pisałem napaliłem i w napalonym układzie wszystko działało ok mimo że układ resetowałem z automatu przez wspomniany przekaznik . Poszedłem spać . Rano wstałem , grzejniki zimne a mój wyświetlacz oczywiście wskazuje to co zamieściłem na zdjęciu drugim w poprzednich odpowiedziach (czyli wskazywał nie to co powinien ) Ale teraz zrobiłem inaczej niż zawsze . Nie wyłączałem z prądu arduino aby go zresetować , tylko zostawiłem wszystko jak było i rozpaliłem w piecu . Poszedłem do domu i gdzieś po pół godzinie poszedłem zobaczyć wyświetlacz . A tu niespodzianka . Wyświetlacz wskazuje prawidłowe temperatury na piecu (czyli jak na zdjęciu pierwszym) Jest to wszystko bardzo dziwne i tajemnicze i wygląda na to że programowo tu już nic nie zrobię .I myślę że nie jest tu też winien za długi przewód na którym jest magistrala I2C .Ale co jest winne ?
 
Odpowiedź
#13
Na magistrali I2C masz podpięty tylko jednego DS18B20? W jakim trybie go podpinasz? Jakiej wartości rezystor podciągający zastosowałeś? Być może właśnie w nim leży problem.
 
Odpowiedź
#14
(03-12-2016, 19:17)piotr2393 napisał(a): Na magistrali I2C masz podpięty tylko jednego DS18B20? W jakim trybie go podpinasz? Jakiej wartości rezystor podciągający zastosowałeś? Być może właśnie w nim leży problem.

Na magistrali I2C są podpięte wyświetlacze a nie czujniki . Rezystor o ile dobrze pamiętam 4,7k . A całość jest spięta podobnie jak na zdjęciu poniżej , tylko są 4 DS18B20 .

[Obrazek: dallas.jpg]
 
Odpowiedź
#15
Wydaje mi się, że długość przewodów, czyli odległość Slave'ów(termometrów) od Mastera(Arduino) może mieć wpływ na błędny odczyt z czujników. Jeśli kable nie przekraczają długości 20m to wystarczy mały rezystor podciągający 2k. Dodawanie kolejnych termometrów redukuje praktyczną możliwość poprawnej pracy.
Zajrzyj tutaj, może to przybliży Ci rozwiązanie problemu.
https://www.maximintegrated.com/en/app-n...mvp/id/148
 
Odpowiedź
#16
Poczytaj tutaj. To o pomiarze temperatury i kompensacji błędów.
 
Odpowiedź
#17
(04-12-2016, 14:18)piotr2393 napisał(a): Wydaje mi się, że długość przewodów, czyli odległość Slave'ów(termometrów) od Mastera(Arduino) może mieć wpływ na błędny odczyt z czujników. Jeśli kable nie przekraczają długości 20m to wystarczy mały rezystor podciągający 2k. Dodawanie kolejnych termometrów redukuje praktyczną możliwość poprawnej pracy.
Zajrzyj tutaj, może to przybliży Ci rozwiązanie problemu.
https://www.maximintegrated.com/en/app-n...mvp/id/148

Nie wiem drodzy koledzy czy dokładnie czytacie to co piszę . Aktualnie problem rozbija się o zimny i ciepły piec . Bo jak teraz grzeję już dwa dni bez gaszenia pieca to wszystko chodzi prawidłowo a jak w piecu zgaśnie to zaczynają się dziać dziwne rzeczy na wyświetlaczach i to zarówno na tym co jest na przewodzie pół metrowym jak i na tym co jest na przewodzie 10 metrowym .
 
Odpowiedź
#18
(05-12-2016, 16:50)maniolx napisał(a): Nie wiem drodzy koledzy czy dokładnie czytacie to co piszę . Aktualnie problem rozbija się o zimny i ciepły piec . Bo jak teraz grzeję już dwa dni bez gaszenia pieca to wszystko chodzi prawidłowo a jak w piecu zgaśnie to zaczynają się dziać dziwne rzeczy na wyświetlaczach i to zarówno na tym co jest na przewodzie pół metrowym jak i na tym co jest na przewodzie 10 metrowym .
Bo zapewne pojemność się zmienia.
Magistrala i2c zastała zaprojektowana do określonych celów i gwarantuje poprawną prace na określone odległości. Możesz się doktoryzować na tym piecu i tej magistrali tylko po co? Zrób tak jak pisałem wcześniej i zapomnisz o problemie.
Pomagam za darmo więc szanuj mój czas.
Wklejaj tekst a nie jego zdjęcie.
Nie pisz następnego postu jak nie odpowiedziałeś na poprzedni.
Jak mądrze zadawać pytania
 
Odpowiedź
#19
(05-12-2016, 18:10)namok napisał(a):
(05-12-2016, 16:50)maniolx napisał(a): Nie wiem drodzy koledzy czy dokładnie czytacie to co piszę . Aktualnie problem rozbija się o zimny i ciepły piec . Bo jak teraz grzeję już dwa dni bez gaszenia pieca to wszystko chodzi prawidłowo a jak w piecu zgaśnie to zaczynają się dziać dziwne rzeczy na wyświetlaczach i to zarówno na tym co jest na przewodzie pół metrowym jak i na tym co jest na przewodzie 10 metrowym .
Bo zapewne pojemność się zmienia.
Magistrala i2c zastała zaprojektowana do określonych celów  i gwarantuje poprawną prace na określone odległości. Możesz się doktoryzować na tym piecu i tej magistrali tylko po co? Zrób tak jak pisałem wcześniej i zapomnisz o problemie.

Ale pojemność czego się zmienia ? magistrali , czujników , czy czego ? I bardzo nie rozumiem dlaczego się zmienia . Miejsce w którym jest centalka , przewody do wyświetlacza , przewody do czujników ma cały czas taką samą zimną temperaturę bo piwnica nie jest ogrzewana a piec zaizolowany . Zresztą idąc tym tokiem rozumowania to jakbym chciał mierzyć tym układem temperaturę w lodówce bądz na dworze to nie dałoby rady bo pojemność jest za niska lub za wysoka ? A co z przypadkiem kiedy w piecu jest nienapalone robię restart napięciowy i wszystko chodzi dobrze - tu nie przeszkadza pojemność ? Jedno jest pewne . W przeróbkę całego układu bawić się nie będę bo musiałbym wszystko rozebrać dokładać jakieś układy i siedzieć znowu kilkadziesiąt godzin i pytać po forach jak to zrobić . Napisałem tu bo sądziłem że uda się to jakoś zrobić programowo . Jak nie to trudno . popróbuję jeszcze zrobić to resetem tak jak mi to napisał JasQ a jak nie da rady to popróbuję jeszcze z resetem napięcia .
 
Odpowiedź
#20
Nie chcąc zakładać nowego tematu prosiłbym o pomoc w dodaniu pewnej komendy do skeczu . Chodzi mi o to aby po przekroczeniu zadanej temperatur załączał się na pięć minut buzzer . Konkretnie jakby ktoś nie czytał wcześniejszych postów , skecz jest taki :
Kod:
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BACKLIGHT_PIN 3
LiquidCrystal_I2C  lcd(0x26, 2, 1, 0, 4, 5, 6, 7);
LiquidCrystal_I2C  lcd2(0x27, 2, 1, 0, 4, 5, 6, 7);

#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);




DeviceAddress P1 = { 0x28, 0xFF, 0xDF, 0x6E, 0x81, 0x15, 0x1, 0x78 };
DeviceAddress P2 = { 0x28, 0xFF, 0xF5, 0x31, 0xB1, 0x15, 0x1, 0xA1 };
DeviceAddress P3 = { 0x28, 0xFF, 0x42, 0x2F, 0xB0, 0x15, 0x3, 0x85 };
DeviceAddress P4 = { 0x28, 0xFF, 0xDE, 0x2F, 0xB1, 0x15, 0x1, 0x4  };

void setup()
{
 Serial.begin(9600);
 sensors.begin();
 Wire.begin();
 lcd.begin(16, 2);
 lcd2.begin(20,4);
 lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
 lcd.setBacklight(HIGH);
 lcd2.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
 lcd2.setBacklight(HIGH);
pinMode(3 , OUTPUT);
}
void loop() {
 if ( (millis()/1000)  < 20 )digitalWrite(3,HIGH);else digitalWrite(3,LOW);
 sensors.requestTemperatures();
 
 int tempC1 = sensors.getTempC(P1);
 int tempC2 = sensors.getTempC(P2);
 int tempC3 = sensors.getTempC(P3);
 int tempC4 = sensors.getTempC(P4);

 lcd.setCursor (0, 0);
 lcd.write("PIEC ");
 lcd.print(tempC1, 1);
 lcd.write(byte(223));

 lcd.setCursor (9, 0);
 lcd.write("WYJ ");
 lcd.print(tempC2, 1);
 lcd.write(byte(223));

 lcd.setCursor (0, 1);
 lcd.write("POWR ");
 lcd.print(tempC3, 1);
 lcd.write(byte(223));

 lcd.setCursor (9, 1);
 lcd.write("MIE ");
 lcd.print(tempC4, 1);
 lcd.write(byte(223));
 
 sensors.requestTemperatures();{
 float tempC1 = sensors.getTempC(P1);
 float tempC2 = sensors.getTempC(P2);
 float tempC3 = sensors.getTempC(P3);
 float tempC4 = sensors.getTempC(P4);

 lcd2.setCursor (0, 0);
 lcd2.write("TEMP.PIEC    ");
 lcd2.print(tempC1, 1);
 lcd2.write(byte(223));
 
 lcd2.setCursor (0, 1);
 lcd2.write("WYJSCIE PIEC ");
 lcd2.print(tempC2, 1);
 lcd2.write(byte(223));

 lcd2.setCursor (0, 2);
 lcd2.write("POWROT WODY  ");
 lcd2.print(tempC3, 1);
 lcd2.write(byte(223));

 lcd2.setCursor (0, 3);
 lcd2.write("MIESZAJACY   ");
 lcd2.print(tempC4, 1);
 lcd2.write(byte(223));


 }



   
}
 A chciałbym aby po przekroczeniu zadanej temperatury przez pięc minut załączał się buzer z takim fragmentem skecza :

Kod:
void setup() {
 pinMode(A5, OUTPUT);
}

void loop() {
 digitalWrite(A5, LOW);
 delay(1000);
 digitalWrite(A5, HIGH);
 delay(1000);
}

Bardzo proszę o pomoc bo nie udało mi się wsadzić poprawnie tego kawałka do skecza .
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości