CHƯƠNG 5 : THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN VÀ MÔ PHỎNG
5.2 Sơ đồ mạch thiết kế Altium
Altium Designer trước kia có tên gọi là Protel DXP, là một trong những công cụ vẽ mạch điện tử mạnh nhất hiện nay. Được phát triển bởi hãng Altium Limited. Altium Designer là một phần mềm chuyên ngành được sử dụng trong thiết kế điện tử. Nó là một phần mềm mạnh với nhiều tính năng thú vị, tuy nhiệ phần mềm này ít được biết đến hơn so với các phần mềm cùng chức năng khác như ORCAD hay PROTEUS.
Hình 5. 8: Phần mềm thiết kế mạch Altium
Altium Designer có một số đặc trưng sau:
- Giao diện thiết kế, quản lí và chỉnh sửa thân thiện, dêc dàng biên dịch, quản lí file, quản lí phiên bản các tài liệu thiết kế.
- Hỗ trợ mạnh mẽ cho việc thiết kế tự động, đi dây tự động theo thuật tốn tối ưu, phân tích lắp ráp linh kiện. Hỗ trợ cho việc tìm các giải pháp thiết kế hoặc chỉnh sửa mạch, linh kiện có sẵn trước theo các tham số mới. - Mở, xem và in các file thiết kế mạch dễ dàng với đầy đủ các thông tin linh
kiện, dữ liệu bản vẽ, kích thước và số lượng.
- Hệ thống các thư viện linh kiện phong phú, chi tiết và hoàn chỉnh bao gồm tất cả các linh kiện nhúng, số và tương tự.
- Đặt và sửa đối tượng trên các lớp cơ khí, định nghĩa các luật thiết kế, tùy chỉnh các lớp mạch in, chuyển từ schematic sang PCB, đặt vị trí linh kiện trên PCB.
50
- Mô phỏng mạch PCB 3D, đem lại hình ảnh ,mạch điện trung thực trong không gian 3 chiều, hỗ trợ MCAD-ECAD, liên kết trực tiếp với mơ hình STEP, kiểm tra khoảng cách cách điện , cấu hình cả 2D và 3D.
- Hỗ trợ thiết kế PCB sang FFGA và ngược lại.
Hình 5. 9: Sơ đồ mạch ngun lí của mạch điều khiển
51
Hình 5. 11: Mạch 2D PCB 5.3 Sơ đồ đấu nối thết bị: 5.3 Sơ đồ đấu nối thết bị:
52
5.4 Code điều khiển
Phần mềm Arduino IDE
Arduino IDE là một phần mềm mã nguồn mở chủ yếu được sử dụng để viết và biên dịch mã vào module Arduino.
Đây là một phần mềm Arduino chính thức, giúp cho việc biên dịch mã trở nên dễ dàng. Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trị quan trọng để gỡ lỗi, chỉnh sửa và biên dịch mã trong mơi trường.
Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino Leonardo, Arduino Micro và nhiều module khác. Trong phạm vi đồ án này, nhóm sử dụng module Arduino Nano. Mỗi module chứa một bộ vi điều khiển trên bo mạch được lập trình và chấp nhận thơng tin dưới dạng mã. Mã chính, cịn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo. Môi trường IDE chủ yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần đầu sử dụng để viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module Arduino.
Môi trường này hỗ trợ cả ngôn ngữ C và C ++.
Khi người dùng viết mã và biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file thập phân Hexa được Arduino hiểu và sau đó được gửi đến bo mạch bằng cáp USB. Mỗi bo Arduino đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy theo mã được viết.
Arduino IDE bao gồm các phần khác nhau 1. Window bar
2. Menu bar 3. Phím tắt 4. Text Editor
53 5. Output Panel
54
5.5 Mô phỏng 3D sản phẩm :
- Hình ảnh mơ phỏng 3D của máy lau sàn nhà được vẽ và thiết kế trên phần mềm INVENTOR.
Hình 5. 14: Góc nhìn ngang của máy
55
Hình 5. 16: Góc nhìn trên của máy
Hình 5. 17: Tổng thể máy
56
CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1 Mức độ hồn thành
Tính tốn hệ thống cơ khí
Các chi tiết cơ khí đã được vẽ hồn chỉnh
Mạch điện điều khiển hoàn thành
Viết trương trình điều khiển động cơ trên Adruino
Mô phỏng 3D trên Inventor
Mơ phỏng được q trình hoạt động của máy
6.2 Đánh giá
Trong quá trình thực hiện đồ án, em đã gặp nhiều thuận lợi và khó khăn nhất định.
Thuận lợi:
- Được sự hướng dẫn của giáo viên hướng dẫn trong việc thiết kế và thực hiện mô phỏng 3D cho máy .
Khó khăn:
Do tình hình dịch bệnh Covid chuyển biến phức tạp nên chưa hoàn thành được mơ hình , tuy nhiên luận văn đã đạt được các yêu cầu :
- Tính tốn thiết kế hệ thống cơ khí
- Thiết kế bản vẽ chi tiết và bản vẽ lắp của robot lau sàn nhà. - Thiết kế được hệ thống điều khiển cho robot
57
6.3 Hướng phát triển
- Cải tiến thiết bị chạy với tốc độ hợp lý hơn, tải trọng lớn hơn để có thể lau những loại sàn lớn hơn, ví dụ : trong cơng ty và xí nghiệp.
- Xây dựng giải thuật hồn chỉnh hơn.
58
LỜI KẾT
Trên đây là bản báo cáo đồ án tốt nghiệp Thiết kế và chế tạo robot lau sàn nhà của chúng em. Đây là một đề tài có tính thực tế cao, trong thời đại cơng nghiệp hóa hiện đại hóa đất nước, ngày càng phát triển với sự cạnh tranh không ngừng từ các nước trên thế giới. Đòi hỏi năng suất và chất lượng phải được cải thiện nhờ dây chuyền máy móc hiện đại thay thế lao động thủ công của con người.
Như vậy trong đồ án tốt nghiệp chúng em đã được tìm hiểu được cách xây dựng một mơ hình robot vệ sinh, từ tính tốn thiết kế hệ thống cơ khí đến lập trình điều khiển hoạt động.
Qua đề tài trên em đã biết cách vận dụng những kiến thức chuyên môn được đào tạo ở trường …… trong thời gian qua vào với thực tế cuộc sống nhất là với công nghiệp. Không chỉ vậy qua đồ án này chúng em cũng học được rất nhiều như kĩ năng làm việc , giải quyết vấn đề, tìm tài liệu, viết báo cáo… rất có ích cho sau này. Một lần nữa chúng em xin chân thành cảm ơn sự hướng dẫn tận tình của thầy …. Cùng các thầy cô trong bộ môn Cơ Điện Tử đã giúp chúng em hoàn thành đề tài này.
Do giới hạn về thời gian cũng như kiến thức trong đồ án này, chúng em mới đã giải quyết một số vấn đề cơ bản trong việc thiết kế một robot lau sàn. Tuy nhiên, ngồi ra cịn rất nhiều vấn đề cần phải giải quyết và khắc phục để có thể trở thành một sản phẩm hoàn thiện và áp dụng tốt, phục vụ tốt trong cuộc sống nói chung và ngành cơng nghiệp nước nhà nói riêng vì vậy chúng em rất vui mừng và mong muốn quý thầy cơ và các bạn đóng góp ý kiến để đề tài này hồn thiện hơn nữa.
59
TÀI LIỆU THAM KHẢO Sách giáo trình, bài giảng
[1] Trịnh Chất - Lê Văn Uyển, Tính tốn thiết kế dẫn động cơ khí (tập một), Nhà xuất bản giáo dục, 2006.
[2] PGS. TS. Đào Văn Hiệp, Kỹ thuật Robot, Nhà xuất bản khoa học và kỹ thuật, 2006. [3] PGS. TS. Nguyễn Quang Hoàng, Bài giảng Robotics, 2017.
[4] Andreas Hölldorfer, BCN3D-MOVEO, github.com/BCN3D/BCN3D-Moveo [5] GS. TS. Phan Bùi Khơi, Bài giảng tính tốn thiết kế robot, 2007.
[6] GS. TSKH. Nguyễn Thiện Phúc, Robot công nghiệp, Nhà xuất bản khoa học và kỹ thuật, 2006.
60
PHỤ LỤC
CODE ĐIỀU KHIỂN ROBOT VỆ SINH #include <LiquidCrystal.h> LiquidCrystal lcd(A4,A5,12,11,8,7); #include <SoftwareSerial.h> SoftwareSerial bt(3,2); #define d2 A0 #define d1 A1 #define d0 A2 #define d3 A3 int in1=10,in2=9,in3=6,in4=5; char val='E'; void setup() { Serial.begin(9600); lcd.begin(16,2); bt.begin(9600); pinMode(d0,INPUT);pinMode(d1,INPUT);pinMode(d2,INPUT);pinMode(d3,INPU T); pinMode(in1,OUTPUT);pinMode(in2,OUTPUT);pinMode(in3,OUTPUT);pinMode (in4,OUTPUT); lcd.setCursor(0,0);lcd.print("Loading...");
61 dung();delay(2500);
lcd.clear(); lcd.print("Cleaner ready...");delay(2500); }
void loop() {
// put your main code here, to run repeatedly: // Serial.print(digitalRead(d0));Serial.print(" "); // Serial.print(digitalRead(d1));Serial.print(" "); // Serial.print(digitalRead(d2));Serial.print(" "); // Serial.println(digitalRead(d3));
lcd.setCursor(0,0); lcd.print(" Mecha Cleaner "); if(bt.available()>0) { val=bt.read(); Serial.println(val); } // if(val=='A'||digitalRead(d0)==1) tien(); //C // else if(val=='B'||digitalRead(d1)==1) lui(); // A // else if(val=='C'||digitalRead(d2)==1) trai(); //D // else if(val=='D'||digitalRead(d3)==1) phai(); //B
62 if(val=='A'||digitalRead(d1)==1) tien(); else if(val=='B'||digitalRead(d3)==1) lui(); else if(val=='C'||digitalRead(d0)==1) trai(); else if(val=='D'||digitalRead(d2)==1) phai(); else dung(); } void lui() { digitalWrite(in1,0); digitalWrite(in2,1); digitalWrite(in3,0); digitalWrite(in4,1); } void tien() { digitalWrite(in1,1); digitalWrite(in2,0); digitalWrite(in3,1); digitalWrite(in4,0); }
63 void phai() { digitalWrite(in1,1); digitalWrite(in2,0) ; digitalWrite(in3,0); analogWrite(in4,200); } void trai() { digitalWrite(in1,0); analogWrite(in2,200); digitalWrite(in3,1); digitalWrite(in4,0); } void dung() { digitalWrite(in1,0); digitalWrite(in2,0); digitalWrite(in3,0); digitalWrite(in4,0);
64 }