CƠ SỞ LÝ THUYẾT
2.4. Lý thuyết điều khiển Arduino
Tham khảo tài liệu hỗ trợ lập trình Arduino của Tutorials Point Pvt. Ltd. [9]
Arduino là một nền tảng lập trình đầu tiên (mã nguồn mở) dựa trên phần cứng và phần mềm dễ sử dụng. Arduino bao gồm một bảng mạch, có thể được lập trình (gọi tắt là vi điều khiển) và một phần mềm lập trình sẵn có Arduino IDE (Integrated Development Environment), được sử dụng để ghi và tải mã máy tính lên mạch. Các tính năng chính
35
Mạch Arduino có thể đọc các tín hiệu đầu vào dưới dạng analog hoặc digital từ các cảm biến và chuyển đổi thành tín hiệu đầu ra như kích hoạt động cơ, điều khiển LED, kết nối với cơ sở dữ liệu đám mây và nhiều hoạt động khác.
Người dùng có thể kiểm sốt các chức năng của mạch Arduino bằng cách lập trình một tập lệnh trên vi điều khiển thông qua Arduino IDE (gọi là phần mềm giao tiếp). Không giống như hầu hết các bảng mạch lập trình trước, Arduino khơng cần lập trình viên để nạp mã mới lên bảng, người dùng chỉ cần sử dụng cáp USB.
Ngoài ra, Arduino IDE sử dụng một phiên bản đơn giản của C++, giúp dễ dàng hơn trong việc tìm hiểu chương trình.
Cuối cùng, Arduino cung cấp các mẫu lập trình chuẩn giúp phân chia các chức năng của bộ vi điều khiển giúp dễ dàng tiếp cận hơn.
Hình 2.16: Một dạng mạch Arduino và phần mềm giao tiếp Arduino IDE [9]
Cấu trúc mạch Arduino [9]
Phân tích cấu trúc của mạch Arduino UNO, mạch Arduino thông dụng. Các dịng mạch Arduino khác có thể khác về hình dáng nhưng đa phần đều có chung đặc điểm cấu trúc.
36
Hình 2.17: Cấu trúc mạch Arduino UNO [9]
(1) Cổng nối USB: Mạch Arduino có thể được kết nối và cấp nguồn thơng qua cáp USB từ máy tính.
(2) Nguồn (jack trịn): Mạch Arduino có thể được cấp nguồn trực tiếp từ nguồn điện AC bằng kết nối thơng qua với jack trịn.
(3) Bộ điều áp: Chức năng của bộ điều áp là kiểm soát điện áp cho mạch Arduino và ổn định điện áp DC được bộ xử lý và các thành phần khác sử dụng.
(4) Tinh thể dao động: Tinh thể dao động giúp Arduino giải quyết các bài toán thời gian. Số được in trên tinh thể Arduino là 16.000H9H cho chúng ta biết tần số dao động là 16.000.000 Hertz hoặc 16 MHz.
(5, 17) Reset Arduino: Khởi động lại chương trình được lập trình trên Arduino từ đầu. Có 2 cách để reset arduino là nhấn nút reset (17) hoặc kích tín hiệu vào chân reset (5).
(6, 7, 8, 9) Chân nguồn: nguồn 3,3V (6), nguồn 5V (7), chân âm GND (8), chân Vin (9) có thể sử dụng để cấp nguồn cho mạch từ một nguồn khác.
(10) Chân analog: Mạch Arduino UNO có 5 chân nhận tín hiệu analog từ A0 đến A5. Những chân này có thể đọc tín hiệu từ cảm biến analog như cảm biến độ ẩm hoặc cảm biến nhiệt độ và chuyển đổi thành một giá trị digital có thể đọc được bởi bộ vi xử lý.
37
(11) Vi điều khiển chính: Mỗi mạch Arduino có vi điều khiển riêng (11) là trung tâm xử lý của mạch. Các IC chính (mạch tích hợp) trên Arduino khác nhau theo từng dòng mạch. Các vi điều khiển này thường là của Công ty Atmel. Người dùng cần biết tên IC của mạch trước khi tải một chương trình mới từ IDE Arduino. Thơng tin này có sẵn trên IC.
(12) Chân ICSP: Hầu hết, ICSP (12) là một chân AVR, một đầu lập trình nhỏ cho Arduino bao gồm MOSI, MISO, SCK, RESET, VCC, và GND. Thường được gọi là SPI (Serial Peripheral Interface), có thể được coi là một chân "mở rộng" của đầu ra. (13) LED báo nguồn: LED này sẽ sáng khi có kết nối nguồn với Arduino để cho biết mạch đã được cấp nguồn.
(14) LED TX và RX: LED TX (chuyển dữ liệu), LED RX (nhận dữ liệu).
(15) Chân tín hiệu digital (vào hoặc ra): Mạch Arduino UNO có 14 chân tín hiệu digital vào và ra (trong đó có 6 chân PWM (Pulse Width Modulation). Các chân này có thể được lập trình để nhận các tín hiệu digital đầu vào (0 hoặc 1) hoặc hoạt động như các chân tín hiệu digital ra để điều khiển các thiết bị khác nhau như đèn LED, rơle,... Các chân có nhãn "~" có thể được sử dụng để tạo PWM
(16) AREF: AREF viết tắt của Analog Reference. Được sử dụng để đặt hiệu điện thế tham chiếu (giữa 0V và 5V) làm giới hạn trên cho tín hiệu analog đầu vào.
Lập trình điều khiển động cơ servo với mạch Arduino [9] Lập trình góc quay của động cơ
Dây điều khiển được sử dụng để truyền tín hiệu góc độ. Góc quay được xác định bởi thời gian của một xung được xuất ra. Đây được gọi là phương pháp điều khiển mã hóa xung. Hệ thống servo cần nhận xung mỗi 20 mili giây (0,02 giây). Chiều dài của xung sẽ xác định góc quay của động cơ. Ví dụ, một xung dài 1,5 mili giây sẽ làm cho động cơ quay về vị trí 90 độ (thường được gọi là vị trí trung hòa). Nếu xung ngắn hơn 1,5 mili giây thì động cơ sẽ quay trục gần 0 độ. Nếu xung dài hơn 1,5 mili giây, trục quay sẽ quay gần 180 độ.
38
Hình 2.18: Chiều dài xung và góc quay của động cơ [9]
Phương pháp đấu mạch giao tiếp giữa Arduino và động cơ servo (Hình 2.17)
Hình 2.19: Đấu mạch Arduino và động cơ servo [9]
Kết nối biến thế với mạch Arduino [9]
Biến thế là các điện trở trong mạch nối tiếp có thể thay đổi điện áp đầu ra với một tỉ lệ cụ thể so với điện áp đầu vào. Mạch điện nguyên lý của biến thế (Hình 2.18)
39
Hình 2.20: Mạch điện nguyên lý của biến thế [9]
Trong đó
Vout – Điện áp đầu ra (V) Vin – Điện áp đầu vào (V)
R1, R2 – Giá trị điện trở được điều chỉnh (Ω)
Sơ đồ chân của biến thế đấu với Arduino (Hình 2.19)
Hình 2.21: Sơ đồ chân của biến thế [9]
Chân Vout của biến thế được nối với chân analog trên mạch Arduino và có thể được lập trình dưới dạng một biến có thể thay đổi.
40
Chƣơng 3