- Mục đích chính của đề tài là áp dụng các kiến thức đã học từ môn học Kĩ thuật Lập trình trong Cơ Điện Tử vào việc thiết kế 1 chiếc xe tự hành có khả năng tự động di chuyển tránh vật cả
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CƠ KHÍ
**********************
BÁO CÁO BÀI TẬP LỚN MÔN KĨ THUẬT LẬP TRÌNH Đề tài: Xe mô hình tránh vật cản điều khiển bằng Bluetooth Giảng viên hướng dẫn: TS Trương Công Tuấn Lớp: Cơ điện tử
Nhóm sinh viên thực hiện:
Hà Nội 8-2021
1
Trang 2Mục lục
Tóm tắt công trình 3
I Đặt vấn đề: 4
II Các linh kiện cụ thể 4
1 Arduino UNO R3 4
2 Module điều khiển động cơ L298 mạch cầu H 5
3 Cảm biến khoảng cách HC-SR04 : 8
4 Bluetooth HC-06: 9
5 Động cơ Servo SG -90: 11
IV Sơ đồ nối mạch và sơ đồ thuật toán: 14
1 Sơ đồ nối mạch 14
2 Sơ đồ thuật toán 15
a Sơ đồ điều khiển bằng winform 15
b.Sơ đồ chạy tự động 16
V Lập trình 16
1 Code Arduino: 16
2 Code Visual Studio giao diện điều khiển: 21
VI Tài liệu tham khảo: 30
2
Trang 3Tự điều khiển bằng nút bấm trên window form
3 Linh kiện cấu tạo :
Giá đỡ kích thước 70*85mm
Hai bánh xe đường kính 35mm gắn vào 2 trục động cơ khác nhau
Một bánh xe đa hướng gắn ở đầu xe
Trang 4I Đặt vấn đề:
- Các loại máy móc thuần cơ khí ngày nay đã trở nên lỗi thời, việc sử dụng chúng trong sản xuất mất nhiều công sức và thời gian của người sử dụng Do đó, sự kết hợp giữa các hệ thống cơ điện với điện tử và lập trình tạo ra những đột phá và công dụng vô cùng to lớn Để chuẩn bị cho thời đại công nghiệp hiện nay, ngay từ khi ngồi trên giảng đường, sinh viên nên học và thực hành với những sản phẩm mang sự kết hợp như vậy
- Mục đích chính của đề tài là áp dụng các kiến thức đã học từ môn học Kĩ thuật Lập trình trong Cơ Điện Tử vào việc thiết kế 1 chiếc xe tự hành có khả năng tự động di chuyển tránh vật cản và điều khiển được qua Bluetooth.
- Robot có nhiệm vụ di chuyển theo bảng điều khiển trên máy tính đã được lập trình sẵn thông qua Bluetooth có thể tiến, lùi, quay trái, quay phải, hoặc có thể tự nhận biết vật cản, khoảng cách và tránh vật cản đó.
II Các linh kiện cụ thể
1 Arduino UNO R3
Một board mạch chủ chính dùng để truyền và nhận dữ liệu từ người sử dụng đến các thiết bị điện tử khác.
4
Trang 5Các thông số cơ bản:
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Trang 6Thông số kỹ thuật:
Driver: L298N tích hợp hai mạch cầu H.
Điện áp điều khiển: +5 V ~ +12 V
Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
Dòng của tín hiệu điều khiển: 0 ~ 36mA
Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃ )
Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃
- PWM hay thay đổi độ rộng xung là một kỹ thuật cho phép chúng ta điều chỉnh giá trị trung bình của điện áp đến thiết bị điện tử bằng cách bật và tắt nguồn với tốc độ nhanh Điện áp trung bình phụ thuộc vào chu kỳ xung, hoặc lượng thời gian tín hiệu BẬT so với lượng thời gian tín hiệu TẮT trong một khoảng thời gian quy định.
6
Trang 7Vì vậy: Tùy thuộc vào kích thước của động cơ, chúng ta có thể chỉ cần kết nối đầu ra
Arduino với chân cua điện trở hoặc chân của MOSFET và điều khiển tốc độ của động cơ bằng cách điều khiển đầu ra PWM Tín hiệu Arduino công suất thấp bật và tắt chân tại MOSFET thông qua đó động cơ công suất cao được điều khiển.
Điều khiển động cơ DC bằng mạch cầu H
Mặt khác, để điều khiển hướng quay, chúng ta chỉ cần đảo ngược hướng của dòng điện qua động cơ, và phương pháp phổ biến nhất để làm điều đó là sử dụng mạch cầu H Một mạch cầu H chứa bốn chân chuyển mạch, điện trở hoặc MOSFET, với động cơ ở trung tâm tạo thành một cấu hình giống như chữ H Bằng cách kích hoạt hai công tắc cụ thể cùng một lúc, chúng ta có thể thay đổi hướng của dòng điện, do đó thay đổi hướng quay của động cơ.
7
Trang 9*Các chân chức năng:
VCC Cấp nguồn cho cảm biến (5V) hoặc 3.3V ở cảm biến 3V3
TRIGGER Chân phát sóng âm Là chu kỳ của của điện cao /thấp diễn ra.
ECHO Trạng thái ban dầu là 0V, khi có tín hiệu trả về sẽ là 5V và sau đó trở về 0V GND Nối cực âm của mạch
*Nguyên lí hoạt động:
Để đo khoảng cách, ta sẽ phát 1 xung rất ngắn (5 microSeconds) từ chân Trig Sau
đó, cảm biến siêu âm sẽ tạo ra 1 xung HIGH ở chân Echo cho đến khi nhận lại được sóng phản xạ ở pin này Chiều rộng của xung sẽ bằng với thời gian sóng siêu âm được phát từ cảm biển và quay trở lại
Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý), tương đương với 29,412 microSeconds/cm (10 / (340*100)) Khi đã tính được thời gian, ta sẽ chia cho 629,412 để nhận được khoảng cách.
Trang 10- Module bluetooth được tích hợp trên board cho phép bạn sử dụng nguồn từ 3.5V đến 6V cung cấp cho board mà không cần lo lắng về chênh lệch điện áp 3V - 5V gây hỏng board
- Module Bluetooth gồm 6 chân theo thứ tự: KEY, VCC, GND, TX, RX,
STATE.Đây là module bluetooth SLAVE nghĩa là bạn không thể chủ động kết nối bằng vi điều khiển, mà cần sử dụng smartphone, laptop, bluetooth usb để dò tín hiệu và kết nối (pair) từ smartphone, laptop, bluetooth usb Sau khi kết nối thành công, bạn có thể gửi và nhận tín hiệu từ vi điều khiển đến các thiết bị này
- Không được gắn lộn dây Vcc và Gnd vì sẽ gây hỏng module bluetooth ngay lập tức.Mặc định, module bluetooth SLAVE sử dụng baud rate là 9600, PIN là 1234
Dải tần sóng hoạt động: Bluetooth 2.4GHz
Phạm vi hoạt động 8m ( hiệu quả 5m)
Dòng hoạt động : 20-30mA
Tốc độ :
+Asynchronous : 2.1Mbps/160kbps
10
Trang 11+Synchronous : 1Mbps/1Mbps.
Kích thước của module chính: 28 mm x 15 mm x 2.35 mm
Nhiệt độ làm việc: 20-75 C0
Độ nhạy: -80dBm 2.1
Slave module Bluetooth hc06 giúp chúng ta kết nối các thiết bị có hỗ trợ
Bluetooth với VDK ta có thể gửi hoặc nhận dữ liệu giữa hai thiết bị module sử dụng chuẩn giao tiếp UART giúp dễ dàng giao tiếp với VDK tốc độ baud tên module mật khẩu được cài đặt bởi tập lệnh AT Module Bluetooth HC 06 được cài đặt mặc định
là slave nên chỉ có thể giao tiếp với các thiết bị Bluetooth ở dạng master.
*Chức năng từng chân của modul HC-06
+Chân UART_TXD có chức năng truyền dữ liệu tới RXD, nối với chân RXD của vi điều khiển.
+Chân UART_RXD có chức năng nhận dữ liệu do chân TXD truyền tới, nối với chân TXD của vi điều khiển.
+Chân VCC nối với nguồn từ 3-5V
+Chân GND nối đất
5 Động cơ Servo SG -90:
-Servo là một dạng động cơ điện đặc biệt Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM ) với góc quay nằm trong khoảng bất kì từ 0 – 180 Mỗi loại servo có kích thước, khối lượng0 0
và cấu tạo khác nhau Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mô mình), có loại thì sở hữu một momen lực bá đạo (vài chục Newton/m), hoặc có loại thì khỏe và nhông sắc chắc chắn,
- Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín Tín hiệu ra của động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp
về mạch điều khiển này Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động
cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC (radio-controlled) Trong thực tế, bản thân động cơ servo không phải được điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi Động cơ servo nhận tín hiệu từ máy thu này.
Trang 12III Phương thức giao tiếp UART
Chuẩn giao tiếp UART:
• Theo định nghĩa, UART là một giao thức truyền thông phần cứng sử dụng giao tiếp nối tiếp không đồng bộ với tốc độ có thể định cấu hình Không đồng bộ có nghĩa là không có tín hiệu đồng hồ để đồng bộ hóa các bit đầu ra từ thiết bị truyền
đi đến bên nhận.
• Trong giao tiếp UART, hai UART giao tiếp trực tiếp với nhau UART truyền chuyển đổi dữ liệu song song từ một thiết bị điều khiển như CPU thành dạng nối tiếp, truyền nó nối tiếp đến UART nhận, sau đó chuyển đổi dữ liệu nối tiếp trở lại thành dữ liệu song song cho thiết bị nhận.
• Hai đường dây mà mỗi thiết bị UART sử dụng để truyền dữ liệu đó là:
+ Transmitter (Tx)
+ Receiver (Rx)
12
Trang 13a Sơ đồ điều khiển bằng winform
b.Sơ đồ chạy tự động
15
Trang 19using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
using namespace System::IO::Ports;
using namespace System::Text;
/// Summary for MyForm
Trang 20private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Button^ button3;
private: System::Windows::Forms::Button^ button4;
private: System::Windows::Forms::Button^ button5;
private: System::Windows::Forms::Button^ button6;
private: System::Windows::Forms::Button^ button7;
private: System::Windows::Forms::Button^ button8;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::Label^ label5;
private: System::Windows::Forms::ComboBox^ comboBox1;
private: System::Windows::Forms::ComboBox^ comboBox2;
private: System::Windows::Forms::ComboBox^ comboBox3;
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor
22
Trang 21this->button5 = (gcnew System::Windows::Forms::Button());
this->button6 = (gcnew System::Windows::Forms::Button());
this->button7 = (gcnew System::Windows::Forms::Button());
this->button8 = (gcnew System::Windows::Forms::Button());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->label5 = (gcnew System::Windows::Forms::Label());
this->comboBox1 = (gcnew System::Windows::Forms::ComboBox());
this->comboBox2 = (gcnew System::Windows::Forms::ComboBox());
this->comboBox3 = (gcnew System::Windows::Forms::ComboBox());
this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components));this->SuspendLayout();
Trang 22this->button3->Click += gcnew System::EventHandler(this, &MyForm::button3_Click);//
Trang 27serialPort1->Write("3");}
else if (this->comboBox3->Text == "200"){
serialPort1->Write("4");}
else if (this->comboBox3->Text == "255"){
serialPort1->Write("5");}
Trang 28Kết luận :
Hướng của đề tài :
Ứng dụng công nghệ Bluetooth vào các hệ thống, điều khiển tự động khác thông qua điều khiển bằng giao diện trên My form
Tích cực :
- Hiểu được nguyên lý, cách thức hoạt động của cảm biến, linh kiện điện tử.
- Biết cách xây dựng, thiết kế xe tự hành, điều khiển xe thông qua Bluetooth.
- Sử dụng kiến thức đã học để lập trình điều khiển, xây dựng giao diện My form.
- Nâng cao khả năng hoạt động nhóm, biết phân chia công việc, hoạt động hiệu quả
hơn.
Hạn chế :
- Không thể gặp mặt nhau trực tiếp để cùng nhau lắp đặt , kiểm tra và vận hành.
- Khó khăn trong việc giao tiếp, cách diễn đạt ý để cho các thành viên khác hiểu,
các sự cố kỹ thuật, mạng.
- Khó khăn khi mua các linh kiện.
Quá trình thực hiện đề tài đã giúp chúng em thu được kết quả tốt, bổ sung nhiều phần kiến thức chưa hiểu rõ trong quá trình học tập và hiểu rõ quá trình thiết kế, thực hiện 1 ý tưởng kỹ thuật đơn giản Môn học đã cho sinh viên chúng em môi trường làm việc thân thiện, sáng tạo, kích thích sự tìm tòi Chúng em xin gửi lời cảm ơn tới TS Trương Công Tuấn đã tận tình hướng dẫn, góp ý chúng em trong quá trình thực hiện đề tài.
VI Tài liệu tham khảo:
1 https://arduino.vn/
2 https://stackoverflow.com/
30