DS 1820 hőmérő élesztés

Hogyan programozzak AVR chipet? Programozók beállításai...
Bascom nyelvű programok...
Válasz küldése
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő élesztés

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

Sűrű kiolvasás: önmagát (is) melegíti.
DS18S20: alapban 9bites, de 12 bitig feltornászható (0.5 fok helyett 0.0625). Fontos! Adatlap vége: ismétlődő kiolvasás pontossága illetve abszolút pontosság! (0.5 fok vs. 1 fok)
holex
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2013. október 29. kedd, 1:35

Re: DS 1820 hőmérő élesztés

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

DS18B20 hőmérőnél a konverziós idő 12 bites felbontásban 750 ms. Ezt csak parazita módban kell kivárni, vagy akkor is, ha külön tápfeszt kap? Mert én nem állítottam be várakozást a kiolvasás előtt, mégsem dobott még soha CRC hibát.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő élesztés

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

-> Adatlap!

Parazita módban kell a 750 msec (de ez is a DS1820-ra igaz, nem a DS1820S-re)
Tápos megoldásban ~150-200 msec.
holex
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2013. október 29. kedd, 1:35

Re: DS 1820 hőmérő élesztés

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

Ezt írja az adatlap:
If the DS18B20 is powered by an
external supply, the master can issue read time slots after the Convert T command and the DS18B20 will
respond by transmitting a 0 while the temperature conversion is in progress and a 1 when the conversion
is done. In parasite power mode this notification technique cannot be used since the bus is pulled high by
the strong pullup during the conversion.


Akkor ez azt jelenti, hogy a 0x44 (konverzió) után rögtön mehet is a 0xBE (beolvasási utasítás), és rögtön utána pedig a bájtonkénti beolvasás, nem? Nem kell betenni sehová delayt, mert a beolvasásnál - gondolom - megvárja a függvény, hogy 1-es érték jöjjön.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő élesztés

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

Rosszul gondolod.
_NEKED_ kell nézni, hogy a buszt elengedte-e, és _utána_ olvashatod az eredményt...
Én sima delay-t rakok bele a kódba...
holex
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2013. október 29. kedd, 1:35

Re: DS 1820 hőmérő élesztés

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

De ha nem várom ki azt az időt és fals adatok lesznek a scratchpad-ben, akkor a CRC arra úgyis hibát dob, nem? Tehát működőképes úgy is a dolog, hogy beolvasom a 9 bájtot, csinálo rá egy CRC ellenőrzést, és ha azon elbukik, akkor nem használom fel a mérési eredményt. Csak azért kérdem, mert nekem valamiért delay nélkül is működik a dolog, CRC hibát sem dob, meg az értékek is jónak tűnnek, és nem értem, hogy miért...
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő élesztés

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

Nem dob hibát. A scratch adatokat kapod meg....
- korábbi mérési eredményt
- lassú a program és lefut a hőmrsékletmérés
holex
Biztosítékgyilkos
Hozzászólások: 70
Csatlakozott: 2013. október 29. kedd, 1:35

Re: DS 1820 hőmérő élesztés

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

Bemásolom a programot, remélem nem kapok a fejemre, amiért arduinos és Bascom topikban vagyunk :D

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

void getTemp() {
  int SignBit, Tc_100, Whole, TReading;
  byte i;
  byte data[9];

  ds.reset();
  ds.select(addr);
  ds.write(0x44);  

  homeroelerheto=ds.reset();
  ds.select(addr);    
  ds.write(0xBE);        

  if (!homeroelerheto){
       lcd.setCursor(0,1);
       lcd.print("HIBA");
       return;
  }


  for (i = 0; i < 9; i++)    
    data[i] = ds.read();

  if (OneWire::crc8(data, 8) != data[8]) {
    lcd.setCursor(0,1);
    lcd.print("CRC HIBA");
    return;
  }

  TReading=(data[1] << 8) + data[0];
 
}

astalavista1199
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2014. március 2. vasárnap, 12:05

Re: DS 1820 hőmérő élesztés

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

Admin: Témaidegen hozzászólás, duplikált post. Törölve.
viewtopic.php?f=4&t=1461
bgachip
DrótVégénSzéndarab
Hozzászólások: 49
Csatlakozott: 2013. november 5. kedd, 20:00

Re: DS 1820 hőmérő élesztés

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

Sziasztok!

Van egy Dallas ds1820-as hőmérséklet thermometerem, de nem tudom életre kelteni.
Próbáltam ds18b20-ra írt programot futtatni rá, de nem ismeri fel.
Tudnátok linkelni oldalt, ahol van leírás kóddal?
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő élesztés

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

http://avrhelp.mcselec.com/index.html?u ... otocol.htm

A Bascom-AVR fórumban Bascomul kapott válasz :)

A 1820 != 18B20 !
bgachip
DrótVégénSzéndarab
Hozzászólások: 49
Csatlakozott: 2013. november 5. kedd, 20:00

Re: DS 1820 hőmérő élesztés

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

Standard dallas ds1820-hoz tudna valaki példaprogramot linkelni?
Sehol sem találok! :S
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: DS 1820 hőmérő élesztés

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

bgachip
DrótVégénSzéndarab
Hozzászólások: 49
Csatlakozott: 2013. november 5. kedd, 20:00

Re: DS 1820 hőmérő élesztés

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

Köszi!

Közben rájöttem, hogy ds18b20-am van.
A .cpp+.h a helyén példakód viszont errort dob, mi lehet a gond?
Mellékelek egy képet a hibáról.
http://kepfeltoltes.hu/140413/ds18b20_w ... es.hu_.png
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: DS 1820 hőmérő élesztés

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

Ezek a Tipus definiciók az stdint.h –ban találhatók.
http://www.nongnu.org/avr-libc/user-man ... nt_8h.html
http://www.nongnu.org/avr-libc/user-man ... ource.html

Typedefs
Exact-width integer types

Integer types having exactly the specified width
typedef signed char int8_t
typedef unsigned char uint8_t
typedef signed int int16_t
typedef unsigned int uint16_t
typedef signed long int int32_t
typedef unsigned long int uint32_t
typedef signed long long int int64_t
typedef unsigned long long int uint64_t
Válasz küldése