Ngày nay , vơi những ứng dụng của khoa học kĩ thuật tiên tiến , thế giới của chúng ta đã và đang ngày một thay đổi , văn minh và hiện đại hơn . 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 được hiệu quả cao.
Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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 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 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ặ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 Em xin chân thành cám ơn! Điều khiển thang máy ATmega8 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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 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 hoá, 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 Trong sinh hoạt dân dụng, thang máy sử dụng rộng rãi 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 Ở Việt Nam từ trước tới thang máy chủ yếu sử dụng 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 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] Khối nguồn 220V-5v Khối điều khiển Atmega Khối phím bấm điều khiển Khối hiển thị Led 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 * Mô tả hoạt động hệ thống Khi khởi động cabin tầng 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 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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 ngồi 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ó y/c ( bỏ qua không phục mà trạng thái gọi nhớ lại để phục vụ sau) 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 Chương 2: Yêu cầu chức hệ thống 2.1 Yêu cầu chức năng: - Mạch thực yêu cầu mong muốn - Hiển thị số tầng lên LED 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 Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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ự Tên trình 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 Điều khiển thang máy ATmega8 Bắt đầu Hồn thành Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] PHẦN II: XÂY DỰNG THUẬT TOÁ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 Khối nút bấm 3.1 Vi xử lí trung tâm ATMEGA Điều khiển thang máy ATmega8 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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 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 b Một số chức ATmega8 sử dụng tập lớn Ngắt ngoài: Interrupts, thường 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 đó, Điều khiển thang máy ATmega8 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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: 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: Điều khiển thang máy ATmega8 Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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 MCUCR ghi bit hoạt động ngắt ngoài, quan tâm đến bit thấp (4 bit cao dùng cho Power manager Sleep Mode) Bốn bit thấp bit Interrupt Sense Control (ISC) 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ự Thanh ghi điều khiển ngắt chung – GICR (General Interrupt Control Register) 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) Điều khiển thang máy ATmega8 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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ự 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 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 - TWBR (TWI Bit Rate Register): ghi bit quy định tốc độ phát xung giữ nhịp đường SCL chip Master Tốc độ phát xung giữ nhịp tính theo cơng thức: Điều khiển thang máy ATmega8 10 Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌ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 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 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 - TWAR (TWI Address Register): ghi chứa device address chip Slave Cấu trúc ghi trình bày hình Điều khiển thang máy ATmega8 11 Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 3.2 Khối LED hiển thị Điều khiển thang máy ATmega8 12 Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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 Led đoạn có cấu tạo bao gồm led đơn có dạng xếp theo hình 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 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? Điều khiển thang máy ATmega8 13 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 3.4 Khối nguồn Điều khiển thang máy ATmega8 14 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] Chương 4: Xây dựng thuật toán thiết kế mạch 4.1 Lưu đồ thuật toán: 4.2 Thiết kế mạch: a) Mạch nguyên lí: Điều khiển thang máy ATmega8 15 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] b) Mạch in: Điều khiển thang máy ATmega8 16 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] c) Liệt kê linh kiên: STT 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 10 Trở reset 11 Trở led báo nguồn Giá trị 100MF 104 LM7805 330 10k 10k 330 Số lượng 5 4 1 Mạch hoàn thiện: Điều khiển thang máy ATmega8 17 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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" // 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}; uint8_t temp,old_temp,cong,tru; 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; Điều khiển thang máy ATmega8 18 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] DDRC=0xFF; // Khai Bao PORT D 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 Điều khiển thang máy ATmega8 19 Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] // ADC Clock frequency: 1000.000 kHz // ADC Voltage Reference: AVCC pin //ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x00; // Khai Bao SPI SPCR=0x00; // Khai Bao TWI TWCR=0x00; LED1=0; LED7SEG(maled7[1]); old_temp=temp=1; while (1) { Prog_Run(); } } 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;} Điều khiển thang máy ATmega8 20 Hỗ trợ ơn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] 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) { 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 : { Điều khiển thang máy ATmega8 21 Hỗ trợ ôn tập [ĐỀ CƯƠNG CHƯƠNG TRÌNH ĐẠI HỌC] LED3=0; LED4=1; LED7SEG(maled7[3]); }break; case : { LED7SEG(maled7[4]); }break; } } } void Prog_Run() { Check_Key(); if(old_temp!=temp) { if(old_temp