DS 1820 hőmérő élesztés
Re: DS 1820 hőmérő élesztés
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)
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)
Re: DS 1820 hőmérő élesztés
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.
Re: DS 1820 hőmérő élesztés
-> 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.
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.
Re: DS 1820 hőmérő élesztés
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.
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.
Re: DS 1820 hőmérő élesztés
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...
_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...
Re: DS 1820 hőmérő élesztés
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...
Re: DS 1820 hőmérő élesztés
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
- korábbi mérési eredményt
- lassú a program és lefut a hőmrsékletmérés
Re: DS 1820 hőmérő élesztés
Bemásolom a programot, remélem nem kapok a fejemre, amiért arduinos és Bascom topikban vagyunk 
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

- Hozzászólások: 4
- Csatlakozott: 2014. március 2. vasárnap, 12:05
Re: DS 1820 hőmérő élesztés
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?
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?
Re: DS 1820 hőmérő élesztés
http://avrhelp.mcselec.com/index.html?u ... otocol.htm
A Bascom-AVR fórumban Bascomul kapott válasz
A 1820 != 18B20 !
A Bascom-AVR fórumban Bascomul kapott válasz
A 1820 != 18B20 !
Re: DS 1820 hőmérő élesztés
Standard dallas ds1820-hoz tudna valaki példaprogramot linkelni?
Sehol sem találok! :S
Sehol sem találok! :S
Re: DS 1820 hőmérő élesztés
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
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
Re: DS 1820 hőmérő élesztés
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
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