Sơ đồ khối
Hình 3.1: Sơ đồ khối
Chức năng các khối:
- Khối cảm biến: Bao gồm các tín hiệu từ cảm biến gia tốc góc MPU- 6050 và tín hiệu từ Encoder của động cơ, các tín hiệu này sẽ được gửi về khối xử lý.
- Khối xử lý: Nhận dữ liệu từ khối cảm biến, tính toán và gửi giá trị điều khiển đến để điều khiển động cơ đảo chiều quay giúp xe cân bằng.
- Khối động cơ: Bao gồm khung xe gắn hai động cơ giảm tốc JGA25 có 2 encoder.
- Khối nguồn: Cấp nguồn cho vi điều khiển và driver điều khiển động cơ.
Sơ đồ đi dây:
Nhóm em xử dụng phần mềm Fritzing để tiến hành mô phỏng lại phương pháp kết nối phần cứng.
Hình 3.2: Sơ đồ đi dây cho hệ xe hai bánh tự cân bằng.
Ngoài ra trong phần mềm đi dây này không kèm theo Encoder của động cơ do đó: Vcc và GND của Encoder sẽ được nối vào 5VDC và GND của Board Arduino , chân tín hiệu của Encoder 1 nối như sau: chân A vào chân 3 của Arduino(ngắt 1 của Arduino) chân B vào chân 4 . Encoder 2 có chân A vào chân 19 ( ngắt 4) của Arduino chân B vào số 5 của Arduino.
#define leftencoder_a 3
// đọc trạng thái kênh A, LOW or HIGH #define leftencoder_b 4
// đọc trạng thái kênh B, LOW or HIGH #define rightencoder_a 19
Arduino Uno Mega 2560
Arduino Mega 2560 là phiên bản nâng cấp của Arduino Mega hay còn gọi là Arduino Mega 1280. Sự khác biệt lớn nhất với Arduino Mega 1280 chính là chip nhân. Ở Arduino Mega 1280 sử dụng chip Atmegal 1280 với flash memory 128KB, SRAM 8KB và EEPROM 4KB.
Hình 3.3: Arduino Mega 2560
Arduino Mega 2560 là một vi điều khiển hoạt động dựa trên chip Atmega2560. Bao gồm:
54 chân digital (trong đó có 15 chân có thế được sử dụng như những chân PWM là từ chân số 2 đến 13 và chân 44 45 46).
6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt 5), chân 19 (interrupt 4), chân 20 (interrupt 3), và chân 21 (interrupt 2).
16 chân vào analog (từ A0 đến A15). 4 cổng Serial giao tiếp với phần cứng
Bảng 3.1: Bảng thông số kỹ thuật Arduino Mega 2560.
Chip xử lý ATMega2560
Điện áp hoạt động 5V
Điện áp vào giới hạn 6V-20V
Cường độ dòng điện trên mỗi 3.3V pin 50mA
Cường độ dòng điện trên mỗi I/O Pin 20mA
Flash Memory 256 KB
SRAM 8 KB
EEPROM 4 KB
Tốc độ xung Clock 16 MHz
Cảm biến gia tốc góc MPU 6050
Hình 3.4: Cảm biến gia tốc góc MPU-6050.
Cảm biến MPU-6050 được sử dụng để đo 6 thông số: 3 trục Góc quay (Gyro), 3 trục gia tốc hướng (Accelerometer), là loại cảm biến gia tốc phổ biến nhất trên thị trường hiện nay, ví dụ và code dành cho nó rất nhiều và hầu như có trên mọi loại vi điều khiển, sử dụng cảm biến này cho mô hình xe tự cân bằng thì MPU6050 sẽ là sự lựa chọn tối ưu.
Cảm biến MPU-6050 là cảm biến của hang IvenSense. MPU- 6050 là giải pháp cảm biến chuyển động đầu tiên trên thế giới có tới 6 (mở rộng tới 9) trục cảm biến bao gồm axis gyroscope, 3- axit accelerometer và một Digital Motion Processcer (DMP) tích hợp trong một chip duy nhất có kích thước rất nhỏ (4×4×0,9mm). Với bus cảm biến I2C dành riêng, nó trực tiếp chấp nhận đầu vào từ một la bàn bên ngoài 3 trục để cung cấp kết quả MotionFusion 9 trục hoàn chỉnh
MPU-6050có ba bộ chuyển đổi ADC 16 bit để số hóa các đầu ra con quay hồi chuyển và ba ADC 16 bit để số hóa đầu ra gia tốc kế. Để theo dõi độ chính xác của chuyển động nhanh và chuyển động chậm, các bộ phận này có thang đo chính quy có thể lập trình với giá trị vận tốc góc trong khoảng ±250, ±500, ±1000, ±2000°/ giây (dps) và giá trị gia tốc trong khoảng ±2g, ±4g, ±8g và ±16g.
Thông số kĩ thuật:
Nguồn: 3 ~5VDC Giao tiếp: I2C
Giá vận tốc góc trongkhoảng: ±250, ±500,± 1000,± 2000 degree/sec Giá trị gia tốc trong khoảng: ±2g, ±4g, ± 8g, ± 16g (1g=1m/s2) Các chân kết nối của MPU- 6050
Con quay hồi chuyển (Gyroscope)
Tích hợp ADC 16 bit cho phép lấy dữ liệu đồng thời của các con quay hồi chuyển.
Tăng độ chính xác và độ nhạy của cân bằng nhiệt độ giúp giảm sự hiệu chỉnh của người dùng.
Cải thiện hiệu suất và giảm thiều khi hoạt động ở tần số thấp. Dòng hoạt động: 3.6mA
Dòng chờ: 5𝜇A
Gia tốc kế (Accclcrometer)
Tích hợp ADC 16 bit cho phép lấy dự liệu đồng thời của các gia tốc kế. Dòng hoạt động: 500 𝜇A
Dòng ở chế độ công suất thấp: 10𝜇A ở 1.25Hz, 20𝜇A ở 5Hz, 60𝜇A ở 20𝐻𝑧, 110𝜇A ở 40Hz
Phát hiện hướng và điều hướng. Ngắt do người sử dụng lập trình.
Sử dụng địa chỉ I2C mặc định và không có ngắt ngoài, cảm biến phụ trợ khác, các chân XDA, XCL, AD0, sẽ không được sử dụng. GY 521 sử dụng giap thức I2C
I2C là giao thức giao tiếp nối tiếp đồng bộ, dữ liệu được truyền qua dây SDA và tín hiệu đồng hồ SCL. Với giao thức này, thiết bị có 2 chế độ “Master” và “Slaver”. MPU6050 ở chế độ Slave mode, giao tiếp với Arduino. Tốc độ truyền dữ liệu là 400KHz.
Lập trình giao thức I2C trên chip xử lý, ta sử dụng thư viên “Wire.h” trong Arduino.
Bảng 3.2: Thông số cảm biến MPU-6050
Module Đặc điểm
VCC 5VDC
GND Nối đất
SCL Chân Clock
XDA Chân dữ liệu (Kết nối với cảm biến khác)
XCL Chân xung Clock
AD0 Địa chỉa I2C (Bit 0)
INT Chân ngắt
Hình 3.5: Sơ đồ mạch module cảm biến MPU-6050
Hiệu chỉnh con quay hồi chuyển và gia tốc kế:
Đặt cảm biến theo chiều ngang trên một bề mặt phẳng. Trong đó x và y nằm trong mặt phẳng song song với phương ngang, z theo hướng trọng lực.
Theo lý thuyết, trục z có giá trị là 1g va f giá trị trên trục x và y bằng 0. Nhưng trong thực tế các giá trị trên trục x và y khác 0, trong khi giá trị z là 1g. Chúng tôi đọc giá trị gia tốc kế 50 lần và sau đó lấy trung bình. Khi đó các giá trị trung bình trên x và y khác 0, trong khi sai số giữa các trị z và 1g sẽ là 0 của trục z.
Hiệu chỉnh con quay hồi chuyển: Đặt cảm biến nằm yên, khi số đọc trên cả ba trục bằng 0. Nhưng số đọc thực tế khác 0, trong đó giá trị đọc là 0 của con quay trên trục.
Gia tốc góc: Sau khi hiệu chỉnh, lấy giá trị đó và tính toán giá trị góc sử dụng công thức sau:
Góc lệch = arctan(-accX / accZ)
Vận tốc góc: Sau khi hiệu chỉnh con quay, chia cho mức tăng (độ nhạy LBS) trong đó giá trị 131 LSB (°/𝑠) để thu được vận tốc góc.
Giá trị của con quay hồi chuyển thu được có độ chính xác cao nhưng dễ trôi theo thời gian, trong khi giá trị gia tốc kê không bị trôi mà không ổn định. Để giải quyết vấn đề góc nghiêng, ta kết hợp cả hai giá trị gia tốc kế và con quay hồi chuyển vào bộ lọc Kalman để thu được giá trị góc ổn định.
MPU6050 giao tiếp với Arduino thông qua giao thức I2C. Cảm biến được kết nối với Arduino như hình dưới:
Hình 3.6: Sơ đồ kết nối giữa Arduino và MPU-6050
Động cơ kèm Encoder:
Trên thị trường hiện nay có rất nhiều các loại động cơ khác nhau, được sử dụng cho các mục đích khác nhau. Tuy nhiên đối với hệ xe hai bánh tự cân bằng này đòi hỏi sự chính xác cũng như ổn định của động cơ rất cao, thì mới cho ta được hệ xe ổn định nhất. Và để có được sự chính xác đó là biết được góc quay của động cơ là bao nhiêu, vận tốc của động cơ là bao nhiêu thì một phần tử không thể không nói đến đó là bộ đếm xung Encoder. Với Encoder người sử dụng có thể dễ dàng quy đổi ra được tốc độ
động cơ bao nhiêu, số vòng quay của động cơ một thời gian là bao nhiêu, từ đó dễ dàng hơn trong các thao tác tính toán cho các đề tài lớn.
Việc tính toán lựa chọn ra động cơ phù hợp cho mô hình phụ thuộc phần lớn vào mảng thiết kế mô hình của hệ thống, một mô hình quá nặng không nên dùng động cơ nhỏ có momen nhỏ để điều khiển, việc này sẽ gây hư hại động cơ trong quá trình hoạt động lâu dài, ngược lại một mô hình nhỏ không cần thiết phải lựa chọn động cơ quá lớn, công suất momen cao. Do đó phụ thuộc vào thiết kế mô hình mà ta sẽ chọn ra loại động cơ phù hợp cho mô hình.
Với mô hình của nhóm một cách ước chừng tổng quát. Nhóm sẽ lựa chọn động cơ có gắn kèm Encoder JGA25. Đây là một loại động cơ vừa phải có độ chính xác cao và trạng thái lúc hoạt động khá ổn định.
Hình 3.7: Động cơ Encoder JGA25
Bảng 3.3: Thông số kỹ thuật động cơ
Động cơ JGA25 370 CE Nguồn cung cấp 12V Tốc độ quay 250RPM Đường kính động cơ 25mm Chiều dài 55mm Đường kính trục 4mm
Chiều dài trục 22.2 mm
Công suất 13.2W
Encoder 5v- 11 xung/vòng
Tỉ số truyền qua hộp giảm tốc 1:34
Momen 1.88 kgf.cm
Module cầu H
Hình 3.8: Sơ đồ mạch điện nguyên lý chung cho cầu H
Mạch cầu H là một mạch đơn giản dùng để điều khiển động cơ DC quay thuận hoặc quay nghịch. Trong thực tế, có nhiều kiểu mạch cầu H khác nhau tùy vào cách chúng ta lựa chọn linh kiện có dòng điện, điện áp điều khiển lớn hay nhỏ, tần số xung PWM… Và chúng sẽ quyết định đến khả năng điều khiể của cầu H
Theo như sơ đồ trên, ta có A và B là 2 cực điều khiển được mắc nối tiếp với 2 điện trở hạn dòng. Tùy vào loại transitor bạn đang dùng mà trị này khác nhau. Phải đảm bảo rằng dòng điện qua cực Base của các transitor không quá lớn để làm hỏng chúng. Trung bình thì dùng điện trở 1k Ohm.
Với 2 cực điều khiển và 2 mức tín hiệu HIGH/LOW tương ứng 12V/0V cho mỗi cực, có 4 trường hợp xảy ra như sau:
A ở mức LOW và B ở mức HIGH
Ở phía A, transitor Q1 mở, Q3 đóng. Ở phía B, transitor Q2 đóng, Q4 mở. Do đó, dòng điện trong mạch có thể chạy từ nguồn 12V đến Q1, qua động cơ đến Q4
M + Q1 - Q2 Q3 Q4 +12V A B PNP PNP NPN NPN
để về GND. Lúc này, động cơ quay theo chiều thuận. Bạn để ý các cực (+) và (-) của động cơ là sẽ thấy.
Hình 3.9: Điều khiển cầu thuận
A ở mức HIGH và B ở mức LOW
Ở phía A, transitor Q1 đóng, Q3 mở. Ở phía B, transitor B, transitor Q2 mở, Q4 đóng. Do đó, dòng điện trong mạch có thể chạy từ nguồn 12V đến Q2, qua động cơ đến Q3 để về GND. Lúc này, động cơ quay theo chiều ngược.
A và B cùng ở mức LOW
Khi đó, transitor Q1 và Q2 mở nhưng Q3 và Q4 đóng. Dòng điện không có đường về được GND do đó không có dòng điện qua động cơ- động cơ không hoạt động
A và B cùng ở mức HIGH
Khi đó, transistor Q1 và Q2 đóng nhưng Q3 và Q4 mở. Dòng điện không thể chạy từ nguồn 12V ra do đó không có dòng điện qua động cơ – động cơ không hoạt động.
Vì động cơ ta chọn có công suất 2.2W, mà hệ xe có hai động cơ nên công suất nguồn tổng là 4,4W, điện áp nguồn là 6V – 12V. Do đó, ta chọn module cầu H L298N.
Hình 3.11: Module cầu H L298N
Bảng 3.4: Thông số kỹ thuật L298N
Module L298N
Điện áp điều khiển +5V ~ +12V
Dòng điện tối đa cho
mỗi cầu H 2A
Điện áp của tín hiệu
điều khiển +5V ~ +7V
Dòng của tín hiệu điều
khiển 0 ~ 36mA
Nhiệt độ làm việc -25 ℃ ~ +130 ℃