a. Sơ đồ nguyên lý
b. Giải thích sơ đồ nguyên lý Arduino Uno R3
Điều quan trọng nhất trong một board Arduino là một vi điều khiển, vi điều khiển này sẽ thực hiện những chỉ thị trong ứng dụng của người dùng. ATmega328 tên đầy đủ là ATmega328P-PU là vi điều khiển của board mạch arduino, sử dụng như một bộ điều khiển chính. Nó là một thiết bị 8-bit nghĩa là được thiết kế chỉ làm việc tối đa với các dữ liệu 8-bit đồng thời. Với ATmega328 có thể tạo một board mạch Arduino đơn giản.
Hình 3.3. Sơ đồ chân ATmega328. ATmega328 có ba loại bộ nhớ:
Bộ nhớ Flash: 32KB bộ nhớ, không bị mất dữ liệu. Bộ nhớ này dùng để lưu trữ các ứng dụng trên board Arduino. Người dùng không cần tải lại ứng dụng khi ngắt nguồn cung cấp cho board.
Bộ nhớ SRAM: 2KB bộ nhớ, bị mất dữ liệu khi ngắt nguồn dùng để lưu trữ các biến dữ liệu khi chạy chương trình.
Bộ nhớ EEPROM: 1KB bộ nhớ, không bị mất dữ liệu dùng để lưu dữ liệu mỗi khi nguồn điện ngắt và mở lại.
Vi điều khiển này gồm có 28 chân bao gồm các chân nguồn và chân I/O. Đa số các chân đều gồm nhiều chức năng, người dùng có thể sử dụng các chân tùy theo chương trình trên board. Điều này làm giảm số chân cần sử dụng.
Chân nguồn của vi điều khiển chỉ nhận điện áp cung cấp trong khoảng 1.8- 5.5 V. Trong một số trường hợp nếu không cung cấp đủ điện áp sẽ làm ảnh hưởng đến ứng dụng.
Chân kỹ thuật số I/O của vi điều khiển gồm ba cổng: PORTB, PORTC, PORTD. Tất cả các chân được dùng như là chân kỹ thuật số I/O tuy nhiên có thể được dùng với chức năng thay thế khác. Một số chân có cấu hình đầu ra khác như là PWM.
Các chân trên board Arduino Uno:
Serial: Chân 0 nhận dữ liệu và chân 1 truyền dữ liệu nối tiếp TTL. Ngắt ngoài: Chân 2 và 3 được sử dụng như một bộ ngắt.
PWM: Chân băm xung gồm các chân 3, 5, 6, 9, 10, 11. Cung cấp đầu ra tương tự 8-bit.
SPI: Chân 10, 11, 12, 13. Các chân này hỗ trợ giao tiếp SPI bằng cách sử dụng thư viện SPI.
LED: Có một đèn LED điều khiển bằng chân 13. Khi chân có giá trị cao, đèn LED được bật, ngược lại thì đèn LED tắt.
TWI: A4 và A5. Hỗ trợ giao tiếp TWI.
Đầu vào tương tự: Có 6 chân từ A0 tới A5 cung cấp độ phân giải 10-bit theo mặc định từ 0 tới 5V thay đổi bằng chân AREF.
Reset: Thiết lập lại vi điều khiển.
Chíp Atmega16U2 sẽ làm nhiệm vụ USB-to-Serial, hay nói cách khác là tạo cổng COM ảo phục vụ cho việc lập trình cho vi điều khiển Atmega328.
Khối ADC đầu vào gồm có sáu kênh từ PORTC0 đến PORTC5 với bộ chuyển đổi A/D có độ phân giải 10-bit. Các chân dùng trong bộ chuyển đổi A/D này là:
Chân AVCC: chân nguồn cho bộ chuyển đổi A/D.
Chân AREF: chân cung cấp điện áp tham chiếu cho ADC nếu cần điện áp lớn hơn VREF nội bộ.
UART ngoại vi (Universal Asynchronous Receiver / Transmitter) : Các chân (RX, TX) được kết nối với một mạch chuyển đổi USB-to-UART và cũng kết nối với chân 0 và chân 1 trên board. Không sử dụng UART khi đã truyền và nhận dữ liệu qua USB. Vi điều khiển ATmega328 chỉ có một UART duy nhất.
SPI ngoại vi (Serial Peripheral Interface) là một giao diện nối tiếp, duy nhất trên ATmega328. Có thể xác định chân của SPI trên vi điều khiển hoặc trên board:
Chân 11: MOSI. Chân 12: MISO. Chân 13: SCK.
Cầu USB-to-UART có chức năng chuyển đổi các tín hiệu giữa giao diện USB với giao diện UART. Vi điều khiển ATmega328 sử dụng ATmega16U2 cùng với một bộ thu phát USB nội bộ cho chức năng này.
Hình 3.4. Cầu USB-to-UART.
Nguồn điện cho board Arduino có thể được cung cấp bằng cổng USB hoặc bằng nguồn DC trực tiếp vào board. Nguồn DC phải đảm bảo trong khoảng từ 7V đến 12V nếu cao hơn sẽ gây hư hại cho board, ngược lại các ứng dụng trên board sẽ không hoạt động tốt vì không đủ điện áp.
Các chân nguồn bao gồm:
Vin: Điện áp đầu vào của board Arduino. Có thể cung cấp điện áp cho board Arduino thông qua chân này.
5V: Nguồn 5V lấy từ board Arduino. Lưu ý nếu ta cung cấp nguồn nhỏ hơn 7V thì nguồn lấy từ board sẽ ít hơn 5V và lớn hơn 12V sẽ gây hư hại đến board.
3V3: Nguồn 3V3 lấy từ board Arduino GND: Chân nối đất.
Hình 3.5. Bộ nguồn.