цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Тестер для проверки на обрыв на основе микроконтроллера своими руками

Тестер для проверки на обрыв на основе микроконтроллера своими руками

Автор: Mike(admin) от 13-12-2017, 17:45

Зачастую при работе с электроникой и электрическими приборами необходимо проверять цепи на разрыв. Для этого необходим надежный и простой в обращении прибор для контроля целостности проводов и токопроводящих дорожек. Иногда для таких целей покупать многофункциональный мультиметр довольно затратно. Но такое устройство можно сделать своими руками.


Тестер для проверки на обрыв

В данной статье описывается простой тестер непрерывности цепи, основанный на микроконтроллере ATtiny85 и пьезо-зуммере и предназначенный для проверки схемной проводки или прослеживания дорожек на печатной плате.


Данный тестер имеет низкое пороговое сопротивление 50 Ом, чтобы избежать ложных срабатываний, и пропускает менее 0.1 мА через тестируемую цепь, чтобы избежать воздействия на чувствительные компоненты. Он питается от маленькой батарейки типа «таблетка» и автоматически отключается, когда он не используется. Светодиод в составе прибора показывает, когда цепь замкнута. Для звукового оповещения о целостности цепи служит зуммер. На первый взгляд, использование микроконтроллера для этого приложения кажется излишним; однако для удовлетворения требований, реализованных в данном тестере, потребуется довольно сложная схема из дискретных компонентов.


Итак, как же работает этот тестер целостности цепи? Для определения напряжения на щупе данный прибор использует аналоговый компаратор в составе ATtiny85. Эквивалентная схема участка с компаратором показана ниже.


Эквивалентная схема участка с компаратором

Когда напряжение на положительном контакте AIN0 выше напряжения на отрицательном контакте AIN1, устанавливается сигнал на выходе компаратора ACO. При питании 5 В напряжение на AIN1 удерживается на уровне 5 В подтягивающим резистором, а напряжение на AIN0 удерживается на уровне 5 мВ резисторным делителем. Если сопротивление между датчиками становится меньше 50 Ом, напряжение на AIN1 будет ниже, чем напряжение на AIN0, что переведет выход компаратора в высокое логическое состояние. Это используется, чтобы включить генератор, управляющий пьезо-динамиком. На самом деле два подтягивающих резистора не нужны, так как мы можем использовать внутренние подтягивающие элементы на входах, соответствующих AIN0 и AIN1. Это имеет два преимущества; во-первых, данный шаг экономит два резистора, но что более важно, он позволяет отключить подтягивание на AIN0, когда процессор переходит в спящий режим, избегая токового прохода через резистор 51 Ом. Полная схема самодельного тестера для проверки цепи на обрыв показана ниже.


схема самодельного тестера для проверки цепи на обрыв

На макетной плате это может выглядеть следующим образом:


Тестер для проверки на обрыв

В виде конечного устройства такой пробник может выглядеть так:


Тестер для проверки на обрыв

Код программы для микроконтроллера ATtiny85, позволяющий реализовать тестер целостности проводки схемы, приведен ниже.



#include <avr/sleep.h>
#include <avr/power.h>

const int LED = 2;
const int Reference = 0;                  // линия AIN0
const int Probe = 1;                      // линия AIN1
const int Speaker = 4;
const unsigned long Timeout = (unsigned long)60*1000; // Одна минута
volatile unsigned long Time;

// Подпрограмма обслуживания прерывания при изменении сигнала на линии - сбрасывает таймер отключения
ISR (PCINT0_vect) {
  Time = millis();
}

void Beep () {
  TCCR1 = TCCR1 | 3;                      // Счетчик = (тактовая частота)/4
} 

void NoBeep () {
  TCCR1 = TCCR1 & ~3;                     // Остановка счетчика
}

void setup () {
  pinMode(Reference, INPUT_PULLUP);
  pinMode(Probe, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  pinMode(Speaker, OUTPUT);
  pinMode(3, OUTPUT);
  // Настройка бипера
  TCCR1 = 1<<CTC1 | 0<<COM1A0 | 0<<CS10;  // Режим CTC mode, остановка счетчика
  GTCCR = 1<<COM1B0;                      // Переключение OC1B (PB4)
  OCR1C = 119;                            // Звучание на частоте 1042 Гц (C6)
  // Прерывание при измеении сигнала на щупе
  PCMSK = 1<<Probe;                       // Прерывание при измеении сигнала на щупе
  GIMSK = GIMSK | 1<<PCIE;                // Разрешить прерывание при измеении сигнала на щупе
  // Энергосбережение
  ADCSRA &= ~(1<<ADEN);                   // Отключить АЦП для экономии энергии
  PRR = 1<<PRUSI | 1<<PRADC;              // Выключение неиспользуемых часов
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);
  // Начать работу основной программы
  digitalWrite(LED, true);
  Time = millis();
}

void loop() {
  bool Sense = ACSR>>ACO & 1;
  if (Sense) Beep(); else NoBeep();
  // Переключиться в режим сна?
  if (millis() - Time > Timeout) {
    digitalWrite(LED, false);             // Выключение светодиода
    pinMode(Reference, INPUT);            // Отключить подтягивающий резистор для экономии энергии
    sleep_enable();
    sleep_cpu();
    // Продолжить здесь, когда будет выход из режима сна
    pinMode(Reference, INPUT_PULLUP);
    digitalWrite(LED, true);              // Включение светодиода
  }
}





Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий