nghiên cứu và thiết kế một hệ thống đo và không chế nhiệt độ tự động

74 5 0
nghiên cứu và thiết kế một hệ thống đo và không chế nhiệt độ tự động

Đ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

LUẬN VĂN TỐT NGHIỆP GVHD : TS HOÀNG MINH TRÍ LỜI CẢM TẠ LỜI CẢM TẠ Em xin chân thành cảm ơn Thầy Hồng Minh Trí tận tình hướng dẫn giúp đỡ em suốt thời gian thực luận văn Xin cảm ơn quý thầy cô Khoa Điện bạn sinh viên khóa đóng góp ý kiến quý báu để tập luận văn hòan thành thời gian SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ LỜI NĨI ĐẦU Trong nhiều lĩnh vực sản xuất công nghiệp nay, ngành công nghiệp luyện kim, chế biến thực phẩm vấn đề đo khống chế nhiệt độ đặc biệt trọng đến yếu tố định chất lượng sản phẫm Nắm tầm quan trọng vấn đề nhóm thực tiến hành nghiên cứu thiết kế hệ thống đo khống chế nhiệt độ tự động, với mong muốn giải yêu cầu trên, lấy làm đề tài tốt nghiệp cho Những kiến thức lực đạt trình học tập trường đánh giá qua đợt bảo vệ luận văn cuối khóa Vì em cố gắng tận dụng tất kiến thức học trường với tìm tịi nghiên cứu, để hồn thành tốt luận văn Những sản phẩm kết đạt ngày hơm khơng có lớn lao, thành năm học tập, thành công em trước trường Mặc dù em cố gắng để hoàn thành tập luận văn thời hạn, khơng tránh khỏi thiếu sót, mong q thầy thơng cảm Em mong đón nhận ý kiến đóng góp Cuối xin chân thành cảm ơn q thầy bạn sinh viên SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ CHƯƠNG 1: DẪN NHẬP I ĐẶT VẤN ĐỀ: Ngày với phát triển công nghiệp vi điện tử, kỹ thuật số hệ thống điều khiển tự động hóa Với kỹ thuật tiên tiến vi xử lí, vi mạch số … đựơc ứng dụng vào lĩnh vực điều khiển, hệ thống điều khiển khí thơ sơ, với tốc độ xử lí chậm chạp xác thay hệ thống điều khiển tự động với lệnh chương trình thiết lập trước Trong trình sản xuất nhà máy, xí nghiệp nay, việc đo khống chế nhiệt độ tự động yêu cầu cần thiết quan trọng Vì nắm bắt nhiệt độ làm việc cuả hệ thống Dây chuyền sản xuất … giúp ta biết tình trạng làm việc yêu cầu Và có xử lý kịp thời tránh hư hỏng cố xảy Để đáp ứng yêu cầu đo khống chế nhiệt độ tự động có nhiều phương pháp để thực hiện, nghiên cứu khảo sát vi điều khiển AVR ATmega 8L, em nhận thấy rằng: ứng dụng vi điều khiển AVR ATmega 8L vào việc đo nhiệt độ tự động phương pháp tối ưu Được đồng ý khoa Điện Trường Đại Học Tôn Đức Thắng, em tiến hành thực đề tài “Điều khiển PID cho lò nhiệt dùng vi điều khiển AVR ATmega 8L” II GIỚI HẠN ĐỀ TÀI: Với thời gian gần mười tuần thực đề tài, trình độ chun mơn có hạn, em cố gắng để hoàn thành tập luận văn này, giải vấn đề sau : • Thiết kế mạch đo nhiệt độ dải từ 00C – 1000C hiển thị LCD • Viết chương trình (phần mềm) để đáp ứng yêu cầu SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ III MỤC ĐÍCH NGHIÊN CỨU : Mục đích trước hết thực đề tài để hoàn tất chương trình mơn học để đủ điều kiện trường • Cụ thể nghiên cứu thực đề tài em muốn phát huy thành ứng dụng vi điều khiển nhằm tạo sản phẩm, thiết bị tiên tiến hơn, đạt hiệu sản xuất cao • Mặt khác tập luận văn làm tài liệu tham khảo cho sinh viên khóa sau, giúp họ hiểu rõ ứng dụng vi điều khiển Ngoài trình nghiên cứu thực đề tài hội để em tự kiểm tra lại kiến thức học trường, đồng thời phát huy tính sáng tạo, khả giải vấn đề theo yêu cầu đặt Và dịp để em tự khẳng định trước trường để tham gia vào hoạt động sản xuất xã hội SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HOÀNG MINH TRÍ CHƯƠNG 2: GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN ATmega 8L Vi điều khiển AVR ATMEGA8 Đặc điểm : AVR 8bit có tiêu chất lượng cao tiêu thụ lượng I Ưu điểm kiến trúc RISC 130 lệnh mạnh hầu hết thực chu kỳ xung nhịp 32 ghi đa bit Bộ nhân chu kỳ co sẳn chip Tốc độ xử lý liệu lên đến 16 triệu lệnh/giây tần số 16MHz Bộ nhớ liệu nhớ chương trình khơng tự liệu Bộ nhớ fash 8k lập trình hệ thống , chịu 10000chu kì viết xố Bộ nhớ eeprom 512byte lap trình hệ thống , chịu 100000 chu kì viết xố Duy trì liệu :20 năm 85 ∙C 100 năm 25 ∙C Đoạn mã khởi động tuỳ chọn với bit khoá độc lập lập trình sẳn hệ thống chương trình khởi động chip Lập trình khố để bảo mậtdữ liệu nhớ II Các tính ngoại vi 2bộ định thời 8bit với chia tần riêng, chế độ so sánh tín hiệu 1bộ định thời 16bit với chia tần riêng, chế độ so sánh tín hiệu ,chế độ bắt tín hiệu Bộ đếm thời gain thực vớibộ tào xung điều chế độ rộng xung kênh ADC với độ xác 10bit SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ Dao diện nối tiếp dây UART nối tiếp lập trình Giao diện nối tiếp chủ/tớ Bộ so sánh tương tự có sẵn chip Bộ định thời wacthdog lập trình với tạo dao động có sẵn chip III Các tính đặc biệt • Có thể khởi động lại vận hành lập trình việc dị sụt áp • Các nguồn ngắt ngồi • chế độ chờ : chế độ idle , chế độ tiết kiệm lượng ,chệ độ tiêu thụ lượng , chế độ standby , chế độ giảm nhiểu ADC IV Vào cách đóng vỏ • 23 đường vào lập trình • PDIP 28 chân , TQFP 32 chân QFN/MLF 32 chân • Điện áp nguồn ni  2.7 - 5.5V (ATmega8L)  4.5 – 5.5V (ATmega8) V Tốc độ xử lý • đến 8MHz (ATmega8L) • đến 16MHz (ATmega8) VI Cách xắp xếp chân SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ VII Mơ tả ATmega vi điều khiển CMOS 8bit tiêu thụ lượng dựa kiến trúc RISC AVR Bằng việc thực lệnh mạnh chu kỳ xung nhịp ATmega đạt tốc độ xử lý liệu lên đến triệu lệnh/ giây tần sốMHz Kiến trúc cho phép người thiết kế hệ thống tối ưu hoá mức độ tiêu thụ lượng mà đảm bảo tốc độ xữ lý SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ Sơ đồ khối SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ VIII ATmega có thơng số đặc trưng sau : Bộ nhhớ flash 8k lập trình hệ thống, Eeprom 512 byte, SRAM 1K byte, 23 đường I/O đa năng, 32 ghi đa năng, UART nối tiếp lập trình được, giao tiếp nối tiếp 2dây, ADC kênh ( 8kênh TQFP QPN/MLF ) với độ xác lên đến 10 bit, định thời watchdog lập trình với dao động bên chip, cổng nối tiếp SPI chế độ tiết kiệm lượng lựa chọn phần mềm Chế độ làm ngừng CPU cho phép SRAM, định thời/đếm, cổng SPI hệ thống ngắt tiếp tục hoạt động Chế độ làm giảm lượng tiêu thụ giữ nguyên nội dung ghi làm treo tao dao động, vô hiệu hoá tất chức khác chip có ngắt ngồi phần cứng khởi động lại, chế độ tiết kiệm lượng, định thời tiếp tục hoạt động, cho phép người sử dụng trì định thời tồn phần cịn lại thiết bị ngủ yên Chế độ giảm nhiễu ADC ngưng CPU tất khối I/O, ngoại trừ định thời ADC để giảm tối thiểu nhiễu suốt trình biến đổi ADC Chế độ standby, tạo dao động tinh thể thạch anh / khuếch đại hoạt động, tồn phần cịn lại thiết bị ngủ yên Điều cho phép khởi động lại nhanh mà tiêu tốn lượng Linh kiện sản xuất với công nghệ nhớ không liệu mật độ cao Atmel Bộ nhớ fash lập trình có sẳn chip cho phép nhớ chương trình lập trình lại hệ thống thông qua giao diện nối tiếp SPI nạp chương trình vào nhớ khơng liệu thơng thường chương trình khởi động có sẳn chip chạy kiến trúc AVR Chương trình khởi động sử dụng giao diện để nạp chương trình ứng dụng vào nhớ fash ứng dụng, phần mềm phần nhớ BOOT Flash tiếp tục chạy phần nhớ flash ứng dụng cập nhật, cung cấp chế thực Read_While_Write (đọc ghi liệu) Bằng cách SVTH : NGUYỄN HOÀN VŨ Trang LUẬN VĂN TỐT NGHIỆP GVHD : TS HOÀNG MINH TRÍ kết hợp CPU 8bit theo kiến trúc RISC cải tiến với nhớ tự lập trình hệ thống chip đơn khối, ATmega8 Atmel vi điều khiển mạnh cung cấp giải pháp có tinh linh hoạt cao hiệu quảvề mặt giá cho nhiều ứng dụng điều khiển Vi điều khiển ATmega AVR hổ trợ tập hợp đủcác công cụ phát triển chương trình hệ thống bao gồm trình biên dịch C, trình hợp ngữ macro, chương trình gỡ rối /bộ mơ chương trình, mơ có sẵn mạch, thiết bị thử nghiệm đánh giá IX Mô tả chân : VCC : Điện áp nguồn nuôi GND : Đất Port B (PB7 PB0) : Cổng B cổng vào chiều bit với điện trở nối lên nguồn dương bên ( chọn cho bit ) Các ngõ cổng B có đặc tính đối xứng Khi cổng B ngõ vào , chân đặt xuống mức thấp từ bên , chúng nguồn dòng điện trở nối lên nguồn dương kích hoạt Các chân cổng B vào trạng thái có điện trở cao tín hiệu đặt lại mức tích cực khơng có tín hiệu giữ nhịp Port C (PC5 PC0) : Cổng C cổng vào chiều bit với điện trở nối lên nguồn dương bên ( chọn cho bit ) Các ngõ cổng C có đặc tính đối xứng Khi cổng C ngõ vào , chân đặt xuống mức thấp từ bên ngồi , chúng nguồn dịng điện trở nối lên nguồn dương kích hoạt Các chân cổng C vào trạng thái có điện trở cao tín hiệu đặt lại mức tích cực khơng có tín hiệu giữ nhịp PC6/RESET : Nếu RSTDISBL lập trình chân PC6 sử dụng ngõ vào Nên nhớ đặc tính điện PC6 khác với chân cổng C Nếu SVTH : NGUYỄN HOÀN VŨ Trang 10 LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ Hàm setting : SVTH : NGUYỄN HOÀN VŨ Trang 60 LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ XV Chương trình điều khiển PID SVTH : NGUYỄN HOÀN VŨ Trang 61 LUẬN VĂN TỐT NGHIỆP GVHD : TS HOÀNG MINH TRÍ /***************************************************** This program was produced by the CodeWizardAVR V1.24.2c Standard Automatic Program Generator © Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l http://www.hpinfotech.ro e-mail:office@hpinfotech.ro Project : Version : Date : 5/26/2008 Author : Admin Company : Comments: Chip type : ATmega8 Program type : Application Clock frequency : 8.000000 MHz Memory model : Small External SRAM size : Data Stack size : 256 /*****************************************************/ #include #include #include #include #include /*****************************************************/ // Declare your global variables here char LINE = 0,LINE_PRE = 0,scan_key_flag = 1; long int error_0,error_1,error_2; eeprom int set_point; eeprom int Kp,Kd,Ki; int KP,KD,KI; #define #define UP_BUTTON_ON UP_BUTTON_OFF #define #define DOWN_BUTTON_ON DOWN_BUTTON_OFF SVTH : NGUYỄN HOÀN VŨ PINC.3==0 PINC.3==1 PINC.5==0 PINC.5==1 Trang 62 LUẬN VĂN TỐT NGHIỆP GVHD : TS HOÀNG MINH TRÍ #define #define RIGHT_BUTTON_ON RIGHT_BUTTON_OFF PINC.2==0 PINC.2==1 #define #define LEFT_BUTTON_ON LEFT_BUTTON_OFF #define #define BUZZER_ON BUZZER_OFF PORTB.2 = PORTB.2 = #define #define OUTPUT_ON OUTPUT_OFF PORTB.1 = PORTB.1 = PINC.4==0 PINC.4==1 #define READ_TEMPERATURE read_adc(1) #define T_BZZR_ON #define T_BZZR_OFF delay_ms(30) delay_ms(100) #define XY #define STRING #define CHAR #define CLRSCR lcd_gotoxy lcd_putsf lcd_putchar lcd_clear() #define #define POSITIVE NEGATIVE #define T_CYCLE_PID 20000 #define T_CYCLE_DISPLAY 2000 /*****************************************************/ void run(void); void setting(void); void bintobcd(long int value,char x,char y); /*****************************************************/ // Alphanumeric LCD Module functions #asm equ lcd_port=0x12 ;PORTD #endasm #include /*****************************************************/ #define ADC_VREF_TYPE 0x00 // Read the AD conversion result long int read_adc(unsigned char adc_input) { SVTH : NGUYỄN HOÀN VŨ Trang 63 LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ ADMUX=adc_input|ADC_VREF_TYPE; // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } /*****************************************************/ // Timer overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Reinitialize Timer value TCNT1H=0x04; TCNT1L=0xE2; // Place your code here }// END INT /*****************************************************/ void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In // State7=T State6=T State5=T State4=T State3=T State2=0 State1=1 State0=T PORTB=0x02; DDRB=0x06; // Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=P State4=P State3=P State2=P State1=T State0=T PORTC=0x3C; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; SVTH : NGUYỄN HOÀN VŨ Trang 64 LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped TCCR0=0x00; TCNT0=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: 125.000 kHz // Mode: Normal top=FFFFh // OC1A output: Discon // OC1B output: Discon // Noise Canceler: Off // Input Capture on Falling Edge TCCR1A=0x00; TCCR1B=0x03; TCNT1H=0x04; TCNT1L=0xE2; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off MCUCR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x04; SVTH : NGUYỄN HOÀN VŨ Trang 65 LUẬN VĂN TỐT NGHIỆP GVHD : TS HOÀNG MINH TRÍ // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off // Analog Comparator Output: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 125.000 kHz // ADC Voltage Reference: AREF pin // ADC High Speed Mode: Off ADMUX=ADC_VREF_TYPE; ADCSRA=0x86; SFIOR&=0xEF; // LCD module initialization lcd_init(16); // Global enable interrupts #asm("sei") BUZZER_ON;T_BZZR_ON;BUZZER_OFF;T_BZZR_OFF; BUZZER_ON;T_BZZR_ON;BUZZER_OFF;T_BZZR_OFF; BUZZER_ON;T_BZZR_ON;BUZZER_OFF;T_BZZR_OFF; STRING(">1.HOAT DONG"); XY(1,1); STRING("2.CAI DAT "); while (1) { /*****************************************************/ while(scan_key_flag) { if(UP_BUTTON_ON) { if(LINE==0) LINE = 1; else LINE ; delay_ms(200); } if(DOWN_BUTTON_ON) { if(LINE==1) LINE = 0; else LINE++; delay_ms(200); SVTH : NGUYỄN HOÀN VŨ Trang 66 LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ } if(RIGHT_BUTTON_ON) { scan_key_flag = 0; BUZZER_ON;T_BZZR_ON;BUZZER_OFF; delay_ms(200); } if(LEFT_BUTTON_ON) { BUZZER_ON;T_BZZR_ON;BUZZER_OFF; delay_ms(200); } if(LINE!=LINE_PRE) { XY(0,LINE_PRE); CHAR(' '); XY(0,LINE); CHAR('>'); LINE_PRE = LINE; BUZZER_ON;T_BZZR_ON;BUZZER_OFF; } }// END WHILE(scan_key_flag) /*****************************************************/ delay_ms(200); lcd_clear(); switch (LINE) { case 0:{run();break;} case 1:{setting();break;} } };// END WHILE(1) } void run(void) { long int nhietdodo,nhietdodat,saisoxaclap,saisovotlo,saisovotlo_pre; long int count_cal_pid=0,count_diplay=0; long int temperature,P,D,I,UDK; char i; CLRSCR; _lcd_ready();_lcd_write_data(0x0F); KP = Kp; KD = Kd; KI = Ki; OUTPUT_ON; SVTH : NGUYỄN HOÀN VŨ Trang 67 LUẬN VĂN TỐT NGHIỆP GVHD : TS HOÀNG MINH TRÍ while(1) { /********************** DISPLAY TEMPERATURE ********************/ count_diplay++; if(count_diplay==T_CYCLE_DISPLAY) { count_diplay = 0; nhietdodat = set_point*10; temperature = READ_TEMPERATURE; nhietdodo = (temperature-559)*5000/1023; saisoxaclap = nhietdodat-nhietdodo; XY(0,0);STRING("DO:");bintobcd(nhietdodo,3,0); XY(8,0);STRING("DT:");bintobcd(nhietdodat,11,0); XY(0,1);STRING("XL:"); bintobcd(saisoxaclap,3,1); XY(8,1);STRING("VL:"); } XY(11,0); /******************** SCAN KEY BOARD *************************/ if(UP_BUTTON_ON) { set_point++; BUZZER_ON;T_BZZR_ON;BUZZER_OFF; delay_ms(200); } if(DOWN_BUTTON_ON) { if(set_point==0) set_point = 0; else set_point ; BUZZER_ON;T_BZZR_ON;BUZZER_OFF; delay_ms(200); } if(RIGHT_BUTTON_ON) { BUZZER_ON;T_BZZR_ON;BUZZER_OFF; delay_ms(200); } if(LEFT_BUTTON_ON) { BUZZER_ON;T_BZZR_ON;BUZZER_OFF; delay_ms(200); } SVTH : NGUYỄN HOÀN VŨ Trang 68 LUẬN VĂN TỐT NGHIỆP GVHD : TS HỒNG MINH TRÍ /********************** CALCULATE PID *******************/ count_cal_pid++; if(UDK

Ngày đăng: 30/10/2022, 15:19

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

  • Đang cập nhật ...

Tài liệu liên quan