Как проверить плату Ардуино: поиск неисправностей

Проверить плату Ардуино Уроки

Начиная работу с Ардуино, пользователи могут столкнутся с рядом проблем: от сгоревших контактов на плате до ошибок в работе микроконтроллера.

В этой статье разберем, как диагностировать плату на примере Arduino Uno и найти её неисправности

Проверка аппаратной части платы

Если Ардуино по каким-либо причинам не хочет работать, для начала стоит осмотреть плату по следующим признакам:

  1. Качество пайки. Каждый элемент платы должен стоять на своем месте и быть припаян к дорожкам на плате.
  2. Наличие прогаров, повреждений на дорожках платы или каких-либо элементах.
  3. Наличие всех компонентов на плате. На фото представлена оригинальная Arduino Uno с микроконтроллером AtMega328P. Если используется реплика, смотрите фото или даташит на Вашу конкретную модель1 14

Если внешний осмотр не дал каких-либо результатов — используем мультиметр. Для этого включаем мультиметр в режим прозвона короткого замыкания и проверяем по линиям питания 5, 12 вольт и USB . При наличии КЗ по одной из линии питания можем подключить питание. Проверяем при помощи тепловизора или методом «тыка» сильно нагревающееся элементы — они есть источники КЗ. При этом надо учитывать, что:

  • если пробой произошел по линии 12V, скорее всего произошел пробой стабилизатора на 5V и через плату пошел большой ток. В таких случаях, микроконтроллер, скорее всего, труп;
  • если питание подавалось прямо на микроконтроллер через контакт 5V на плате и на нем произошло КЗ — микроконтроллер, скорее всего, труп;
  • если питание подавалось через USB то стоит проверить диод-предохранитель по линии питания от порта. Вероятно, он сгорел и спас остальные элементы от такой же участи. Ремонт простой — замена диода на новый.

Не удалось найти КЗ? Ставим мультиметр в режим проверки напряжения, подключаем питание по 12V и проверяем наличие напряжения по линиям 5 и 12V. Если напряжение отсутствует — ищем виновника, проверяя сопротивление на каждом элементе по линии питания. Если сопротивление отсутствует (на некоторых мультиметрах выдает единицу) — произошел обрыв контакта с дорожками на плате, либо внутри самого элемента, что означает его замену.

Проверка программной части

Проверили аппаратную часть, можем приступать к проверке программной. Подключаем плату к USB-порту компьютера и проверяем, светится ли зеленый светодиодный индикатор питания на плате.

Оранжевый светодиод рядом с центром платы должен включаться и выключаться при запуске платы. Платы поставляются с завода, на котором предварительно установлено программное обеспечение, чтобы мигать светодиодом. Простая проверка того, что плата работает. Может быть не актуально для китайских реплик.2 6

Иногда плата не определяется компьютером. Это происходит с дешевыми репликами плат, на которых установлен UART преобразователь CH340g или иная модель. На оригинальных Ардуино или дорогих клонах стоит модель чипа FT232RL. При скачивании Arduino IDE, драйвер устанавливается автоматически. Для копий драйвер надо скачивать отдельно. 

Плата может не определяться, если повреждены информационные контакты USB-порта. Для проверки, надо осмотреть вход USB и его распайку на плате.

После запуска, пробуем загрузить скетч для проверки работоспособности пинов:

#define FIRST_PIN 0 // первый вывод

#define LAST_PIN 19 // последний вывод

void Test1(byte pin)

{

  if(pin < 10) Serial.print(» PIN:  «);

  else Serial.print(» PIN: «);

  Serial.print(pin);

  pinMode(pin, OUTPUT);

  digitalWrite(pin, 0);

  Serial.print(»    LOW: «);

  if(!digitalRead(pin)) Serial.print(«OK  «);

  else Serial.print(«FAIL«);

  digitalWrite(pin, 1);

  Serial.print(»  HIGH: «);

  if(digitalRead(pin)) Serial.print(«OK  «);

  else Serial.print(«FAIL«);

  pinMode(pin, INPUT);

  Serial.print(»  PULL UP: «);

  if(digitalRead(pin)) Serial.print(«OK  «);

  else Serial.print(«FAIL«);

  digitalWrite(pin, 0);

}

 

void Test2(byte pin)

{

  Serial.print(»     «);

  pinMode(pin, OUTPUT);

  digitalWrite(pin, 1);

  delay(5);

  if(!digitalRead(pin))Serial.println(«SHORT«);

  else Serial.println(«OK«);

  pinMode(pin, INPUT);

  digitalWrite(pin, 0);

 

}

 

void setup() {

  Serial.begin(9600);

  Serial.println(«Test of short circuit on GND or VCC and between pins:»);

  Serial.println();

  for(byte i = FIRST_PIN; i <= LAST_PIN; i++)

  {

    for(byte j = FIRST_PIN; j <= LAST_PIN; j++)

    {

      pinMode(j, INPUT);

      digitalWrite(j, 0);

    }

    Test1(i);

 

    for(byte j = FIRST_PIN; j <= LAST_PIN; j++)

    {

      pinMode(j, OUTPUT);

      digitalWrite(j, 0);

    }

    Test2(i);

  }

  for(byte j = FIRST_PIN; j <= LAST_PIN; j++)

  {

    pinMode(j, INPUT);

    digitalWrite(j, 0);

  }

}

 

void loop() {}

После проверки, тест выдаст лог, в котором обозначит состояние выводов. На 0, 1 и 13 выводах могут быть выявлены неисправности — это нормально, так как 0 и 1 выводы заняты UART’ом (микросхема отвечающая за загрузку скетчей), а на 13 выводе светодиод. В остальных случаях — проверяем целостностность контактов на плате.5 3

Если скетч не загружается и Arduino IDE выдает ошибку «avrdude: stk500_getsync(): not in sync: resp=0x00»:

  1. Убедитесь в том, что в настройках Arduino IDE вы выбрали правильный тип платы и правильный COM порт.
  2. Пару раз нажмите кнопку сброса на Ардуино и попробуйте после этого загрузить в нее код программы.
  3. Отключите и заново подсоедините плату к компьютеру.
  4. Закройте и снова запустите Arduino IDE.

Если выполненные действия не помогли — попробуйте прошить плату.

Здесь мы рассказывали о том, как это сделать с помощью другой платы Ардуино. 

Заключение

Хоть Ардуино и позиционируются как решение для начинающих электронщиков и программистов, владельцы плат могут столкнуться с множеством проблем при  ее использовании.

После последовательной проверки всех компонентов системы, начиная аппаратной, заканчивая программной частью, можно с уверенностью сказать, что Ардуино работает и готова к дальнейшему использованию.

Оцените статью
Информация об Ардуино
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я принимаю политику конфиденциальности.