Cuộc cách mạng 4.0 hiện nay đang dần thay đổi thế giới, các cụm từ như công nghệ số , cảm biến . tự động hóa hay internet kết nối vạn vật đã không còn xa lạ với chúng ta. Để có được những thành tựu trên thì các nhà tri thúc học chính là lực lượng nòng cốt sáng tạo và là lực lượng chính để phát triển tiến đến một cuộc công nghiệp hóahiện đại hóa Trên các ô tô đời mới hiện nay các hãng ô tô lớn trên thế giới đều trang bị cho sản phẩm của mình những công nghệ hiện đại nhằm thu hút được khách hàng. Công nghệ đèn LED có thể điều chỉnh khi người lái đánh lái lúc vào khúc cua (ADAPTIVE FRONT – LIGHTING SYSTEM) ,Trong nghiên cứu này, chúng em sử dụng vi điều khiển là Atmega16 với những tính năng ưu việt và được ứng dụng rộng rãi. Sử dụng phần mềm CodevisionAVR để viết chương trình mô phỏng mạch điều khiển động cơ dẫn động quay đèn pha theo góc lái trên các ô tô đời mới.
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ Ô TÔ BÀI TẬP LỚN CHUYÊN ĐỀ HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT ĐỀ TÀI: ỨNG DỤNG VI ĐIỀU KHIỂN ATMEGA64 MÔ PHỎNG MẠCH ĐIỀU KHIỂN ĐỘNG CƠ DẪN ĐỘNG QUAY ĐÈN PHA THEO GÓC LÁI TRÊN Ô TÔ ĐỜI MỚI Giáo viên hướng dẫn: TS Nguyễn Thành Bắc Sinh viên thực : Nguyễn Văn Sơn Lê Thanh Tá Hồ Văn Tân Ngô Gia Thăng Vũ Việt Thắng Hà Nội -2021 MỤC LỤC DANH MỤC HÌNH ẢNH LỜI NĨI ĐẦU Cuộc cách mạng 4.0 dần thay đổi giới, cụm từ công nghệ số , cảm biến tự động hóa hay internet kết nối vạn vật khơng cịn xa lạ với Để có thành tựu nhà tri thúc học lực lượng nòng cốt sáng tạo lực lượng để phát triển tiến đến cơng nghiệp hóa-hiện đại hóa Trên tơ đời hãng ô tô lớn giới trang bị cho sản phẩm cơng nghệ đại nhằm thu hút khách hàng Công nghệ đèn LED điều chỉnh người lái đánh lái lúc vào khúc cua (ADAPTIVE FRONT – LIGHTING SYSTEM) Trong nghiên cứu này, chúng em sử dụng vi điều khiển Atmega16 với tính ưu việt ứng dụng rộng rãi Sử dụng phần mềm CodevisionAVR để viết chương trình mơ mạch điều khiển động dẫn động quay đèn pha theo góc lái ô tô đời Chúng em xin cảm ơn bảo tận tình quý báu khơng thể thiếu thầy giáo Nguyễn Thành Bắc suốt trình làm tập lớn chúng em Trong q trình làm việc, chúng em khơng thể khơng tránh khỏi sai sót, nên em rất mong bảo đóng góp ý kiến thầy bạn để nhóm chúng em hoàn thiện Hà Nội, ngày tháng năm 2021 GIỚI THIỆU HỆ THỐNG ĐIỀU KHIỂN ĐÈN PHA THEO GĨC LÁI TRÊN Ơ TƠ Xuất phát từ thực tế, người ta tìm cách khắc phục tượng thiếu ánh sáng xe vào cua chạy đường khúc khuỷu, đèn chiếu sáng thơng thường không đảm nhận việc chiếu sáng góc gần bên phải bên trái xe, tình trạng tương tự người ta chạy cung đường hẹp không thẳng Việc thường xuyên đối mặt với vùng tối đột ngột xuất trước mũi xe làm cho người lái căng thẳng, khả gây tai nạn cao đơn giản khơng kịp nhìn thấy mặt đường khúc quanh tối tăm Các nhà sản xuất tìm giải pháp để thay đổi vùng chiếu sáng xe tùy theo điều kiện đường xá, tiêu biểu hệ thống đèn liếc tĩnh đèn liếc động Tuy nhiên, tập lớn chúng em tìm hiểu hệ thống đèn liếc động 1.1 Giới thiệu hệ thống Khác với hệ thống đèn liếc tĩnh, với hệ thống đèn liếc động, để thay đổi vùng chiếu sáng người ta cần sử dụng nguồn sáng (không sử dụng thêm đèn chiếu phụ hệ thống đèn chiếu sáng góc cua tĩnh), nói rõ thay vào cua bật thêm đèn chiếu phụ bổ sung ánh sáng theo góc cua người ta sử dụng nguồn sáng bóng đèn cốt để làm điều Đèn cốt thay đổi vùng chiếu sáng theo góc cua, hình minh họa đây: Hình Sự khác biệt xe có trang bị đèn liếc động cung đường cong 1.2 Sơ đồ hoạt động số loại mạch điện hệ thống đền xe: Mạch điện hệ thống đèn xe chia làm hai loại chính: Loại có sử dụng relay cho cơng tắc đèn đầu, công tắc chuyển pha-cốt, loại không sử dụng relay a Loại không sử dụng relay: 1.3 Cấu tạo nguyên lý làm việc số phận 1.3.1 Động servo a.Cấu tạo Hình Cấu tạo động RC Servo + Động DC + Mạch điều khiển + Biến trở + Bánh hộp số b Nguyên lý làm việc Về nguyên lý điều khiển, động RC Servo xác định vị trí cần quay tới nhờ độ rộng xung mà ta đưa tới dây điều khiển động Mạch điều khiển RC Servo có chức so sánh độ rộng xung điều khiển với tín hiệu điện áp mà biến trở đưa về, Nếu có khác biệt (có sai số), tự động điều chỉnh vị trí động lại cho đúng, trình tự động điều chỉnh diễn khép kín đến vị trí động xác định xác (khi sai số độ rộng xung mà vi điều khiển đưa tới với tín hiệu điện áp biến trở đưa 0) Vì gọi điều khiển hồi tiếp khép kín 1.3.2 Cảm biến tốc độ a Cấu tạo Hình cảm biến tốc độ loại điện từ b.Nguyên lý làm việc Khi trục thứ cấp hộp số quay, khoảng cách lõi cuộn dây roto tăng hay giảm Số lượng đường sức từ qua lõi tăng hay giảm tương ứng, tạo điện áp xoay chiều AC cuộn dây Do tần số điện áp xoay chiều tỷ lệ với tốc độ quay roto, dùng để nhận biết tốc độ xe 1.3.3 ECU a cấu tạo ECU tạo nên từ phận chính, phận cịn có thêm nhiều phận cấu tạo nhỏ Cụ thể cấu tạo ECU sau: - Bộ phận nhớ ECU Bộ nhớ ECU bao gồm yếu tố nhỏ cấu thành nên RAM, ROM, KAM PROM - vi xử lý (Microprocessor): phận có khả tiếp nhận thơng tin tín hiệu khác - đường truyền BUS: tên nó, phận dùng để truyền phát số liệu lệnh ECU b Nguyên lý làm việc ECU tiếp nhận tín hiệu từ cảm biến tốc độ cảm biến góc lái để điều chỉnh góc quay động servo cách xác 1.3.4 Cảm biến góc lái a Cấu tạo Hình cảm biến góc lái Magnetic :nam châm vĩnh cửu Magnetic resistor sensor element: cảm biến từ Torsion bar:thanh xoắn Steering gear connecting piece:điểm kết nối cần tay lái b.Nguyên lý làm việc Cảm biến góc lái đảm nhiệm nhiệm vụ ghi lại góc xoay vơ lăng, sau gửi tín hiệu ECU để hệ thống nhận biết người lái muốn di chuyển xe hướng 1.4 Nguyên lý làm việc hệ thống Nhìn chung cấu tạo cấu chấp hành hệ thống đèn liếc động phức tạp đa dạng, người ta đưa nhiều giải pháp để thay đổi góc chiếu sáng bóng đèn cốt, tiêu biểu loại dựa tượng khúc xạ ánh sáng Dưới trình bày cấu tạo loại hệ thống chiếu sáng góc cua động tiêu biểu Hệ thống đèn liếc động loại gồm phần dẫn động cấu đảo tròng hoạt động nhờ động Servo, động servo điều khiển vùng chiếu sáng đèn pha dao động 15 chuyển góc sang bên, tùy theo góc thay đổi vơ lăng Hình Cấu tạo đèn liếc động Bản chất cụm Xenon bố trí thêm cấu dẫn động gồm động servo phận khác để dịch chuyển hướng ống chiếu sáng, dẫn đến thay đổi góc chiếu sáng Với mục đích phổ thơng hóa hệ thống đèn liếc động, người ta thiết kế nhiều loại cấu đèn liếc động đơn giản có tính lắp lẫn cao Hình Các modul cấu đèn liếc động lắp thêm Các cấu đèn liếc động độc lập với nguồn sáng sử dụng, bất luận Xenon, Bi - Xenon hay Halogen ta lắp thêm cấu đèn liếc động cho hệ thống đèn đầu chưa trang bị hệ thống đèn liếc, cấu đèn liếc ngày cung cấp rời với vài hệ tiêu chuẩn cụ thể cho dòng xe, nhờ đa phần tự trang bị thêm hệ thống đèn liếc mà khơng cần xe phải có thay đổi nghiêm trọng Cấu tạo cấu chấp hành hệ thống đèn liếc động đa dạng sử dụng động servo để dẫn động nên việc điều khiển cấu chấp hành nhìn chung điều khiển động Servo dựa tín hiệu cảm biến góc cua cảm biến tốc độ Về hệ thống điều khiển hệ thống đèn liếc động tương tự hệ thống đèn liếc tĩnh, điều khiển trung tâm nhận tín hiệu từ cảm biến góc cua cảm biến tốc độ, phân tích giá trị góc cua tốc độ lái xe để xác định góc điều chỉnh vùng chiếu sáng tốc độ đáp ứng, đưa tín hiệu điều chỉnh motor servor theo góc xác định bên trái phải tuỳ theo góc cua Với tính tốn phù hợp dựa giá trị tốc độ tức thời, Đèn liếc động có tốc độ liếc nhanh hay chậm hồn tồn thích ứng với tốc độ xe chạy, ôm cua nhanh, đèn liếc nhanh, chạy chậm đèn liếc chậm, nhờ đó, người lái, nguồn sáng luôn gắn chặt với xe, cố định hài hòa 1.5 Xu hướng phát triển hệ thống chiếu sáng chủ động Hệ thống chiếu sáng chủ động (adaptive front lighting system – AFS) nằm lĩnh vực an toàn chủ động rất quan tâm trọng nghiên cứu, 10 ARM7/LPC2000 giao tiếp I2C, SPI, CAN, USB, Ethenet, cịn mơ mạch số, mạch tương tự cách hiệu Proteus công cụ chuyên mô mạch điện tử 2.3 Giới thiệu CODEVISION CodevisionAVR trình biên dịch chéo C, mơi trường phát triển tích hợp tạo chương trình tự động thiết kế cho họ vi điều khiển AVR Atmel Chương trình chạy hệ điều hành 2000, XP, Vista Windows 32/64 bit Bên cạnh thư viện tiêu chuẩn C, CodevisionAVR cịn có thư viện dành riêng cho: -Alphanumeric LCD modules -Philips I2C bus -National Semiconductor LM75 Temperature Sensor -Philips PCF8563, PCF8583, Maxim/Dallas Semiconductor DS1302 and DS1307 Real Time Clocks -Maxim/Dallas Semiconductor Wire protocol -Maxim/Dallas Semiconductor DS1820, DS18S20 and DS18B20 Temperature Sensors -Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat -Maxim/Dallas Semiconductor DS2430 and DS2433 EEPROMs -TWI for ATxmega chips -Power management -Delays -Gray code conversion -MMC/SD/SD HC FLASH memory cards low level access -FAT acces on MMC/SD/SDB HC FLASH memory cards CodevisionAVR bao gồm tạo chương trình tự động CodeWizardAVR, nơi cho phép bạn viết chương trình đơn giản chi vài phút, gồm hàm sau: 18 -Thiết lập truy cập nhớ CHƯƠNG MẠCH MƠ PHỎNG HỆ THỐNG ĐIỀU KHIỂN ĐÈN PHA THEO GĨC LÁI Hình 12 Mạch điều khiển đèn pha theo góc lái 3.1 Mô mạch điều khiển động dẫn động quay đèn pha theo góc lái tô đời Mạch mô động dẫn động quay đèn pha theo goc lái thiết lập cách sử linh kiện : Atmega 64 , Màn hình LCD , Biến trở , Motor quay, rơ-le RL1.RL2 Xi nhan Trái đại diện cho tín hiệu vô lăng xe cua trái ,xi nhan phải đại diện cho tín hiệu vơ lăng xe cua phải Nomal tín hiệu xe chưa cài hệ thống đèn tự động thay đổi góc lái.Các tín hiệu gửi vi điều khiển Atmega 64 để xử lí đưa tín hiệu điều khiển mơ tơ góc quay bóng đèn Ngun lí làm việc mạch : 19 + Khi ta thay đổi giá trị tăng giảm biến trở Rơ-le điều khiển tăng giảm , đảo chiều tốc độ động Sự thay đổi biến trở ví việc thay đổi góc lái vơ-lăng xe + Code viết cho mạch lập trình cho giá trị biến trở thay đổi giá trị góc lái (hay biến trở ) hiển thị hình LCD ½ giá trị góc xoay đèn pha Giá trị góc lái giao động khoảng từ (-30;30) tương ứng thay đổi góc đèn (-15;15) - Kết hiển thị thay đổi giá trị biến trở 16 giá trị góc đèn ảnh : Hình 13 Kết hiển thị 3.2 Code cho hệ thống điều khiển động dẫn động quay đèn pha theo góc lái tơ đời #include #include #include // Alphanumeric LCD Module functions #include 20 int dem=0; // khai bao BIEN int ADC0=0; int truc=0; float tan; int vo=0; char chuoi[20]; // External Interrupt service routine interrupt [EXT_INT0] void ext_int0_isr(void) { if(PORTB.0==1&&dem-15) {dem = dem - 1;} } #define ADC_VREF_TYPE 0x00 // Read the AD conversion result unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); 21 ADCSRA|=0x10; return ADCW; } void volang1(void) // ham hien thi lcd {ADC0=read_adc(0); tan=((float)ADC0-(float)511.5)/(float)17.05; vo=(int)tan; sprintf(chuoi,"goc lai:%3d",vo); lcd_gotoxy(0,0); lcd_puts(chuoi); lcd_putchar(223); lcd_putchar(''); } // Declare your global variables here void TRUCLAI(void) {truc=dem; sprintf(chuoi,"bong den:%3d",truc); lcd_gotoxy(0,1); lcd_puts(chuoi); } // Declare your global variables here void main(void) { // Declare your local variables here 22 // Input/Output Ports initialization // Port A 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 PORTA=0x00; DDRA=0x00; // Port B 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 PORTB=0x00; DDRB=0x00; // Port C 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 PORTC=0x00; 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 23 PORTD=0x00; DDRD=0x00; // Port E 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 PORTE=0x00; DDRE=0x00; // Port F 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 PORTF=0x00; DDRF=0x00; // Port G initialization // Func4=In Func3=In Func2=In Func1=In Func0=In // State4=T State3=T State2=T State1=T State0=T PORTG=0x00; DDRG=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer Stopped // Mode: Normal top=0xFF 24 // OC0 output: Disconnected ASSR=0x00; TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon // OC1B output: Discon // OC1C output: Discon // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; 25 OCR1BL=0x00; OCR1CH=0x00; OCR1CL=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // Timer/Counter initialization // Clock source: System Clock // Clock value: Timer3 Stopped // Mode: Normal top=0xFFFF // OC3A output: Discon // OC3B output: Discon // OC3C output: Discon // Noise Canceler: Off // Input Capture on Falling Edge // Timer3 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off // Compare C Match Interrupt: Off TCCR3A=0x00; TCCR3B=0x00; 26 TCNT3H=0x00; TCNT3L=0x00; ICR3H=0x00; ICR3L=0x00; OCR3AH=0x00; OCR3AL=0x00; OCR3BH=0x00; OCR3BL=0x00; OCR3CH=0x00; OCR3CL=0x00; // External Interrupt(s) initialization // INT0: On // INT0 Mode: Low level // INT1: Off // INT2: Off // INT3: Off // INT4: Off // INT5: Off // INT6: Off // INT7: Off EICRA=0x00; EICRB=0x00; EIMSK=0x01; EIFR=0x01; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; 27 ETIMSK=0x00; // USART0 initialization // USART0 disabled UCSR0B=0x00; // USART1 initialization // USART1 disabled UCSR1B=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000.000 kHz // ADC Voltage Reference: AREF pin ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; 28 // Alphanumeric LCD initialization // Connections specified in the // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu: // RS - PORTC Bit // RD - PORTC Bit // EN - PORTC Bit // D4 - PORTC Bit // D5 - PORTC Bit // D6 - PORTC Bit // D7 - PORTC Bit // Characters/line: 16 lcd_init(16); // Global enable interrupts #asm("sei") DDRA=0b0; // khai bao trang thai a o la int laf out DDRB=0b11111; PORTB=0b11100; // laf 0v ka 5v while (1) { volang1(); TRUCLAI(); if(PINB.3==0&&truc==15) { PORTB.0=0; } if(PINB.4==0&& truc==-15) { PORTB.1=0;} if(PINB.2==0) { PORTB.0=0; 29 PORTB.1=0; dem=0; } if(PINB.3==0 && truc -15) { PORTB.0=0; PORTB.1=1; } if(PINB.2==1) { if(PINB.3==1&&PINB.4==1) { if(vo>0&&vo