DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
meddu
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2014. december 24. szerda, 16:57

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: meddu »

Szasztok!
Olyan problémám van hogy néha nem mér vagy fals értéket ad valamelyik szenzor véletlenszerűen .
ez miatt megzavarodik a relé vezérlés.
Mit kellene változtatnom hogy jó legyen. A szenzorok normál módban vannak 4k7 ellenállással.

Kód: Egész kijelölése

#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>

#define ONE_WIRE_BUS 2    // Hőmérők az 2 lábon

OneWire oneWire(ONE_WIRE_BUS);
LiquidCrystal_I2C lcd(0x27, 20, 4); //lcd a A4,A5 lábon

// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return ( (val / 10 * 16) + (val % 10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return ( (val / 16 * 10) + (val % 16) );
}

// Sznzorok azonosítása
DallasTemperature sensors(&oneWire);

DeviceAddress pufferfent = { 0x28, 0x08, 0xD7, 0x45, 0x92, 0x04, 0x02, 0x31 };// "T1"
DeviceAddress pufferlent = { 0x28, 0xFD, 0x2D, 0x45, 0x92, 0x0E, 0x02, 0x54 };// "T2"
DeviceAddress bojlerfent = { 0x28, 0x13, 0x78, 0x45, 0x92, 0x13, 0x02, 0x4C };// "T3"
DeviceAddress bojlerlent = { 0x28, 0x9F, 0xD1, 0x45, 0x92, 0x11, 0x02, 0x8A };// "T4"
float T1 = 0;
float T2 = 0;
float T3 = 0;
float T4 = 0;

// Változók

int Relay1 = 11;
int Relay2 = 12;

void setup()
{
  // Relék definiálása a portokon
  pinMode (Relay1, OUTPUT);   // bojler fütés
  pinMode (Relay2, OUTPUT);   // cirkuláció bekapcsolása

  digitalWrite(11, HIGH);
  digitalWrite(12, HIGH);

  //hőmérők beállítása
  sensors.begin();
  sensors.setResolution(pufferfent, 9);  //hőmérők beállítása, pontosság 9-12 bit
  sensors.setResolution(pufferlent, 9);
  sensors.setResolution(bojlerfent, 9);
  sensors.setResolution(bojlerlent, 9);

  /*  A fix szöveg megjelentse
     A kiírás beállitsa, balfelső sarok 0,0
     1 oszlop s 0 sor */
  lcd.init();
  lcd.backlight();
  lcd.setCursor(6, 0);
  lcd.print("Bojler ");
  lcd.setCursor(13, 0);
  lcd.print("Puffer ");
  lcd.setCursor(1, 1);
  lcd.print("Felul:");
  lcd.setCursor(1, 2);
  lcd.print("Alul :");

}

void printTemperature(DeviceAddress deviceAddress)
{
  //ha nem látja a hömérséklet szenzort
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
    lcd.print("?");
  } else {
    lcd.print(tempC, 0); // "1" :tizedes értékig irja "2" : szazas értékig
  }
}
void loop()
{

  sensors.requestTemperatures(); // Adatkérés a hőmérőtől
  T1 = sensors.getTempC(pufferfent);
  T2 = sensors.getTempC(pufferlent);
  T3 = sensors.getTempC(bojlerfent);
  T4 = sensors.getTempC(bojlerlent);

  delay(2000);
  // hovairjuk a hőmérsékletet
  /*  Hömrséklet kiírsa */

  lcd.setCursor(7, 1);        // A kiírás bellítsa, balfelső sarok 0,0
  printTemperature(bojlerfent); // Hömérsklet kiíratsa
  lcd.print("\337C  ");

  lcd.setCursor(7, 2);
  printTemperature(bojlerlent);
  lcd.print("\337C  ");

  lcd.setCursor(13, 1);
  printTemperature(pufferfent);
  lcd.print("\337C  ");

  lcd.setCursor(13, 2);
  printTemperature(pufferlent);
  lcd.print("\337C  ");


  //szabalyozas()
  
    if (T3 <= T1)
      digitalWrite(11, HIGH);
    //kapcsoljon Ki
    else if (T3 > 55) digitalWrite(11, HIGH);
    //kapcsoljon Ki
    else if  (T3 < 50)
      digitalWrite(11, LOW);
    //kapcsoljon Be
  

  if (digitalRead(Relay1) == LOW) //relé 1 állapot kiiratása

  {
    lcd.setCursor(1, 3);
    lcd.print("Bojler Futes: BE");
  }
  else
  {
    lcd.setCursor(1, 3);
    lcd.print("Bojler Futes: KI");
  }
}
Kép:
https://drive.google.com/drive/folders/ ... sp=sharing
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: Robert »

Relé: Tápszűrési hiány. Táp rántása.

1-Wire alapok: parazita? 5V-t kap? tápszűrés? kábelhossz? Felhúzóellenállás értéke?
http://www.tavir.hu - a gazda :)
meddu
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2014. december 24. szerda, 16:57

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: meddu »

Táp 2A 5v telefon tőltő.A szondák kábel hossz kb1.5m nem csavart érpáras.
Irtam hogy normál módban van 3 vezetékes bekőtéssel 4k7 a Felhúzóellenállás értéke.
Nem kell müködésben lenie a relének hogy ősze vissza mérjen. Valami a codomban lehet gubanc.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: Robert »

Ha a relé nincs rajta, akkor is megőrül?
Melyik onewire/dallas könyvtárakat használod? Verzió? Illtve Melyik arduino keretrendszert? verzio?
http://www.tavir.hu - a gazda :)
meddu
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2014. december 24. szerda, 16:57

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: meddu »

:?: pontossan nem tudom de ezek vannak feltelepitve: https://drive.google.com/drive/folders/ ... sp=sharing
Arduino nano: ATmega 328P (old bootloader)

Lehúztam a Relémodult teljesen, most is csinálja.
kipróbálom kötök a +5v ra egy 100uf kondit.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: Robert »

max31850 vagy ds18b20 a hőmérőd?
http://www.tavir.hu - a gazda :)
meddu
Újonc
Újonc
Hozzászólások: 10
Csatlakozott: 2014. december 24. szerda, 16:57

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: meddu »

Ds18b20
Kondenzátor nem hozott eredményt. Most is néha mást mutat...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: Robert »

Próbálj másik libraryt...
http://www.tavir.hu - a gazda :)
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: aaszabo »

Ezzel én is találkoztam. Olyan mérési elrendezésben jött elő, ahol viszonylag sokszor mértem. Mondjuk percenként 48 órán keresztül.
Ekkor kb minden 100-200 mérésre esett egy hibás mérés, ami valami maximális érték körüli eredményt adott.
Most is megy egy ilyen műszerem, ami elemről megy már egy éve és 5 percenként hőmérsékletet és tápfeszültséget mér és LoRa-n küldi az adatot. Az egészet ESP32-vel hajtom meg. Tuti, hogy a DS18b20 a ludas, mert a másik mérés nem mutat ilyen hibákat.
Csatoltam egy képet a kiugró értékről.
Homerseklet_tuske-20210227.png
Próbáltam mindent: parazita és nem parazita mód, szűrés, mérés előtti leföldelés, rövid és szigetelt kábel, stb. Mindig megmaradt a jelenség.
Az IC-k különböző évből és gyártási sorozatból származtak.

Egy megoldást tudtam csak a problémára, az pedig a több mérésből az átlagolás. Szerintem 5 mérésből a két szélsőt (legkisebb, legnagyobb) elhagyni és a maradék három átlagát venni jó megoldás. Illetve, ha olyan a mérési elrendezés, akkor az is jó lehet, ha a korábbi méréshez képest 5-10%-nál nagyobb az új mért érték, akkor megismétled a mérést. Ezt maximum 3x ismétled. A harmadiknál már elfogadod a nagy eltéréssel mért értéket is.

Arra vigyázz, hogy ne túl gyorsan kérd le az egymás utáni méréseket és ne túl sokat, mert ez a procedúra önmagában melegíti az IC-t.
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: aaszabo »

És nem library függő, mert többet is használtam. Még írtam is egyet. Arduino (Mega, Uno, Nano) alatt is jött. ESP8266 és ESP32 Arduino környezetben is tapasztaltam. Sőtt több évvel ezelőtt még BASCOM alatt is mutatkozott a jelenség.
Szerintem szimplán az IC működésének velejárója.
Avatar
aaszabo
Tranzisztorgyógyász
Hozzászólások: 179
Csatlakozott: 2012. január 22. vasárnap, 7:00

Re: DS 1820 hőmérő - nem lehet kolvasni többet - hol a probléma?

Hozzászólás Szerző: aaszabo »

Ami érdekes a mostani jelenségben, hogy mindig 85 fokot mutat, amikor hibázik. a Korábbi BASCOM-os mérésnél is ismétlődő értékek voltak, de nem mindig ugyan az jött. Két, vagy három érték ismétlődött. Szóval szerintem a rendszeredet fel kell készíteni arra, hogy statisztikailag kiszűrje a hibát.
Válasz küldése