Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 167 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
167
Dung lượng
12,44 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM - NGUYỄN HOÀNG TRUNG KIÊN THIẾT KẾ CHẾ TẠO ROBOT KIỂM TRA CỌC BÊ TÔNG LY TÂM SAU KHI ÉP LUẬN VĂN THẠC SĨ Chuyên ngành : Kỹ Thuật Cơ Điện Tử Mã số ngành: 60520114 TP HỒ CHÍ MINH, tháng năm 2017 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM - NGUYỄN HOÀNG TRUNG KIÊN THIẾT KẾ CHẾ TẠO ROBOT KIỂM TRA CỌC BÊ TÔNG LY TÂM SAU KHI ÉP LUẬN VĂN THẠC SĨ Chuyên ngành : Kỹ Thuật Cơ Điện Tử Mã số ngành: 60520114 CÁN BỘ HƯỚNG DẪN KHOA HỌC: TS Bùi Thanh Luân TP HỒ CHÍ MINH, tháng năm 2017 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC CƠNG NGHỆ TP HCM Cán hướng dẫn khoa học : TS Bùi Thanh Luân Luận văn Thạc sĩ bảo vệ Trường Đại học Công nghệ TP HCM ngày 14 tháng năm 2017 Thành phần Hội đồng đánh giá Luận văn Thạc sĩ gồm: TT Họ tên TS Nguyễn Thanh Phương TS Ngô Hà Quang Thịnh TS Nguyễn Hùng TS Ngô Mạnh Dũng TS Võ Tường Quân Chức danh Hội đồng Chủ tịch Phản biện Phản biện Ủy viên Thư ký Xác nhận Chủ tịch Hội đồng đánh giá Luận sau Luận văn sửa chữa (nếu có) Chủ tịch Hội đồng đánh giá LV TS Nguyễn Thanh Phương TRƯỜNG ĐH CÔNG NGHỆ TP HCM VIỆN ĐÀO TẠO SAU ĐẠI HỌC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc TP HCM, ngày 20 tháng năm 2017 NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: Nguyễn Hoàng Trung Kiên Giới tính: Nam Ngày, tháng, năm sinh: 29/08/1990 Nơi sinh: Bến Tre Chuyên ngành: Kỹ Thuật Cơ Điện Tử MSHV: 1441840005 I- Tên đề tài: THIẾT KẾ CHẾ TẠO ROBOT KIỂM TRA CỌC BÊ TÔNG LY TÂM SAU KHI ÉP II- Nhiệm vụ nội dung: Thiết kế robot chui vào cọc bê tông ly tâm sau ép Mô lực tác dụng làm việc lên robot Thiết kế hệ thống thu thập liệu gồm: camera, cảm biến đo độ nghiêng cọc Thực nghiệm robot kiểm tra vết nứt, đo độ nghiêng cọc bê tông ly tâm sau ép cơng trình (250 Nguyễn Thái Sơn, Q.Gò Vấp, TP HCM) III- Ngày giao nhiệm vụ: IV- Ngày hoàn thành nhiệm vụ: V- Cán hướng dẫn: TS Bùi Thanh Luân CÁN BỘ HƯỚNG DẪN KHOA QUẢN LÝ CHUYÊN NGÀNH (Họ tên chữ ký) (Họ tên chữ ký) TS Bùi Thanh Luân i LỜI CAM ĐOAN Tơi xin cam đoan cơng trình nghiên cứu riêng Các số liệu, kết nêu Luận văn trung thực chưa cơng bố cơng trình khác Tơi xin cam đoan giúp đỡ cho việc thực Luận văn cảm ơn thơng tin trích dẫn Luận văn rõ nguồn gốc Học viên thực Luận văn (Ký ghi rõ họ tên) Nguyễn Hoàng Trung Kiên ii LỜI CÁM ƠN Trong trình thực luận văn tác giả gặp nhiều khó khăn nhờ có tận tâm hết lòng giúp đỡ Thầy TS Bùi Thanh Ln nên giúp tơi hồn thành luận văn Lời cảm ơn chân thành xin gửi đến Thầy TS Bùi Thanh Ln Xin cảm ơn tồn thể Thầy, Cơ Trường Hutech truyền đạt kiến thức tạo điều kiện tốt để tơi hồn thành luận văn cách tốt đẹp TP.HCM, ngày 14 tháng năm 2017 (Họ tên Tác giả Luận văn) Nguyễn Hồng Trung Kiên TĨM TẮT LUẬN VĂN Trong luận văn nghiên cứu thiết kế chế tạo robot kiểm tra cọc bê tông ly tâm Các vấn đề thiết kế chế tạo robot gồm phần khí phần thu thập xử lý tín hiệu trả từ cảm biến camera Phần khí tồn robot thiết kế 3D mơ tác dụng lực lên tất cấu robot, mô lực, ứng suất biến dạng nhằm đánh giá khả chịu lực robot trước tiến hành thiết kế mơ hình Phần xử lý tín hiệu tơi nghiên cứu tổng quát mạch xử lý tín hiệu mạch Arduino, mạch cảm biến gia tốc, quay hồi chuyển Còn phần lọc nhiễu tín hiệu từ cảm biến tơi nghiên cứu thuật tốn lọc nhiễu kalman, lọc giúp giảm sai số trả từ cảm biến, phần camera đưa hình ảnh quan sát gửi máy tính Luận văn gồm phần: Chương giới thiệu tổng quan, chương thiết kế khí, chương mơ lực tác dụng, chương thiết kế hệ thống đo độ nghiêng, chương mơ hình kết thực nghiệm ABSTRACT In this thesis has studied the design and manufacture robotic inspection centrifugal concrete piles These issues include robotics design mechanical parts and components collected signal processing returns from the sensors and camera Mechanical parts, all designed 3D robot simulation and its effects on all the structure of the robot, the power simulation, stress and deformation to evaluate the bearing capacity of the robot before proceeding design model Signal processing section I studied general signal processing circuits such as Arduino circuit, circuit accelerometer sensor, gyroscope As for noise filtering signals from the sensor I studies of filtering algorithms Kalman noise filter will help reduce the errors returned from the sensor, The camera portion of the observation image is sent to the computer The thesis consists of parts: chapter presents an overview, chapter of mechanical design, chapter simutates the force, chapter designs tilt measurement, chapter models and experimental results MỤC LỤC Tên đề mục Trang Lời cam đoan i Lời cảm ơn ii Tóm tắt luận văn iii Abstract iv Mục lục v Danh mục bảng vii Danh mục từ viết tắt viii Danh mục hình ix CHƯƠNG 1: TỔNG QUAN 1.1 Mở đầu 1.1.2 Đặt vấn đề 1.1.3 Tính cấp thiết đề tài, ý nghĩa thực tiễn 1.1.4 Mục tiêu phương pháp nghiên cứu 1.1.5 Giới hạn đề tài 1.2 Tổng quan 1.3 Các cơng trình nghiên cứu liên quan 1.3.1 Các cơng trình nghiên cứu nước 1.3 Nhận xét chung CHƯƠNG 2: THIẾT KẾ CƠ KHÍ 32 36 2.1 Các yêu cầu thiết kế 36 2.2 Sơ đồ nguyên lý 36 2.2 Thiết kế 37 2.2.1 Thiết kế 3D CHƯƠNG 3: MÔ PHỎNG LỰC TÁC DỤNG 37 41 3.1 Mô chi tiết robot 41 3.2 Tấm cố định cấu bung 43 3.3 Thanh bung bánh xe 44 3.4 Thanh đẩy cấu bung 46 3.5 Thanh sườn đứng cấu bung 48 3.6 Mặt bích robot 49 3.7 Mơ lực tác dụng lên toàn khung robot 51 CHƯƠNG 4: THIẾT KẾ HỆ THỐNG ĐO ĐỘ NGHIÊNG 4.1 Thiết kế kiểm tra độ nghiêng 57 57 4.1.1 Nguyên lý 57 4.1.2 Phần cứng 59 4.1.3 Phần mềm 62 4.2 Giao diện hiển thị 66 4.2.1 Giới thiệu phần mềm Processing 66 4.2.2 Lập trình giao diện 67 4.3 Bộ phận quan sát robot CHƯƠNG 5: MƠ HÌNH VÀ KẾT QUẢ THỰC NGHIỆM 5.1 Mơ hình 68 70 70 5.1.1 Cụm điều chỉnh theo đường kính cọc bê tơng 70 5.1.2 Cụm camera 71 5.1.3 Phần thân robot 72 5.1.4 Nhận tín hiệu 73 5.2 Thực nghiệm kết 73 5.2.1 Một số hình ảnh thực nghiệm cơng trình Hutech (khu cơng nghệ cao)74 5.2.2 Một số hình ảnh thực nghiệm cơng trình (250 Cao Thái Sơn, GV) 77 5.1.2 Tiến hành thực nghiệm 79 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 87 6.1 Kết thực 87 6.2 Hạn chế 87 TÀI LIỆU THAM KHẢO 88 const uint8_t MPU6050 = 0x68; // If AD0 is logic low on the PCB the address is 0x68, otherwise set this to 0x69 const uint8_t HMC5883L = 0x1E; // Address of magnetometer /* IMU Data */ double accX, accY, accZ; double gyroX, gyroY, gyroZ; double magX, magY, magZ; int16_t tempRaw; double roll, pitch, yaw; // Roll and pitch are calculated using the accelerometer while yaw is calculated using the magnetometer double gyroXangle, gyroYangle, gyroZangle; // Angle calculate using the gyro only double compAngleX, compAngleY, compAngleZ; // Calculated angle using a complementary filter double kalAngleX, kalAngleY, kalAngleZ; // Calculated angle using a Kalman filter uint32_t timer; uint8_t i2cData[14]; // Buffer for I2C data #define MAG0MAX 603 #define MAG0MIN -578 #define MAG1MAX 542 #define MAG1MIN -701 #define MAG2MAX 547 #define MAG2MIN -556 float magOffset[3] = { (MAG0MAX + MAG0MIN) / 2, (MAG1MAX + MAG1MIN) / 2, (MAG2MAX + MAG2MIN) / }; double magGain[3]; void setup() { delay(100); // Wait for sensors to get ready Serial.begin(115200); 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(MPU6050, 0x19, i2cData, 4, false)); // Write to all four registers at once while (i2cWrite(MPU6050, 0x6B, 0x01, true)); // PLL with X axis gyroscope reference and disable sleep mode while (i2cRead(MPU6050, 0x75, i2cData, 1)); if (i2cData[0] != 0x68) { // Read "WHO_AM_I" register Serial.print(F("Error reading sensor")); while (1); /* Yaw estimation */ updateYaw(); double gyroZrate = gyroZ / 131.0; // Convert to deg/s // This fixes the transition problem when the yaw angle jumps between -180 and 180 degrees if ((yaw < -90 && kalAngleZ > 90) || (yaw > 90 && kalAngleZ < -90)) { kalmanZ.setAngle(yaw); compAngleZ = yaw; kalAngleZ = yaw; gyroZangle = yaw; } else kalAngleZ = kalmanZ.getAngle(yaw, gyroZrate, dt); // Calculate the angle using a Kalman filter /* Estimate angles using gyro only */ gyroXangle += gyroXrate * dt; // Calculate gyro angle without any filter gyroYangle += gyroYrate * dt; gyroZangle += gyroZrate * dt; //gyroXangle += kalmanX.getRate() * dt; // Calculate gyro angle using the unbiased rate from the Kalman filter //gyroYangle += kalmanY.getRate() * dt; //gyroZangle += kalmanZ.getRate() * dt; /* Estimate angles using complimentary filter */ compAngleX = 0.93 * (compAngleX + gyroXrate * dt) + 0.07 * roll; // Calculate the angle using a Complimentary filter compAngleY = 0.93 * (compAngleY + gyroYrate * dt) + 0.07 * pitch; compAngleZ = 0.93 * (compAngleZ + gyroZrate * dt) + 0.07 * yaw; // Reset the gyro angles when they has drifted too much if (gyroXangle < -180 || gyroXangle > 180) gyroXangle = kalAngleX; if (gyroYangle < -180 || gyroYangle > 180) gyroYangle = kalAngleY; if (gyroZangle < -180 || gyroZangle > 180) gyroZangle = kalAngleZ; /* Print Data */ #if Serial.print(roll); Serial.print("\t"); Serial.print(gyroXangle); Serial.print("\t"); Serial.print(compAngleX); Serial.print("\t"); Serial.print(kalAngleX); Serial.print("\t"); Serial.print("\t"); Serial.print(pitch); Serial.print("\t"); Serial.print(gyroYangle); Serial.print("\t"); Serial.print(compAngleY); Serial.print("\t"); Serial.print(kalAngleY); Serial.print("\t"); Serial.print("\t"); Serial.print(yaw); Serial.print("\t"); Serial.print(gyroZangle); Serial.print("\t"); Serial.print(compAngleZ); Serial.print("\t"); Serial.print(kalAngleZ); Serial.print("\t"); #endif #if // Set to to print the IMU data Serial.print(accX / 16384.0); Serial.print("\t"); // Converted into g's Serial.print(accY / 16384.0); Serial.print("\t"); Serial.print(accZ / 16384.0); Serial.print("\t"); Serial.print(gyroXrate); Serial.print("\t"); // Converted into degress per second Serial.print(gyroYrate); Serial.print("\t"); Serial.print(gyroZrate); Serial.print("\t"); Serial.print(magX); Serial.print("\t"); // After gain and offset compensation Serial.print(magY); Serial.print("\t"); Serial.print(magZ); Serial.print("\t"); #endif #if // Set to to print the temperature Serial.print("\t"); double temperature = (double)tempRaw / 340.0 + 36.53; Serial.print(temperature); Serial.print("\t"); #endif Serial.println(); delay(10); } void updateMPU6050() { while (i2cRead(MPU6050, 0x3B, i2cData, 14)); // Get accelerometer and gyroscope values accX = ((i2cData[0]