sự phát triển của kĩ thuật điện tử đã tạo ra hang loạt những thiết bị với các đặc điểm nổi bật như sự chính xác cao , tốc độ nhanh và gọn nhẹ góp phần cho sựu hoạt động của con người đạt
[Type the document title] TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG ********** ểu Ti ận lu BÁO CÁO BÀI TẬP LỚN Môn Kĩ Thuật Vi Xử Lí m ơn ĐỀ TÀI: THIẾT KẾ MẠCH ĐIỀU KHIỂN THANG MÁY BẰNG VI ĐIỀU KHIỂN AVR họ Giảng viên hướng dẫn: TS.Nguyễn Hoàng Dũng c Thành viên nhóm: Đinh Văn Vương 20134674 Hà Nội tháng 6/2016 Điều khiển thang máy ATmega8 [Type the document title] Nhận xét giảng viên hướng dẫn ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……… Hà Nội, Ngày Tháng Năm 2016 Ti ểu Giảng Viên hướng dẫn ận lu (Ký ghi rõ họ tên) ôn m họ Nhận xét giảng viên chấm c ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……………………………………………………………………………………… ……… Hà Nội, Ngày Tháng Năm 2016 Giảng Viên chấm (Ký ghi rõ họ tên) Điều khiển thang máy ATmega8 [Type the document title] Mục lục Lời nói đầu……………………………………………………… 04 ểu Ti ận lu ôn m c họ Điều khiển thang máy ATmega8 [Type the document title] LỜI NÓI ĐẦU Ngày , vơi ứng dụng khoa học kĩ thuật tiên tiến , giới ngày thay đổi , văn minh đại phát triển kĩ thuật điện tử tạo hang loạt thiết bị với đặc điểm bật xác cao , tốc độ nhanh gọn nhẹ góp phần cho sựu hoạt động người đạt hiệu cao ểu Ti Gắn liền phát khoa học điện tử phát triển vi xử lí, vi điều khiển, đời vi xử lí đa Pentium, Celerong … vi điều khiển có bước nhảy vọt đánh dấu đời vi điều khiển PIC, AVR, FPGA… vi xử lí vi điều khiển ngày đc sử dụng rộng rãi phổ biến , đặc biệt chúng làm việc vơ phức tạp với ứng dụng phổ biến lĩnh vực sống ận lu Và mơn học vi sử lí nhóm em định làm đề tai “ thiết kế mạch điều khiển thang máy dung vi điều khiển AVR” đề tài thiết thực rât gần gũi với sống phục vụ trực tiếp đắc lực cho việc xây dựng tào nhà cao ốc thời buổi công nghiệp hiên m ôn Mặc dù cố gắng thiết kế làm mạch thời gian ngắn lực hạn chế nên khơng thể tránh khỏi sai sót chúng em mong góp ý giúp đỡ thầy cho đề tài chúng em hoàn thiện họ Điều khiển thang máy ATmega8 c Em xin chân thành cám ơn! [Type the document title] PHẦN I: LÍ THUYẾT CHUNG VỀ HỆ THỐNG ĐIỀU KHIỂN THANG MÁY Chương Giới thiệu chung hệ thống thang máy 1.1 Giới thiệu chung thang máy Thang máy thiết bị vận tải dùng để chở người hàng hoá theo ểu Ti phương thẳng đứng Nó loại hình máy nâng chuyển sử dụng rộng rãi ngành sản xuất kinh tế quốc dân ngành khai thác hầm mỏ, ngành xây dựng, luyện kim, công nghiệp nhẹ nơi thang máy sử dụng để vận chuyển hàng hố, sản phẩm, đưa cơng nhân tới nơi làm việc có độ cao khác Nó thay cho sức lực người mang lại suất cao lu Trong sinh hoạt dân dụng, thang máy sử dụng rộng rãi ận nhà cao tầng, quan, khách sạn Thang máy giúp cho người tiết kiệmđược thời gian sức lực m ôn Ở Việt Nam từ trước tới thang máy chủ yếu sử dụng c họ cơng nghiệp để trở hàng phổ biến Nhưng giai đoạn kinh tế nước ta có bước phát triển mạnh nhu cầu sử dụng thang máy lĩnh vực ngày tăng lên 1.2 Sơ đồ khối mạch điều khiển thang máy Điều khiển thang máy ATmega8 [Type the document title] Khối nguồn 220V-5v Khối phím bấm điều khiển Khối điều khiển Atmega ểu Ti Khối hiển thị lu ận Led m ôn Giải thích sơ đồ khối hệ thống - Khối điều khiển: điều khiển trạng thái hoạt động thang, nơi nhận tín hiệu vào đưa tín hiệu cho led - Khối phím bấm điều khiển: cung cấp tín hiệu cho khối sử lí trung tâm hoạt động gọi tầng chon tầng - Khối hiển thị: hiển thị vị trí trạng thái buồng thang xác nhận có tượng gọi tầng - Khối nguồn: cung cấp nguồn chiều cho VDK va led hoạt động c họ * Mô tả hoạt động hệ thống Khi khởi động cabin tầng yên tầng Mặt số thị vị trí cabin (tầng số bao nhiêu) Hệ thống kiểm tra y/c gọi thang theo chiều lên chiều xuống Kiểm tra y/c lên mà khơng có chuyển sang kiểm tra y/c xuống, y/c xuống mà khơng có lại chuyển sang kiểm tra y/c lên Hệ thống hoạt động liên tục Điều khiển thang máy ATmega8 [Type the document title] Khi có y/c hệ thống phục vụ y/c, y/c gọi trước đc phục vụ trước, y/c gọi sau đc phục vụ sau Bất y/c gọi hệ thống nhớ lại thực xong y/c xóa y/c Nếu có nhiều y/c gọi hệ thống xử lý ưu tiên theo thứ tự trình bày phần Khi cabin nhận y/c gọi lên thực y/c (cabin chạy theo chiều lên) y/c gọi lên từ vị trí cabin trở lên đc phục vụ đường (y/c gồm có y/cgọi thang khách cabin y/c chọn tầng đến khách cabin), y/c gọi lên từ vị trí cabin trở xuống bị bỏ qua Các y/c gọi xuống bị bỏ qua tầng cịn có y/c ( bỏ qua không phục mà trạng thái gọi nhớ lại để phục vụ sau) ểu Ti Bộ phận hiển thị hiển thị vị trí cabin, chiều chạy ( lên xuống) cabin đangchạy hay dừng 2.1 Yêu cầu chức năng: ận lu Chương 2: Yêu cầu chức hệ thống m ôn - Mạch thực yêu cầu mong muốn họ - Hiển thị số tầng lên LED c Sử dụng nút bấm để điều khiển hoạt động thang máy 2.2 Yêu cầu phi chức Sử dụng vi điều khiển AVR atmega8 Thiết kế mạch nhỏ 1dm2 Thời gian thực đề tài 13 tuần Mục tiêu thiết kế Sử dụng nút bấm để điều chỉnh tầng Sử dụng led để hiển thị trạng thái tầng led đơn hiển thị vị trí tầng Kế hoạch thực Điều khiển thang máy ATmega8 [Type the document title] Sau phân tích hệ thống, khả nhóm phát triển trình vận hành hệ thống Kế hoạch thực theo trình tự Thời gian Nghiên cứu sơ tuần Phân tích tuần Lập trình, mơ tuần Layout tuần Đặt mạch in 1.5 tuần Hàn mạch in làm báo cáo tuần Bắt đầu Hồn thành ểu Ti Tên q trình ận lu ôn m c họ PHẦN II: XÂY DỰNG THUẬT TỐN VÀ THIẾT KẾ MẠCH Chương Phân tích kiến trúc hệ thống Hệ thống gồm khối Vi xử lý trung tâm avr ATMEGA8 Khối nguồn Khối led led đơn Điều khiển thang máy ATmega8 [Type the document title] Khối nút bấm 3.1Vi xử lí trung tâm ATMEGA ểu Ti ận lu ơn m c họ a) Một số đặc tính kỹ thuật ATMega8 Vi Điều Khiển thuộc dòng Mega AVR hãng ATMEL Dòng Vi Điều Khiển có tính trộ như: 32 ghi đa dụng Tốc độ tối đa lên đến 16MIPS với thạch anh 16MHz Có 8KB nhớ Flash lập trình ISP o 512 byte EFPROM o 1k SRAM o Chu kỳ ghi/ xóa 10000 lần cho nhớ flash ROM 100000 lần cho nhớ EFPROM Điều khiển thang máy ATmega8 [Type the document title] ểu Ti Tính ngoại vi o timer/counter bít, so sánh o timer/counter 16 bit o Bô đếm thời gian thực với đao động riêng o kênh PWM o kênh ADC 10 bits cho kiểu vỏ PDIP, kênh ADC 10 bits cho kiểu vỏ TQFP o Giao tiếp nối tiếp TWI, chân ngắt INT0 INT1 ứng với chân PD2 PD3 o Lập trình nối tiếp USART, giao tiếp nối tiếp SPI master/slave o Bộ so sánh analog on-chip I/O o 23 ngõ vào/ra khả trình o Được đóng gói 28 chân kiểu vỏ PDIP o Điện áp hoạt động 2,7V-5,5V(ATmega8L)và 4,5-5,4V(ATmega8) o Tần số hoạt động 0-8MHz(ATmega8L) 0-16MHz(ATmega8) động ận lu m ôn b Một số chức ATmega8 sử dụng tập lớn c họ Ngắt ngồi: Interrupts, thường được gọi ngắt, tín hiệu khẩn cấp gởi đến xử lí, yêu cầu xử lí tạm ngừng tức khắc hoạt động để “nhảy” đến nơi khác thực nhiệm vụ khẩn cấp đó, nhiệm vụ gọi trình phục vụ ngắt – isr (interrupt service routine ) Sau kết thúc nhiệm vụ isr, đếm chương trình trả giá trị trước để xử lí quay thực tiếp nhiệm vụ dang dở Như vậy, ngắt có mức độ ưu tiên xử lí cao nhất, ngắt thường dùng để xử lí kiện bất ngờ khơng tốn q nhiều thời gian Các tín hiệu dẫn đến ngắt xuất phát từ thiết bị bên chip (ngắt báo đếm timer/counter tràn, ngắt báo trình gởi liệu RS232 kết thúc…) hay tác nhân bên (ngắt báo có button nhấn, ngắt báo có gói liệu nhận…) Hình minh họa cách tổ chức ngắt thông thường chip AVR: Điều khiển thang máy ATmega8 10 [Type the document title] ểu Ti Có ghi liên quan đến ngắt ngồi MCUCR, GICR GIFR: Thanh ghi điều khiển MCU – MCUCR (MCU Control Register) ghi xác lập chế độ ngắt cho ngắt ngoài: ận lu ôn m c họ Nếu không nhấn, trạng thái chân INT HIGH điện trở kéo lên, vừa nhấn button, có chuyển trạng thái từ HIGH sang LOW, gọi cạnh xuống - Falling Edge, button nhấn giữ, trạng thái chân INT xác định LOW cuối thả button, trạng thái chuyển từ LOW sang HIGH, gọi cạnh lên – Rising Edge Dưới cấu trúc ghi MCUCR trích từ datasheet chip atmega8 Điều khiển thang máy ATmega8 11 [Type the document title] MCUCR ghi bit hoạt động ngắt ngoài, quan tâm đến bit thấp của nó (4 bit cao dùng cho Power manager Sleep Mode) Bốn bit thấp bit Interrupt Sense Control (ISC) trong đó 2 bit ISC11:ISC10 dùng cho INT1 bit ISC01:ISC00 dùng cho INT0 Hãy nhìn vào bảng tóm tắt bên để biết chức bit trên, bảng “chân trị” bit ISC11, ISC10 Bảng chân trị cho bit ISC01, ISC00 hoàn toàn tương tự ểu Ti ận lu ôn m Thanh ghi điều khiển ngắt chung – GICR (General Interrupt Control Register) c họ GICR ghi bit có bit cao (bit bit 7) sử dụng cho điều khiển ngắt, cấu trúc ghi bên (trích datasheet) Bit – INT1 gọi bit cho phép ngắt 1(Interrupt Enable), set bit nghĩa bạn cho phép ngắt INT1 hoạt động, tương tự, bit INT0 điều khiển ngắt INT0 Thanh ghi cờ ngắt chung – GIFR (General Interrupt Flag Register) Có bit INTF1 INTF0 bit trạng thái (hay bit cờ Flag) ngắt INT1 INT0 Nếu có kiện ngắt phù hợp xảy chân INT1, bit INTF1 tự động set (tương tự Điều khiển thang máy ATmega8 12 [Type the document title] cho trường hợp INTF0), sử dụng bit để nhận ngắt, nhiên điều không cần thiết cho phép ngắt tự động, ghi thường khơng quan tâm lập trình ngắt ngồi Cấu trúc ghi GIFR trình bày hình bên Giao tiếp TWI-I2C TWI (Two-Wire Serial Intereafce) module truyền thông nối tiếp đồng chip AVR dựa chuẩn truyền thông I2C ểu Ti TWI AVR vận hành ghi bao gồm ghi tốc độ giữ nhịp TWBR, ghi điều khiển TWCR , ghi trạng thái TWSR, ghi địa TWAR ghi liệu TWDR ôn m ận lu - TWBR (TWI Bit Rate Register): ghi bit quy định tốc độ phát xung giữ nhịp đường SCL chip Master họ c Tốc độ phát xung giữ nhịp tính theo cơng thức: Trong CPU Clock frequency tần số hoạt động AVR, TWBR giá trị thi TWBR TWPS giá trị bits TWPS1 TWPS0 nằm thi trạng thái TWSR Hai bits gọi bit prescaler - TWCR (TWI Control Register): ghi bit điều khiển hoạt động TWI. Điều khiển thang máy ATmega8 13 [Type the document title] Một điều cần ý bit ghi TWCR không cần set lúc, tùy vào giai đoạn trình giao tiếp TWI bit set riêng lẻ. - TWSR (TWI Status Register): ghi bit có bit chứa code trạng thái TWI bit chọn prescaler. - TWDR (TWI Data Register): ghi liệu TWI Trong q trình nhận, liệu nhận lưu TWDR Trong trình gởi, liệu chứa TWDR chuyển đường SDA ểu Ti - TWAR (TWI Address Register): ghi chứa device address chip Slave Cấu trúc ghi trình bày hình dưới. ận lu ôn m c họ 3.2 Khối LED hiển thị Điều khiển thang máy ATmega8 14 [Type the document title] ểu Ti lu ận LED đơn đi-ốt, chứa chíp bán dẫn có pha tạp chất để tạo tiếp giáp P-N, kênh P chứa lỗ trống, kênh N chứa điện tử, dòng điện truyền từ A-nốt( kênh P) đến K-tốt (kênh N), điện tử lấp đầy chỗ trống sinh xạ ánh sáng, bước sóng phát có màu khác tùy thuộc vào tạp chất chíp bán dẫn ơn m họ Led đoạn có cấu tạo bao gồm led đơn có dạng xếp theo hình c có thêm led đơn hình trịn nhỏ thể dấu chấm trịn góc dưới, bên phải led đoạn led đơn led đoạn có Anode(cực +) nối chung với vào điểm, đưa chân để kết nối với mạch điện cực lại led đơn đưa thành chân riêng, đưa để kết nối với mạch điện Đầu chung nối với +Vcc, chân lại dùng để điều khiển trạng thái sáng tắt led đơn, led sáng tín hiệu đặt vào chân mức Vì led đoạn chứa bên led đơn, kết nối cần đảm bảo dòng qua led đơn khoảng 10mA-20mA để bảo vệ led Điều khiển thang máy ATmega8 15 [Type the document title] Nếu kết nối với nguồn 5V hạn dịng điện trở 330Ω trước chân nhận tín hiệu điều khiển 3.3 khối phím bấm Việc sử dụng phím bấm dựa chênh áp ấn phím, điện áp đưa chip để xử lí việc dựa vào giá trị điện áp đưa vào chân hpanf tồn nhận biết bấm phím nào? ểu Ti ận lu 3.4 Khối nguồn ôn m c họ Chương 4: Xây dựng thuật toán thiết kế mạch 4.1 Lưu đồ thuật toán: Điều khiển thang máy ATmega8 16 [Type the document title] ểu Ti ận lu ôn m c họ 4.2 Thiết kế mạch: a) Mạch nguyên lí: Điều khiển thang máy ATmega8 17 [Type the document title] ểu Ti ận lu ôn m c họ b) Mạch in: Điều khiển thang máy ATmega8 18 [Type the document title] ểu Ti ận lu c) Liệt kê linh kiên: c họ 100MF 104 LM7805 330 10k 10k 330 Mạch hoàn thiện: Điều khiển thang máy ATmega8 Giá trị ôn Tên linh kiện Atmega8 Nút bấm Led Led đơn Tụ hóa Tụ gốm bjt Trở led Trở nút bấm Trở reset Trở led báo nguồn m STT 10 11 19 Số lượng 5 4 1 [Type the document title] 4.3 Code chạy mô Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size :0 Data Stack size : 256 *****************************************************/ #include //#include "var.h" Ti ểu // Declare your global variables here uint8_t maled7[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8 8,0x83,0xC6,0xA1,0x86,0x8E}; ận lu m uint8_t temp,old_temp,cong,tru; ôn c họ void LED7SEG(uint8_t data); void Check_Key(); void Display_Led(uint8_t Local,uint8_t chon); void Prog_Run(); void main(void) { // Khai Bao PORT B PORTB=0xff; DDRB=0xFC; // Khai Bao PORT C PORTC=0xff; DDRC=0xFF; // Khai Bao PORT D Điều khiển thang máy ATmega8 20 [Type the document title] ểu Ti PORTD=0xff; DDRD=0x3F; // Khai Bao TIMER TCCR0=0x00; TCNT0=0x00; // Khai Bao TIMER TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Khai Bao TIMER ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // Khai Bao Ngat Ngoai MCUCR=0x00; MCUCSR=0x00; // Khai Bao Ngat Timer TIMSK=0x00; // Khai Bao UART UCSRB=0x00; // Khai Bao bo so sanh Analog ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000.000 kHz // ADC Voltage Reference: AVCC pin //ADMUX=ADC_VREF_TYPE & 0xff; ận lu ôn m 21 c họ Điều khiển thang máy ATmega8 [Type the document title] ADCSRA=0x00; // Khai Bao SPI SPCR=0x00; // Khai Bao TWI TWCR=0x00; ểu Ti LED1=0; LED7SEG(maled7[1]); old_temp=temp=1; while (1) { Prog_Run(); } } lu ận void LED7SEG(uint8_t data) { PORTD_1 = data&0x01; PORTD_0 = data&0x02; PORTC_2 = data&0x04; PORTC_1 = data&0x08; PORTC_0 = data&0x10; PORTC_4 = data&0x20; PORTC_5 = data&0x40; PORTC_3 = data&0x80; } void Check_Key() { if(BT1==0) {delay_ms(200); if(BT1==0)temp=1;} else if(BT2==0) {delay_ms(200); if(BT2==0)temp=2;} else if(BT3==0) {delay_ms(200); if(BT3==0)temp=3;} else if(BT4==0) {delay_ms(200); if(BT4==0)temp=4;} } void Display_Led(uint8_t Local,uint8_t chon) ôn m c họ Điều khiển thang máy ATmega8 22 [Type the document title] ểu Ti { if(chon==0) { switch(Local) { case : { LED1=0; LED7SEG(maled7[1]); }break; case : { LED1=1; LED2=0; LED7SEG(maled7[2]); }break; case : { LED2=1 ;LED3=0; LED7SEG(maled7[3]); }break; case : { LED3=1; LED4=0; LED7SEG(maled7[4]); }break; } } if(chon==1) { switch(Local) { case : { LED1=0; LED2=1; LED7SEG(maled7[1]); }break; case : { LED2=0; LED3=1; LED7SEG(maled7[2]); }break; case : { LED3=0; LED4=1; LED7SEG(maled7[3]); }break; case : { LED7SEG(maled7[4]); }break; ận lu ôn m c họ Điều khiển thang máy ATmega8 23 [Type the document title] } ểu Ti } } void Prog_Run() { Check_Key(); if(old_temp!=temp) { if(old_temp