1. Trang chủ
  2. » Luận Văn - Báo Cáo

THIẾT KẾ, CHẾ TẠO MÔ HÌNH XE HAI BÁNH TỰ CÂN BẰNG

85 504 8

Đ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

Thông tin cơ bản

Định dạng
Số trang 85
Dung lượng 5,67 MB
File đính kèm BAOCAO.rar (6 MB)

Nội dung

Đối với xe ba hay bốn bánh, việc cân bằng và ổn định của chúng là nhờ trọng tâm của chúng nằm trong bề mặt chân đế do các bánh xe tạo ra. Đối với các xe hai bánh có cấu trúc như xe đạp, việc thăng bằng khi không di chuyển là hoàn toàn không thể, vì việc thăng bằng của bánh xe dựa trên tính chất con quay hồi chuyển ở hai bánh xe khi đang quay. Còn đối với xe hai bánh tự cân bằng, là loại xe chỉ có hai bánh với trục của hai bánh xe trùng nhau, để cho xe cân bằng, trọng tâm của xe bao gồm cả người sử dụng chúng cần được giữ nằm ngay giữa các bánh xe. Điều này giống như ta giữ một cây gậy thẳng đứng cân bằng trong lòng bàn tay.

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH KHĨA LUẬN TỐT NGHIỆP THIẾT KẾ, CHẾ TẠO MƠ HÌNH XE HAI BÁNH TỰ CÂN BẰNG Họ tên sinh viên: PHAN TRUNG HẬU LÊ DUY THANH Ngành: CƠ ĐIỆN TỬ Niên khóa: 2011 – 2015 Tháng năm 2015 THIẾT KẾ, CHẾ TẠO MƠ HÌNH XE HAI BÁNH TỰ CÂN BẰNG Tác giả PHAN TRUNG HẬU - LÊ DUY THANH KHÓA LUẬN ĐƯỢC ĐỀ TRÌNH ĐỂ ĐÁP ỨNG YÊU CẦU CẤP BẰNG KỸ SƯ CHUYÊN NGÀNH CƠ ĐIỆN TỬ Giáo viên hướng dẫn Th.S TRẦN THỊ KIM NGÀ Tháng năm 2015 LỜI NÓI ĐẦU Đối với xe ba hay bốn bánh, việc cân ổn định chúng nhờ trọng tâm chúng nằm bề mặt chân đế bánh xe tạo Đối với xe hai bánh có cấu trúc xe đạp, việc thăng khơng di chuyển hồn tồn khơng thể, việc thăng bánh xe dựa tính chất quay hồi chuyển hai bánh xe quay Còn xe hai bánh tự cân bằng, loại xe có hai bánh với trục hai bánh xe trùng nhau, xe cân bằng, trọng tâm xe bao gồm người sử dụng chúng cần giữ nằm bánh xe Điều giống ta giữ gậy thẳng đứng cân lòng bàn tay Đề tài gồm chương: - Chương 1: Mở đầu Chương 2: Tổng quan Chương 3: Nội dung phương pháp nghiên cứu Chương 4: Kết thảo luận Chương 5: Kết luận đề nghị Với kết đạt đề tài chúng em hy vọng tài liệu tham khảo bổ ích cho bạn muốn tìm hiểu Trong thời gian ngắn thực đề tài cộng với kiến thức nhiều hạn chế, nên khơng thể tránh thiếu sót, chúng em mong góp ý q thầy (cơ) bạn để đề tài hoàn thiện LỜI CẢM ƠN Trong suốt khóa học (2011 – 2015) Trường Đại Học Nơng Lâm TP Hồ Chí Minh, với giúp đỡ quý Thầy Cô giáo viên hướng dẫn mặt từ nhiều phía thời gian thực đề tài Nhóm xin chân thành cảm ơn đến quý Thầy Cô môn Cơ Điện Tử giảng dạy kiến thức chuyên môn làm sở để thực tốt đồ án tốt nghiệp tạo điều kiện thuận lợi cho chúng em thực hồn tất khóa học Đặc biệt, chúng em xin chân thành cảm ơn cô Th.S Trần Thị Kim Ngà anh Cao Đức Lợi tận tình hướng dẫn cho chúng em lời dạy quý báu, giúp chúng em định hướng tốt thực đồ án Chúng bày tỏ lòng biết ơn sâu sắc đến bạn bè, gia đình khích lệ động viên tơi q trình học tập nhiên cứu TP HCM, ngày 20 tháng 06 năm 2015 Sinh viên thực Phan Trung Hậu – Lê Duy Thanh MỤC LỤC DANH SÁCH CÁC CHỮ VIẾT TẮT MATLAB: Matrix Laboratory COM: Component Object Model RS 232: .Recommended Standard 232 DC: Direct Current MPU: Motion Processing Unit CAN: .Controller Area Network Segway PT: Segway Personal Transporter LQR: Linear Quadratic Regulator DOF: Degree of Freedom CPU: Central Processing Unit PID: .Proportional Integral Derivative PWM: Pulse Width Modulation GA: Genetic Algorithm USB: Universal Serial Bus ROM: Read Only Memory UART: Universal Asynchronous Receiver-Transmitter RAM: .Random Access Memory SPI: .Serial Peripheral Interface I2C: Inter Integrated Circuit I/O: .Input/Output EEPROM: .Electrically Erasable Programmable Read Only Memory SRAM: Static Random Access Memory PC: Personal Computer LCD: Liquid Crystal Display SD: Secure Digital MMC: Multi Media Card OLED: Organic Light Emitting Diode IDE: Integrated Development Environment DMP: Digital Motion Processor ADC: Analog to Digital Converter TX: .Transmitter RX: Receiver CSR: .Cambridge Silicon Radio ENA: Enable A ENB: Enable B GND: Ground VIN: Voltage Input SS: .Slave Select MISO: Master Input Slave Output MOSI: Master Output Slave Input SCK: Serial Clock LED: .Light Emitting Diode SDA: .Serial Data Line SCL: Serial Clock Line DLPF: Digital Low Pass Filter DANH SÁCH CÁC HÌNH Hình 1.1 Xe hai bánh tự cân Hình 1.2 Xe scooter Segway Hình 1.3 nBot Hình 1.4 Robot JOE Hình 1.5 Balance Bot I Hình 1.6 Balancing Robot .7 Hình 2.1 Nguyên lý hoạt động xe hai bánh tự cân Hình 2.2 Phân tích lực xe lắc Hình 2.3 Bộ điều khiển PID 11 Hình 2.4 Ví dụ điều khiển vị trí xe đường thẳng 12 Hình 2.5 Mơ hình động 16 Hình 2.6 Mơ hình khung dây động đặt từ trường 17 Hình 2.7 Sơ đồ động điện 18 Hình 2.8 Giao diện IDE Arduino 21 Hình 3.1 Mơ hình lắc ngược 23 Hình 3.2 Mơ Matlab 24 Hình 3.3 Đáp ứng xung hệ thống với Kp, Ki, Kd = .24 Hình 3.4 Đáp ứng xung với Kp = 100, Ki = 1, Kd = 25 Hình 3.5 Đáp ứng xung với Kp = 100, Ki = 1, Kd = 20 25 Hình 3.6 Mơ hình Simulink 27 Hình 3.7 Góc nghiêng xe Kp =100, Ki =1, Kd = 20 28 Hình 4.1 Sơ đồ khối tồn mơ hình .29 Hình 4.2 Module cảm biến MPU-6050 30 Hình 4.3 Molude Bluetooth HC-06 .31 Hình 4.4 Sơ đồ nguyên lý module L298 .32 Hình 4.5 Module điều khiển động L298 33 Hình 4.6 Sơ đồ nguyên lý LM2596 .34 Hình 4.7 Module LM2596 34 Hình 4.8 Arduino UNO R3 35 Hình 4.9 Sơ đồ khối mơ hình 38 Hình 4.10 Sơ đồ nối dây mơ hình 38 Hình 4.11 Mơ hình vẽ phần mềm SOLIDWORKS .40 Hình 4.12 Mặt trước mơ hình xe hai bánh tự cân 41 Hình 4.13 Mặt bên mơ hình 42 Hình 4.14 Mạch điều khiển động module LM2596 43 Hình 4.15 Arduino Uno Module Bluetooth HC-06 43 Hình 4.16 Lưu đồ giải thuật 44 Hình 4.17 Thanh ghi Who_Am_I 45 Hình 4.18 Thanh ghi sample rate devider .45 Hình 4.19 Thanh ghi configuration .45 Hình 4.20 Thanh ghi Gyroscope Configuration 46 Hình 4.21 Full scale Gyro .46 Hình 4.22 Thanh ghi Accelerometer Configulation 46 Hình 4.23 Full scale Acc 46 Hình 4.24 Thanh ghi Power Manegement .47 Hình 4.25 Thanh ghi Acc liệu 47 Hình 4.26 Thanh ghi Gyro liệu 48 Hình 4.27 Khung truyền 49 Hình 4.28 Giá trị thơ thu từ cảm biến MPU-6050 đặt mơ hình vị trí cân 50 Hình 4.29 Giá trị góc thu vị trí cân sau dùng lọc Kalman 53 Hình 4.30 Giao diện ứng dụng điều khiển xe 54 Hình 4.31 Phần setting ứng dụng Bluetooth RC controller .55 DANH SÁCH CÁC BẢNG Bảng 2.1 Phương pháp Ziegler–Nichols 16 Bảng 4.1 Bảng chân trị L298 33 Bảng 4.2 Các thông số Arduino Uno 37 Bảng 4.3 Nối dây cho mô hình 39 Bảng 4.4 Bảng khảo nghiệm 56 10 Mơ hình điều khiển chạy tới lui, xoay trái, xoay phải ứng dụng chạy Android tên Bluetooth RC controller 4.10 Hình 4.31 Phần setting ứng dụng Bluetooth RC controller Điều khiển xe cân Trong đề tài để điều khiển xe chạy tới ta ý đến chiều quay vận tốc động mà phải lưu ý tới việc giữ thăng cho xe Dựa nguyên lý hoạt động xe góc nghiêng xe so với phương thẳng đứng lớn hai động chạy tới trước nhằm giúp xe trở lại vị trí cân Vì muốn xe chạy tới chúng tơi phát tín hiệu điều khiển làm thay đổi góc nghiêng xe mà cụ thể cho lớn Dựa chức thay đổi tốc độ ứng dụng Bluetooth RC Controller ta tạo biến tốc độ có giá trị từ đến tương ứng với cấp tốc độ ứng dụng Bluettooth RC Controller Sau ta lấy biến tốc độ nhân với số để tạo giá trị góc nghiêng so với phương thẳng đứng giúp xe di chuyển Kế đến điều khiển cho xe lui Cũng tương tự cho xe chạy tới ta tạo biến tốc độ nhân với số âm Trong đề tài lấy biến tốc độ nhân với 0,2 -0,2 cho trường hợp xe tới lùi Bây sau xe chạy tới lui vấn đề đặt cho xe quẹo trái quẹo phải Như ta biết muốn xe quẹo phải tất nhiên vận tốc bánh trái phải lớn vận tốc bánh phải Ngược cho trường hợp muốn xe quẹo trái Vì muốn điều khiển cho xe chuyển hướng ta tạo giá trị PWM cộng thêm cách dùng biến tốc độ phần điều khiển xe tới lui nhân với số dương Muốn xe quẹo bên ta cho giá trị PWM cộng thêm bên bên lại giá trị mà ta vừa tính Khảo nghiệm tính ổn định mơ hình Bảng 4.4 Bảng khảo nghiệm 4.11 STT P I D Khoảng dịch chuyển mơ hình (cm) Góc điều khiển 165 20 50 11 2o 10 165 165 165 165 165 165 165 165 165 50 70 90 100 110 120 130 140 150 50 50 50 50 50 50 50 50 50 1.8o 1.5o 1.5o 1.5o 1.5o 1.5o 1.5o 1.5o 1.5o 11 165 160 50 2 1 2 Dao động qua lại quanh vị trí cân Di chuyển dễ ngã Khó di chuyển Di chuyển Di chuyển Di chuyển Di chuyển Di chuyển Di chuyển Di chuyển Di chuyển 1.5o Di chuyển Trạng thái mơ hình Các số liệu cột khoảng cách dịch chuyển mơ hình đo khoảng thời gian phút, giá trị khoảng cách từ trục nối hai bánh xe tới vị trí ban đầu Góc điều khiển giá trị người điều khiển đặt đề mơ hình di chuyển mà cân Qua kết bảng khảo nghiệm chúng em thấy với thông số PID 165 – 160 – 50 mơ hình dao động qua lại quanh vị trí cân điều khiển di chuyển tới lui Chương 5: KẾT LUẬN VÀ ĐỀ NGHỊ 5.1 Những kết đạt - Thiết kế mơ hình xe tự cân hai bánh - Xác định mơ hình tốn học hàm trạng thái mơ hình - Xây dựng chương trình mô Matlab - Simulink - Giao tiếp máy tính để hiệu chỉnh cảm biến thơng số PID - Lập trình phần mềm cho arduino giúp mơ hình cân - Điều khiển mơ hình di chuyển tới lui trái phải địa hình phẳng • Nhược điểm, vấn đề chưa giải - Mơ hình chưa di chuyển địa hình có độ dốc cao - Mơ hình rung di chuyển - Chưa xử lý góc lệch lớn 5.2 Đề nghị - Do chuẩn bị chưa tốt nên mơ hình nhiều khuyết điểm Vì chúng tơi có đề nghị sau để mơ hình hoạt động tốt - Sử dụng động có encoder kèm hộp giảm tốc để vị trí xe cân không bị trôi - Cải tiến thiết kế mơ hình xe scooter cỡ lớn di chuyển vận tải phương tiện giao thông - Nghiên cứu sử dụng giải thuật LQR thay cho PID TÀI LIỆU THAM KHẢO http://codientu.org/threads/6894/ http://www.hocavr.com/index.php/app/dcservo#5-PID http://tienanh.info/hoc-tap/co-dien-tu/dieu-khien-xe-2-banh-tu-can-bang-01-052014.html https://bayesianadventures.wordpress.com/2013/10/27/balance-good-everythinggood/ http://www.ee.usyd.edu.au/tutorials_online/matlab/examples/pend/invPID.html http://www.instructables.com/id/2-Wheel-Self-Balancing-Robot-by-using-Arduinoand-/ http://ctms.engin.umich.edu/CTMS/index.php? example=InvertedPendulum§ion=ControlPID http://brettbeauregard.com/blog/2011/04/improving-the-beginners-pidintroduction/ http://blog.tkjelectronics.dk/2012/09/a-practical-approach-to-kalman-filter-andhow-to-implement-it http://www.kickstarter.com/projects/tkjelectronics/balanduino-balancing-robot-kit http://www.khoahocphothong.com.vn/news/detail/11059/che-tao-hoan-chinh-xehai-banh-tu-can-bang.html PHỤ LỤC #include #include "Kalman.h" #define RESTRICT_PITCH Kalman kalmanX; Kalman kalmanY; #define STD_LOOP_TIME 10000 unsigned long lastLoopUsefulTime = STD_LOOP_TIME; unsigned long loopStartTime; /* IMU Data */ int16_t accX, accY, accZ; int16_t tempRaw; int16_t gyroX, gyroY, gyroZ; /*int16_t accXzero, accYzero, accZzero; int16_t gyroXzero, gyroYzero, gyroZzero;*/ double accXzero,accZzero,gyroYzero; double gyroYrate; double accXangle, accYangle; double gyroYangle; double kalAngleX, kalAngleY; float pTerm=0; float iTerm=0; float dTerm=0; uint32_t timer; uint8_t i2cData[14]; int rotate_left=0; // turn left int rotate_right=0; float error=0; float errorS=0.0f; float errord=0.0f; float lastangle=0; float llastangle=0; float Kp =165.0f; //85 float Kd =50.00f; //15 float Ki = 160.00f; ;//50 // float target = 181; float errorCurrent = 0.0f; float errorLast = 0.0f; float errorSum = 0.0f; float errorDelta = 0.0f; byte ComStep=0; unsigned long timeLast = 0; char command ='S'; const int MotorLeftPin1 = 4; const int MotorLeftPin2 = 5; const int MotorLeftPinEn = 10; //PWM enabled on the Uno float outl=0; float outr=0; float out=0; const int MotorRightPin1 = 6; const int MotorRightPin2 = 7; const int MotorRightPinEn = 11; //PWM enabled on the Uno const int minSpeed = 70; // defines the useful PWM range of the motors [minSpeed, 255] char prevCommand='A'; void setup() { Serial.begin(9600); Wire.begin(); TWBR = ((F_CPU / 400000L) - 16) / 2; // Set I2C frequency to 400kHz i2cData[0] = 7; // Set the sample rate to 1000Hz - 8kHz/(7+1) = 1000Hz i2cData[1] = 0x00; // Disable FSYNC and set 260 Hz Acc filtering, 256 Hz Gyro filtering, KHz sampling i2cData[2] = 0x00; // Set Gyro Full Scale Range to ±250deg/s i2cData[3] = 0x00; // Set Accelerometer Full Scale Range to ±2g while (i2cWrite(0x19, i2cData, 4, false)); // Write to all four registers at once while (i2cWrite(0x6B, 0x09, true)); // PLL with X axis gyroscope reference and disable sleep mode delay(400); // Wait for sensor to stabilize /* Set kalman and gyro starting angle */ while (i2cRead(0x3B, i2cData, 6)); accX = (i2cData[0] =-90) {right = -90;} digitalWrite(MotorRightPin2, LOW); digitalWrite(MotorRightPin1, HIGH); analogWrite(MotorRightPinEn, -right); } else if (right == 0) { digitalWrite(MotorRightPin1, LOW); digitalWrite(MotorRightPin2, LOW); digitalWrite(MotorRightPinEn, LOW); } else { if (right

Ngày đăng: 19/09/2019, 15:42

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w