Site icon TAPIT

Tìm hiểu phần cứng board mạch Arduino Uno R3

Arduino Uno R3 là một Board mạch vi điều khiển phổ biến được rất nhiều người sử dụng để học hoặc làm các ứng dụng nhúng đơn giản. Các ưu điểm khi các bạn làm việc với Arduino là thư viện hỗ trợ đầy đủ, cộng đồng người sử dụng đông, rất nhiều ví dụ và đề tài mẫu để tham khảo. Tuy nhiên, lại có ít bài viết đề cập tới phần cứng của Board mạch Arduino cho những người mới bắt đầu. Hiểu được thiết kế phần cứng giúp các bạn có thể tự thiết kế 1 sản phẩm hoàn chỉnh từ vi điều khiển và các linh kiện rời mà không cần sử dụng nguyên board Arduino. Có thể đây sẽ là 1 bước quan trọng để các bạn hoàn thiện hơn khả năng của mình. 

*Tải sơ đồ mạch nguyên lý của Board mạch Arduino Uno R3 để tham khảo tại đây. Mình có tách riêng các phần và trình bày trong bài viết cho các bạn tiện theo dõi.

Phần 1: Thiết kế nguồn
Phần nguồn của Board mạch Arduino được thiết kế để thực hiện các nhiệm vụ sau:

Phần 2: Thiết kế mạch dao động

Mạch giao động tạo ra các xung clock giúp cho vi điều khiển hoạt động, thực thi lệnh… Board mạch Arduino Uno R3 sử dụng thạch anh 16Mhz làm nguồn dao động. Thiết kế mạch dao động cần phải tham khảo Datasheet của vi điều khiển Atmega328p ở Table 8-5 và Figure 8-3 trang 27,28.

Phần 3: Thiết kế mạch reset 

Để vi điều khiển thực hiện khởi động lại thì chân RESET phải ở mức logic LOW (~0V) trong 1 khoản thời gian đủ yêu cầu. Mạch reset của board Arduino UnoR3 phải đảm bảo được 02 việc:
– Reset bằng tay: Khi nhấn nút, chân RESET nối với GND, làm cho MCU RESET. Khi không nhấn nút chân Reset được kéo 5V.
– Reset tự động: Reset tự động được thực hiện ngay khi cấp nguồn cho vi điều khiển nhờ sự phối hợp giữa điện trở nối lên nguồn và tụ điện nối đất. Thời gian tụ điện nạp giúp cho chân RESET ở mức LOW trong 1 khoản thời gian đủ để vi điều khiển thực hiện reset.
– Khởi động vi điều khiển trước khi nạp chương trình mới.
Các bạn tham khảo datasheet tại các mục: 10.3 Power-on Resest, 10.4 External Reset trang 41,42.
Phần 4: Thiết kế mạch nạp và giao tiếp máy tính
 – Vi điều khiển Atmega328P trên Board Arduino UnoR3 đã được nạp sẵn 1 bootloader, cho phép nhận chương trình mới thông qua chuẩn giao tiếp UART (chân 0 và 1) ở những giây đầu sau khi vi điều khiển Reset.
– Máy tính giao tiếp với Board mạch Arduino qua chuẩn giao tiếp USB (D+/D-), thông qua một vi điều khiển trung gian là ATMEGA16U2 hoặc một IC trung gian là CH340 (thường thấy trong các mạch sử dụng chip dán). Vi điều khiển hoặc IC này có nhiệm vụ chuyển đổi chuẩn giao tiếp USB thành chuẩn giao tiếp UART để nạp chương trình hoặc giao tiếp truyền nhận dữ liệu với máy tính (Serial).
– Phần thiết kế mạch nạp có tích hợp thêm 02 đèn LED,nên khi nạp chương trình các bạn sẽ thấy 2LED này nhấp nháy. Còn khi giao tiếp, nếu có dữ liệu từ máy tính gửi xuống vi điều khiển thì đèn LED Rx sẽ nháy. Còn nếu có dữ liệu từ vi điều khiển gửi lên máy tính thì đèn Tx sẽ nháy. 



Trên là một số phân tích đơn giản cho những người mới bắt đầu. Nếu có thắc mắc, góp ý gì thêm các bạn có thể để lại bình luận nhé.

Chúc các bạn thành công! 

TAPIT – HW