Thiết kế và chế tạo cánh tay robot chơi đàn piano

75 87 1
Thiết kế và chế tạo cánh tay robot chơi đàn piano

Đ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

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ ĐỒ ÁN TỐT NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO CÁNH TAY ROBOT CHƠI ĐÀN PIANO Người hướng dẫn: Người duyệt: Sinh viên thực hiện: Số thẻ sinh viên : Lớp: TS ĐẶNG PHƯỚC VINH TS LÊ VIẾT LĨNH TRẦN NHẬT TRÌNH 101140189 14CDT2 Đà Nẵng, 2019 TĨM TẮT Tên đề tài: Thiết kế chế tạo cánh tay robot chơi đàn piano Sinh viên thực hiện: Lê Viết Lĩnh Số thẻ sinh viên: 101140189 Lớp: 14CDT2 Nội dung : Đề tài trình bày trình thiết kế, chế tạo điều khiển cánh tay robot chơi đàn piano Robot cấu tạo hai bàn tay điều khiển hai động bước chuyển động trượt Khi vận hành, tay robot dùng đánh hợp âm tay chạy nốt nhạc Mỗi bàn tay gồm năm ngón tay gắn năm động servo điều khiển chuyển động nhấn, nhả ngón tay Robot thực nhạc có giai điệu, tiết tấu đơn giản gần đáp ứng yêu cầu tốc độ nhạc Đề tài tiến hành nghiên cứu số nội dung sau : • Tìm hiểu tổng quan đề tài, lịch sử đời nguyên mẫu trước thực giới • Từ mơ hình thiết kế, ta tiến hành mơ hình hóa mơ hình mơ hình tốn, từ phân tích động học động lực học Từ phân tích ta tiến hành nghiên cứu thuật tốn điều khiển phù hợp • Đề tài nghiên cứu tìm hiểu điều khiển động bước servo, ưu nhược điểm phương pháp tính tốn, phương pháp thực nghiệm • Nghiên cứu thiết kế mơ hình khí, phù hợp với ứng dụng cụ thể • Tìm hiểu thành phần phần cứng phù hợp để điều khiển mơ mạch xử lý nốt nhạc, mạch xử lý trung tâm động cơ, thành phần quan trọng Cuối đề tài rút số kết luận ảnh hưởng kết cấu đến việc điều khiển hiệu điều khiển mơ hình ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP CƠ ĐIỆN TỬ Họ tên sinh viên: LÊ VIẾT LĨNH Số thẻ sinh viên: 101140189 Lớp: 14CDT2 Khoa: Cơ khí Ngành: Cơ điện tử Tên đề tài đồ án: Thiết kế chế tạo cánh tay robot chơi đàn piano Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: Tham khảo tài liệu thực tế Nội dung phần thuyết minh tính tốn: Chương 1: Tổng quan robot chơi đàn piano Chương 2: Tính tốn thiết kế khí Chương 3: Thiết kế hệ thống điều khiển Chương 4: Kết luận Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): Bản vẽ sơ đồ động học : A0 Bản vẽ tổng thể robot : A0 Bản vẽ chi tiết : A0 Bản vẽ sơ đồ mạch điện : A0 Bản vẽ lưu đồ thuật toán : A0 Họ tên người hướng dẫn: TS ĐẶNG PHƯỚC VINH Ngày giao nhiệm vụ đồ án: 01 / 02 / 2019 Ngày hoàn thành đồ án: 01 / 06 / 2019 Trưởng Bộ môn Cơ điện tử Đà Nẵng, ngày 01 tháng 06 năm 2019 Người hướng dẫn LỜI NÓI ĐẦU Ngày nay, với phát triển công nghiệp, cách mạng công nghiệp 4.0 diễn Các nhà máy dây chuyền ngày đại với mức độ xác tự động hóa cao, điều đòi hỏi người kỹ sư làm việc cần phải có kiến thức chun mơn vững vàng phải rèn luyện kỹ sinh viên Đặc biệt sinh viên ngành Cơ điện tử, với đặc thù ngành phải biết nhiều rộng, từ khí, điện tử lập trình phải rèn luyện kỹ hơn, nên có kinh nghiệm thực tế nhiều Với mong muốn tạo mơ hình, mà từ đưa vào ứng dụng vào việc giảng dạy nhà trường để nâng cao khả sinh viên thương mại hóa sản phẩm, tác giả định chọn đề tài “Thiết kế chế tạo cánh tay robot chơi đàn piano” Mơ hình kết hợp nhiều kỹ năng, yêu cầu phải có kiến thức thiết kế CAD/CAM, có khả tính tốn mơ hình hóa mơ hình, xử lý tín hiệu cảm biến, thiết kế điều khiển khả lập trình nhúng Từ đó, sinh viên có nhiều kiến thức thơng qua việc học tập dựa mơ hình thực Nếu thành cơng, ngồi mục đích ứng dụng vào giảng dạy với khả linh động tính thực tiễn cao, mơ hình cịn ứng dụng để trình diễn… Trong thời gian làm đồ án, bảo tận tình thầy TS Đặng Phước Vinh với nỗ lực cố gắng thân đến đồ án hoàn thành, nhiên với kiến thức hạn chế nên khơng tránh khỏi thiếu sót Tác giả mong đóng góp ý kiến thầy giáo bạn để đồ án hoàn thiện tốt Xin chân thành cảm ơn! Đà Nẵng, ngày 01 tháng 06 năm 2019 Sinh viên thực Lê Viết Lĩnh i CAM ĐOAN Kính gửi: - Ban Giám hiệu Trường Đại học Bách khoa - Khoa Cơ Khí Tơi tên : LÊ VIẾT LĨNH Lớp : 14CDT2 Khoa : Cơ Khí Đề tài : Thiết kế chế tạo cánh tay robot chơi đàn piano Tôi xin cam đoan đồ án tơi tự tính tốn, thiết kế ,nghiên cứu hoàn thành hướng dẫn TS Đặng Phước Vinh Để hoàn thành đồ án này, sử dụng tài liệu ghi mục tài liệu tham khảo, ngồi khơng sử dụng tài liệu khác mà không ghi Nếu sai tơi xin chịu hình thức kỷ luật theo quy định Đà Nẵng, ngày 01 tháng 06 năm 2019 Sinh viên thực Lê Viết Lĩnh ii MỤC LỤC TÓM TẮT NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP LỜI NÓI ĐẦU i CAM ĐOAN ii MỤC LỤC iii DANH SÁCH CÁC HÌNH VẼ v Chương 1: TỔNG QUAN VỀ ROBOT CHƠI ĐÀN PIANO 1.1 Đặt vấn đề 1.2 Đối tượng phạm vi nghiên cứu 1.3 Mục tiêu phương pháp nghiên cứu đề tài 1.4 Tổng quan hệ thống Chương 2: TÍNH TỐN VÀ THIẾT KẾ CƠ KHÍ 2.1 Yêu cầu chung 2.2 Mơ hình tổng thể 2.3 Các chi tiết khí 2.3.1 Bàn tay 2.3.2 Ngón tay 10 2.3.3 Nắp đậy bàn tay .11 2.3.4 Thanh trượt vuông 12 2.3.5 Con trượt 13 2.3.6 Pulley đai .14 2.3.7 Gá cơng tắc hành trình .15 2.4 Thiết kế hệ dẫn động 15 2.4.1 Tính chọn động 15 2.4.2 Tính chọn truyền đai 17 Chương 3: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 19 3.1 Tổng quan 19 3.2 Khối điều khiển trung tâm 20 iii 3.2.1 Arduino Uno 20 3.2.2 CNC Shield .23 3.3 Khối công suất .25 3.3.1 PCA 9685 25 3.3.2 Động bước 26 3.3.3 Driver A4988 27 3.3.4 Động servo MG90S 29 3.3.5 Công tắc hành trình 30 3.4 Khối nguồn 31 3.4.1 Nguồn cung cấp 12V-10A .32 3.4.2 Module LM2596 .33 3.4.3 Module XL4015 34 3.5 Lưu đồ thuật toán chương trình điều khiển .35 3.5.1 Chuyển sheet nhạc vào chương trình .35 3.5.2 Chương trình 37 3.5.3 Chương trình thực thi 38 3.5.4 Chương trình lấy vị trí đặt tay 39 3.5.5 Thuật toán điều khiển động bước 40 Chương 4: KẾT LUẬN 41 4.1 Kết đạt 41 4.2 Những hạn chế .42 4.3 Hướng phát triển 43 TÀI LIỆU THAM KHẢO 44 PHỤ LỤC 1: CHƯƠNG TRÌNH CHÍNH 45 PHỤ LỤC 2: CHƯƠNG TRÌNH ĐIỀU KHIỂN BÀN TAY 50 PHỤ LỤC 3: CHƯƠNG TRÌNH CHƠI NHẠC .56 iv DANH SÁCH CÁC HÌNH VẼ Hình 1 Hình Hình Hình Robot chơi kèn trumpet Nhóm nhạc Z-machine Robot chơi đàn piano truyền hình Sơ đồ tổng quan đề tài Hình Mơ hình tổng thể Cánh tay Robot chơi đàn piano Hình 2 Hai bàn tay robot Hình Hình ảnh 3D chi tiết bàn tay Hình Các thơng số kích thước bàn tay 10 Hình Hình ảnh 3D chi tiết ngón tay .10 Hình Hình ảnh 3D chi tiết nắp đậy bàn tay 11 Hình Chi tiết trượt vuông 12 Hình Chi tiết trượt vuông 13 Hình Chi tiết pulley đai 14 Hình 10 Hình ảnh 3D chi tiết gá cơng tắc hành trình 15 Hình 11 Động bước NIDEC SERVO KH42KM2R015E .16 Hình 12 Bộ truyền đai 17 Hình Sơ đồ toàn hệ thống robot 19 Hình Arduino UNO R3 20 Hình 3 Stepper Driver CNC Shield 24 Hình Sơ đồ chân CNC Shield ứng với Arduino Uno .25 Hình Module 16 kênh PWM điều khiển servo PCA 9685 .25 Hình Động bước .26 Hình Module điều khiển động bước A4988 27 Hình Mạch điều khiển động bước dùng driver A4988 28 Hình Động servo MG90S 29 Hình 10 Cơng tắc hành trình 30 Hình 11 Nguồn cung cấp 12V - 10A 32 Hình 12 Module hạ áp LM2596 .33 Hình 13 Module hạ áp XL4015 34 Hình 14 Đàn piano thực tế .35 Hình 15 Giá trị nốt nhạc dấu lặng 35 Hình 16 Một đoạn nhạc nhạc 36 Hình 17 Lưu đồ thuật tốn chương trình robot 37 Hình 18 Lưu đồ thuật tốn chương trình thực thi robot 38 Hình 19 Lưu đồ thuật tốn chương trình lấy vị trí đặt tay 39 Hình 20 Lưu đồ thuật tốn điều khiển động bước đến vị trí yêu cầu 40 v Hình Mơ hình thực tế Cánh tay Robot chơi đàn piano 41 Hình Robot chơi đàn piano 42 vi Thiết kế chế tạo cánh tay robot chơi đàn piano Chương 1: TỔNG QUAN VỀ ROBOT CHƠI ĐÀN PIANO 1.1 Đặt vấn đề Robot giải trí khơng cịn xa lạ cường quốc khoa học kỹ thuật Nó xuất ngày nhiều thi khoa học công nghệ, triển lãm giới Robot chơi đàn piano sản phẩm độc đáo, mang tính giải trí cao nghiên cứu phát triển nhiều kỹ sư, nhà khoa học giới Việt Nam Nó biểu diễn đại hội âm nhạc tầm cỡ giới Moscow, Nga năm 2014 Hình 1 Robot chơi kèn trumpet Hình robot chơi kèn trumpet giáo sư trường đại học Toyota tạo vào năm 2005 có khả thay đổi áp suất bên miệng để phát âm chơi kèn SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh Thiết kế chế tạo cánh tay robot chơi đàn piano PressKeys(keys, value); } void PianoHand::PressKeys(uint8_t * keys, uint8_t value) { updateFingerPosition(); if (keys[0] == RE) { SkipBeat = value; fingerState = PRESSING; return; } for (uint8_t index = 0; index < 2; index++) { for (uint8_t i = 0; i < 5; i++) { if (fingers[i] == keys[index]) { ServoManager.setChannelPWM(i, PWMMaker.pwmForAngle(pressAngle)); SkipBeat = value; fingerState = PRESSING; } } } } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 52 Thiết kế chế tạo cánh tay robot chơi đàn piano void PianoHand::Release() { for (uint8_t i = 0; i < 5; i++) { ServoManager.setChannelPWM(i, PWMMaker.pwmForAngle(releaseAngle)); } fingerState = UPPING; } void PianoHand::Move(uint8_t note) { float posMM = note * WIDTH_OF_KEY + PLACEMENT_OFFSET; long posSteps = posMM * STEPS_PER_MM; DesiredStep = posSteps; JumpSteps = DesiredStep - CurrentStep; if (JumpSteps == 0) return; int dir = JumpSteps / abs(JumpSteps); setDirection(dir); } void PianoHand::Stop() { DesiredStep = CurrentStep; } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 53 Thiết kế chế tạo cánh tay robot chơi đàn piano void PianoHand::UpdateHandPlacement(uint8_t note) { float posMM = note * WIDTH_OF_KEY + PLACEMENT_OFFSET; long posSteps = posMM * STEPS_PER_MM; DesiredStep = CurrentStep = posSteps; } void PianoHand::setDirection(int8_t dir) { if (IsInvertDirection == true) dir = dir * -1; DirectionValue = dir; uint8_t state; if (dir > 0) state = LOW; else state = HIGH; digitalWrite(dirPin, state); } void PianoHand::updateFingerPosition() { int fingerID = (CurrentStep / STEPS_PER_MM) / WIDTH_OF_KEY; int jumpNotes = fingerID - fingers[0]; for (uint8_t i = 0; i < 5; i++) SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 54 Thiết kế chế tạo cánh tay robot chơi đàn piano { fingers[i] += jumpNotes; } } bool PianoHand::IsEndstopActive() { if (digitalRead(endsPin) == LOW) return true; return false; } bool PianoHand::IsMoving() { if (CurrentStep != DesiredStep) return true; return false; } bool PianoHand::IsPressing() { if (fingerState == PRESSING) return true; return false; } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 55 Thiết kế chế tạo cánh tay robot chơi đàn piano PHỤ LỤC 3: CHƯƠNG TRÌNH CHƠI NHẠC #include "Sheet.h" Sheet::Sheet() { executeThread = MultiThread(); } void Sheet::ReadNote() { } void Sheet::SetHandToneFa(PianoHand * left) { hand[LEFT] = left; } void Sheet::SetHandToneSol(PianoHand * right) { hand[RIGHT] = right; } void Sheet::SetTempo(int tem) { tempo = tem; interval = (60000) / (tempo * 4); } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 56 Thiết kế chế tạo cánh tay robot chơi đàn piano void Sheet::SetSheet(String s, uint8_t handID) { sheet[handID] = s; convertToNotes(notes[handID], sheet[handID]); getNewSection(handID); getNextNotes(handID); } void Sheet::Execute() { if (hand[LEFT]->IsMoving() || hand[RIGHT]->IsMoving()) { return; } checkHandPosition(LEFT); checkHandPosition(RIGHT); if (isHandInPosition == false) { return; } checkTimeForReleaseFinger(LEFT); checkTimeForReleaseFinger(RIGHT); if (isJustRelease[LEFT] == true || isJustRelease[RIGHT] == true) { delay(UP_FINGER_TIME); SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 57 Thiết kế chế tạo cánh tay robot chơi đàn piano checkStateForMoveNextPosition(LEFT); checkStateForMoveNextPosition(RIGHT); isJustRelease[LEFT] = false; isJustRelease[RIGHT] = false; return; } RUN_EVERY(executeThread, interval); checkBeatForPress(LEFT); checkBeatForPress(RIGHT); } void Sheet::getNewSection(uint8_t handID) { uint8_t value; currentNoteOrder[handID] = destinationNoteOrder[handID]; while (1) { destinationNoteOrder[handID]++; if (notes[handID][destinationNoteOrder[handID]] >= N1) { if (destinationNoteOrder[handID] - currentNoteOrder[handID] >= && (notes[handID][destinationNoteOrder[handID]] - value) >= 2) { return; } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 58 Thiết kế chế tạo cánh tay robot chơi đàn piano if (notes[handID][destinationNoteOrder[handID] - 1] == RE) { return; } value = notes[handID][destinationNoteOrder[handID]]; } } } void Sheet::getNextNotes(uint8_t handID) { if (notes[handID][currentNoteOrder[handID]] >= N1) { noteValue[handID] = notes[handID][currentNoteOrder[handID]]; currentNoteOrder[handID]++; } uint8_t highestNote = pressNotes[handID][0]; uint8_t lowestNote = pressNotes[handID][0]; uint8_t lastNote = pressNotes[handID][0]; uint8_t noteNumber = 0; bool isGoOn = false; if (notes[handID][currentNoteOrder[handID]] < notes[handID][currentNoteOrder[handID] + 1]) isGoOn = true; for (uint16_t i = currentNoteOrder[handID] + 1; i C8) { continue; } noteNumber++; if (isGoOn == true) { if (currentNoteOrder[handID] > highestNote) { highestNote = currentNoteOrder[handID]; } if (currentNoteOrder[handID] < lastNote) { break; } } else { if (currentNoteOrder[handID] < lowestNote) { lowestNote = currentNoteOrder[handID]; } if (currentNoteOrder[handID] > lastNote) { break; } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 60 Thiết kế chế tạo cánh tay robot chơi đàn piano } } if (noteNumber > 5) noteNumber = 5; pressNotes[handID][0] = notes[handID][currentNoteOrder[handID]]; handPlacement[handID] = pressNotes[handID][0] - (5 - noteNumber); } // "G4-1 C5 D5 D5-2 E5 E5-8 C5-1 D5 E5 D5-2 G5 G5-9 RE-1 C5-1 D5 E5 D5-2 G5 G58 RE-1 G5-1 A5 B5 B5-2 C6 C6-6 D6-2 E6 D6 C6 B5-8 RE-1"; void Sheet::convertToNotes(uint8_t * ns, String s) { uint16_t idOrder = 0; uint16_t spaceOrder1 = 0; uint16_t spaceOrder2 = 1; uint16_t noteOrder = 0; uint8_t noteValue = 1; while (spaceOrder2 != s.length()) { spaceOrder2 = s.indexOf(' ', spaceOrder1 + 1); if (spaceOrder2 < 0) spaceOrder2 = s.length(); SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 61 Thiết kế chế tạo cánh tay robot chơi đàn piano String keyS = s.substring(spaceOrder1, spaceOrder2); spaceOrder1 = spaceOrder2 + 1; uint8_t barOrder = keyS.indexOf('-'); if (barOrder < 0) { barOrder = keyS.length(); } else { noteValue = getValueID(keyS.substring(barOrder)); } String noteS = keyS.substring(0, barOrder); uint8_t noteID = getNoteID(noteS); ns[noteOrder] = noteID; noteOrder++; ns[noteOrder] = noteValue; } } bool Sheet::isNoteSign(char c) { if (c Move(handPlacement[handID]); isHandInPosition = false; } else { isHandInPosition = true; SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 64 Thiết kế chế tạo cánh tay robot chơi đàn piano } } void Sheet::checkTimeForReleaseFinger(uint8_t handID) { if (releaseThread[handID].isSchedule(hand[handID]->PressTime) && hand[handID]->IsPressing()) { hand[handID]->Release(); isJustRelease[handID] = true; } } void Sheet::checkStateForMoveNextPosition(uint8_t handID) { if (isJustRelease[handID] == true) { currentNoteOrder[handID]++; if (currentNoteOrder[handID] > destinationNoteOrder[handID]) { getNewSection(handID); } getNextNotes(handID); hand[handID]->Move(handPlacement[handID]); } } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 65 Thiết kế chế tạo cánh tay robot chơi đàn piano void Sheet::checkBeatForPress(uint8_t handID) { hand[handID]->SkipBeat ; if (!hand[handID]->IsMoving() && hand[handID]->SkipBeat PressKeys(pressNotes[handID], noteValue[handID]); releaseThread[handID].Counter = millis(); } } uint16_t Sheet::log2(uint16_t n) { int i = 0; int r = 1; while (1) { if (r >= n) return i; i++; r *= 2; } } SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 66 ... Vinh 40 Thiết kế chế tạo cánh tay robot chơi đàn piano Chương 4: KẾT LUẬN 4.1 Kết đạt Hình Mơ hình thực tế Cánh tay Robot chơi đàn piano Sau hoàn thiện việc thiết kế, chế tạo lập trình cho robot, ... tiết ngón tay SVTH: Lê Viết Lĩnh GVHD: TS Đặng Phước Vinh 10 Thiết kế chế tạo cánh tay robot chơi đàn piano Ngón tay thiết kế hình 2.5 dùng để nhấn vào phím đàn piano tạo âm Nó thiết kế gọn, nhẹ,... chơi đàn piano 41 Hình Robot chơi đàn piano 42 vi Thiết kế chế tạo cánh tay robot chơi đàn piano Chương 1: TỔNG QUAN VỀ ROBOT CHƠI ĐÀN PIANO 1.1 Đặt vấn đề Robot giải trí khơng xa lạ

Ngày đăng: 14/11/2020, 11:23

Tài liệu cùng người dùng

Tài liệu liên quan