Hình 5-4 Kích thước động cơ 28BYJ-48 Thông số kĩ thuật của động cơ bước 28BYJ-48:
- Điện áp hoạt động: 5V và 12V
- Kích thước: Đường kính 28mm, chiều cao 19mm, chiều dài trục 7.5mm
- Góc nhìn / step: 5.626 x 1/64 - Số đầu vào điều khiển step: 4 - Số step: 64
- DC kháng: 200Ω± 7% (25 ℃) - Điện trở cách điện: > 10MΩ (500V) - Cường độ điện môi: 600VAC/1mA/1s - Tần số khi tải kéo: > 600Hz
- Tần số không tải: > 1000Hz
- Mô-men xoắn: > 34.3mN (120Hz)
- Tiếng ồn: <40dB (120Hz, không tải, 10cm) - Khối lượng: Khoảng 32g
5.4.2 Khối driver điều khiển động cơ bước
Driver ULN2003 điều khiển động cơ bước 28BYJ-48
Hình 5-5 Mạch ULN 2003 điều khiển động cơ bước 28BYJ-48 Mạch ULN 2003:
- Điện áp 5V - 12VDC - Tín hiệu vào 4 chân
- Tín hiệu ra là jack cắm động cơ bước 28BYJ-48 - Có 4 LED hiển thị trạng thái hoạt động của động cơ - Động cơ bước 28BYJ-48
- Điện áp 5VDC
- Thông số bước 5,625 x 1/64
Mạch điều khiển động cơ bước ULN2003 có kích thước nhỏ và dễ sử dụng. Nó sử dụng IC ULN2003A để khuyếch đại các tín hiệu điều khiển từ board mạch điều khiển. Điện áp sử dụng có thể lên đến 15V. Mạch điều khiển động cơ bước ULN2003 khi mua sẽ đi kèm với một động cơ bước.
5.4.3 Kit Thu Phát Bluetooth ESP32-DEVKITC-32D
Kit thu phát Bluetooth ESP32-DEVKITC-32D là kit phát triển với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử dụng và lập trình các ứng dụng trên ESP32 trở nên rất đơn giản.
Kit thu phát Bluetooth ESP32-DEVKITC-32D được dùng cho các ứng dụng cần kết nối, thu thập dữ liệu và điều khiển qua sóng Bluetooth, đặc biệt là các ứng dụng liên quan đến IoT.
Kit thu phát Bluetooth ESP32-DEVKITC-32D sử dụng chip nạp và giao tiếp UART mới và ổn định, có khả năng tự nhận Driver trên tất cả các hệ điều hành Window và Linux.
Hình 5-7 Sơ đồ chân Kit RF thu phát wifi bluetooth ESP32 Thông số kỹ thuật:
- Loại: Wifi + Bluetooth Module - Mô hình: ESP32 38 chân
- Điện áp nguồn (USB): 5V DC - Đầu vào/Đầu ra điện áp: 3.3V DC
- Công suất tiêu thụ: 5μA trong hệ thống treo chế độ - Hiệu suất: Lên đến 600 DMIPS
- Tần số: lên đến 240MHz
- Wifi: 802.11 B/g/n/E/I (802.11N @ 2.4 GHz lên đến 150 Mbit/S) - Bluetooth: 4.2 BR/EDR BLE 2 chế độ điều khiển
- Bộ nhớ: 448 Kbyte ROM, 520 Kbyte SRAM, 6 Kbyte SRAM trên RTC và QSPI Hỗ trợ đèn flash / SRAM chip
- Chip USB-Serial: CP2102 - Ăng ten: PCB
- GPIO kỹ thuật số: 24 chân (một số chân chỉ làm đầu vào)
- Kỹ thuật số Analog: 12bit SAR loại ADC, hỗ trợ các phép đo trên lên đến 18 kênh, một số chân hỗ trợ một bộ khuếch đại với lập trình tăng - Bảo mật: IEEE 802.11, bao gồm cả WFA, WPA/WPA2 và WAPI - Phần cứng tăng tốc mật mã học: AES, SHA-2, RSA, hình elip mật mã
Đường cong (ECC), số ngẫu nhiên Máy phát điện (RNG)
5.4.4 Khối nguồn
Pin 18650 là một loại pin lithium-ion có thể sạc lại. Pin lithium-ion là cuộc cách mạng hóa các thiết bị cầm tay. Pin có trong mọi thứ, từ điện thoại thông minh và máy ảnh của chúng tôi đến màn hình siêu nhỏ, dụng cụ thể dục và đèn pin. Khi công nghệ pin đã phát triển mạnh, các sản phẩm 18650, từng được dành riêng cho các nhà sản xuất đã tìm đường đến tay người tiêu dùng. Tuy nhiên, các dòng pin lithium mới này chưa được tiêu chuẩn hóa hoàn toàn giống như các pin sạc AA bạn sẽ tìm thấy trong siêu thị.
Pin 18650 là pin có kích thước 18mm x 65mm. Mã pin 18650 dành riêng cho kích thước của pin lithium-ion với nhiều thương hiệu sản xuất như pin panasonic, sony, ansmann, akasha… đã trở thành tiêu chuẩn vàng mới cho pin có thể thay thế và có thể sạc lại. Pin 18650 cung cấp hiệu suất của một pin lithium-ion, công suất trong khoảng 1800mAh đến khoảng 3500mAh và công suất 3,7 volt. Chúng được sử dụng trong một loạt các thiết bị từ máy tính xách tay đến con trỏ laser và các phụ kiện máy ảnh như gimbals và thanh trượt, đèn pin…
Để thu đc bộ nguồn có điện áp 12V cung cấp năng lượng cho robot hoạt động. Nhóm tác giả sử dụng biện pháp đấu nối tiếp 3 viên pin 18650 vào với nhau.
Hình 5-9 Sơ đồ đấu nối pin 3s
5.4.5 Khối hạ áp
Module hạ áp DSN-MINI-360 LM2596:
Module hạ áp DSN MINI-360 LM2596 Mạch chuyển đổi điện áp DC-DC đầu ra 3A với kích thước nhỏ gọn, thay thế cho LM2596S và đảm bảo được hiệu suất tốt, dùng để thiết kế các mạch nguồn cho các thiết bị nhỏ như mô hình, thiết bị di động, camera, …
Thông Số Kĩ Thuật:
- Điện áp đầu ra: 0.8 ~ 17V (có thể điều chỉnh bằng biến trở) - Dòng ra: 3A (max), Dòng liên tục 1.8A
- Tần số chuyển đổi: 340KHz - Độ gợn đầu ra: < 30mV
- Hiệu suất chuyển đổi: 96% (tối đa) - Xuất xứ: Trung Quốc
- Kích thước: 17mm x 11mm x 3.8mm - Trọng lượng: 2g.
5.4.6 Adapter sạc pin 3s 12.6V
Hình 5-11 Adapter sạc pin 3s
Thông số kĩ thuật:
- Điện thế ngõ vào: AC 100 - 240V. - Điện thế ngõ ra: DC 12.6V - 2A
- Đầu jack cắm sạc: 5.5*2.5mm (thông dụng) - Sạc CC/CV
5.5 Thiết kế kêt cấu và thiết kế chi tiết 5.5.1 Khung xe 5.5.1 Khung xe
Hình 5-12 Khung sườn của xe góc 1
Bảng 5-1 Các chi tiết khung xe STT Tên sản phẩm Ảnh dựng 3D Số lượng 1 Tấm đáy 380*270 mm 1 2 Tấm nóc 1 3 Tấm gắn đỡ trục 4 4 Tấm gắn chiết áp 4
5 Cọc đồng 20mm 8
6 Cọc đồng 30mm 4
7 Cọc đồng 50mm 16
Gia công:
- Cọc đồng 20 mm,30 mm và 50mm được bán sẵn trên thị trường. - Tấm nóc và tấm gắn đỡ trục và tấm gắn chiết áp sử dụng vật liệu
mica với độ dày 3mm được cắt CNC với độ chính xác cao.
- Tấm đáy sử dụng vậy liệu mica với độ dày 5 mm được cắt CNC với độ chính xác cao.
5.5.2 Chân robot
Hình 5-14 Chân chuyển động của robot. Bảng 5-2 Các chi tiết trục bánh xe
STT Tên sản
phẩm Ảnh dựng 3D Số lượng
2 Khớp nối 4 3 Trục phi 8 dài 63mm 4 4 Ổ trượt phi 8 có mặt bích 4 5 Mặt bích tiếp xúc lò xo 4
6 Gối đỡ trục phi 8 4 7 Lò xo phi 17 dài 29mm 4 8 Động cơ Step 8 9 Tấm đỡ động cơ 4
10 Giá đỡ động cơ 8 11 Gá chống xoay trục phi 8 8 12 Bánh xe 8 13 Then chống xoay trục phi 8 4 Gia công:
- Bánh xe, giá đỡ động cơ, gá chống xoay trục phi 8 được in 3D - Mặt bích tiếp xúc lò xo và tấm đỡ động cơ sử dụng vật liệu mica
với độ dày 5mm cắt CNC với độ chính xác cao
- Trục phi 8 đc cắt từ đoạn trục dài về với kích thước 63mm.
5.5.3 Thiết kế mạch điện tử
Các linh kiện trong mạch điện tử
Bảng 5-3 Các linh kiện sử dụng trong mạch điều khiển
STT Tên linh kiện Số
lượng 1 ESP32-DEVKITC-32D 2 2 Module hạ áp LM2596 1 3 IC ULN 2003A 8 4 Tụ hoá 16V 1 5 Tụ gốm 102 8 Mạch in Hình 5-15 Mạch in trên phần mềm thiết kế
Hình 5-16 Mạch in khi chế tạo
5.6 Chế tạo
Hình 5-18 Chế tạo chân đế góc 2
Hình 5-20 Chế tạo khung mô hình hoàn chỉnh góc 2
Hình 5-22 Chế tạo mô hình hoàn chỉnh góc 1
CHƯƠNG 6 KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 6.1 Kết quả đạt được
Module vận chuyển đa hướng ngày càng được ứng dụng rộng rãi cho hoạt động vận tải siêu trường siêu trọng trong công nghiệp, việc điều khiển chính xác vị trí của module là cơ sở cho bài toán điều khiển chuyển động theo quỹ đạo mong muốn. Từ các nội dung nghiên cứu lý thuyết cũng như kết quả nghiên cứu thực nghiệm được trình bày trong đề tài nhóm nghiên cứu rút ra một số kết luận sau:
Về mặt lý thuyết:
- Phận tích và lựa chọn được kết cấu hợp lý để thiết kế module vận chuyển đa hướng.
- Phân tích được mô hình động học của module vận chuyển đa hướng. - Xây dựng phần mềm giao diện điều khiển module từ xa bằng
smartphone.
Về mặt thực nghiệm: Thiết kế cơ khí
- Thiết kế xong bản vẽ gia công cơ khí cho mô hình module vận chuyển đa hướng.
- Xây dựng được các bản vẽ phân rã, bản vẽ lắp, bản vẽ chi tiết của module vận chuyển đa hướng.
- Chế tạo, lắp ráp thành công mô hình module vận chuyển đa hướng. Thiết kế điều khiển:
- Xây dựng, kết nối được hệ thống mạch điều khiển, cảm biến, các mudule giao tiếp, các cơ cấu chấp hành với nguồn năng lượng để tạo thành một hệ thống hoạt động ổn định.
- Thiết kế giao diện người dùng đơn giản, dễ sử dụng.
- Điều khiển được module chạy theo các yêu cầu mình mong muốn, đảm bảo được tốc độ và sự an toàn.
6.2 Hạn chế
Trong quá trình thực hiện đề tài đồ án tốt nghiệp, nhóm nghiên cứu đã cố gắng nghiên cứu, thiết kế module và xây dựng mô hình vận chuyển đa hướng tự cân bằng. Tuy nhiên trong thời gian ngắn về cách thiết kế, chế tạo gia công cơ khí và lắp ráp, lập trình điều khiển còn thiếu kinh nghiệm thực tế, gặp nhiều khó khăn nên chưa thể hoàn thành đề tài được một cách tốt nhất do đó vẫn còn tồn tại một số hạn chế:
- Kết cấu module vận chuyển đa hướng đưa ra vẫn chưa được kiểm nghiệm về tính cứng vững, khả năng cân bằng và ổn định trọng tâm, kiểm tra sai số điều khiển.
- Chưa hoàn thiện được tính toán, thiết kế hệ thống treo khí nén tự cân bằng của module cũng như mô hình vận chuyển đa hướng.
- Chưa xây dựng được mô hình động lực học cho module vận chuyển đa hướng.
- Chưa xây dựng được thực nghiệm kiểm chứng lý thuyết mô hình động học của module vận chuyển đa hướng.
6.3 Định hướng phát triển
- Đề tài có tính mở, còn rất nhiều vấn đề cần tiếp tục được triển khai nghiên cứu.
- Hoàn thiện phần điều khiển, mạch điều khiển để module vận chuyển đa hướng hoạt động thực sự có hiệu quả và có tính ứng dụng cao trong thực tiễn.
- Tiếp tục nghiên cứu, thiết kế phát triển hệ thống treo khí nén tự cân bằng giúp module vận chuyển đa hướng hoạt động tốt hơn trong các địa hình phức tạp.
- Xây dựng, hoàn thiện khả năng ghép nối, hoạt động đồng bộ với các module vận chuyển đa hướng khác để tăng thêm tải trọng cũng như kích thước hàng hoá cần vận chuyển.
Vấn đề tồn tại là khá nhiều, tuy nhiên trong giới hạn phạm vi đồ án, khả năng trình độ và thời gian có hạn nên nhóm nghiên cứu chưa thể hoàn thiện những vấn đề trên. Đây là một đề tài mới mẻ, có rất nhiều hướng phát triển và có tính thực tế cao, nếu có điều kiện nhóm nghiên cứu rất mong được nghiên cứu và phát triển nó. Rất mong sẽ nhận được sự giúp đỡ chỉ bảo của các thầy để hoàn thành đề tài một cách tốt nhất.
TÀI LIỆU THAM KHẢO
[1] PGS. TS. Trịnh Chất; TS. Lê Văn Uyển, Tính toán thiết kế hệ dẫn động cơ khí Tập 1, Hà Nội: Nhà xuất bản giáo dục, 2006.
[2] Ming-Han Lee, Tzuu-Hseng S. Li, “The Journal of Engineering,” Kinematics, dynamics and control design of 4WIS4WID mobile robots, p. 11, 2014.
[3] Nguyễn Hoàng Hải, Nguyễn Việt Anh, Lập trình Matlab và ứng dụng, Hà Nội: H. Khoa Học và Kĩ Thuật, 2020.
[4] M. T. đ. h. -. t. Đ. h. B. khoa, Môn Tự động hóa - trường Đại học Bách khoa, Hà Nội: Đại học Bách khoa Hà Nội, 2010.
[5] N. T. Linh, Hướng dẫn đồ án Chi tiết máy, Hà Nội: Thống kê, 2020. [6] L. N. Duy, Giáo trình cảm biến và hệ thống đo, Hà Nội: KH&KT,
2019.
[7] Phạm Quang Huy; Nguyễn Ngọc Thái, Thiết kế mạch điện tử, Hà Nội: Thống Kê , 2002.
PHỤ LỤC Code esp32
//esp32(v1)
//#define BLYNK_PRINT Serial #include <AccelStepper.h> #define BLYNK_USE_DIRECT_CONNECT #include"PID_v1.h" #include <BlynkSimpleEsp32_BLE.h> #include <BLEDevice.h> #include <BLEServer.h> bool start_setup = 0;
// You should get Auth Token in the Blynk App. // Go to the Project Settings (nut icon).
char auth[] = "Zhj3LddHyDTnB-SbdM1f5-0emwjRA9Hd"; const int count = 4;
int mor[4][4] = { {16, 2, 17, 4}, //2, 4, 16, 17 {18, 21, 19, 5}, //5, 18, 19, 21 {14, 13, 12, 27},//27, 14, 12, 13 {33, 26, 25, 32}//32, 33, 25, 26 }; int sensor[2] = {34, 35};
AccelStepper stepper1(AccelStepper::FULL4WIRE, mor[0][0], mor[0][1], mor[0][2], mor[0][3]);
AccelStepper stepper2(AccelStepper::FULL4WIRE, mor[1][0], mor[1][1], mor[1][2], mor[1][3]);
AccelStepper stepper3(AccelStepper::FULL4WIRE, mor[2][0], mor[2][1], mor[2][2], mor[2][3]);
AccelStepper stepper4(AccelStepper::FULL4WIRE, mor[3][0], mor[3][1], mor[3][2], mor[3][3]); AccelStepper* steppers[count] = { &stepper1, &stepper2, &stepper3, &stepper4 }; int dir_now = 1; #define tien 1 #define dung 0 #define lui -1 #define def 350 int sp_def = 350; #define max_sp 580 #define min_sp 220
volatile bool send_mcu = 0; //
double angle = 85.5; double angle_2 = 90;
double originalSetpoint = angle; double setpoint = originalSetpoint; double input, output;
bool send_now = 0; double i = 0.2; double d = 0;
PID pid(&input, &output, &setpoint, p, i, d, DIRECT); double originalSetpoint2 = angle;
double setpoint2 = originalSetpoint2; double input2, output2;
double p2 = 1.25; double i2 = 1.5; double d2 = 0.0005; bool stop_1 = 0; bool stop_2 = 0; bool move_1 = 0; int dir_now_2 = 1; int v = 0; int mode1 = 1; int mode2 = 0; int mode3 = 0; int mode_2_set = 0; int state1, state2;
PID pid2(&input2, &output2, &setpoint2, p2, i2, d2, DIRECT); void move_robot()
{
for (int i = 0 ; i < count; i++) {
steppers[i]->runSpeed(); }
}
void set_robot(int speed_)
{ /// sp-phai duong la lui sp2-trai am la lui int dir = dir_now;
int dir_2;
int error = setpoint - input; int sp, sp2; if (!mode3) { sp = (def - speed_) ; sp2 = (def + speed_) ; } else {
sp = (def * dir_now - speed_) ; sp2 = (def * dir_now + speed_) ; error = error * dir_now;
}
if (sp > 0) sp = constrain(sp, min_sp, max_sp); else {
if (sp > -min_sp) sp = -min_sp; else if (sp < -max_sp)sp = -max_sp;
}
if (sp2 > 0)sp2 = constrain(sp2, min_sp, max_sp); else
{
if (sp2 > -min_sp) sp2 = -min_sp; else if (sp2 < -max_sp)sp2 = -max_sp; }
if (error < 0)dir_2 = tien; else dir_2 = lui;
if (abs(error) <= 5) { if (!mode3) { if (move_1 == 1) { dir_now = dir_now_2; } else { dir_now = 0; dir_now_2 = 0; } } sp = sp > 0 ? sp_def : -sp_def; sp2 = sp2 > 0 ? -sp_def : sp_def; } else {
if (!mode3)dir_now = 1; sp = sp * dir_2; sp2 = sp2 * dir_2; } if (!mode3) { sp = sp * dir_now; sp2 = sp2 * dir_now; } steppers[0]->setSpeed(-sp); steppers[1]->setSpeed(-sp2); }
void set_robot2(int speed_) {
//sp trai duong la tien sp2 phai am la tien int dir = dir_now;
int sp, sp2; int dir_2;
int error = setpoint2 - input2; if (!mode3) { sp = (def + speed_) ; sp2 = (def - speed_) ; } else {
sp = (def * dir + speed_) ; sp2 = (def * dir - speed_) ; error = error * dir_now; }
if (sp > 0) {
if (sp > max_sp)sp = max_sp;
else if (sp < min_sp) sp = min_sp; }
else {
if (sp > -min_sp)sp = -min_sp; else if (sp < -max_sp)sp = -max_sp; }
if (sp2 > 0)sp2 = constrain(sp2, min_sp, max_sp); else
{
if (sp2 > -min_sp) sp2 = -min_sp;