CHƯƠNG 3: THIẾT KẾ HỆ THỐNG
3.2. THIẾT KẾ SƠ ĐỒ NGUYÊN LÝ
3.2.1. Tính toán thông số và chọn linh kiện cho từng khối 1. Khối xử lý trung tâm
Trong lĩnh vực điện tử, có nhiều loại vi điều khiển thông dụng trên thị trường như là: STM32, Arduino, Node MCU, PIC… Mỗi dòng vi điều khiển đều có một ưu điểm
và khuyết điểm khác nhau, tuỳ theo mục đích sử dụng vào giá thành mà người thiết kế có thể lựa chọn cho phù hợp.
Vi điều khiển Arduino Uno R3 được sử dụng rộng rãi cho các ứng dụng hệ thống từ cơ bản đến phức tạp. Khi lập trình, người dùng sử dụng trình biên dịch IDE được nhà sản xuất Arduino cung cấp sẵn để lập trình, Arduino được hỗ trợ rất mạnh trên thị trường công nghệ hiện nay. Bên cạnh đó tại các phòng Lab của trường, phòng thực hành cũng nghiên về nghiên cứu các Board mạch Arduino ứng dụng nhiều trong các đề tài khoa học. Đó chính là lý do nhóm muốn tìm hiểu và nghiên cứu thêm về Board Vi điều khiển Arduino trong đề tài. Dưới đây là hình của Board Arduino Uno R3:
Hình 3.2: Arduino Uno R3
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328. Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD và nhiều các ứng dụng khác trong đó có điều khiển xe hai bánh tự cân bằng.
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu. Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA. Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối).
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial. Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây.
Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite().
Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L). Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu. Nó được nối với chân số 13. Khi chân này được người dùng sử dụng, LED sẽ sáng.
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V. Với chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog. Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit.
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác.
Thông số kĩ thuật:
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Đ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
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Bảng 3.1. Bảng thông số kĩ thuật cho Board Arduino Uno R3 3.2.1.2. Khối cảm biến góc nghiêng MPU-6050
Hình 3.3: MPU6050-GY521
Một module MPU sẽ bao gồm hai cảm biến: cảm biến gia tốc (accelerometer) và cảm biến quay (gyroscope).
Accelerometer (gọi tắt là accel): như tên gọi của nó, accel đơn giản là một cảm biến đo gia tốc của bản thân module và thường sẽ có 3 trục xyz ứng với 3 chiều không gian (loại 1 và 2 trục ít dùng). Lưu ý là accel đo cả gia tốc của trọng lực nên giá trị thực khi đo sẽ bao gồm cả trọng lực.
Gyroscope (gọi tắt là gyro): là một loại cảm biến đo tốc độ quay của nó quanh một trục. Tương tự với accel, gyro cũng thường có 3 trục xyz.
Ngày nay, MPU là một trong những cảm biến được sử dụng phổ biến nhất trong các thiết bị điện tử. Chúng có thể được tìm thấy trong điện thoại thông minh, điều khiển cầm tay, thiết bị điện tử đeo trên người ... Cảm biến IMU giúp chúng ta xác định trạng thái của vật thể gắn với cảm biến ở ba chiều.
MPU6050 là cảm biến 6 trục 6 độ (6 DOF) hoặc cảm biến IMU sáu trục có thể xuất ra sáu cảm biến. Ba giá trị từ cảm biến gia tốc, ba giá trị từ cảm biến vận tốc.
MPU6050 dựa trên MEMS (Micro Electro Mechanical Systems) - vi điện tử. Cả hai gia tốc góc và cảm biến tốc độ góc được tích hợp vào một chip sử dụng phương pháp I2C để giao tiếp với các thiết bị khác.
Module GY521 – MPU6050
VCC 5VDC power supply
GND Ground
SCL I2C clock pin
SDA I2C data communication pin
XDA Data pin (connected to other sensors)
XCL Clock pulse pin (connect to other
sensors)
AD0 Bit 0 of I2c address
INT Interrupt pin
Bảng 3.2. Các chân của Module MPU6050-GY251
Trong khuôn khổ của việc sử dụng địa chỉ I2C mặc định và không có ngắt bên ngoài và các cảm biến phụ khác, các chân XDA, XCL, INT, AD0 sẽ không được sử dụng.
GY521 sử dụng giao thức I2C:
• I2C là một giao diện hai dây bao gồm một dòng dữ liệu (SDA) và một dây đơn (SCL). Trong I2C, một thiết bị có thể là Master hoặc Slave. Mỗi slave có một địa chỉ cố định, Master phải truy cập địa chỉ tương ứng để gọi slave đó.
• Trong giao tiếp với Arduino, MPU6050 ở chế độ Slave, tốc độ bus tối đa là 400 Khz.
• Để lập trình giao diện I2C, chúng ta sử dụng thư viện Wire.h của Arduino, viết chương trình con I2C.h để đọc và xuất dữ liệu I2C.
• Đăng ký cấu hình con quay hồi chuyển: Định cấu hình phạm vi vận tốc góc, trong đó giá trị 0x00 được chọn với phạm vi từ -250 đến 250 độ / s.
Hiệu chỉnh con quay hồi chuyển và gia tốc kế:
• Sửa lỗi: Đặt cảm biến theo chiều ngang trên bề mặt phẳng. Trong đó x và y
• Về mặt lý thuyết, chỉ trục z có giá trị là 1g và giá trị trên trục x và y là bằng không. Nhưng trên thực tế, các giá trị trên trục x và y khác với số không, trong khi giá trị z là 1g. Chúng tôi đọc giá trị ACC 50 lần và sau đó là trung bình. Sau đó, các giá trị trung bình trên x và y bằng không, trong khi lỗi giữa các giá trị của z và 1g sẽ là số không của trục z.
• Chỉnh sửa Gyro: Đặt cảm biến nằm yên, khi đọc trên cả ba trục bằng 0. Nhưng các chỉ số thực tế khác với 0, trong đó giá trị đọc là số không của các con quay hồi chuyển trên trục.
• Xử lý giá trị:
• Gia tốc góc: Sau khi hiệu chuẩn, lấy giá trị đó và tính giá trị góc bằng công thức sau:
Góc = arctan (-accX / accZ) (đơn vị rad)
• Vận tốc góc: Sau khi hiệu chuẩn, con quay hồi chuyển chia cho độ khuếch đại (độ nhạy LBS) có giá trị là 131 LSB / (deg / s) để thu được vận tốc góc.
• Vấn đề: Giá trị của con quay hồi chuyển có độ chính xác cao nhưng dễ trôi dạt theo thời gian, trong khi giá trị Acc không trôi nhưng không ổn định. Để giải quyết vấn đề góc nghiêng, bằng cách kết hợp cả giá trị Acc và Gyro 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 tiếp I2C. Cảm biến được kết nối với Adruino như trong Hình.3.4
Hình 3.4. Kết nối chân cho Module MPU-6050 tới Arduino Uno R3 3.2.1.3. Khối ngừ ra (Độ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 Nisca NF5475E. Đây là một loại động cơ cỡ lớn có độ chính xác cao và trạng thái lúc hoạt động khá ổn định, khác so với các động cơ có hộp số khác, các động cơ có hộp số thường sẽ mất thời gian hơn trong việc đi tìm các bộ số tối
ưu cho hệ thống, nhận thấy điều đó nhóm quyết định chọn động cơ Nisca NF5475E sữ dụng cho hệ xe cân bằng.
Bên cạnh đó, việc thiết kế hệ xe để chọn ra động cơ hơi khó khăn trong thị trường không có nhiều lựa chọn về các mẫu mã động cơ như nước ta. Nên nhóm sữ dụng động cơ Nisca NF5475E là động cơ đang có sẵn trên thị trường với sự ổn định để tiến hành làm đề tài.
Đây là hình dáng của động cơ Nisca NF5475E.
Hình 3.5. Động cơ Nisca NF5475E Bảng 3.3. Thông số kĩ thuật
Motor Nisca NF5475E
Điện áp 24V
Tốc độ 4162 rpm
Đường kính động cơ 54mm
Chiều dài 93mm (kèm Encoder)
Đường kính trục động cơ 8mm
Chiều dài trục 22.2 mm
Công suất 32.62W
Momen cực đại 74.83 mN.m
Encoder 5V-200 pulses / loop
Bảng thông số do nhà sản xuất cung cấp:
Nhỡn từ đỏy của động cơ ta sẽ thấy cú 4 chõn tớn hiệu ngừ vào lần lượt là B+A- (B tức là chân tín hiệu B, + là Vcc cấp cho Encoder 5VDC, A là chân tín hiệu A, - là chõn GND cấp vào Encoder). Nguồn 24VDC là hai chõn hai mộp ngoài của Bus 3 ngừ vào, chân giữa là chân GND.
3.2.1.4. Khối điều khiển động cơ
Để điều khiển được điện áp cấp vào cho động cơ hoạt động, một trong những board mạch không thể kể đến đó là mạch cầu H, cụ thể ở đây nhóm sẽ sữ dụng mạch
cầu H L298N để điều chỉnh độ rộng xung cấp điện áp vào cho hai động cơ hoạt động.
Hình 3.3: Mạch cầu H L298N
Module điều khiển động cơ (Motor Driver) sử dụng chip cầu H L298N giúp điều khiển tốc độ và chiều quay của động cơ DC một cách dễ dàng, ngoài ra module L298N còn điều khiển được 1 động cơ bước lưỡng cực. Mạch cầu H của IC L298N có thể hoạt động ở điện áp từ 5V đến 35V.
Module L298N có tích hợp một IC nguồn 78M05 để tạo ra nguồn 5V để cung cấp cho các thiết bị khác.
Xét một cách tổng quát, mạch cầu H là một mạch gồm 4 "công tắc" được mắc theo hình chữ H.
Bằng cách điều khiển 4 "công tắc" này đóng mở, ta có thể điều khiển được dòng điện qua động cơ cũng như các thiết bị điện tương tự.
4 "công tắc" này thường là Transistor BJT, MOSFET hay relay. Tùy vào yêu cầu điều khiển khác nhau mà người ta lựa chọn các loại "công tắc" khác nhau.
Mạch cầu H dùng transistor BJT là loại mạch được sử dụng khá thông dụng cho việc điều khiển các loại động cơ công suất thấp. Lí do đơn giản là vì transistor BJT thường có công suất thấp hơn các loại MOSFET, đồng đời cũng rẻ và dễ tìm mua, sử dụng đơn giản.
Đây là sơ đồ tổng quát của một mạch cầu H sử dụng transistor BJT.
Trong sơ đồ này, A và B là 2 cực điều khiển. 4 diode có nhiệm vụ triệt tiêu dòng điện cảm ứng sinh ra trong quá trình động cơ làm việc. Nếu không có diode bảo vệ, dòng điện cảm ứng trong mạch có thể làm hỏng các transistor.
Transistor BJT được sử dụng nên là loại có công suất lớn và hệ số khếch đại lớn.
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 transistor bạn đang dùng mà trị số điện 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 transistor không quá lớn để làm hỏng chúng. Trung bình thì dùng điện trở 1k Ohm.
Ta điều khiển 2 cực này bằng các mức tín hiệu HIGH và LOW với Arduino sẽ tường ứng là 5v và 0v.
Sơ đồ chân tín hiệu của Mạch cầu H L298N
Số 1: DC motor 1 “+” hoặc stepper motor A+.
Số 2: DC motor 1 “-” hoặc stepper motor A-.
Số 3: 12V jumper – tháo jumper này nếu sử dụng nguồn trên 12V cấp vào chân 4. Jumper này dùng để cấp nguồn cho IC ổn áp tạo ra nguồn 5V nếu nguồn trên 12V sẽ làm cháy IC 78M05.
Số 4: Cấp dương nguồn cho motor vào đây từ 6V đến 35V.
Số 5: Cắm chân GND (đất, cực âm) của nguồn vào đây.
Số 6: Nguồn ra 5V, nếu jumper (3) được cắm thì có nguồn ra 5V ở đây.
Số 7: Chân Enable của Motor 1, chân này cũng dùng để cấp xung PWM cho motor. Nếu điều khiển tốc độ thì rút jumper ra và cắm chân PWM của VĐK vào đây. Giữ nguyên khi dùng với động cơ bước.
Số 8: IN1 Số 9: IN2
Số 10: IN3 Số 11: IN4
Số 12: Chân Enable của Motor 2, chân này cũng dùng để cấp xung PWM cho motor. Nếu điều khiển tốc độ thì rút
jumper ra và cắm chân PWM của VĐK vào đây. Giữ nguyên khi dùng với động cơ bước.
Số 13: DC motor 2 “+” hoặc stepper motor B+.
Số 14: DC motor 2 “-” hoặc stepper motor B-.
L298N được kết nối với Adruino như trong Hình.3.5
Hình 3.5. Kết nối L298N với Arduino để điều khiển động cơ 3.2.1.5. Khối nguồn
Để cấp nguồn cho mạch điều khiển động cơ, cấp cho Board
Arduino( bằng chân 5VDC của cầu H), cấp cho cảm biến ( từ 3.3VDC của Arduino) nhóm sữ dụng Pin Lipo 11.1VDC
Cầu H L298N Tích hợp hai mạch cầu H
Điện áp điều khiển +5VDC ~ +35VDC
Dòng tối đa cho mỗi cầu H 2A
Điện áp tín hiệu điều khiển +5V~+7V
Dòng tín hiệu điều khiển 0 ~ 36mA
Công suất hao phí 20W( khi nhiệt độ T=75oC)
Nhiệt độ vận hành -25oC ~ +130oC
Tuy nhiên hiện tại một số vấn đề về thử nghiệm độ ổn định và chi phí, tạm thời nhóm sẽ sữ dụng nguồn tổ ong 24V cho hệ xe, nhằm tìm ra các thông số ổn định trước khi lắp đặt Pin vào để điều khiển di động.
Hình 3.7. Nguồn tổ ong 24VDC
Xét trong quá trình sữ dụng Pin Lion để điều khiển xe, ắt hẵn sẽ có sụt áp dần theo thời gian dẫn đến lượng điện áp đưa vào động cơ không còn ổn định ngay như lúc đầu nữa nhận thấy điều đó, nhóm sữ dụng mạch ổn áp ( cũng gọi là mạch giảm áp cho hệ xe) LM2596S nhằm đưa điện ỏp ở ngưỡng ổn định ngừ ra cấp vào hệ xe. Dưới đõy là
Mạch ổn áp LM2596S là mạch nguồn giảm áp sử dụng IC ổn áp LM2596S. Áp ra có thể điều chỉnh được bằng biến trở.
IC LM2596S là IC nguồn xung có chu kì đóng/ngắt lên đến 125KHz cho hiệu suất làm việc cao.
Mạch ổn áp có một số ưu điểm:
+ Dòng ra đỉnh 3A (có thể gắn tản nhiệt cho IC để tăng dòng đầu ra cực đại) + Áp đầu vào dao động từ 3V - 40V
+ Áp ra từ 1.23V - 37V
Mạch ổn áp có chức năng tạo ra điện áp nhỏ hơn điện áp đầu vào và luôn duy trì mức áp này mặc dù áp đầu vào tăng/giảm. Ví du: ra áp 5V trong khi áp đầu vào là 1 ắc quy có điện áp từ 10.8V -> 13V.
Module ổn áp LM2596S sử dụng các tụ có khả năng lọc nhiễu cao và trữ điện tốt. Ngoài ra trên module có sẵn đèn LED báo hiệu hoạt động của mạch nguồn.
Trên module có sẵn lỗ để chúng ta hàn dây:
+ Nguồn vào IN+ và IN- + Nguồn ra OUT+ và OUT-