Bài tập cuối kỳ kỹ thuật lập trình cơ điện tử

10 19 0
Bài tập cuối kỳ kỹ thuật lập trình cơ điện tử

Đang tải... (xem toàn văn)

Thông tin tài liệu

Trường Đại Học Bách Khoa Hà Nội *** Viện Cơ Khí *** Bài tập cuối kỳ Kỹ Thuật Lập Trình Cơ Điện Tử Project : Control ArmRobot using GUI by Windows Form C++  Người thực : Phùng Minh Quang Lăng Văn Huy  Giảng viên môn : Nguyễn Hữu Quang Phần Giới Thiệu Đề Tài Yêu cầu : Vận dụng kiến thức học mơn kỹ thuật lập trình để tạo lên sản phẩm điện tử cụ thực tế có sử dụng Graphical User Interface ( tạo Windows Form Visual Studio sử dụng ngơn ngữ lập trình C++) Do nhóm chúng em định làm mơ hình cánh tay robot (3 bậc tự do) cơng nghiệp có sử dụng GUI viết Windows Form, sử dụng vi điều khiển mạch kit Arduino Uno để điều khiển động Servo nam châm điện đầu robot dùng để bắt vật Được lập trình ngơn ngữ C++ Robot có chế độ:  Auto mode : Robot tự động bắt vật , thả vật đựa tọa độ lập trình sẵn Thơng qua nút ấn START FINISH Khi ấn FINISH Robot tự động dừng lại chuyển qua chế độ Control mode , cho phép người dùng điểu khiển tùy ý  Control mode : cho phép người dùng điều khiển Robot qua tab control Bao gồm : trackbar để điểu khiển góc quay động Servo, nút ấn ON OFF để bật tắt Nam Châm Điện thông qua modul Relay Phần : Thiết Kế  Cơ Khí : Bản thiết kế tham khảo từ thư viện Grabcad.com sau qua chỉnh sửa, loại bỏ phần đầu gắp thay nam châm điện Từ thiết kế 3D Solidworks, chúng em tách part chuyển sang file DWG để đem cắt Lazer Thân robot cắt Lazer từ vật liệu Mica, ổ khớp dùng trục vít , đai ốc lên độ xác độ ổn định không cao ( Bản thiết kế 3D SolidWorks)  Điện Tử : Sử dụng vi điều khiển kit Arduino Uno dùng để điều khiển động Servo 5v nam châm điện 12v ( thông qua modul relay 5v làm cơng tắc đóng ngắt ) kết nối đấu dây qua Test Board  Sơ đồ nguyên lý thiết kế Fritzing : ( 3.Hình ảnh sơ đồ nguyên lý Fitzing ) Servo R = int 6; Servo L = int 5; NC relay -> (+) Nam châm điện Servo B = int 10; Modul Relay = int 3; COM relay -> (+) 12V  Lập Trình :  Lập trình giao diện GUI : Sử dụng Windows Form Visual Studio, lập trình ngơn ngữ C+ +  Vận dụng kiến thức chương Graphical User Interface in C++, nhóm em viết chương trình giao diện cho sản phẩm, thao tác kéo thả Button, Trackbar, Tab control, Label, Text Box … có Windows Forms  Background giao diện render từ vẽ 3D Solidworks, sử dụng phần mềm Photoshop để thiết kế Logo giúp giao diện thêm sinh động ,gần gũi với người dùng Code.cpp : #include "controlrobot.h" using namespace projectcontrolarmrobot; int main(cli::array^ args) { Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); Application::Run(gcnew controlrobot); return 0; } Code.h :  Connect Click Button: private: System::Void connect_Click(System::Object^ sender, System::EventArgs^ e) { serialPort1->PortName = "COM5"; serialPort1->BaudRate = 9600; serialPort1->Open(); if (serialPort1->IsOpen) { notification->Text = "Successful"; } }  Button/ Finish Button : private: System::Void START_Click(System::Object^ sender, System::EventArgs^ e) { serialPort1->Write("A"); notification->Text = "Start Automation";}  Right Servo/ Left Servo/ Base Servo: private: System::Void rightservo_Scroll(System::Object^ sender, System::EventArgs^ e) { if (serialPort1->IsOpen) {this->serialPort1->Write("R"); serialPort1->WriteLine(rightservo->Value.ToString()); numR->Text = rightservo->Value.ToString(); } }  ON / OFF Magnet : private: System::Void ON_Click(System::Object^ sender, System::EventArgs^ e) { this->serialPort1->Write("H"); }  Tính Năng Giao Diện :  B1: Kết nối Cab USB , nhấn nút Connect giao diện  B2: Tùy chọn Tab  Tab AutoMode : Nhấn Start : Bắt đầu chế độ Automation, Robot tự động di chuyển, gắp vật dựa tọa độ góc quay lập trình sẵn Nhấn Finish : để kết thúc tự động , Robot tự chuyển sang chế độ điều khiển tùy ý  Tab Control Mode : gồm : Trackbar kéo thả giúp điều khiển góc quay động Servo L, R, B Khi kéo Trackbar, máy tính gửi ký tự L/R/B , sau gửi giá trị góc quay tới Robot qua cổng Serial Port Đồng thời giá trị góc quay hiển trị text box ứng với Servo , giúp người dùng nắm vị trí, ghi lại thơng tin để lập trình vị trí cho chế độ Auto Mode nút nhấn ON/ OFF để tắt bật nam châm điện giúp bắt, thả vật tùy ý  Lập trình vi điều khiển Arduino Uno:  Code khởi tạo : #include #define servoL_PIN 5; #define servoB_PIN 10; #define servoR_PIN 6; int relay = 3; Servo servoL; Servo servoB; Servo servoR; int tinhieu=0;`  Vịng Lặp : void loop() { if(Serial.available()){ char data; int val; int a[]={150,0,40,0,45};//{B,L,R,R,L}// int b[]={30,0,40,0,45};//{B,L,R,R,L}// void setup() { Serial.begin(9600); servoL.attach(5); servoB.attach(10); servoR.attach(6); pinMode (3, OUTPUT); } data = Serial.read(); switch(data){ case'A': tinhieu=1; break; case'F': tinhieu=0; break; } if (tinhieu==1){automation();} if (tinhieu==0){control();} } } delay(500); servoL.write(b[1]); delay(500); servoR.write(b[2]); digitalWrite(3,LOW); delay(2000); servoR.write(b[3]); delay(500); servoL.write(b[4]); delay(500); data=Serial.read(); if (data=='F') break; } }  Hàm automation(): void automation()//ham dong // { while(tinhieu==1){ // vi tri a// servoB.write(a[0]); delay(500); servoL.write(a[1]); delay(500); servoR.write(a[2]); digitalWrite (3,HIGH); delay(2000); servoR.write(a[3]); delay(500); servoL.write(a[4]); delay(500); //vi tri b// servoB.write(b[0]);  Hàm control(): tu void control()//ham dieu khien// { switch(data) { case'L': val=Serial.parseInt(); if(val!=0){ servoL.write(val);} break; case'R': val=Serial.parseInt(); if(val!=0){ servoR.write(val); } break; case'B': val=Serial.parseInt(); if(val!=0){ servoB.write (val); } break; case'H': digitalWrite(3,HIGH); break; case'T': digitalWrite(3,LOW); break; } }

Ngày đăng: 27/10/2021, 18:33

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

  • Đang cập nhật ...

Tài liệu liên quan