DS 1820 hőmérő élesztés
Pontosság illetve reprodukálhatóság valamint a több hőmérő esetén az együttfutás+mérési eltérés érdekes lehet. nézz meg valami adatlapot ott van szépen satírozva a mezők, hogy milyen hőfok esetén mit és hogyan mér a hőmérő.
Kalibrácó nélkül a jellemző alapadatok:
- méréspi pontosság +/- 0,5...1,5 fok a ténylegeshez képest
- reprodukálhatóság +/- 1-2 LSB (belső AD konverter hibája)
Kalibrácó nélkül a jellemző alapadatok:
- méréspi pontosság +/- 0,5...1,5 fok a ténylegeshez képest
- reprodukálhatóság +/- 1-2 LSB (belső AD konverter hibája)
A DS1820 az 1Wire buszos (max 30 méter, parazita táp),7kaz írta:A DS1820-as helyett én inkább a DS1631-et ajánlanám. Ha számít a felbontás és a pontosság.
A DS1631 az i2c buszos (~4-5 méter, +5V kell neki)....
Más a kettő....
Ami poén: DS1921 Thermocron i-button (gombelem+hőmérő+óra+memória egyben....)
Legjobb tudomásom szerint a DS18S20 az ugyan az mint a DS1820, csak a tokozáson nem tüntetik fel az "S" betüt. De lehet hogy rosszul tudom.A DS18S20 az nem a katonai?
Mik a különbségek? kezelési tapasztalat is jöhet (ha nem gond, a könyv 1-wire fejezetébe bekerülne...).
A 9 bitest használni szoktam normál és parazita üzemmódban. A különbség a bekötés módjában van, valamint a szoftverben szoktam adni 1mp várakozást a "hőmérsékletkonvertálás" utasítás és az "adatkiolvasás" utasítás között. Egyébként semmi különbség.
A holnap még írok.
További tapasztalatok a DSxxxx ről.
- csupaszon, mindenféle egyéb burkolat nélkül akár vízben is használható
- 20-25 méteres 2eres tömör telefonkábelon parazita üzemmódban csont nélkül működik.
- ami zavaró lehet: ha hibása hőmérséklet konvertálás, akkor eredményül 85 -öt ad vissza
- parazita üzemmódban a két szélső lábat össze kell forrasztani (ez lesz a GND) (középső az adat vezeték) és 2 eres drótra mehet
- 12 bitest feltámasztottam de még tesztelés alatt van.
A protokollja elég agyament. De használható. Csináltam egy rutint ami tizedfok pontosan adja vissza az értékeket (mert ugye az érzékelő 0.5 0.25 0.125 0.0625 értékeket ad). Negatív tartományban még nem vagyok meggyőződve arról , hogy jól mér. (-6 fok lenne a fagyasztóban?)
De mint említettem teszt alatt van.
Hirtelen ennyi. Kérdés?
- csupaszon, mindenféle egyéb burkolat nélkül akár vízben is használható
- 20-25 méteres 2eres tömör telefonkábelon parazita üzemmódban csont nélkül működik.
- ami zavaró lehet: ha hibása hőmérséklet konvertálás, akkor eredményül 85 -öt ad vissza
- parazita üzemmódban a két szélső lábat össze kell forrasztani (ez lesz a GND) (középső az adat vezeték) és 2 eres drótra mehet
- 12 bitest feltámasztottam de még tesztelés alatt van.
A protokollja elég agyament. De használható. Csináltam egy rutint ami tizedfok pontosan adja vissza az értékeket (mert ugye az érzékelő 0.5 0.25 0.125 0.0625 értékeket ad). Negatív tartományban még nem vagyok meggyőződve arról , hogy jól mér. (-6 fok lenne a fagyasztóban?)
De mint említettem teszt alatt van.
Hirtelen ennyi. Kérdés?
Hello!
Megépítettem az áramkört és nem tudom, hogy jól működik-e. Ezt írja ki szobahőmérsékleten:
És ez a program:
Működik, és melyik adat mit jelent a kijelzőn?
Megépítettem az áramkört és nem tudom, hogy jól működik-e. Ezt írja ki szobahőmérsékleten:
És ez a program:
Kód: Egész kijelölése
$regfile = "2313def.dat"
$crystal = 4000000
Config Sda = Portd.5
Config Scl = Portd.4
Config I2cdelay = 100
Config Pind.6 = Output
Const Lm76write = &H90
Const Lm76read = &H91
Const Lm76resolution = 0.0625
Dim Tempint As Word
Dim Tempbytelo As Byte
Dim Tempbytehi As Byte
Dim Temperature As Single
Dim Tempstring As String * 4
Dim Tempsign As Byte
Dim Flashnumber As Byte
Dim Flashloop As Byte
Dim Flashtime As Word
Do
Set Portd.6
Wait 1
Cls
I2cstart
I2cwbyte Lm76read
I2crbyte Tempbytehi , Ack
I2crbyte Tempbytelo , Nack
I2cstop
Lcd Tempbytehi ; " " ; Tempbytelo ; " "
Tempint = Makeint(tempbytelo , Tempbytehi)
Tempsign = Tempbytehi And 128
If Tempsign = 128 Then
Tempint = Not Tempint
Tempint = Tempint + 1
End If
Shift Tempint , Right , 3
Lcd Tempint ; " "
Temperature = Tempint * Lm76resolution
Lowerline
Lcd Temperature ; " "
Tempstring = Fusing(temperature , "##.#")
If Tempsign = 128 Then Lcd "-"
Lcd Tempstring
Reset Portd.6
Wait 1
Loop
End
Bence
Itt az általam használt prog:
Remélem segít
Kód: Egész kijelölése
' ............ blabla
'DS18S20 (9.bites)
'Az 1wire Pl.: Pinc.1
Dim Ar(9)as Byte , Hofok As Byte , My_crc As Byte
Dim Szonda As Bit , Elojel As Bit
' ............ blabla
Do
Gosub Homer
Wait 1 'vagy valamit szöszmötölsz ami időigényes
Gosub Holekerdez
Cls
If Elojel = 1 Then
Lcd "-"
End If
Lcd Hofok ; Chr(223) ; "C"
Wait 1 'vagy valamit szöszmötölsz ami időigényes
' blabla
Loop
Homer:
1wreset Pinc , 1 'Reset
If Err = 0 Then
1wwrite &HCC , 1 , Pinc , 1
1wwrite &H44 , 1 , Pinc , 1 'Mérjél hőt! :)
Szonda = 1 'Van működő hőmérő a dróton
Else
Szonda = 0
End If
Return
Holekerdez: 'Mért értékek lekérdezése
If Szonda = 1 Then 'Ha van működő hőmérő a dróton
Disable Interrupts
1wreset Pinc , 1 'Reset
1wwrite &HCC , 1 , Pinc , 1
1wwrite &HBE , 1 , Pinc , 1
Ar(1) = 1wread(9 , Pinc , 1) 'Kiolvasom mind a 9 byte-ot
Enable Interrupts
My_crc = Crc8(ar(1) , 8) 'Csinálok egy saját CRC-t
If My_crc = Ar(9) Then 'Ha hibátlan volt az adatátvitel (A 9. a CRC)
Shift Ar(1) , Right , 1 'Eldobom a tized fokot ( minek az? :D )
If Ar(2) = 0 Then
Elojel = 0 'A szonda előjele +
Hofok = Ar(1)
Else
Elojel = 1 'A szonda előjele -
Ar(1) = Not Ar(1)
Hofok = Ar(1) - 127 '9.bites hőmérőmodul
End If
End If
Else 'Ha nincs működő hőmérő a dróton
Elojel = 1 'A szonda előjele -
Hofok = 0 '-0 lesz az érték
End If
Return