www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

ds1820 zanič??
Pojdi na stran Prejšnja  1, 2
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Periferija
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Čet Nov 12, 2009 9:59 pm    Naslov sporočila:   Odgovori s citatom

Najenostavneje boš preveril, če boš dal gor drugega. Z multimetrom senzorja ne boš mogel preveriti. Najenostavneje je napisati inicializacijsko rutino, ter preveriti, če se senzor odziva. (to bi moral vsebovati sicer vsak dobro napisan program)
_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
galex4
Član
Član



Pridružen-a: Tor 01 Apr 2008 18:27
Prispevkov: 459
Aktiv.: 2.19

PrispevekObjavljeno: Čet Nov 12, 2009 10:20 pm    Naslov sporočila:   Odgovori s citatom

no tu je še koda napisana v mikroBASIC

koda:

dim i as byte
dim j1 as byte
dim j2 as byte
dim text as char[5]

main:
text = "Temp:"
ADCON1 = %00000110 ' configure RE2 pin as digital I/O
PORTA = 255 ' initialize PORTE to 255
PORTD = 0 ' initialize PORTB to 255
TRISA = %11111111 ' designate PORTE as input
TRISD = %00000000 ' designate PORTB as output
Lcd_Init(PORTD)
lcd_cmd(LCD_TURN_ON)
lcd_cmd(LCD_CURSOR_OFF)
lcd_out(1, 1, text)

while true
ow_reset(PORTA,5) ' onewire reset signal
ow_write(PORTA,5,$CC) ' issue command to DS1820
ow_write(PORTA,5,$44) ' issue command to DS1820
delay_us(120)
i = ow_reset(PORTA,5)
ow_write(PORTA,5,$CC) ' issue command to DS1820
ow_write(PORTA,5,$BE) ' issue command to DS1820
delay_ms(1000)
j1 = ow_read(PORTA,5) ' get result
j2 = ow_read(PORTA,5) ' get result (assuming the temperature is positive)
j1 = j1 >> 1
ByteToStr(j1,text)
lcd_out(2,4,text)
' display digits
lcd_chr( 2, 7, 223) ' 'degree' character
lcd_chr( 2, 8,"C")
Delay_ms(500)

wend
end.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonci
Član
Član



Pridružen-a: Tor 05 Avg 2008 18:14
Prispevkov: 629
Aktiv.: 3.06
Kraj: Domžale

PrispevekObjavljeno: Čet Nov 12, 2009 11:59 pm    Naslov sporočila:   Odgovori s citatom

Tudi sam sem se ravno danes spravil študirat 1 wire. Po prebranem postu gospoda Silvota sem se odločil napisat kodo, ki testira ali teromoter oziroma katerakoli 1 wire naprava, ki je na vodilu deluje oz se javi. Misli, da koda deluje, ker če zmanjšam začetni ukaz na 50us ne dobim odziva in tudi če sam čip ni priključen ni odrziva in ne gori led dioda! Po želji kodo lahko prilepim, je pa v Cju za 16f628a

Če pišete sami, morate detektirati tPDL!

Bi pa na tem mestu vprašal samo eno stvar in sicer, ali je čas tPDH za katerikoli čip na tem vodilu enak?



1wire.jpg
 Opis:
 Velikost datoteke:  37.86 KB
 Pogledana:  6 krat

1wire.jpg


Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
aly
Član
Član



Pridružen-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.71
Kraj: Kranj - struževo

PrispevekObjavljeno: Pet Nov 13, 2009 11:52 am    Naslov sporočila:   Odgovori s citatom

Če pošlješ na vodilo Reset ukaz, potem dobiš ACK pulz (ničlo), če je na vodilu en ali več naprav; oziroma brez pulza, če ni nobene naprave.
_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran MSN Messenger - naslov
Silvo
Moderator
Moderator



Pridružen-a: Pon 24 Feb 2003 17:09
Prispevkov: 14673
Aktiv.: 61.94
Kraj: Koroška-okolica Dravograda

PrispevekObjavljeno: Pet Nov 13, 2009 1:57 pm    Naslov sporočila:   Odgovori s citatom

aly je napisal/a:
Če pošlješ na vodilo Reset ukaz, potem dobiš ACK pulz (ničlo), če je na vodilu en ali več naprav; oziroma brez pulza, če ni nobene naprave.


To sem mislil v svojem spročilu zgoraj. Vodilo(senzorje) je itak potrebno resetirati. Le v proceduri reseta je treba brati če se senzor odziva. Če se senzor odziva, je skoraj zanesljivo dober.

_________________
lp
Silvo
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
ATA
Član
Član



Pridružen-a: Sob 12 Jun 2004 13:40
Prispevkov: 135
Aktiv.: 0.57

PrispevekObjavljeno: Pet Nov 13, 2009 2:38 pm    Naslov sporočila:   Odgovori s citatom

Umnik je napisal/a:
Če ti kaže vedno 85°C je to lahko znak, da je inicializiran, vendar še ni naredil prve pretvorbe temperature.

Če je program v bascomu- povečaj :waitms na 750, pri kupljeni zadni seriji sem moral priklopiti vse tri nogice da je delal.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Periferija Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran Prejšnja  1, 2
Stran 2 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
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group