GIAO TIP VI DS18B20 DNG PIC16F887 Xin cho tt c cc bn, hm nay ti s chia s vi cc bn cch thc o nhit dng cm bin nhit DS18B20 hin th ln LCD16x02. Cm bin ny tr v gi tr nhit theo dng s, c ngha l chng ta khng cn phi chuyn i ADC nh con cm bin LM35 m ch cn c gi tr m DS18B20 tr v ri xut ra LCD l xong. c c gi tr nhit m cm bin tr v, chng ta dng vi iu khin (vk) giao tip vi cm bin theo chun 1-dy (one- wire). ti ny khng cn g l mi m c. Trc y, khi ti mi bt u giao tip vi con DS18B20 ny cng gp khng t kh khn, code trn mng kh nhiu nhng u vit bng CCS nn thc ra ti c cng khng hiu lm. B qu ti nh c datasheet, v vn ting anh hn hp nn va c va tra t thnh ra hi vt v. I. u tin, ti xin ni v cm bin DS18B20. 1.1. Vi li v DS18B20 Theo nh ngun tin chnh xc nht l datasheet ca nh sn xut th trn mi con DS18B20 c mt m nh danh duy nht 64 bit cha trong b nh ROM trn chip (on chip), gi tr nh phn c khc bng tia laze. V th cc bn c th dng nhiu con cm bin o nhit nhiu ni v ch cn mt con vk c nhit tng con l c. i vi bi ny ti ch dng 1 con cm bin nn cng khng cn quan tm n m a ch lm g. Thm mt s thng tin t datasheet cc bn tham kho: S dng giao din mt dy nn ch cn c mt chn ra truyn thng. C th o nhit trong khong -55 +125 o C.Vi khong nhit l -10C +85C th chnh xc 0.5C.C chc nng cnh bo nhit vc qua gi tr cho trc. in p s dng : 3 5.5 V,c th cu hnh m ha nhiu t 9 12 bit s bit cng ln th chnh xc cao hn.Thi gian chuyn i nhit ti a l 750ms cho m ha 12 bit Dng tiu th ti ch ngh cc nh. Nu cu hnh cho DS18B20 theo 9,10,11,12 bit th ta c chnh xc tng ng l : 0.5C , 0.25C ,0.125C, 0.0625C.Theo mc nh ca nh sn xut nu chng ta khng cu hnh ch chuyn i th n s t cu hnh l 12 bit. Cm bin DS18b20 thng c s dng gm c 3 chn: VCC, GND, DATA nh hnh di: HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 2
Trong : Vdd l chn cp ngun t 3 5.5 VDC, thng thng l 5 VDC cng ngun vi vk. GND l chn ni mass 0 VDC DQ l chn tn hiu, chn ny ni vi vk giao tip. N.C l chn not connect c ngha l khng kt ni, trng. 1.2. Cch kt ni DS18B20 vi vk HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 3
cho cm bin c th lm vic th chng ta cn kt ni nh sau, theo nh sn xut th c 3 cch kt ni, cc bn xem hnh: Cch 1: cch ny t dng
Cch 2: cch ny hay dng nht.
Cch 3: cch ny cng t dng
1.3. Cc tp lnh ca DS18B20 HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 4
- READ ROM (33h) Cho php c ra 8 byte m khc bng laser trn ROM, bao gm: 8 bit m nh tn linh kin (10h), 48 bit s xut xng, 8 bit kim tra CRC. Lnh ny ch dng khi trn bus c 1 cm bin DS1820, nu khng s xy ra xung t trn bus do tt c cc thit b t cng p ng. - MATCH ROM (55h) Lnh ny c gi i cng vi 64 bit ROM tip theo, cho php b iu khin bus chn ra ch mt cm bin DS1820 c th khi trn bus c nhiu cm bin DS1820 cng ni vo. Ch c DS1820 no c 64 bit trn ROM trung khp vi chui 64 bit va c gi ti mi p ng li cc lnh v b nh tip theo. Cn cc cm bin DS1820 c 64 bit ROM khng trng khp s tip tc ch mt xung reset. Lnh ny c s dng c trong trng hp c mt cm bin mt dy, c trong trng hp c nhiu cm bin mt dy. - SKIP ROM (CCh) Lnh ny cho php thit b iu khin truy nhp thng n cc lnh b nh ca DS1820 m khng cn gi chui m 64 bit ROM. Nh vy s tit kim c thi gian ch i nhng ch mang hiu qu khi trn bus ch c mt cm bin. - SEARCH ROM (F0h) Lnh ny cho php b iu khin bus c th d tm c s lng thnh vin t ang c u vo bus v cc gi tr c th trong 64 bit ROM ca chng bng mt chu trnh d tm. - ALARM SEARCH (ECh) Tin trnh ca lnh ny ging ht nh lnh Search ROM, nhng cm bin DS1820 ch p ng lnh ny khi xut hin iu kin cnh bo trong php o nhit cui cng. iu kin cnh bo y c nh ngha l gi tr nhit o c ln hn gi tr TH v nh hn gi tr TL l hai gi tr nhit cao nht v nhit thp nht c t trn thanh ghi trong b nh ca cm bin. Sau khi thit b ch (thng l mt vi iu khin) s dng cc lnh ROM nh a ch cho cc cm bin mt dy ang c u vo bus, thit b ch s a ra cc lnh chc nng DS1820. Bng cc lnh chc nng thit b ch c th c ra v ghi vo b nh nhp (scratchpath) ca cm bin DS1820. khi to qu trnh chuyn i gi tr nhit o c v xc nh ch cung cp in p ngun. Cc lnh chc nng c th c m t ngn gn nh sau: - WRITE SCRATCHPAD (4Eh) Lnh ny cho php ghi 2 byte d liu vo b nh nhp ca DS1820. Byte u tin c ghi vo thanh ghi TH (byte 2 ca b nh nhp) cn byte th hai c ghi vo thanh ghi TL (byte 3 ca b nh nhp). D liu truyn theo trnh t u tin l bit c ngha nht v k tip l nhng bit c ngha gim dn. C hai byte ny phi c ghi trc khi thit b ch xut ra mt xung reset hoc khi c d liu khc xut hin. - READ SCRATCHPAD (BEh) Lnh ny cho php thit b ch c ni dung b nh nhp. Qu trnh c bt u t bit c ngha nhy ca byte 0 v tip tc cho n byte rh 9 (byte 8 CRC). Thit b ch c th xut ra HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 5
mt xung reset lm dng qu trnh c bt k lc no nu nh ch c mt phn ca d liu trn b nh nhp cn c c. - COPYSCRATCHPAD (48h) Lnh ny copy ni dung ca hai thanh ghi TH v TL (byte 2 v byte 3) vo b nh EEPROM. Nu cm bin c s dng trong ch d cp ngun l bt u vic o. - CONVERT T (44h) Lnh ny khi ng mt qu trnh o v chuyn i gi tr nhit thnh s (nh phn). Sau khi chuyn i gi tr kt qu o nhit c lu tr trn thanh ghi nhit 2 byte trong b nh nhp Thi gian chuyn i khng qu 200 ms, trong thi gian ang chuyn i nu thc hin lnh c th cc gi tr c ra u bng 0. - READ POWER SUPPLY (B4h) Mt lnh c tip sau lnh ny s cho bit DS1820 ang s dng ch cp ngun nh th no, gi tr c c bng 0 nu cp ngun bng chnh ng dn d liu v bng 1 nu cp ngun qua mt ng dn ring. i vi bi ny, chng ta ch cn quan tm n hai lnh l: read v write. II. By gi l Vi iu Khin i vi vk, cc bn c th dng hng no, con no cng c. y ti dng con PIC16f887 ca MICROCHIP. Phn mm vit code l MPLAB-IDE v trnh bin dch l Hi-Tech C. Nh vy l phn cng xong, by gi ch cn vit code l c. III. Cui cng l phn vit code Code giao tip vi DS18B20 cng khng kh lm, cc bn chu kh theo gii. 3.1. Khi to DS18B20 y l s m nh sn xut ch cho chng ta bit cch reset v khi to DS18B20, n c y trong datasheet. HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 6
Theo , reset v khi to DS18B20 chng ta cn: khi to chn DQ (l mt chn I/O bt k ca vk, chn ny c ni vi chn DQ ca DS18B20. V d y ti dng chn RA4) l ng ra, sau set chn ny mc 0 t nht l 480s, sau khi to chn DQ l ng vo ri delay mt khong t nht l 480s. HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 7
Cc bn xem code: void onewire_reset() { TDQ=0; // khi to chn DQ l ng ra DQ =0; //set DQ l mc 0 __delay_us(500); //ch t nht l 480s TDQ=1;DQ=1; // khi to chn DQ l ng vo __delay_us(500); //ch t nht l 480s } HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 8
3.2. Vit lnh xung DS18B20 gi lnh xung DS18B20 ta xem s sau:
Nh vy, ghi mc 0 th ch cn cho chn DQ ca vk xung mc 0 t nht l 60s v ln nht l 120s. Cn ghi mc 1 th 1s <T REC <. T REC l thi gian ghi. Vy thi gian ghi l v cng nn chng ta ly chung thi gian cho hai mc logic l 60 120s. y l code: void write_byte(unsigned char data) { unsigned char i=0; //khai bo bin i cho vng lp for for (i=8; i>0; i--) //dng vng lp for vit 8bit xung DS18B20 { TDQ=0; //DQ l ng ra DQ =0; //set DQ l mc 0 DQ =(data&0x01); //so snh d liu vit 0 hoc 1 xung DS18B20 HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 9
__delay_us(60); //ch mt khong thi gian DS18B20 ghi mc logic DQ =1; // set DQ l mc 1 data>>=1; //chuyn qua bit k tip } //lp 8 ln th chng ta ghi c 8bit } 3.3. c gi tr nhit t DS18B20 c gi tr cng ging nh ghi, cc bn xem hnh:
Cc bn xem code lun int read_byte() { unsigned char i=0; unsigned char data =0; for (i=8;i>0;i--) { HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 10
TDQ=0; DQ =0; data>>=1; DQ =1; TDQ=1;DQ=1; //DQ l ng vo if(DQ) data|=0x80; __delay_us(120); } return(data); //tr v gi tr data } Nh vy l xong nhng hm c bn giao tip vi DS18B20. By gi chng ta hy tp hp chng li to thnh mt hm va khi to, ghi, c v tnh kt qu lun. Cc bn xem code: float ds18b20_read() { unsigned char busy=0, temp1, temp2; int temp3; float result; onewire_reset(); write_byte(0xCC); //Skip ROM, address all devices write_byte(0x44); //Start temperature conversion __delay_us(200); onewire_reset(); write_byte(0xCC); //Skip ROM, address all devices HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 11
write_byte(0xBE); //Read scratchpad temp1 =read_byte(); temp2 =read_byte(); temp3 =(temp2*256+temp1); result =(float) temp3 / 16.0; //Calculation for DS18B20 with 0.1 deg C resolution __delay_ms(200); // ?????? return(result); } Nhng cu lnh nh: Write_byte(0xCC); cc bn quay ngc ln trn, mc 1.3. Cc tp lnh ca DS18B20 xem 0xCC l lnh g nha. Nh vy l xong, ch cn vit thm hm main cho vk lm vic. y l hm main: void main() { lcd_init(); // lcd_gotoxy(0,0); printf("\fHOANG KHANH THAN"); __delay_ms(1000); lcd_gotoxy(0,1); printf(" DH-SPKT"); __delay_ms(2500); // lcd_gotoxy(0,0); printf("\f"); float temperature; HONG KHNH THN
I HC S PHM K THUT TP-HCM Page 12
while(1) { temperature=ds18b20_read(); lcd_gotoxy(0,0); printf("NHIET DO: %3.2f",temperature); } } V phn hin th ln LCD cc bn t tham kho hoc ti source code ti: http://www.mediafire.com/?bjjiq3886bybqr0 Nh vy l kt thc phin giao dch vi DS18B20 mt cch thnh cng tt p. Chc cc bn thnh cng. Mi kin ng gp hay thc mc cc bn hy gi vo email: khanhthan.hoang@gmail.com thn i!