Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

Program za merjenje temperature ne dela
Pojdi na stran 1, 2  Naslednja
 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
rimci
Mojster


Pridružen/-a: Tor Mar 2004 17:57
Prispevkov: 24

PrispevekObjavljeno: Tor Jan 10, 2006 7:55 am    Naslov sporočila: Program za merjenje temperature ne dela Odgovori s citatom

V reviju Svet elekronike je že dolgo nazaj bil objavljen primer merjenja temperature.
Prvi program (Temp 1820) meni enostavno ne dela in mi izpiše da CRC ni OK. V čem bi lahko bil problem?
Pri drugem programu (1820_w5) pa mi ne dela prvi senzor (kot da sploh nebi bil priključen). Ko pa na njegovo mesto priključim drugi senzor ta dela. Sam senzor je sigurno vredu, saj mi ta isti senzor npr. s kakšnim drugim programom za merjenje temperature dela.

Končnico programov (.pdf), spremenite v (.txt)

Hvala za nasvete
lp
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jan 11, 2006 6:34 am    Naslov sporočila: hm Odgovori s citatom

Hm, ali je

Koda:
Crc8:
Data 16 , 150 , 202 , 49 , 0 , 8 , 0 , 214
Data 16 , 178 , 194 , 49 , 0 , 8 , 0 , 130
'Data 0 , 94 , 188 , 226 , 97 , 63 , 221 , 131 , 194 , 156
'Data 126 , 32 , 163 , 253 , 31 , 65 , 157 , 195 , 33 , 127
'Data 252 , 162 , 64 , 30 , 95 , 1 , 227 , 189 , 62 , 96
'Data 130 , 220 , 35 , 125 , 159 , 193 , 66 , 28 , 254 , 160


namenoma izključen? vidim, da so Data stavki komentirani, namesto, da bi bili vključeni v program. Tako kot je, bo seveda vedno CRC8 narobe!

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jan 11, 2006 6:41 am    Naslov sporočila: Še enkrat Odgovori s citatom

V programu 1829_w5 je

Koda:


Dta1:                                                         'naslov 1
Data 16 , 150 , 202 , 49 , 0 , 8 , 0 , 214
Dta2:                                                         'naslov 2
Data 16 , 178 , 194 , 49 , 0 , 8 , 0 , 130
Dta3:
'Data 16 , 4 , 66 , 39 , 0 , 0 , 0 , 187


tudi zadnji Data stavek komentiran

Termometri 1820 niso enostavno zamenljivi. Vsak ima svoj 8-bajtni naslov. Če zamenjaš termometer, potem moraš v programu tudi prilagoditi naslov novemu termometru, a to verjetno že veš.

Pozdrav

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
rimci
Mojster


Pridružen/-a: Tor Mar 2004 17:57
Prispevkov: 24

PrispevekObjavljeno: Sre Jan 11, 2006 8:59 am    Naslov sporočila: Odgovori s citatom

Zdaj ko si to napisal mi je dalo misliti. V prvem programu CRC8: niso vpisane ID številke od senzorjev. Tista prva dva naslova sem vpisal jaz ostale pa sem onemogočil. In kolikor vidim je to narobe. Tu niso vpisane ID številke od senzorjev ampak ........ Kaj je tu vpisano?
V drugem programu pa sta Dta1 in Dta2 sta ID številki od DS1820 ki ju uporabljam jaz, ostale od Dta3 pa sem namerno izključil. Pa tudi če bi bili omogočeni bi po moje stvar morala delati. Ali narobe razmišljam?

lp
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jan 11, 2006 11:37 am    Naslov sporočila: data ukazi Odgovori s citatom

Data ukazi pri CRC8 so podatki, ki jih za izračun CRC8 potrebuje rutina.
Če le ti niso kompletni, potem crc8 ne bo nikoli v redu.

DS1820 lahko uporabljaš tako, da ne specificiraš njegovega naslova, se pravi ID-a, vendar le, če je en sam DS1820 na 1wire bus-u. V tem slučaju je ID nepotreben, in ukaz za branje temperature je malo drugačen.

Imam samo minuto časa, in hitim, zato le ugibam, verjetno prvi program uporablja ta splošni način merjenja temperature, drugi pa specifični način, kjer je potreben ID pri ukazu za merjenje temperature.

Pozdrav

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
rimci
Mojster


Pridružen/-a: Tor Mar 2004 17:57
Prispevkov: 24

PrispevekObjavljeno: Sre Jan 11, 2006 1:54 pm    Naslov sporočila: Re: data ukazi Odgovori s citatom

vilko je napisal/a:
Data ukazi pri CRC8 so podatki, ki jih za izračun CRC8 potrebuje rutina.
Če le ti niso kompletni, potem crc8 ne bo nikoli v redu.


Od kod pa dobim te podatke v CRC-ju. A so za vsak senzor drugačni? A jih je potrebno prebrati iz senzorja tako kot se prebere ID številka?

lp
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Vlado
Profesionalec


Pridružen/-a: Ned Jan 2004 16:11
Prispevkov: 556
Kraj: Ljubljana

PrispevekObjavljeno: Sre Jan 11, 2006 6:08 pm    Naslov sporočila: merjenje temperature Odgovori s citatom

Rimci,
meni se zdi da si narobe vpisal podatke, v tabelo CRC8 si vpisal podatke od senzorja!

Crc8:
Data 16 , 150 , 202 , 49 , 0 , 8 , 0 , 214
Data 16 , 178 , 194 , 49 , 0 , 8 , 0 , 130
Prav zaradi tega ti ne izracuna pravilno CRC8.

Ti podatki spadajo v tabelo DTA1.
Pusti tabelo za CRC8 tako kot je, a serijske stevilke svojih senzorjev vpisi v tabelo DTA1.
Vlado
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
roberto
Mojster


Pridružen/-a: Ned Maj 2005 16:19
Prispevkov: 41

PrispevekObjavljeno: Sre Jan 11, 2006 8:42 pm    Naslov sporočila: Odgovori s citatom

Jaz sem si priredi sledeci program, tako da na LCD izpise celotno adreso DS1820, pocaka nekaj sekund in spet zacne brati naslednji senzor, ki se ga vtakne na vezje. Verjetno bo marsikomu koristil ta programcek.

'///////////////////////////////////////////////////////////////
'Program prebere adreso DS1820 senzorja temperature
'///////////////////////////////////////////////////////////////

'$regfile = "89c2051.dat"
'$crystal = 11059200
$crystal = 12000000

Config 1wire = P3.1 'use this pin
Dim Ar(8) As Byte , A As Byte , I As Byte

Config Lcd = 16 * 2
Cursor Off Noblink
Cls

Do

Reset P1.1
'Wait 1

1wreset 'reset the device
1wwrite &H33 'read ROM command
For I = 1 To 8
Ar(i) = 1wread() 'place into array
Next

For I = 1 To 8
' Lcd I
' Lcd ":"
If I = 1 Then
Upperline
Elseif I = 5 Then
Lowerline
End If
Lcd Ar(i);
If I < 8 Then
Lcd ":"
End If
Wait 1
If I = 8 Then
Wait 5
Cls
End If
Next

Loop
End


Upam, da zadeva deluje ker je ze kar nekaj casa kar sem to zapekel v 4051. Preveril sem program tudi na ATmega8 pa stvar deluje. Na AVR-ju sem senzor priklopil tako, da stranske nogice vezem na maso, s + pa 4k7 upor na data nogico in stvar deluje.

Lp
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
rimci
Mojster


Pridružen/-a: Tor Mar 2004 17:57
Prispevkov: 24

PrispevekObjavljeno: Čet Jan 12, 2006 10:58 am    Naslov sporočila: Odgovori s citatom

To sem opazil, da sem v CRC8 tabelo vpisal ID-je od mojih senzorjev, kar je narobe. Izbrisal sem jih in pustil tabelo tako kot je. Sedaj mi ne javlja da je CRC koda napačna ampak mi vedno izpisuje da je temperatura 85 stopinj. Zanima me kako je ta tabela CRC sestavljena, a so to znani podatki,saj niso prebrani iz senzorja.

Kar se pa tiče drugega programa, pa sem ID za prvi senzor vpisal v Dta1 in ID za drugi senzor v Dta2 in prvi senzor se obnaša kot da ni priključen.

lp
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Čet Jan 12, 2006 11:53 am    Naslov sporočila: CRC8 Odgovori s citatom

CRC8 je matematični postopek, s katerim izračunaš vsebino tkzv. bajta za preverjanje vsebine telegrama. Če ima telegram recimo 7 bajtov informacij, tedaj dodaš osmi bajt, ki ga izračunaš na osnovi vsebine preteklih 7 bajtov.
Prostopka za izračun sta dva. Eden je čisto matematični, zato bolj zahteven in bolj počasen, drugi si pomaga s tabelo, in je zato hitrejši, a vzame 256 bajtov prostora za tabelo, kar v splošnem ni problem.
Ko nek mikroprocesor odda telegram, odda z njim tudi ta bajt.
Ko drug mikroprocesor sprejema telegram, podobno izračuna CRC8 bajt in izračunano primerja s sprejetim. Če je izračunano enako prejetemu, smo dovolj zanesljivo prepričani, da je cel telegram prejet pravilno.

CRC8 je dovolj preprost, a ne absolutno zanesljiv. Ker ima samo en bajt informacije za preverjanje, torej 256 različnih možnosti, je statistično verjetno, da bo od 256 napačno sprejetih telegramov enega le teh sprejel kot pravilnega.

CRC8 in ID DS1820 so popolnoma nepovezana, popolnoma različna podatka. ID je lastnost vsakega DS1820 termometra, in v kolikor imaš paralelno vezanih več termometrov, tedaj moraš pri branju temperature povedati s pomočjo ID, katero temperaturo meriš.
Odgovor dobiš v obliki telegrama, ki ima na koncu CRC8 bajt in je odvisen od sporočila, ki si ga dobil. Napačen CRC8 dobiš recimo, če si prehitro po startu merjenja temperature začel brati temperaturo, (sekunda je primeren čas zakasnitve) ali če napajanje DS1820 ni v redu.

Vilko

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
rimci
Mojster


Pridružen/-a: Tor Mar 2004 17:57
Prispevkov: 24

PrispevekObjavljeno: Pet Jan 13, 2006 9:20 am    Naslov sporočila: Odgovori s citatom

Vilko hvala glede razlage CRC postopka. Prav si imel res je bil problem časovna zakasnitev. V subrutini temperatura sem zakasnitev povečal na eno sekundo in stvar je začela delovati.

Kar se pa tiče drugega programa, pa mi noče delovati. Prvega senzorja enostavno ne zazna. A ima mogoče kdo možnost na testni plošči preizkusti ta program.

hvala
lp
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
cipko
Novinec


Pridružen/-a: Pon Jan 2004 12:21
Prispevkov: 8
Kraj: velenje

PrispevekObjavljeno: Pet Jan 13, 2006 9:58 am    Naslov sporočila: Odgovori s citatom

Pozdravljeni!

Naj se še jaz vključim v debato merjenja temperature z DS 1820. Preizkušal sem program napisan v reviji svet elektronike (program za dva senzorja, ki ga je napisal Jure), vendar mi pri izpisu temperatur v območju od 0 do -0.9 st. celzije prikazuje vrednosti, kot da bi bila pozitivna temperatura (torej od 0 do +0.9). Ko pa temp. pade na -1 in nižje je prikaz na LCD v redu.

Ali ima še kdo podobno težavo in kako jo je rešil?

LP, Cipko
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Pet Jan 13, 2006 1:39 pm    Naslov sporočila: Pripnite svojo kodo Odgovori s citatom

Pripnite svojo kodo, da bomo lahko pogledali, kako in kaj s programom.

Na strežniku SE je program za čitanje ds1820, in isti program je tudi na CD-u, ki ga dobite s knjigo Programiranje v BASCOM8051, ki je naprodaj. Program ima napako pri prenašanju ID-a iz programskega pomnilnika v RAM. Napaka izvira iz anomalije, ker tečejo indeksi bajtov v RAM, če definiramo spremeljivko
Koda:
dim ID(8) as byte

od 1 do 8 pri bajtih v Data stavkih
Koda:
ID1:
Data ..8 bajtov konstant

pa od 0 do 7

Programer je pri prepisovanju programa, ki ga je nedvomno stestiral, to spregledal. Najbolj enostavno se napaka popravi na ta način, da pred dejanske konstante za identifikacijo DS1820 dodamo spredaj še en brezvezni bajt tako

Koda:
ID1:
Data ..1 bajt s poljubno vsebino
Data ..8 bajtov konstant- pravi ID1
ID2:
Data ..1 bajt s poljubno vsebino
Data ..8 bajtov konstant- pravi ID2


Potem bo for zanka za prenos podatka v RAM pravilno delovala:

Koda:
for i = 1 to 8
   id(i) = Lookup(i, ID1)
next



Pozdrav

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
rimci
Mojster


Pridružen/-a: Tor Mar 2004 17:57
Prispevkov: 24

PrispevekObjavljeno: Pon Jan 16, 2006 6:02 pm    Naslov sporočila: Odgovori s citatom

Vilko še enkrat hvala. Zdaj mi pa zadeva dela. Zanima me pa kako je kaj z točnostjo teh senzorjev. Opažam namreč da je razlika v temperaturi med obema senzorjema tja do 0.8 stopinje (senzorja imam en zraven drugega).
Pa še nekaj. A je priporočjivo dati zunanje pull up upore na port kjer je priključena tipka. Saj kontroler na portu kjer imam priključeni tipki nima notranjih pull up uporov

lp
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Pon Jan 16, 2006 6:21 pm    Naslov sporočila: Toplotna kapaciteta Odgovori s citatom

Senzorji DS1820 imajo zelo majhno maso. Zato lahko že zelo majhna energija, ki jo prejmejo, spremeni njih temperaturo. Meni se je dogajalo, da sem dobil tudi za več kot stopinjo drugačne meritve od dveh senzorjev, ki sta bila fizično blizu skupaj in na istem 1wire vodilu.

Senzor mora imeti dober toplotni stik z materijalom, ki ga želimo meriti. Če je to tekočina v cevi, mora bit pritisnjen ob steno cevi. Če je to zzrak ali plin, ga pritrdi na rebra, podobna za hlajenje tranzistorjev. Res pa je, da boš tako kasneje zaznal spremembe temperature plina, ker s tem, ko dodaš maso, dodaš tudi neke vrste temperaturno vztrajnost.

-----

Pullup upori načeloma ne morejo naredi kaj narobe in jaz jih dajem vedno, razen p1.0 in p1.1 pri 4051, če ju uporabljam kot vhode komparatorja napetosti. Seveda pa pullup upori pomenijo porabo energije. No 10kOhmon na 5V ne bo napak. Res pa je, da če gre samo za tipko, bo ta odčitana pravilno tudi brez pullup upora, saj neko visoko upornost proti +5V ima tudi port v mikroprocesorju serije 8051.

Pozdrav

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Pojdi na stran 1, 2  Naslednja
Stran 1 od 2

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group