Cắm đồng thời nguồn USB và nguồn ngoài cho Arduino

Các bạn cứ yên tâm cắm đồng thời nguồn ngoài cho arduino và cắm nguồn USB vào máy tính. Trong sơ đồ mạch của arduino có cơ cấu bảo vệ riêng rồi. Tức là khi nguồn ngoài cung cấp cho Arduino không có hoặc quá bé, arduino sẽ tự động chọn nguồn nuôi từ USB. Ngược lại, khi có nguồn ngoài tốt thì arduino sẽ chọn nguồn ngoài để sử dụng.
Đây là nguồn điện ngoài cung cấp cho arduino (PWRin, Giắc cắm) thông thường được cung cấp từ 7v đến 12V. Nguồn này đi qua một diode D1 (để tránh cắm ngược nguồn). Sau đó, được ic ổn áp NCP1117 chuyển đổi thành điện áp 5V cung cấp cho các bộ phận sử dụng nguồn 5V trong mạch.
Khi không có nguồn ngoài, mạch có thể sử dụng nguồn từ cổng kết nối USB như hình sau:
Nguồn 5 V từ USB cung cấp cho mạch arduino qua một P-Mosfet (T1) hoạt động như một bộ chuyển đổi nguồn. Mosfet được điều khiển bởi một bộ khuếch đại LMV358 hoạt động như bộ so sánh. Đầu âm của LMV358 được nối với nguồn 3.3 V, đầu còn lại nối với bộ phân áp 50% từ điện áp vào Vin.
Như vậy, khi Vin >6.6V thì đầu vào + của opamp lớn đầu - làm cho mosfet ngắt (tức là arduino sử dụng nguồn ngoài); khi Vin < 6.6 V, arduino sử dụng nguồn USB.
Lưu ý, Vin là điện áp ngoài cung cấp cho arduino, nguồn điện ngoài vào Giắc qua Diode rồi mới đến Vin. Khi quan diode điện áp sụt xuống 0.6 V vì vậy, khi nguồn ngoài < 7.2 V (6.6 V+0.6 V= 7.2V), Board Arduino sẽ sử dụng nguồn USB.
Dạ anh cho em hỏi:
Em đang cấp nguồn ngoài cho Arduino, đồng thời kết nối Arduino với máy tính thông qua cáp USB (cáp nạp code). Mục đích kết nối này không phải để cấp nguồn (mặc dù cáp USB có đầy đủ chức năng sạc và truyền dữ liệu), mà là để giao tiếp UART giữa Arduino và máy tính nhằm mục đích giám sát và thu thập dữ liệu.
Theo em biết, quy tắc để giao tiếp truyền nhận dữ liệu UART giữa máy tính và Arduino là cả hai phải có nối chung mass (GND). Vậy nếu Arduino sử dụng nguồn ngoài, thì khi em cắm cáp USB để giao tiếp, mass giữa Arduino và máy tính có được tự động nối chung không, hay em cần phải thực hiện việc nối mass thủ công để có thể truyền nhận dữ liệu?
Chưa kiểm tra, nhưng theo logic, dây GND từ cáp USB và nguồn ngoài luôn được nối chung qua mạch in của Arduino. Các tín hiệu dữ liệu đều cần một điểm tham chiếu chung để hoạt động chính xác. Việc nối chung mass này không gây xung đột vì mass chỉ đóng vai trò làm điểm tham chiếu điện áp và không tham gia trực tiếp vào việc cung cấp dòng điện.