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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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...).
Avatar
Bence
Tranzisztorgyógyász
Hozzászólások: 166
Csatlakozott: 2007. október 30. kedd, 6:00

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

Hello!

Kész a program, hol? Akkor télleg nincs kihívás! Ja és az LM75 mennyire pontos?
Bence
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

I2C fejezet. Csak a Print helyett LCD hőfok=-t írsz.
Avatar
7kaz
Bitmanipulátor
Hozzászólások: 138
Csatlakozott: 2006. szeptember 26. kedd, 6:00

Hozzászólás Szerző: 7kaz »

A DS1820-as helyett én inkább a DS1631-et ajánlanám. Ha számít a felbontás és a pontosság.
Avatar
Bence
Tranzisztorgyógyász
Hozzászólások: 166
Csatlakozott: 2007. október 30. kedd, 6:00

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

Hello!

Az I2C-ben LM76 van, és az hogy nem pontos. Az LM75 vagy az LM78 pontosabb?
Bence
Hooligan01

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

Bence!

Miután ennyi infóval elhalmoztunk, meg sem fordult a fejedben hogy a google a te barátod, és wiki a barátnőd?? :)
Esetleg az éppen aktuális alkatrész gyártó weboldala, mint információforrás, hogy pontos-e az a hőmérő vagy nem?
Avatar
Bence
Tranzisztorgyógyász
Hozzászólások: 166
Csatlakozott: 2007. október 30. kedd, 6:00

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

Hooligan01!

Igazad van már írom is a google-be!
Bence
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

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 DS1820 az 1Wire buszos (max 30 méter, parazita táp),
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....)
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

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...).
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 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.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

DS1820 - megszűnőben levő, DS18B20 ill DS18S20 javasolt helyette. A DS18S20 1:1-ben cserélhető, DS18B20 szoftvermódosítást igényel!

Konverziós idő (mérés):
DS1820 - max 500 msec
DS18S20 - max 750 msec!
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

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?
Avatar
Bence
Tranzisztorgyógyász
Hozzászólások: 166
Csatlakozott: 2007. október 30. kedd, 6:00

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

Hello!

Megépítettem az áramkört és nem tudom, hogy jól működik-e. Ezt írja ki szobahőmérsékleten:
Kép
É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
Működik, és melyik adat mit jelent a kijelzőn?
Bence
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

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

Adatlap? :)))

Temphi: egész fok
Templo: tizedfok rész

Bővebben az adatlapjában van....


Azt az 55 nem igazán jó. A 27 még csak-csak....
Avatar
Atesz
Tranzisztorgyógyász
Hozzászólások: 164
Csatlakozott: 2006. január 19. csütörtök, 7:00

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

Itt az általam használt prog:

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
Remélem segít :)
Válasz küldése