You are on page 1of 19

2010

DS18B20

smail Varl
16.05.2010

DS18B20-1WIRE LETM

Sizlerle bu yazmda ok kullanl ve pek ok zellii ierisinde barndran maalesef yeterli Trke kaynak bulunmayan DS18B20 scaklk sensr hakknda bilgi vermeye alacam. Katalog bilgilerini dier kaynaklar ve rnek kodlar ile birletirerek anlalmasn kolayltrmay hedefledim. Gerekli mikrodenetleyici kod ve rutinlerini de ekledim. Buradaki bilgiler ve kodlarla gerekli gelitirmeleri yapabileceinizi umuyorum. Herkese faydal olmasn dilerim. smail Varl

SMAL VARILI

Sayfa 2

DS18B20-1WIRE LETM

DS18B20-PROGRAMLANABLEN 1 WIRE DJTAL TERMOMETRE


ZELLKLER: Mikrodenetleyici ile 1Wire arayzn kullanarak tek hat zerinden haberleme. Her aygt ROM hafzasnda retim esnasnda belirlenen ve tek olan 64 bitlik seri koda sahiptir. Bu kod sayesinde ayn hat zerinden birden fazla aygt ile haberleme. Harici bir donanm gerektirmeme. Besleme voltaj veri hatt zerinden salanabilme (voltaj deeri 3.0V ile 5.5V arasndadr) -55 C den +125 C ye kadar olan scaklk derecelerini lebilme. -10 C den +85 C ye kadar hassasiyeti 0.5C dir. 9-12 bit aras kullanc tanml hassasiyet. Scaklk deerinin 12 bitlik koda dntrlmesi maksimum 750msdir. Kullanc tanml ve kalc (NV) alarm ayar. ekilde grlen 8-pin SO (150mil), 8-pin _SOP, and 3-pin TO-92 paket tiplerine sahip olma. DS18B20 1wire protokoln kullanan,12bit znrle sahip scaklk sensrdr. letiim iin sadece tek port gerektirmesi, dk enerji gereksinimi ve yksek znrl ile pek ok uygulamada kullanlabilecek gelimi bir scaklk sensrdr. Her DS18B20 entegresi yalnzca kendisine has ,retim esnasnda belirlenen ve ROM belleinde sakl olan 48bitlik(8 bit CRC kodu+48 bit seri no+8 bit aile kodu) seri koda sahiptir. Bu sayede ayn hat zerinden birden fazla DS18B20 entegresi ile haberlemeyi mmkn klmaktadr.DS18B20 entegresinden scaklk deerlerini okumak iin sadece 1WIRE protokoln bilmek yetmez bunun yannda sensrn anlayaca kendine zel kodlarnda bilinmesi gerekir. Bu komutlar ileriki blmlerde ROM ve fonksiyon komutlar balklar altnda aklanacaktr.

SMAL VARILI

Sayfa 3

DS18B20-1WIRE LETM
BALANTI EKLLER DS18B20nin iki adet balant ekli vardr. Baz uygulamalarda sensrn balant ekli birincil aygt tarafndan tanmlanmas gerekir. Read Power Supply [B4h] komutu ile bunu renebiliriz. Bu komutun ardndan eer sensr hatt 0 yaparsa parazit g balants, 1 yaparsa harici kaynak balants yaplm demektir. Read Power Supply [B4h] komutunun kullanm ilerde fonksiyon komutlar blmnde daha ayrntl aklanacaktr. 1. PARAZT G BALANTISI

ekil 1:Parazit-G Balants Bu balant mikrodenetleyiciden uzaktaki scaklk lm uygulamalarnda olduka kullanldr. DQ pini 1 konumunda iken sensr gerekli olan gcn bu pinden alr ve kendi iindeki Cpp kondansatr arj eder. DQ pini 0 konumunda iken arj kondansatr (Cpp) gerekli enerjiyi salar. DS18B20 scaklk iletiimini yaparken ve EEPROM kopyalama ilemlerinde maksimum 1.5mA akm eker. +100 C zeri scaklklarda bu balant tipini kullanmak tavsiye edilmez. Yksek scaklklarda meydana gelen daha yksek sznt akmlar scaklk lmlerinde yanllklara neden olabilir. Bu nedenle bu tip uygulamalarda harici g kayna balantsn kullanmak daha doru olacaktr. 2. HARC G KAYNAI BALANTISI

ekil 2:Harici G Kayna Balants Bu balantnn avantaj pull up mosfetinin kullanlmasnn gerekmemesi ve +100 C zeri scaklklardaki kararl lmleridir. Not:Eer mikrodenetleyici ile sensr arasndaki mesafe uzun veya hatta ok fazla sensr var ise ve iletiimde sorun yayorsanz pull up direncini kltmeyi deneyin.

SMAL VARILI

Sayfa 4

DS18B20-1WIRE LETM
HAFIZA

ekil 3:DS18B20 Hafza Haritas DS18B20 ekil3de ayrntlar ile grlen 8 bytelk bir bellee sahiptir.Bu bellek bloklarnn her biri farkl ilevler iin kullanlr.Scaklk deeri llp dnm tamamlandktan sonra bellein byte 0-1 blmnde saklanr. Scaklk deeri bu iki hafza bloundan alnarak mikrodenetleyici tarafndan evrimi yaplr. Scaklk deerinin belirli noktalar amamas gereken uygulamalarda sensrn alarm zelliini kullanabiliriz. Sensrn alarm zellii bir eit kesme gibidir.Bylece yazlmsal olarak scaklk deerini srekli kontrol etmemiz gerekmez. Byte 2 alarm derecesinin st snrn ve byte 3 ise alarm derecesinin alt snrn tutan EEPROM hafza bloklardr. Yani scaklk byte 2de tanml deere eit yada stne kmsa veya byte 3de tanml olan deere eit yada altna inmise alarm bayra set edilir. Konfigrasyon kaydedicisi baz ayarlamalar yapacamz bitlere sahip bir kaydedicidir ve ilerde daha ak bir ekilde bahsedilecektir. EEPROM bellekler elektriksel olarak yazlp silinebilen ve flash belleklere nazaran bilgileri bloklar halinde deil bytelar eklinde yazp okunan bellek trdr. DS18B20nin hem okunup hem yazlabilen tek kaydedicileri bu 3 kaydedicidir. Dierleri sadece okunabilir.5,6,7nci bytelar sadece dahili ilemler iin kullanlan zerinde yazma yada okuma yaplamayan kaydedicilerdir. Sekizinci byte sadece okunabilen ve sensrn CRC jeneratr tarafndan retilen kodu saklayan kaydedicidir. KONFGRASYON KAYDEDCS Konfigrasyon kaydedicisi scaklk lmnn znrlk ayarlarn yapabileceimiz kaydedicidir. ekil4de kaydedicinin ierii verilmitir. Scaklk znrln ayarlamak iin konfigrasyon kaydedicisinin bit 5 ve bit 6 deerleri olan R1-R2ye gerekli deerleri vermemiz gerekir. Her bir znrlk deeri iin R1 ve R2 nin deerinin ne olmas gerektii, her bir znrlkte scaklk lmnn sresi aadaki Tablo1de verilmitir. DS18B20 4 farkl znrlkte lm yapabilir. Bunlar 9,10,11 ve 12 bit znrlklerdir. Scaklk lmndeki znrle gre art miktar deiiklii scakln ondalk deerinde olmaktadr. Yani 12 bit znrlkte scaklk deeri 0,0625C, 11 bit znrlkte 0,125C,
SMAL VARILI Sayfa 5

DS18B20-1WIRE LETM
10 bit znrlkte 0,25C ve 9 bit znrlkte 0,5C artar.Yada dier bir deyile bu kadar duyarllkta diyebiliriz. Scaklk hassasiyeti azaldka scaklk lm sresi de azalmaktadr. Hafza haritasnda byte 0 deeri olan LS kaydedicisini tekrar inceleyecek olursanz eksilen bitlerin LS bytenn srasyla 0,1 ve 2. Bitleri olduu aka grlecek ve znrlk konusu daha iyi anlalacaktr. Bit 5 ve 6 haricindeki dier bitler dahili ilemler iin kullanlan bitlerdir. Yazlamazlar ve okunduklarnda ise sadece 1 deerini gsterirler.

ekil 4:Konfigrasyon Kaydedicisi

R1 0 0 1 1

R0 0 1 0 1

znrlk 9-bit 10-bit 11-bit 12-bit

Maksimum Dnm Sresi 93,75ms 187,5ms 375ms 750ms

Scaklk Art 0,5C 0,25C 0,125C 0,0625C

Tablo 1: Scaklk znrlk Konfigrasyonu ALARM KURULUMU DS18B20 scaklk lp, dnm tamamladktan sonra scaklk deeri TH ve TL kaydedicisindeki deerler ile karlatrlr. TH ve TL kaydedicisinin yaps ekil5de verilmiti. 6 bitlik saysal bir deer ve scakln iareti iinde bir bit ayrlmtr. S olarak gsterilen bit7 eer 0 ise scaklk negatif,1 ise scaklk pozitif anlamna gelir. TH ve TL kaydedicisi kalc EEPROM bellek olduundan enerji kesildiinde silinmezler.

ekil 5 :TH-TL Kaydedicileri llen scaklk deeri TH kaydedicisindeki scaklk deerine eit yada yksek veya TL kaydedicisindeki deere eit yada yksek ise DS18B20 ierisindeki alarm bayra set edilir. Alarm bayra her scaklk lmnden sonra gncellenir. Eer set edilen bir bayraktan sonra tekrar scaklk deeri lldnde scaklk deeri alarm seviyesinin zerinde deilse bayrak yeniden 0 yaplr.

SMAL VARILI

Sayfa 6

DS18B20-1WIRE LETM
Alarm kurmak iin Write Scratchpad[4Eh] komutu kullanlr. Bu komuttan sonra TH,TL ve konfigrasyon bytelar sras ile yollanr. Bu yollanan veriler sras DS18B20nin TH,TL ve konfigrasyon kaydedicilerine kaydedilir. Alarm durumu Alarm Search [ECh] komutu ile kontrol edilir. Alarm Search [ECh] komutunun kullanm ilerde fonksiyon komutlar blmnde daha ayrntl aklanacaktr. CRC(Cyclic Redundancy Check) KODUNUN OLUTURULMASI CRC, verilerin doruluunu kontrol eden bir sistemdir. Gelen veriler ile alnan verilerin ayn olup olmad kontrol edilir. Bylece iletiimin salamas yaplarak daha gvenli bir iletiim salanr. CRC byte DS18B20nin 64bitlik ROM kodunun bir parasdr ve daha nce bahsedilen hafzann dokuzuncu bytenda bulunmaktadr. CRC kodu ROM kodun dier 56 bitinden hesaplanr. Birincil aygt sensrden ald verileri kullanarak CRC kodunu tekrar hesaplar ve sensrden gelen CRC kod ile karlatrr. Eer kodlar ayn ise veri doru bir ekilde alnm demektir. Aksi takdirde alnan veri hataldr ve iletiim tekrarlanr.

ekil 6: CRC Kod retici Devresi A B Q 0 0 0 0 1 1 1 0 1 1 1 0 Tablo 2: XOR Doruluk Tablosu Aada Hitech C ile yazlm kod ile DS18B20nin hafzas okunmakta ve LCDde gsterilmektedir. ekil 7de proteus ile simlasyonu yaplan kod altrldktan sonraki grnt verilmitir. Krmz ierisindeki kod sensrden okunan CRC kodudur. Ve bu CRC kodu LCDde grnen dier 8 bytedan retilmitir.

SMAL VARILI

Sayfa 7

DS18B20-1WIRE LETM
void bloknot_okuma(void) { unsigned char i,seri_no; DisplayClear(); while(hat_reset()); hat_byte_yaz(0xCC); hat_byte_yaz(0x44); while(hat_reset()); hat_byte_yaz(0xCC); hat_byte_yaz(0xBE); for(i=0;i<9;i++) { seri_no=hat_byte_oku(); if(i==0) DisplayInt(0,0,seri_no); if(i==1) DisplayInt(0,5,seri_no); if(i==2) DisplayInt(0,10,seri_no); if(i==3) DisplayInt(0,15,seri_no); if(i==4) DisplayInt(1,0,seri_no); if(i==5) DisplayInt(1,5,seri_no); if(i==6) DisplayInt(1,10,seri_no); if(i==7) DisplayInt(1,15,seri_no); if(i==8) DisplayInt(2,0,seri_no); } }

ekil 7:CRC Kodu-Proteus Simlasyon

SMAL VARILI

Sayfa 8

DS18B20-1WIRE LETM
CRC hesaplama modl ierisinde olan mikrodenetleyiciler mevcuttur. Fakat bu modl bulunmayan mikdenetleyicilerde bunu yazlm ile yapmamz gerekmektedir. ekil 6da crc kod retici devresi grlmektedir. Bu devreyi aklayacak olursak. lk olarak kaymal kaydedicimizin ieriinin; D7 D5 D4 D3 D2 D1 D0 eklinde 1 bytelk bir veri olduunu ele alalm. FB= D0 (XOR) veri_biti. Yeni deerimiz; FB -- D7-- D6-- D5-- D4(XOR)FB D3(XOR) FB D2 D1 dir. Buradaki veri_biti sensrden okunan 64 bitlik kodun bitleridir. Ve her bit iin bu ilem tekrarlanr. leme balamadan nce kaymal kaydedicinin ierii sfrlanmaldr. Aada crc hesaplamas yaplan altprogram verilmitir.Bu program sadece tek bit iindir. 64 bitlik kodun her bir biti iin en az deerlikli bitten balamak zere arlmas gerekir.

unsigned char crc8 (unsigned char kaydedici, unsigned char veri_biti) { Unsigned char FB; FB = (kaydedici & 0x01) ^= veri_biti; kaydedici = kaydedici >> 1; if (FB) { kaydedici = kaydedici ^ 8C; } return(kaydedici); }

SMAL VARILI

Sayfa 9

DS18B20-1WIRE LETM
ROM KOMUTLARI : Birincil aygt ilk olarak hatta hazrlk palsi yollar ve hatt kontrol eder. Hatta bal dier aygtlardan cevap aldktan sonra gerekli ROM komutlarn yollamaya balar. Eer cevap gelmez ise iletiim kesilir. Hatta bal ne kadar aygt olduu, adresleri ya da alarm durumunda bulunan bir aygt olup olmad bu komutlar ile alglanr. Bu komutlar sonunda alnan sonulara gre fonksiyon komutlar yollanr. Be adet 8bitlik ROM komutu vardr. ROM komutlar unlardr; SEARCH ROM [F0h] Sisteme enerji verildiinde birincil aygt hat zerindeki ikincil cihazlarn hepsinin kimliklerini tanmlamaldr. Birincil aygt bu komut ile her cihazn kendine zel olan kimlik kodunu renir. Bu komut hat zerinde yalnzca tek bir ikincil aygt varken kullanlr. Bylece search rom kodunu kullanmadan hzl bir ekilde hat zerinde ikincil aygttan okuma yaplr. Bu komutu 64bitlik ROM kodu takip eder. Bu komuttan sonra sadece yazlacak olan kimlik numarasna sahip aygt komutlara cevap verir. Birincil aygtn hat zerindeki tm cihazlar ROM kodlarn gndermeden nce adreslemesi iin kullanlr. ROM kodu gndermeden fonksiyon kodu gnderileceini sensre bildirir. Bu komut tpk search rom kodu gibi alr. Fakat bu koda yalnzca alarm bayra kurulmu olan sensrler cevap verir.

READ ROM [33h]

MATCH ROM [55h]

SKIP ROM [CCh] ALARM SEARCH [ECh]

FONKSYON KOMUTLARI: Fonksiyon komutlar ROM komutlarndan sonra gnderilir. Sensrn hafzasndan okuma ve yazma ilemleri iin gerekli komutlar ierir.Fonksiyon komutlar unlardr; Bu komut scaklk iletiimini balatr. Bu iletiimden sonra scaklk bilgisi bloknot hafza zerindeki 2-byte lk scaklk CONVERT T [44h] kaydedicisinde saklanr ve DS18B20 dk gl bo durumuna dner. WRITE SCRATCHPAD [4Eh] Bu komut sensrn TH,TL ve Konfigrasyon kaydedicilerinin deerlerini deitirmek ve yeni verilerin yazlmas iin kullanlr.Bu komuttan sonra gnderilen 3bytelk veri sras ile TH,TL ve konfigrasyon kaydedicilerine yazlr.

READ SCRATCHPAD Bu komut sensrn hafza ieriinin okumasn salar. [BEh] COPY SCRATCHPAD Bu komut TH,TL ve konfigrasyon kaydedicilerinin ieriini EEPROM a kaydetmemizi salar. [48h] RECALL E2 [B8h] READ POWER SUPPLY [B4h] Bu komut alarm tetikleme deerleri olan TH ,TL ve konfigrasyon verilerini EEPROM hafzasndan arr ve bloknot hafzasna srasyla 2,3,4 nc bytelara yerletirir. DS18B20nin g balantsnn ne olduunu renmek iin kullanlr. DS18B20 birincil aygta balant trn iletir.

SMAL VARILI

Sayfa 10

DS18B20-1WIRE LETM
LETM ZAMANLAMASI DS18B20 ile senkron seri iletiim yapld iin veri gnderme, alma zamanlamalar ve sras ok nemlidir. Eer gndereceimiz komutlarn iletiim hz dk yada yksek olursa ve istenilen srada gnderilmez ise sensr gndereceimiz komutlar alglayamayacak ve cevap vermeyecektir.DS18B20 ile iletiim sralamas u ekildedir. 1. Bu hazrlk evresidir. Birincil aygt ilk olarak hatt 0a eker. Eer hattaki ikincil aygttan cevap gelirse ikinci adma geilir. 2. kinci admda ROM komutlar gnderilir. Bu komutu gerekli veri bilgileri takip eder. rnein hatta eer ikincil aygt eletirme ROM komutu yollanm ise bu kodu scaklk deeri okunacak ikincil aygtn seri numaras takip eder. Ya da direk fonksiyon komutu yollanr. 3. Son olarak ROM komutuda yollandktan sonra fonksiyon komutlar yollanr. Yine bu fonksiyon komutlarn eer gerekli ise veriler takip eder. Eer bu admlarda herhangi bir aksama olursa iletiim kesilir. letiim kesildikten sonra devam edilmesi iin tekrar birinci admdan balanmas gerekir. letiimi balatma: 1Wire iletiim ynteminde hazr olma haricindeki tm haberlemeyi mikrodenetleyici balatr. DS18B20 sadece hazr olduunu bildiren sinyali alc tarafa gndererek ilemi balatr.letiim iin ilk olarak birincil aygt hatt 0 durumuna eker ve en az 480uS bu durumda tutar.Bu sre sonunda pull up direnci hatt tekrar 1 durumuna getirir.Bunun iin yaklak 15-60S kadar beklenir.Ardndan DS18B20 hatt yaklak olarak 60-240s 0 konumuna eker. Bu sensrn iletiim iin hazr olduunu gsterir. Sensrden hazr sinyali alndktan sonra artk scaklk sensrmz komutlar almaya hazrdr. Eer 480S sonunda hattan cevap alnmaz ise iletiim kesilir.

izgi Tiplerinin Anlamlar Birincil aygt hatt sfr yapyor Ds18B20 hatt sfr yapyor Pull up direnci hatt bir yapyor

ekil 8:DS18B20 letiim Hazrlk Sinyalleri

Aada hatt hazr konuma getiren Hitech C ile yazlm kod paras verilmektedir. Altprogram 0 deeri dndrrse hattan cevap gelmiyor demektir ve iletiim kesilir. Eer 1 deeri dndrlrse hattaki aygt hazr demektir ve iletiime devam edilir.

SMAL VARILI

Sayfa 11

DS18B20-1WIRE LETM
#define TRIS_W TRISD0 #define hat RD0 unsigned char hat_reset (void) { unsigned char sonuc; hat=0; TRIS_W=0; DelayUs(250);DelayUs(250); TRIS_W=1; DelayUs(70); sonuc=WIRE; DelayUs(250);DelayUs(250); return sonuc; } //Hat birincil aygtn RD0 portuna tanmlanyor.

// Hat sfra ekiliyor // Hat ks yaplyor // 640us>x>480us arasnda bekleniyor // Pull-up ykseltmesi bekleniyor // 70us bekleniyor // 0 Hazr, 1 Hazr deil // 640us>x>480us arasnda bekleniyor

SMAL VARILI

Sayfa 12

DS18B20-1WIRE LETM
SICAKLIK DEERNN OKUNMASI VE HESAPLANMASI letiim tam ve hatasz bir ekilde gerekletikten sonra sensrden okuyacamz 2 adet 8 bitlik veridir. Bu ikilik verinin ondalk scaklk deerine dntrlmesi gerekir. Aadaki ekilde yksek ve dk deerlikli iki byten deer katsaylar verilmitir. Bu katsaylara gre ikilik ondalk dnm yaplr. LS byten ilk 4 biti scaklk deerinin ondalkl ksmn verir. Bit 10-4 scaklk deerinin tam ksmn verir.12.bit iaret bitidir.1 ise scaklk deeri negatif, 0 ise pozitiftir. Scaklk deeri negatif olduunda scaklk deerini hesaplama iin ondalk dnm yapmadan nce tmleyenini almak gerekir.

ekil 9:DS18B20 Scaklk Deerini Saklayan Hafza Bloklar rnek: Scaklk +25.0625C -25.0625C kilik k 0000 0001 1001 0001 1111 1110 0110 1111

Yukardaki deerler ayn scakln negatif ve pozitif deerlerini gstermektedir. Bylece aralarndaki fark grebiliriz.16 bitlik ikilik kn ilk 4 bitinin ondalk ksmn deerini verdiini sylemitik. Yani 0001 deeri ondalk deerimizdir.kilik ondalk dnm yaplrsa bu deer 0.0625 ( ) eder.Saynn tam ksm iin ise 10-4 arasndaki bitler dikkate alnr.Pozitif scaklk iin 001 1001 deeridir. Bu sayy ondalk say sistemine evirdiimizde 25 eder. Negatif scaklk deeri iin ikilik k 110 0110.Dikkat ederseniz bu deer pozitif scaklk deerinin terslenmi halidir. Yani birler sfr, sfrlarda bir yaplm halidir.Bu nedenle eer 12.bit deeri 1 ise ikilik kn tam say ksmn ilk olarak tersler daha sonra ondalk say sistemine eviririz. 12.bitin negatif scaklk deeri iin 1 pozitif scaklk deeri iin ise 0 olduuna dikkat edin. Aadaki bu rnekle anlattklarmz yapan Hitech C kodu bulunuyor. Bu kodu inceleyerek konuyu daha iyi anlayabiliriz. lsb = hat_byte_oku(); //scaklk deerinin ilk byte lsb deikenine atanyor msb = hat_byte_oku(); //scaklk deerinin ikinci byte msb deikenine atanyor while (hat_reset()); //Hatta iletiimi bitiren reset sinyali gnderiliyor ondalik=0; sicak=(msb<<4)+(lsb>>4); //Bit 10-4 deki ondalk deer sicak deikenine atanyor if(sicak & 0x80) //msb nin 11.biti 1 ise scaklk negatif 0 ise pozitif deer { sicak=~sicak; //scaklk negatif ise okunan ters evriliyor. lsb=~lsb & 0x0F; } if(lsb & 0x08) if(lsb & 0x04) if(lsb & 0x02) if(lsb & 0x01)
SMAL VARILI

onda =0.500; onda+=0.250; onda+=0.125; onda+=0.0625;


Sayfa 13

DS18B20-1WIRE LETM
DS18B20 ALIMASI RNEK 1 Aadaki rnekte birden fazla DS18B20 ile ayn hatta bal ve parazit g balants kullanlmtr. Birincil aygt scaklk iletiimine belirli bir DS18B20 ile balar. Daha sonra DS18B20nin bloknot hafzas okunur ve alnan verinin kontrol iin CRC kodu hesaplanr. MOD VER AIKLAMA TX RESET Birincil aygt reset palsi gnderir DS118B20 hazr olduunu bildiren palsi gndererek RX Hazr Bulunma cevap verir. Birincil aygt Eletirme ROM komutunu gnderir. TX 55h Bu komuttan sonra gnderilecek seri numarasna sahip aygt ile haberleme yaplacan bildirir. Birincil aygt DS18B20 hatta iletiim kurulacak TX 64-bit ROM kod sensrn ROM kodunu gnderir. TX 44h Birincil aygt scaklk dnm komutunu gnderir. DQ hatt 1de Birincil aygt sensrn dnm yapmasn TX tutuluyor. beklemesi sresince hatt 1 seviyesinde tutar. TX Reset Birincil aygt reset palsi gnderir. DS118B20 hazr olduunu bildiren palsi gndererek RX Hazr Bulunma. cevap verir. Birincil aygt Eletirme ROM komutunu gnderir.Bu TX 55h komuttan sonra gnderilecek seri numarasna sahip aygt ile haberleme yaplacan bildirir. Birincil aygt DS18B20 hatta iletiim kurulacak TX 66-bit ROM kod sensrn ROM kodunu gnderir. Birincil aygt Read Scratcpad komutunu,yani TX BEh hafzann okunacan bildiren komutu gnderir. Birincil aygt iinde CRC kodu ile beraber hafzann tamamn okur. Birincil aygt gelen ilk 8 byte kullanarak(DS18B20 hafza blounun ilk 8 byte) RX 9 byte veri CRC kodunu tekrar hesap eder.Ve DS18B20 tarafndan yollanan 9.byte olan CRC kodu ile karlatrr.Eer eleiyorsa ileme devam edilir.Aksi takdirde iletiim tekrarlanr.

SMAL VARILI

Sayfa 14

DS18B20-1WIRE LETM
RNEK 2 Bu rnekte parazit g balants yaplm bir adet DS18B20 ile iletiim anlatlacaktr. Birincil aygt TH,TL ve konfigrasyon kaydedicilerini ilk olarak yazar,sonra hafzay okur ve CRC kodunu yeniden hesaplayarak gelen verinin doruluunu kontrol eder. Birincil aygt hafza ieriini EEPROMuna kopyalar. MOD TX RX TX TX TX TX RX TX TX VER RESET Hazr Bulunma CCh 4Eh 3 bytelk veri RESET Hazr Bulunma CCh BEh AIKLAMA Birincil aygt reset palsi gnderir DS118B20 hazr olduunu bildiren palsi gndererek cevap verir. Birincil aygt Skip ROM komutu gnderir.Bu herhangi bir ROM ilemi yaplmayaca sadece fonksiyon komutu gnderilecek demektir. Birincil aygt Hafzaya yaz yazma komutunu gnderir. Birincil aygt sras ile TH,TL ve konfigrasyon kaydedicilerinin deerinin gnderir. Birincil aygt reset palsi gnderir DS118B20 hazr olduunu bildiren palsi gndererek cevap verir. Birincil aygt Skip ROM komutu gnderir.Bu herhangi bir ROM ilemi yaplmayaca sadece fonksiyon komutu gnderilecek demektir. Birincil aygt Hafza okuma komutunu gnderir. Birincil aygt iinde CRC kodu ile beraber hafzann tamamn okur. Birincil aygt gelen ilk 8 byte kullanarak (DS18B20 hafza blounun ilk 8 byte) CRC kodunu tekrar hesap eder.Ve DS18B20 tarafndan yollanan 9.byte olan CRC kodu ile karlatrr.Eer eleiyorsa ileme devam edilir.Aksi takdirde okuma ilemi tekrarlanr. Birincil aygt reset palsi gnderir DS118B20 hazr olduunu bildiren palsi gndererek cevap verir. Birincil aygt Skip ROM komutu gnderir.Bu herhangi bir ROM ilemi yaplmayaca sadece fonksiyon komutu gnderilecek demektir. Birincil aygt Hafza kopyalama komutunu gnderir. Birincil aygt sensrn kopyalama ilemi yapt sre boyunca en az 10ms hatt 1 seviyesinde tutar.

RX

9 byte veri

TX RX TX TX TX

RESET Hazr Bulunma CCh 48h DQ hatt 1de tutuluyor.

*TX verinin birincil aygt tarafndan gnderildiini, RX ise verinin birincil aygt tarafndan alndn gstermektedir. *Veri gnderilirken yada alnrken en dk bitten balanr.Yani alnan yada gnderilen ilk bit sfrnc bittir.

SMAL VARILI

Sayfa 15

DS18B20-1WIRE LETM
Bu rnekler ile iletiimin sralamas ve zamanlamas ile ilgili gerekli mantk sanrm anlalmtr. Tek bir hat zerinden birden fazla sensr ile iletiim kurmamz gereken uygulamalarda her bir sensrn seri numarasn tek tek almamz ve enerji kesildiinde seri numaralarn kaybolmamas iin mikrodenetleyicinin epromuna kaydetmemiz gerekir. Daha sonra hangi noktadaki scaklk deerini lmek istiyorsak eproma kaydettiimiz o sensre ait kimlik kodunu kullanrz. imdi bu kodlar sensrden nasl okuyacamzla ilgili gerekli kodlar grelim. Hitech C ile hazrlanm bu alt program sensrden okumu olduu seri kodu LCDye yazdryor. Bylece proteusta DS18B20nin seri kodunu deitirerek kan sonular gzlemleyebilirsiniz. ekil10 proteusta DS18B20 sensrnn zellikler penceresini gsteriyor. Resim ekil11 daki devrede ilk sensre sa tklayp edit properties mensne girildikten sonra alnd. Krmz ile daire ierisine alnan kutu sensrn seri numarasn gstermektedir. ekildeki deer proteusun vermi olduu varsaylan deer olup her eklediiniz sensrnk ayndr. Bu nedenle eer proteusta tek hatta birden fazla sensr simlasyonu yapacaksanz eklediiniz her sensrn bu kodunu deitirmeniz gerekir. kinci nemli nokta mikrodenetleyiciye sensr tantmanz ve seri kodunu okumanz gerektiinde hatta baka aygtn olmamas gerektiidir. Eer hatta birden fazla aygt var ve biz read rom komutunu yollarsak hattaki tm aygtlar buna cevap verecei iin alnan deerler yanl olacaktr. Aadaki bu kodu kullanarak yapacanz deiikliklerin sonularn takip edebilirsiniz.

void sensor_ekle(void) { unsigned char i,seri_no; while(hat_reset()); hat_byte_yaz(0x33); for(i=0; i<8; i++) { seri_no=hat_byte_oku(); if(i==0) DisplayInt(0,0,seri_no); if(i==1) DisplayInt(0,5,seri_no); if(i==2) DisplayInt(0,10,seri_no); if(i==3) DisplayInt(0,15,seri_no); if(i==4) DisplayInt(1,0,seri_no); if(i==5) DisplayInt(1,5,seri_no); if(i==6) DisplayInt(1,10,seri_no); if(i==7) DisplayInt(1,15,seri_no);

} } ekil 10:DS18B20-ROM Seri No

SMAL VARILI

Sayfa 16

DS18B20-1WIRE LETM

ekil 11:DS18B20 Seri No-Proteus

SMAL VARILI

Sayfa 17

DS18B20-1WIRE LETM
EK 1:Hitec Pic C iin 1Wire iletiim ktphane dosyas.(20MHzde alan mikrodenetleyici iin.Farkl frekanslar iin DelayUs() komutlarn deitirmeniz gerekir.rnein 4MHz iin yazlan DelayUs adedini 5e bln) #define TRIS_W TRISD0 #define WIRE RD0 //Balantlar

unsigned char hat_reset(void) { unsigned char sonuc; WIRE=0; // Hat sfra ekiliyor TRIS_W=0; // Hat ks yaplyor DelayUs(250);DelayUs(250); // 640us>x>480us arasnda bekleniyor DelayUs(250);DelayUs(250); DelayUs(250);DelayUs(250); DelayUs(250);DelayUs(250); DelayUs(250);DelayUs(250); TRIS_W=1; // Pull-up ykseltmesi bekleniyor DelayUs(70); DelayUs(70);DelayUs(70);DelayUs(70);DelayUs(70);// bekleniyor sonuc=WIRE; // 0 Hazr, 1 Hazr deil DelayUs(250);DelayUs(250); // 640us>x>480us arasnda bekleniyor DelayUs(250);DelayUs(250); DelayUs(250);DelayUs(250); DelayUs(250);DelayUs(250); DelayUs(250);DelayUs(250); return sonuc; } unsigned char hat_bit_oku(void) { unsigned char veri; WIRE=0; // Hat sfra ekiliyor TRIS_W=0; DelayUs(5);DelayUs(5);DelayUs(5);DelayUs(5);DelayUs(5);// 5 bekleniyor TRIS_W=1; // Pull-Up'n hatt ykseltmesi bekleniyor DelayUs(10);DelayUs(10);DelayUs(10);DelayUs(10);DelayUs(10); mikrosaniye bekleniyor if(WIRE) // Hat okunuyor veri=1; // Okunan veri 1 else veri=0; // Okunan veri 0 DelayUs(60);DelayUs(60);DelayUs(60);DelayUs(60);DelayUs(60); return veri; } void hat_bit_yaz(unsigned char veri) { if(veri) // 1 gnderiliyor {
SMAL VARILI

70us

mikrosaniye

//

10

Sayfa 18

DS18B20-1WIRE LETM
TRIS_W=0; // Hat sfrlanyor WIRE=0; DelayUs(5);DelayUs(5);DelayUs(5);DelayUs(5);DelayUs(5);// mikrosaniye bekleniyor TRIS_W=1; // Pull-Up'n hatt ykseltmesi bekleniyor DelayUs(60);DelayUs(60);DelayUs(60);DelayUs(60);DelayUs(60);// mikrosaniye bekleniyor } else // 0 gnderiliyor { TRIS_W=0; // Hat sfrlanyor WIRE= 0; DelayUs(60);DelayUs(60);DelayUs(60);DelayUs(60);DelayUs(60); // mikrosaniye bekleniyor TRIS_W=1; // Pull-Up'n hatt ykseltmesi bekleniyor } } unsigned int hat_byte_oku(void) { unsigned char i,veri=0, bitler=1; for(i=0;i<8;i++) { if ( hat_bit_oku() == 1 ) veri |= bitler; bitler=bitler<<=1; } return veri; } void hat_byte_yaz(unsigned char veri) { unsigned char bitler=1, i; for (i=0;i<8;i++) { if (veri&bitler) { hat_bit_yaz(1); } else { hat_bit_yaz(0); } bitler=bitler<<=1; } }

60

60

Yazan ve Hazrlayan :smail VARILI

SMAL VARILI

Sayfa 19

You might also like