BÁO CÁO MÔN VXL TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN

Embed Size (px)

Citation preview

Bo co mn vi xa l trong o lng iu khin

BO CO MN VXL TRONG O LNG V IU KHINI. t vn :Ngy nay vic ng dng vi iu khin trong o lng iu khin c nhiu ngha. Cng vi s pht trin ca khoa ha k thut, c bit l cng ngh bn dn, dn n s ra i ca nhiu dng vi diu khin khc nhau. Vi vi iu khin PIC887, l mt dng vi iu khin mi ra i, nn c cc chc nng tng ng vi mt vi iu khin hin i: tch hp chc nng ADC 8bits v ADC 10bits ty ngi dung cu hnh, c 3 b timer: timer0 8bits, timer1 16bits, timer2 8bits, truyn thng SPI, UART, I2C ng c mt chiu DC l mt i tng tng gp trong thc t, n ng dng rng ri trong cng nghip, dn dngVic o lng v iu khin tc l mt yu cu thc t, do nhm chng em chn ti: iu khin v o lng tc ng c DC.

II. Mc ch yu cu :Mc ch: + Tm hiu v giao thc gia my tnh v vi iu khin, c th trong bo co ny l UART. + Tm hiu v cu trc ca vi iu khin cng nh lp trnh cho vi iu khin. + Bit cch xy dng mt giao din ng dng s dng b th vin MFC ca VC++ 6.0. Ni dung cng vic chng em thc hin l: + Xy dng mt modul iu khin ng c DC, modul hin th LCD v modul truyn thng ln my tnh qua cng COM trn mt board mch. + Lp trnh cho vi iu khin iu khin v o lng tc ng c. + Xy dng mt giao din trn my tnh s dng truyn thng ni tip truyn d liu iu khin t my tnh xung v t vi iu khin ln.

III. Modul phn cng :1. Khi Vi iu khin v hin th: Hnh nh ca PIC16F887

1

Bo co mn vi xa l trong o lng iu khin

S khi ca PIC16F887

PIC16F887 c 40 chn c trnh by trong datasheet. Chng em s dng chn RC2 (chn s 17) l chn PWM1 ca PIC16F887 dng to rng xung iu khin tc ng c v chn RA4 (chn s 8) l chn c nhim v nhn xung m c t Encorder gn trn trc ng c, dng chn 25 (chn TX) v chn 26 (chn RXD) truyn v a tn hiu ln my tnh qua cng COM. ng thi chng em s dng Port D dng cc chn nh trong nguyn l hin th cng lc ln mn hnh LCD.

2

Bo co mn vi xa l trong o lng iu khin

2. Moddul truyn thng: Do vi iu khin hot ng mc lgic ca h IC TTL (mc 0 tng ng vi t 0 - 2V; mc 1 tng ng vi 2,3 5V), trong khi chun RS232 ca my tnh li lm vic mc logic khc (mc 0 ng vi 3-12V; mc 1 ng vi -3 n - 12V). Do , ghp ni gia my tnh v vi iu khin phi ng nht mc tn hiu. lm c iu chng ta s dng IC Max 232, trong IC c cha hai b chuyn i qua li gia hai mc in p l mc in p logic trong TTL v RS232. Max 232 hot ng mc in p 5V gm 20 chn nh sau:

S khi bn trong ca Max 232 nh sau:

Trong s khi c mc thm t m bo cho IC hot ng n nh. Vic ghp ni my tnh v vi iu khin c thc hin nh sau:

3

Bo co mn vi xa l trong o lng iu khin

Chn 2 v 3 ca cng COM c ni vi chn 8 v 14 ca Max 232, sau khi tn hiu c chuyn i c ni vi vi iu khin thng qua chn RxD v TxD l hai chn s 25 v 26 ca PIC16F887. 3. Modul iu khin ng c: Phn mch cng sut iu khin ng c, s dng mch kch FET.

4

Bo co mn vi xa l trong o lng iu khin 4. S mch nguyn l: Cc linh kin c dng trong mch bao gm: - Mosfet IRF540N. - Optocouple P521. - Bin tr 100K. - T 104. - Thch anh 8 MHZ. - T gm 22p. - iode 3A. - Tr 1K. - Bin tr 10K. - Led bo.

5

Bo co mn vi xa l trong o lng iu khin

III. Chng trnh phn mm:1. Chng trnh cho vi iu khin PIC16F887 :

a. nh hng chng trnh: iu khin ng c DC, c hi tip: + ti s dng encoder quang phn hi tc (ng c c gn encoder 100 xung/vng.) Gi tr xung c update sau mt khong thi gian trch mu, khong thi gian ny c xc nh bi timer. + in p t vo 2 u ng c thay i s lm tc thay i, v vy tn hiu iu xung PWM c tc ng trc tip ln vn tc. Nhim v l phi c mt hm iu bin xung. + Gi tr tc c th c set t phm bm, hay t PC truyn xung + Gi tr tc set t phm bm ly t gi tr tc c lu trong b nh EEPROM ca PIC887. b. Gii quyt vn : Gi tr ca tc c set t phm bm hay c th c truyn t PC xung vi iu khin thng qua cng COM. Cc tnh ton trong lp trnh: c gi tr encoder: + o c tc ng c, ta dng timer1 nh khong thi gian ly mu, v timer0 chy ch counter m s xung. + Khong thi gian ly mu Ts c nh trc, sau mi khong thi gian Ts(Trong bi, Ts = 3ms.) th timer1 s sinh ngt, cho bin so_xung cp nht gi tr v hin th ln LCD v gi ln my tnh. + Ta c cng thc tnh ton vn tc ng c theo s xung m c nh sau: n [vng/pht] = No : S xung trong mt vng( phn gii ca encoder). Ts : Khong thi gian ly mu. so_xung : S xung m c trong thi gian Ts. iu xung PWM: Tn hiu iu khin trc tip ln mch cng sut l tn hiu PWM iu khin tc ng c. + S dng timer2 t tn s PWM:

c v tnh gi tr t bin tr: + Vi iu khin PIC16F887 c 12 knh ADC c phn gii 10bit, gi tr c vo t 0 -> 1023. + Ta c th s dng bin tr thay i tc nhanh hay chm ca ng c.6

Bo co mn vi xa l trong o lng iu khin c gi tr tc t b nh trong EEPROM. B nh trong EEPROM trong PIC887 l vng nh c th ghi/xa, thng dng lu tr cc d liu quan trng. Trong bi ny, chng em s dng lu tr cc gi tr tc c xc nh trc. ghi gi tr vo a ch mt nh trong EEPROM, chng trnh CCS s dng lnh: write_eeprom(value,add); c gi tr ca mt nh trong EEPROM, ta d dng lnh: read_eeprom(add); Trong , value l gi tr ghi vo, add l a ch ghi gi tr. Trong bi, lu 5 gi tr tc vo EEPROM, nhng chng trnh ch s dng 3 tc . Hin thc code: Chng trnh c vit bng ngn ng C trn phn mm CCS. Chng trnh c phn ra thnh cc modul d qun l, debug li v c th m rng cc modul phn mm.... Vi d n ny, chng em chia thnh 3 modul: dcMotorObject.c: Khai bo cc th vin, cc hm, v cc bin ton cc. action.c: Cha cc hm x l chnh ca vi iu khin. chinhthuc.c: chng trnh chnh. Quan h gia cc Modul:

action.c

dcMotorObject.c

Chinhthuc .c

2. Chng trnh giao din trn mn hnh my tnh:

Chng trnh c thit k trn VC 6.0, s dng b th vin MFC.

7

Bo co mn vi xa l trong o lng iu khin

3. S lc v gii thut lp trnh:Start

Ngt truyn thng?

Tc t ly t my tnh truyn xung.

Tc t ly t phm bm v bin tr vo.

Xut ra PWM

o tc t s xung pht ra t encoder

Hin th ln LCD v truyn thng ln my tnh qua cng COM.

8

Bo co mn vi xa l trong o lng iu khin

IV. Kt Lun:Sau mt thi gian tm hiu v nghin cu, chng em thu c nhng kin thc sau: - Thc hin c vic truyn thng my tnh qua cng COM. - Bc u nghin cu lm quen vi PIC16F887, s dng c cc tnh nng c bn ca chip nh: dng chn RC2 to rng xung iu khin tc , s dng ADC, s dng b nh trong EEPROM, giao tip vi ngoi vi (c th l LCD.) - Thit k c mch o v hin th tc ng c in DC v truyn thng hin th kt qu o c trn mn hnh my tnh . - Bc u ng dng k thut lp trnh vo trong ng dng c th. ng dng thc tin: Thit k mch o v iu khin h thng qut thng gi, lm mt, robot Code chng trnh: //File dcMotorObject.c //====================================================== //Chuong trinh: Do luong va dieu khien dong co DC // Hien thi len LCD 16*2 va truyen thong qua COM //Chuong trinh co the dieu khien bang tay hay tu dong thong qua: // 4 phim bam vs bien tro. //Nhom thuc hien: Nguyen Ngoc Anh // Tran Viet Lam // Nguyen Anh Tung // Vu Van Hien //Lop: Tu Dong Hoa K48 //Ngay thuc hien: 20/9/2010 //Ngay hoan thanh: 1/10/2010 //Mo ta phan cung: Su dung PIC16F887 // LCD 16*2, khoi truyen thong COM, // khoi dieu khien dong co DC //====================================================== //----------------- khai bao cac bien toan cuc--------------unsigned int16 so_xung; int1 stt_1=0,stt_2=0,stt_3=0;9

Bo co mn vi xa l trong o lng iu khin int8 mode=1,k=0; char doc_data; float adc; int16 v,vantoc,v_set; //-------------5 toc do co ban cua dong co DC----------------#define speed_1 0 #define speed_2 100 #define speed_3 350 #define speed_4 750 #define speed_5 1023 #define sw_1 pin_b1 #define sw_2 pin_b2 #define sw_3 pin_b3 //===================================================== //----------------Khai bao cac ham con--------------------//====================================================== void init_mcu(void); void truyen_nhan(int16 obj); void hien_thi(int16 obj); void toc_do(unsigned int16 pwm_1); int16 doc_adc(char i); int16 re_eeprom(int add); void wr_epprom(); void hieu_chinh(int16 v); void set_speed(); //file action.c #include "dcMotorObject.c" void truyen_nhan(int16 obj) { if(obj>=1000) { printf("%lu",obj); } else if((obj>=100)&&(obj=10)&&(obj=0)&&(obj3) k=1; stt_1=0; lcd_putcmd(0x01); } switch(k) {12

Bo co mn vi xa l trong o lng iu khin case 1: lcd_putcmd(0x80); lcd_putchar("Toc do 1"); v_set =(unsigned int16) read_eeprom(0x01); break; case 2: lcd_putcmd(0x80); lcd_putchar("Toc do 3"); v_set =(unsigned int16) read_eeprom(0x03); break; case 3: lcd_putcmd(0x80); lcd_putchar("Toc do 5"); v_set=(unsigned int16)read_eeprom(0x05); break; } if(input(sw_3)==0) {delay_ms(10); stt_3=1;} if(input(sw_3)==1 && stt_3==1) { v = v_set; stt_3=0; mode=1; k=0; lcd_putchar("okiman"); lcd_putcmd(0x01); } } } } void hieu_chinh(unsigned int16 v){ { set_adc_channel(0); adc = read_adc(); delay_us(100); adc = adc*5000/1023; if(adc < 2.5) { v_set = v - adc; toc_do(v_set); } else { v_set = v+ adc; toc_do(v_set); } while(mode != 1){13

Bo co mn vi xa l trong o lng iu khin if(input(sw_3)==0) {delay_ms(10); stt_3=1;} if(input(sw_3)==1 && stt_3==1) { v = v_set; stt_3=0; mode=1; k=0; lcd_putchar("okiman"); lcd_putcmd(0x01); } } } }void hien_thi(int16 obj) { int8 a=0,b=0,c=0,d=0; a=obj/1000; b=(obj-1000*a)/100; c=(int)((obj-1000*a-100*b))/10; d=obj%10; ///////////////////////////////// lcd_putcmd(0x80); lcd_putchar("MP"); lcd_putcmd(0xC0); lcd_putchar(a+48); lcd_putchar(b+48); lcd_putchar(c+48); lcd_putchar(d+48); lcd_putchar(" vg/phut"); } //file chinhthuc.c #include #include #device *=16 ADC=10 #FUSES HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT,NOWDT #use delay(clock=20mhz) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include #include "action.c" #INT_TIMER1 void timer1_isr() {14

Bo co mn vi xa l trong o lng iu khin //T_dinh thi cua Timer1