3.2.3.1. Camera
Camera Logitech C270 là một trong những sản phẩm tiêu biểu của hãng.Tạo nên sự khác biệt cho riêng mình,Webcam Logitech HD C270 có thể kết nối với nhiều thiết bị như Laptop,PC…
Webcam Logitech C270 HD tích hợp công nghệ tự động lấy ảnh,tự động điều chỉnh ánh sáng,tự động lọc tiếng ồn với công nghệ Logitech RightSoundTM,tích hợp sẵn micro. Sản phẩm là dòng camera HD với độ phân giải 720p,hình ảnh chụp lên đến 3.0 megapixel một chất lượng cực đảm bảo được độ sắc nét cho người dùng.
Camera logitech C270 được sử dụng để thu thập hình ảnh của lane đường và biển báo. Được kết nối với laptop thông qua cổng USB 3.0.
Thông số kỹ thuật của Camera logitech C270: - Độ phân giải: lên đến 3MP
- Quay video: lên tới 1024 x 720 pixel
- Công nghê: Công nghệ tinh thể lỏng Logitech Fluid Crystal - Giao tiếp: USB 2.0 tốc độ cao
- Kích thước:15x10x5 cm - Khối lượng: 0.2 KG
38
3.2.3.2. Thiết kế kệ chống rung cho Camera
Để đảm bảo khối thu thập hình ảnh được ổn định thì vị trí đặt camera phải ổn định, êm ái tránh hiện tượng rung lắc, tuy nhiên xe mô hình lại không có hệ thống treo hoàn chỉnh và hiệu quả, tuy nhiên việc lắp đặt hệ thống treo hoàn chỉnh hoặc nâng cấp hệ thống treo cho xe là điều hoàn toàn không khả thi, thay vào đó chúng em đã thiết kế một thiết bị hỗ trợ chống rung lắc cho camera nhằm để camera khi di chuyển có thể thu thập được những hình ảnh ổn định và mượt mà hơn.
- Nguyên lý các vật thể trong không gian: Các vật thể trong không gian đều có thể xoay theo 3 trục lần lượt là: Pitch, Yaw, Roll thì việc rung lắc của camera là do các trục trên gây ra, vậy nếu nói một cách đơn giản thì việc bảo đảm cho camera không bị rung lắc là tạo ra các thao tác hoặc lực ngược lại với 3 trục Pitch, Yaw, Roll.
- Phương pháp: Đầu tiên là ta cần một cảm biến để nhận tín hiệu 3 trục Pitch, Yaw, Roll thì sau khi lựa chọn, nghiên cứu, tìm hiểu nhóm chúng em chọn cảm biến MPU6050.
Thông số kỹ thuật của MPU6050
Điện áp sử dụng: 3~5VDC
39
Điện áp giao tiếp: 3~5VDC Chuẩn giao tiếp: I2C
Giá trị Gyroscopes trong khoảng: +/- 250 500 1000 2000 degree/sec Giá trị Acceleration trong khoảng: +/- 2g, +/- 4g, +/- 8g, +/- 16g
Để tạo ra các thao tác ngược lại với 3 trục Pitch, Yaw, Roll như trên lý thuyết thì nhóm chúng em đã chọn động cơ Servo SG90 1800, vì camera trên xe nặng 0.2kg, thì servo này hoàn toàn đáp ứng được, kèm theo nữa là động cơ servo có tốc độ phản ứng nhanh, được tích hợp sẵn driver điều khiển động cơ bên trong nên có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng của xung PWM
- Thông số kỹ thuật động cơ servo SG90
Hình 3.19. Cảm biến MPU6050 mô phỏng
40 Điện áp hoạt động: 4.8-5VDC Tốc độ: 0.12 sec/ 60 deg (4.8VDC) Lực kéo: 1.6 Kg.cm Kích thước: 21x12x22mm Trọng lượng: 9g.
Để điều khiển động cơ Servo cũng như nhận và xử lý tín hiệu từ MPU6050 thì nhóm chúng em đã chọn Arduino Nano vì mục đích nhỏ gọn, lại có khả năng xử lý các tác vụ được đề ra.
Module Arduino Nano V3.0 ATmega328P là mạch thu nhỏ của dòng Arduino Uno, có thiết kể nhỏ gọn, linh hoạt, sử dụng cho các BreadBoard nhỏ, cũng như các Project yêu cầu tính linh hoạt cao.
Board Arduino nano V3.0 sử dụng chip ATmega328P được kèm thêm 2 chân analog A6 A7, ngoài ra mạch còn được trang bị một Opamp tự chuyển nguồn khi có điện áp cao
Hình 3.20. Servo SG90
41 hơn vào board, kèm theo là board được tích hợp chip CH340 để giao tiếp trực tiếp với máy tính thay vì phải sử dụng cổng UART như bản cũ.
Thông số kỹ thuật Arduino Nano
Chân Digital I/O 14 (Với 6 chân PWM output)
Chân PWM Digital I/O 6
Chân đầu vào Analog 8 (thêm A6, A7) so với UNO
Dòng sử dụng I/O Pin 20 mA (tối đa 40mA)
Bộ nhớ Flash 32 KB (ATmega328) SRAM 2 KB (ATmega328) EEPROM 1 KB (ATmega328) Clock Speed 16 MHz Chiều dài 43.2 mm Chiều rộng 18.5 mm Trọng lượng 5g
42
Hình 3.22. Sơ đồ đi dây của thiết bị Thiết kế khung đỡ cho hệ thống:
43
3.2.4. Xây dựng khối động cơ
Hình 3.24. Cơ cấu hệ thống truyền động trên thực tế
Động cơ truyền lực quay đến bánh xe thông qua hộp số. Để cơ cấu ăn khớp với nhau và tương tích với kích cở bánh xe, trên xe được lắp một khớp nối truyền động bánh xe ở mỗi bên động cơ.
44
3.2.4.1. Động cơ
Chức năng chính của khối động cơ là nhận tín hiệu từ Arduino Uno R3 được truyền từ máy tính để xe có thể di chuyển tiến thẳng và dừng lại khi gặp biển báo.
Việc lựa chọn động cơ phải phù hợp với trọng lượng của chiếc xe, các thông số vòng/phút, điện áp hoạt động, công suất của động cơ,...ảnh hưởng trực tiếp đến sự di chuyển của xe, nhất là khi xe di chuyển trên địa hình thực tế, sự ma sát của mặt đường là rất lớn. Thông qua việc tính toán sơ bộ như trên về tải trọng tối đa mà xe có thể chở được, cũng như là xe di chuyển với vận tốc mong muốn thì động cơ được chọn là loại động cơ RS550. Thông số kỹ thuật: - Điện áp hoạt động: 12 V - Công suất: 35 W - Tốc độ: 15000 RPM - Đường kính động cơ: 36 mm - Chiều dài thân động cơ: 85 mm
Để điều khiển được tốc độ của động cơ,đồng thời tránh hiện tượng cháy do quá dòng khi sử dụng module L298. Nên nhóm em đã sử dụng module BTS7960 43A để điều khiển từng động cơ.
45
3.2.4.2. Module BTS7960
BTS7960 là bộ điều khiển động cơ cho phép điều khiển tốc độ và hướng của động cơ DC. Module có thể điều khiển động cơ có điện áp 6~27V, với dòng điện tối đa lên đến 43A. Tín hiệu logic điều khiển là 3.3~5V. Tần số điều khiển tối đa là 25KHz. Module sẽ tự động shutdown khi điện áp thấp hơn 5.5V.
Sơ đồ chân:
- VCC : Nguồn tạo mức logic điều khiển ( 5V – 3V3 ) - GND : Chân đất.
- R_EN = 0 Disable nửa cầu H phải. R_EN = 1 : Enable nửa cầu H phải. - L_EN = 0 Disable nửa cầu H trái. L_EN = 1 : Enable nửa cầu H trái. - RPWM và LPWM : chân điều khiển đảo chiều và tốc độ động cơ. - RPWM = 1 và LPWM = 0 : Mô tơ quay thuận.
- RPWM = 0 và LPWM = 1 : Mô tơ quay nghịch
- RPWM = 1 và LPWM = 1 hoặc RPWM = 0 và LPWM = 0 : Dừng. - R_IS và L_IS : kết hợp với điện trở để giới hạn dòng qua cầu H
Với ứng dụng bình thường RPWM,LPWM nối với GPIO (VD : chân digital 2,3) để điều khiển chiều quay của động cơ.
Chân R_EN , L_EN nối chung lại rồi nối với PWM (VD chân digital 5) để điều khiển tốc độ động cơ.
46
3.2.4.3. Module Encoder xoay
Để ổn định tốc độ của xe, nhóm đã ứng dụng thuật toán PID vào điều khiển 2 động cơ. Lấy tín hiệu tốc độ đầu ra của từng động cơ, nhóm đã sử dụng 2 Encoder cho từng bánh xe. Mạch Volume xoay Rotary Encoder 360 độ không giới hạn số vòng quay, encoder đưa
Hình 3.30. Mô phỏng khối động cơ trên Proteus
Hình 3.28. Sơ đồ chân Module BTS7690 43A
47 ra 2 xung vuông 90 độ gọi là 2 phase A và B, xung từ encoder đưa ra có thể dùng để nhận biết chiều quay, tốc độ quay, vị trí, module cung cấp 2 ngõ ra cho 2 phase và 1 ngõ ra dạng nút nhấn.
Thông số:
- Điện áp sử dụng: 3~5VDC - Độ phân giải 20 xung/vòng. Các chân tín hiệu: - VCC: Chân cấp nguồn 3~5VDC - GND: chân âm - CLK: phase A - DT: phase B - SW: button 3.2.5. Nguồn ắc quy
Khối nguồn cung cấp dòng điện và điện áp cho các khối khác hoạt động, dựa vào ngõ vào điện áp, dòng điện cấp vào của các thiết bị để chọn lựa nguồn cho thích hợp.
Dòng điện và điện áp hoạt động của Arduino Uno R3 là 30mA và 5VDC.Lựa chọn nguồn cung cấp cho Arduino hoạt động cần chú ý đến điện áp và dòng điện. Đặc biệt là dòng điện.
Công suất tải trong mạch:
- 3 Arduino Uno R3:5 x 0.03 x 3= 0.45 (W)
48 - Động cơ DC: 2 x 35 W= 70 (W)
- Step motor: 12 x 3 = 36 (W) - Tổng công suất P = 106.45 (W)
Lựa chọn bình ắc quy cung cấp nguồn cho sự hoạt động của xe là điều vô cùng quan trọng.Thời gian sử dụng ắc quy được tính như sau:
t = × × = × × .
. = 7 (h)
Với:A là dung lượng của ắc quy; V là điện áp ngõ ra của ắc quy; n là hệ số sử dụng của ắc quy ( thông thường là 0.7); P là công suất tải (tổng công suất trên mạch).
Thông số kỹ thuật của bình ắc quy Đồng Nai: Dung lượng: 12V – 90Ah
Hình 3.32. Ắc quy
Kết luận: sau khi tính toán và đưa ra giá trị kết hợp cho xe chạy thực nghiệm trên khuôn viên khoa cơ khí động lực, chúng em cấp nguồn cho khối động cơ gồm hai bình acquy nối song song, khối điều khiển lái là một bình.Để đảm bảo an toàn cho các linh kiện chúng em gắn thêm 1 bộ cầu chì đề phòng quá dòng
49
3.3. THIẾT BỊ, LINH KIỆN, MÔ-ĐUN VÀ SƠ ĐỒ NGUYÊN LÝ TOÀN MẠCH CỦA HỆ THỐNG CỦA HỆ THỐNG
Bảng 3.2. Bảng thống kê các linh kiện, thiết bị nhóm đã sử dụng
Tên linh
kiện Hình ảnh Chức năng Thông số kỹ thuật
Động cơ bước size 57 Dẫn động cho hệ thống bánh răng trục vít Giữ cho hệ thống lái chạy thẳng Góc bước: 1.8 độ Số pha: 2 pha Dòng điện: 3.0A Momen xoắn: 1.8Nm Khối lượng: 1.05KG Đường kính trục: 6.35mm Số dây: 4 dây Drive TB6600 Điều khiển động cơ bước nhờ tín hiệu từ arduino
Nối với nguồn điện từ 9 - 40VDC Bánh răng trục vít Nhận mô-men từ động cơ bước và dẫn động thước lái Tỉ số truyền 55 Modun 1 Góc ren xoắn 8.0171 độ Khoáng cách trục 32 Góc biên dạng ren 19.8198 độ Bước ren 3.14 mm Chiều rộng bánh vít 42.75 mm Mo-men xoắn 0.194Nm 18.727 Nm
50 Laptop HP
pavilion 15
Triển khai thuật toán, traning các model, chạy thuật toán chính, điều khiển Arduino
CPU Intel Core i5-8265U Ram 4 GB, DDR4, 2666 MHz
GPU NVIDIA GeForce MX130 2 GB & Intel UHD Graphics 620
Arduino Uno R3
Điều khiển động cơ bước, điều khiển PID SRAM 2 KB (ATmega328P) EEPROM 1KB Tốc độ 16Mhz Arduino Nano Điều khiển hệ thống giảm rung cho camera ATmega328P-AU UART: CH340. EEPROM: 1KB Clock Speed: 16Mhz. SRAM: 2KB Camera Logitech C270 Thu thập hình ảnh về cho thuật toán Độ phân giải 3MP Kết nối qua cổng USB Khối lượng 0.2 kg Servo MR
996
Cân bằng 3 góc Pitch Yaw Roll theo điều khiển của arduino nano Chủng loại: Analog RC Servo. Điện áp: 4.8~6.6VDC Tốc độ quay: 0.17sec / 60 degrees 0.13sec / 60 degrees Cảm biến MPU 6050 Thu thập tín hiệu gia tốc gửi về cho arduino nano
Điện áp sử dụng: 3~5VDC Điện áp giao tiếp: 3~5VDC Chuẩn giao tiếp: I2C Giá trị Gyroscopes trong khoảng: +/- 250 500 1000 2000 degree/sec
51 Giá trị Acceleration trong khoảng: +/- 2g, +/- 4g, +/- 8g, +/- 16g Module Encoder Nhận tính hiệu thông qua bánh răng dẫn động từ động cơ Điện áp sử dụng: 3~5VDC Độ phân giải 20 xung/vòng.
Giảm áp 12V Giảm áp 12v cho hệ thống giảm rung và driver TB6600
Điện áp đầu vào: Từ 3V đến 30V.
Điện áp đầu ra: Điều chỉnh được rong khoảng 1.5V đến 30V.
Dòng đáp ứng tối đa là 3A. Hiệu suất: 92% Công suất: 15W Module Rơle Đóng ngắt nguồn động cơ khi có biển báo Stop
Sử dụng điện áp nuôi DC 5V.
Relay mỗi Relay tiêu thụ dòng khoảng 80mA. Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A.
Có đèn báo đóng ngắt trên mỗi Relay.
Có thể chọn mức tín hiệu kích 0 hoặc 1 qua jumper.
52 Động RS 550 Làm lực đẩy cho xe di chuyển DC 6V: tốc độ 3600 vòng/phút không tải. Dòng điện: 1.3A DC 9.6V: tốc độ 7000vòng/phút không tải. Dòng điện: 1.6A DC 12V: tốc độ 11000vòng/phút không tải. Dòng điện: 1.8A Module BTS 7690 43A Điều khiển động cơ RS 550 thông qua Arduino Nguồn: 6 ~ 27V.
Dòng điện tải mach: 43A (Tải trở) hoặc 15A (Tải cảm).
Tín hiệu logic điều khiển: 3.3 ~ 5V.
Tần số điều khiển tối đa: 25KHz.
Ắc qui 12V Cấp nguồn cho
toàn bộ hệ thống
Ắc quy thắp sáng dân dụng. - Điện thế: 12V.
- Dung lượng: 20Ah. - Kích thước (Dài x Rộng x Cao): 232 x 91 x 165 mm. - Tổng cao: 185 mm. - Icc (CCA) (A): 60. - Dung tích axít: 2.0L. - Số tấm cực/ hộc: 9. - Vị trí cọc: Trái. - Trọng lượng: 4.44 kg.
53
54
3.4. LẬP TRÌNH HỆ THỐNG 3.4.1. Lập trình PID cho động cơ 3.4.1. Lập trình PID cho động cơ
Động cơ ban đầu được lập trình điều khiển qua mạch BTS với thuật toán đơn giản như sau: Serial.begin(9600); pinMode(motorA1, OUTPUT); pinMode(motorA2, OUTPUT); pinMode(motorB1, OUTPUT); pinMode(motorB2, OUTPUT);
pinMode(9,OUTPUT); //toc do banh phai pinMode(11,OUTPUT); //toc do banh trai
digitalWrite(motorA1, 1); digitalWrite(motorA2, 0); digitalWrite(motorB1, 1); digitalWrite(motorB2, 0); analogWrite(9,vSpeed);
analogWrite(11,vSpeed-them); digitalWrite(2,HIGH);
Nguyên lý của thuật toán bao gồm việc đóng mở các chân transistor để điều khiển động cơ, nhược điểm của thuật toán này sẽ làm động cơ chạy không đồng tốc độ với nhau, dẫn đến xe sẽ chạy lệch so với đường thẳng, nhược điểm sẽ ảnh hưởng rất nhiều tới độ chính xác của xe nếu cho xe chạy với đường dài, khi thực nghiệm ở sa hình rộng hơn và phức tạp hơn. Vì vậy nhóm em đã tạo thêm một thuật toán pid số dựa trên cơ sở có sẵn.
PID được tính như sau:
Tốc độ được thiết lập là: 995 vòng Thời gian lấy mẫu là T: 0,01 giây
Biến Error = tốc độ đặt – tốc độ, tốc độ được tính theo số xung của động cơ x = 2*T*Kp + Ki*T*T + 2*Kd
y = T*T*Ki – 4xKd - 2*T*Kp z = 2*Kd
55 Thuật toán được tham khảo từ Ths.Nguyễn Văn Đông Hải khoa Điện - Điện tử trường Đại học Sư Phạm Kỹ Thuật Tp.HCM.
Vì động cơ dẫn động thông qua hộp số bao gồm 4 bánh răng và tín hiệu encoder được dẫn động từ một bánh răng được thiết kế đi kèm nên việc tính toán chỉ số Kp Ki Kd trên lý thuyết là rất khó khăn vì sai số từ động cơ và bánh răng dẫn động module PID là rất lớn kèm theo khi xe di chuyển với các điều kiện có tải hoặc không tải, vì vậy nên chúng em quyết định cho xe chạy không tải và cho kết nối với một mạch đo điện áp từ động cơ, sau đó tiến hành quan sát mức thay đổi điện áp của động cơ chúng em tiến hành chọn lọc ra chỉ số phù hợp và ổn định nhất. Sau đó tiến hành cho xe chạy có tải và chạy trực tiếp trên mặt đường nhiều lần và tiến hành đo đạc, quan sát xe khi chạy, độ lệch của xe so với điểm xuất phát ban đầu, và chọn ra các chỉ số phù hợp nhất, bảng thống kê các lần chạy thử sẽ được liệt kê ở mục kết luận và đánh giá.
.
Hình 3.35. Mạch đo điện áp từ động cơ
56 - Phương pháp dò chỉ số Kp Ki Kd
Hình 3.37. Mô phỏng 2D bánh răng dẫn động encoder
Hình 3.38. Bánh răng hoàn chỉnh được lắp đặt trên xe