Đồ án: Ứng dụng Pic16F877A đo và ổn định nhiệt độ bằng thuật toán PID

33 41 2
Đồ án: Ứng dụng Pic16F877A  đo và ổn định nhiệt độ bằng thuật toán PID

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐỀ TÀI NHÓM “Ứng dụng Pic16F877A đo ổn định nhiệt độ thuật toán PID” MỤC LỤC Chương I: Tìm hiểu thiết bị Chương II: Sơ đồ nguyên lý Chương III: Lập trình CCS, kết nối PC mơ Proteus Chương IV: Mơ hình thực tế chạy thử chương trình Chương V: Kết luận Thành viên nhóm: 1/ Nguyễn Anh Tuấn – 08D2 (nhóm tr ưởng) 2/ Nguyễn Duy Luân – 08D2 3/ Nguyễn Hữu Tâm – 08D2 4/ Nguyễn Văn Hiệu – 08D4 Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page Chương I TÌM HIỂU THIẾT BỊ 1/ PIC16F877A: - Đây vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 l ệnh có đ ộ dài 14 bít.Mỗi lệnh thực thi chu kỳ xung clock.T ốc đ ộ hoạt động tối đa cho phép 20MHz với chu kỳ l ệnh 200ns.B ộ nh chương trình 8Kx14 bít, nhớ liệu 368x8 byte RAM nh d ữ li ệu EEPROM với dung lượng 256x8 byte.Số PORT I/O v ới 33 pin I/O - Các đặc tính ngoại vi bao gồm khối chức sau: + Timer0: đếm bít với chia tần số bít Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page + Timer1: đếm 16 bít với chia tần số, có th ể th ực ch ức đếm dựa vào xung clock ngoại vi vi điều ển ho ạt đ ộng ch ế độ sleep + Timer2: đếm bít với chia tần số, postcaler + Hai Capture/ so sánh/ điều chế độ rộng xung + Các chuẩn giao tiếp nối tiếp SSP, SPI I2C + Chuẩn giao tiếp nối tiếp USART với bít địa + Cổng giao tiếp song song PSP với chân điều ển RD, WR, CS bên - Các kênh Analog: + kênh chuyển đổi ADC 10 bít.Hai so sánh - Bên cạnh vài đặc tính khác vi điều khiển nh ư: + Bộ nhớ flash với khả ghi xóa 100.000 l ần + Bộ nhớ EEPROM với khả ghi xóa 1.000.000 l ần + Dữ liệu nhớ EEPROM lưu trữ 40 năm + Khả tự nạp chương trình với điều khiển phần m ềm + Watchdog Timer với dao động + Chức bảo mật mã chương trình + Chế độ Sleep + Có thể hoạt động với nhiều dạng Oscillator khác 2/ CẢM BIẾN NHIỆT ĐỘ LM35 DZ: Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page - LM35 cảm biến nhiệt độ analog, nhiệt độ xác định cách đo hiệu điện ngõ LM35: + Đơn vị nhiệt độ: °C + Có mức điện áp thay đổi trực độ C (10mV/*C) + Có hiệu cao, cơng suất tiêu thụ 60uA + Sản phẩm không cần phải canh chỉnh nhiệt độ sử dụng + Độ xác thực tế: 1/4°C nhiệt độ phịng 3/4°C ngồi khoảng -55°C tới 150°C + Chân +Vs chân cung cấp điện áp cho LM35DZ hoạt động (4—20V) + Chân Vout chân điện áp ngõ LM35DZ, đưa vào chân Analog ADC + Chân GND chân nối mass,lưu ý cần nối mass chân đ ể tránh làm hỏng cảm biến làm giảm sai số trình đo 3/ OPAM LM358: - Tín hiệu từ cảm biến đưa qua opam LM358 để khuếch đại lên trước đưa vào chân analog pic qua nâng cao đ ược đ ộ xác Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 4/ LED ĐOẠN: - LED đoạn công cụ thông dụng dùng đ ể hi ển th ị thông số dạng số từ đến 9.Mặc dù công cụ LCD giúp ta th ể hi ện thông số cách linh động LED đoạn đ ược sử dụng nhiều cơng nghiệp ưu như: chịu ảnh hưởng nhiệt độ, d ễ t ạo ý góc nhìn rộng - LED đoạn bao gồm đoạn LED đánh dấu kí t ự a, b, c, d, e, f, g dấu chấm thập phân kí hiệu dp.Ta có th ể xem LED đo ạn tổ hợp gồm LED.8 LEDnày có đầu (Anode Cathode) đ ược nối chung bố trí theo mộtqui tắc định dùng đ ể hi ển th ị chữ số thập phân Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page - Có hai loại LED đoạn, loại Anode chung (c ực Anode c LED nối chung với nhau) loại Cathode chung (cực Cathode c LED nối chung với nhau) - Tùy theo loại LED mà ta có phương pháp ều ển LED tổ hợp sáng tắt cách thích hợp.Đối với loại Anode chung, m ột LED bật sang mức logic đưa vào chân điều khiển đoạn LED m ức logic 0.Đối với loại Cathode chung, LED bật sang n ếu m ức logic đưa vào chân điều khiển đoạn LED đo mức logic 5/ TRANZITO PNP (A1015): Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page - Bảng thông số: - Chân nguồn led đoạn điều khiển chân vi điều khiển thông qua cực Base tranzito PNP Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 6/ QUẠT LÀM MÁT: - Tác dụng làm mát cho nguồn nhiệt lúc cần thiết - Thông số: + Nguồn DC 12V + Dòng điện: 0.14A + Vỏ bọc nhựa + Kích thước 30mm x 30mm x 10mm 7/ MOSFET IRF 540 + OPTO PC817: Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page - Mosfet hay cịn gọi tranzitor có cực cách ly, có tác dụng nh m ột khóa K Việc kích đóng hay mở khóa K tùy thuộc điện áp đặt vào chân G c mosfet - Ở ta đưa xung PWM từ chân RC1 Pic vào chân G c mosfet đ ể kích mở nó, qua điều chỉnh điện áp cung c ấp cho đ ộng c (qu ạt làm mát), nghĩa thay đổi tốc độ động Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page - Dùng Opto PC817 để cách ly quang mạch động l ực m ạch ều khiển 8/ CỔNG COM VÀ IC MAX 232: Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 10 - Giá trị điện áp trung bình đặt lên tải: Ud=Umax*(t0/T) V hay Ud=Umax*D Với D=t0/T hệ số điều chỉnh tính theo % - Cách xuất xung PWM CCS: // cài đặt tần số điều xung: + setup_timer_2 (mode,period,postscale); // cài đặt chân RC2 RC1 làm chân xuất xung PWM + setup_ccp1(ccp_pwm); + setup_ccp2(ccp_pwm); // cài đặt độ rộng xung: + set_pwm1_duty(value); + set_pwm2_duty(value); 5/ CHƯƠNG TRÌNH CCS: // De tai: va on dinh nhiet bang thuat toan PID=============== #include #fuses XT,NOWDT,NOLVP,NOPROTECT,HS #include #device *=16 adc=10 #use delay(clock=12M) #use rs232 (baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) // Toc baud=9600, khong bit chan le, chan truyen RC6, chan nhan RC7== #define TANG RD2 #define GIAM RD3 #define ENTER RD1 // Khai bao bien toan cuc=============================== Byte const maled[ ]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; int8 mode,i,j,k,p,tem_dat,tem_do,HC,HDV,tam_i,tam_p,tam_d; float adc_tong,adc_tb,adc_cu,adc_moi,TPe2,TPe1,Out_put; signed int8 e2,e1; Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 19 long int16 value; float Kp; float Ki; float Kd; //e2: sai so nhiet hien tai; //e1: sai so nhiet qua khu truoc do; //tem_dat: nhiet dat; //tem_do: nhiet hien tai; //Ki: he so tich phan; //Kp: he so ti le; //Kd: he so vi phan; // Khai bao ngat timer1================================= #INT_TIMER1 void Ngat_TIMER1( ) { if(mode==1) { set_timer1(24280); k++; if(k==2) { k=0; printf("%u",tem_do); }}} // Khai bao ngat TIMER0=============================== #INT_TIMER0 void Ngat_TIMER0( ) { if(mode==1) { set_timer0(21);// T=256*(256-21)*4/12 ~ 20ms j++; if(j==5) {j=0; Ki=(tam_i)*0.1; Kp=(tam_p)*0.5; Kd=(tam_d)*0.5; e2=tem_do-tem_dat; TPe2=Ki*(e2+e1)*0.05; Out_put=Out_put+Kp*e2+TPe2+TPe1+Kd*(e2-e1)*10; Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 20 TPe1=TPe2; e1=e2; if(Out_put=0)&&(Out_put150) //value=150; else value=Out_put; set_pwm2_duty(value); }} else set_pwm2_duty(0); } // Khai bao ngat truyen thong RS232======================== // San sang nhan data tu RS232=========================== #INT_RDA void ngat_RDA ( ) { p++; if(p==1) tem_dat=getc( ); if(p==2) tam_i=getc( ); if(p==3) tam_p=getc( ); if(p==4) tam_d=getc( ); if(p==5) mode=getc( ); if(p==6) { mode=getc( ); p=0; Out_put=0; }} // Khai bao chuong trinh con============================= void CAI_DAT_NHIET_DO( ) void main( ) { Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 21 TrisD=0x0E; TrisB=0x00; PortD=0xF0; // Cai dat ADC===================================== setup_adc_ports(AN0); setup_adc(ADC_CLOCK_INTERNAL); set_adc_channel(0); Delay_ms(10); // Cai dat ngat TIMER1================================ enable_interrupts(INT_TIMER1); setup_timer_1(T1_INTERNAL|T1_DIV_BY_8); enable_interrupts(GLOBAL); set_timer1(24280) ; set_timer1(6); // Cai dat TIMER0=================================== enable_interrupts(INT_TIMER0); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256); enable_interrupts(GLOBAL); set_timer0(21); // Cai dat PWM=========================================== // F(x)=F(osc)/(4*mode*(period+1))) //Duty_cycle=value/(period+1) // Bam xung 5KHz; Setup_timer_2(T2_DIV_BY_4,149,1); Setup_ccp2(CCP_PWM); set_pwm2_duty(0); // Cai dat ngat truyen thong RS232========================== enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); mode=0;tem_dat=0;adc_cu=0;e1=0;TPe1=0;j=0;Out_put=0;j=0;k=0;p=0;tem_d o=0; tam_i=0;tam_p=0;tam_d=0; while(1) { // Cai dat nhiet do==================================== if(mode==0) CAI_DAT_NHIET_DO ( ); // PID on dinh nhiet do================================= if(mode==1) { // Chong nhieu vi sai lay mau=========================== Nguyễn Anh Tuấn - 08D2 – Bách Khoa Đà Nẵng Page 22 adc_tong=0; for(i=0;i

Ngày đăng: 14/08/2020, 22:28

Từ khóa liên quan

Mục lục

  • 5/ TRANZITO PNP (A1015):

  • - Bảng thông số:

Tài liệu cùng người dùng

Tài liệu liên quan