You are currently viewing Arduino: 3. Các lỗi thường gặp

Arduino: 3. Các lỗi thường gặp

PHẦN 5: CÁC LỖI THƯỜNG GẶP

  1. Một số khả năng khiến Arduino bị hỏng:
    • Nối trực tiếp một chân I/O ở mức HIGH xuống GND.
    • Nối trực tiếp một chân I/O ở mức HIGH với một chân I/O ở mức LOW.
    • Cấp điện áp lớn và đưa vào một chân I/O.
    • Cắm ngược cực khi cấp nguồn ngoài qua chân VIN – GND. (không thể thay thế được hoặc thay được nhưng tốn nhiều chi phí)
    • Cấp điện áp trên 5V vào chân 5V. (không thể thay thế được hoặc thấy được nhưng tốn nhiều chi phí)
    • Cấp điện áp trên 3.3V vào chân 3.3V. (không thể thay thế được hoặc thấy được nhưng tốn nhiều chi phí)
    • Nối trực tiếp chân VIN xuống GND.
    • Cấp nguồn 5V vào chân 5V và lấy nguồn ra từ chân VIN.
    • Cấp điện áp trên 13V vào chân RESET.
    • Cho vi điều khiển cấp dòng trên 200mA.
    • Nối trực tiếp chân 5V xuống GND.
  2. Phân tích:
  • a) Nối trực tiếp một chân I/O ở mức HIGH xuống GND
    • Mô tả: Thiết lập một chân I/O ở chế độ OUTPUT và đặt nó ở mức HIGH sau đó nối thẳng xuống GND
// Phần mô tả: Thiết lập một chân I/O ở mức HIGH xuống GND.
// Mục tiêu: Thiết lập một chân I/O ở chế độ OUTPUT và đặt nó ở mức HIGH.

// Cài đặt chân D2
void setup() {
  pinMode(2, OUTPUT);
  digitalWrite(2, HIGH);
}

// Chương trình chính không có hành động gì trong vòng lặp
void loop() {}


  • Nguyên nhân:
    Do không có điều kiện hạn chế hành động nền với hành động này, dòng điều trợ chân I/O đôi khi vượt quá giới hạn 40 mA của một chân I/O. Điều này dẫn đến hỏng của chân I/O.
  • Khắc phục:
    Một giải pháp là thêm một điều kiện hạn chế vào chân I/O bằng cách thêm một điện trở vào chân I/O, khoảng 220 ohm là giá trị đề xuất. Điều này giúp giảm dòng điều trợ. Tôi đề xuất sử dụng điện trở có giá trị khoảng 125 ohm.
  • b) Nối trực tiếp một chân I/O ở mức HIGH với một chân I/O ở mức LOW.
    • Mô tả: Thiết lập một chân I/O ở chế độ OUTPUT và đặt một chân I/O ở mức HIGH, còn chân còn lại ở mức LOW. Sau đó nối trực tiếp hai chân I/O D2 và D3 vào nhau
// Cài đặt chân D2, D3 ở void
void setup() {
  pinMode(2, OUTPUT); // Thiết lập chân số 2 ở chế độ OUTPUT
  pinMode(3, OUTPUT); // Thiết lập chân số 3 ở chế độ OUTPUT

  digitalWrite(2, HIGH); // Đặt chân số 2 ở mức HIGH
  digitalWrite(3, LOW);  // Đặt chân số 3 ở mức LOW
}
void loop() {}
  • c) Cấp điện áp lớn vào một chân I/O.
    • Mô tả: cấp điện áp lợi nhuận hơn 5.5V vào một chân I/O bất kỳ
  • Nguyên nhân: 5.5V là ngưỡng tối đa mà Arduino Uno R3 có thể chịu được, hay nói rõ hơn là vi điều khiển ATmega328P có thể chịu được. Các chân I/O trên mạch được nối trực tiếp với các chân của vi điều khiển này.
  • Khắc phục: Sử dụng diode zener để hạn áp xuống 5V. Cách này không chắc chắn rằng bạn sẽ có đúng 5V, nhưng nó đảm bảo rằng điện áp vào sẽ nằm trong phạm vi chịu đựoc của Arduino Uno R3.
  • d) Cắm ngược cực khi cấp nguồn từ nguồn ngoại vi qua chân VIN – GND.
  • Khắc phục: Sử dụng diode. Do sự sụt áp khi dòng điện lớn chạy qua diode nền P-N trên diode, điều này giảm điện áp cấp cho Arduino Uno R3 xuống khoảng 0.5V (tùy loại diode) so với điều áp cấp cho nguồn. Vì vậy, nếu bình thường mức điều áp cấp khuyến nghị cho nguồn ngoài là 7-12V, khi sử dụng diode, bạn sẽ phải trừ hao đi 0.5V, tức là 7.5-12.5V. Dù sao, pin 9V vẫn là một lựa chọn hợp lý.
  • e) Cấp điện áp trên 5V vào chân 5V:
    • Cấp điện áp trên 5V vào chân 5V có thể làm hỏng một số bộ phận trên mạch, nhà sản xuất không khuyến cáo người sử dụng thực hiện điều này.
  • Nguyên nhân: Arduino Uno R3 chỉ hoạt động ổn định ở mức điện áp 5V. Vi điều khiển ATmega328P và ATmega16u2 cũng chỉ chịu được điện áp tối đa là 5.5V. Mức điều áp giới hạn là 6V. Khi cấp nguồn vào chân 5V, bạn thực tế đang cấp nguồn trực tiếp cho 2 vi điều khiển ATmega16u2 và ATmega328P trên mạch.
  • Khắc phục:Sử dụng diode zener tượng tự như vấn đề 3, nhưng có thêm một transistor để đệm dòng.
  • Ngoài ra các bạn có thể dùng các IC hạ nguồn như LM7805
  • f) Cấp điện áp trên 3.3V vào chân 3.3V:
    • Vấn đề này tương tự như vấn đề 5.
  • g) Nối trực tiếp chân VIN xuống GND.
    • Theo nhà sản xuất, bạn có thể lấy nguồn 5V ra từ chân VIN để sử dụng khi cấp nguồn cho Arduino Uno R3 bằng jack cắm 2.1mm phía trước..
  • Nguyên nhân: Hiện tượng này được gọi là chập mạch (short-circuit). Khi chập mạch xảy ra, dòng điện trong mạch tăng đột ngột vượt quá khả năng làm việc của các linh kiện ở trong mạch, có thể làm hỏng chuỗi và gây hư hại. Arduino Uno R3 không có các linh kiện bảo vệ chống chập mạch khi bạn lấy nguồn ra từ chân VIN để sử dụng.
  • Khắc phục: Sử dụng cầu chì tự phục hồi (PTC Resettable Fuse). Bạn nên sử dụng cầu chì loại 500mA hoặc thấp hơn, tối đa là 1A. Arduino Uno R3 không được thiết kế để hoạt động với cường độ dòng điện lớn.
  • h) Cấp nguồn 5V vào chân 5V và lấy nguồn ra từ chân VIN:
  • Nguyên nhân: Trên Arduino Uno R3 có một IC hạ áp (voltage regulator) đảm nhận vai trò chuyển đổi điện áp đầu vào từ chân VIN (thường được khuyến nghị từ 7-12V) thành điện áp 5V để cung cấp cho toàn mạch.
  • Trong hình, hình dạng của đường điện được mô tả bằng cách các mũi tên màu đỏ. Khi bạn cấp nguồn vào chân 5V và lấy ra từ chân VIN, dòng điện sẽ có chiều như sau:
  • Có thể thấy, dòng điện chảy ngược qua IC chuyển đổi áp 5V có thể gây hỏng nó.
  • Khắc phục: Sử dụng diode với phía chân VIN để chống dòng ngược điều này.
  • Bạn cũng có thể sử dụng diode để ngăn chặn dòng điện ngược cho chân 5V. Tuy nhiên, nếu bạn áp dụng cách này, điện áp đầu ra sẽ không phải là 5V mà khoảng 4.5V (tùy thuộc vào mức suy giảm của diode), do mất điện áp tạo ra bởi diode.
  • i) Cấp điện áp 13V vào chân RESET:
  • Ở đây, chúng ta chỉ quan tâm đến điện áp, do đó vai trò của điện trở là không quan trọng:
  • Nguyên nhân: Chân RESET trên mạch Arduino Uno R3 thường được kết nối trực tiếp đến chân reset của vi điều khiển ATmega328P. Theo đặc tính kĩ thuật của ATmega328P, điện áp đặt vào chân RESET không được vượt quá 13V
  • Khắc phục: Sử dụng diode zener để hạn chế điện áp đầu vào và tránh việc nó vượt quá giới hạn cho phép của chân reset, trong trường hợp này là 13V.
  • j) Cho vi điều khiển cấp dòng trên 200mA:
    • Mô tả: Sử dụng các chân I/O để trực tiếp cấp nguồn cho các thiết bị khác mà không làm vượt quá dòng điều khiển 200mA.
  • Nguyên nhân: Nguồn điện từ các chân I/O trên vi điều khiển chỉ cung cấp dòng giới hạn và không đủ để cấp nguồn cho các thiết bị yêu cầu dòng lớn hơn, dẫn đến việc vượt quá dòng điều khiển.
  • Khắc phục: Sử dụng cầu chì tự phục hồi (PTC Resettable Fuse) loại 150mA để giảm dòng điều khiển từ chân I/O. Cầu chì này sẽ tự động phục hồi sau khi dòng điều khiển giảm xuống mức an toàn. Bạn cần kiểm tra kỹ thuật hàn tốt để thực hiện điều này2
  • k) Nối trực tiếp chân 5V xuống GND:
  • Nguyên nhân: Chắng có nguyên nhân nào ổn định cái đẩy cả. Có thể bạn sẽ nghĩ rằng vấn đề này cũng giống như những vấn đề trên, nhưng bạn đào nhàm. Arduino Uno R3 được tích hợp sẵn một cầu chì tự phục hồi (PTC Resettable Fuse) 500mA. Cầu chì này sẽ tự động đóng ống điện toàn bộ mạch khi cường độ dòng điều trở quá 500mA (trên lý thuyết). Sau khi tác nhân gây chập chờn làm mất cân nặng của mạch không còn nữa, cầu chì tự phục hồi sẽ trở lại trạng thái làm việc bình thường, bạn chỉ cần đợi vài giây để nó làm việc. Cầu chì bảo vệ này mang lại một ưu điểm vượt trội đối với Arduino Uno R3 so với các mô hình Arduino khác như Arduino Nano (không có cầu chì bảo vệ). Dưới đây là vị trí cầu chì bảo vệ trên Arduino Uno R3.