Главная » Микроконтроллеры » Импульсный металлоискатель (PI) на микроконтроллере Attiny13

Импульсный металлоискатель (PI) на микроконтроллере Attiny13

В этом экспериментальном проекте показано, как можно построить простой металлоискатель с импульсной индукцией (PI) на основе микроконтроллера ATtiny13/AVR.

Моей целью было сделать схему максимально простой и использовать только популярные/дешевые электронные компоненты. Устройство было протестировано с очень маленькой катушкой (диаметр 55 мм, около 30 витков 0,5 мм) и питанием только 3 В.

Это моя первая разработка PI металлоискателя, и я очень доволен результатами! Прототип мог обнаруживать маленькие монеты на расстоянии 6 см и провода в стене. Код находится на Github здесь.

Импульсный металлоискатель (PI) на микроконтроллере Attiny13

Профессиональный металлоискатель
3 режима обнаружения, 8 уровней чувствительности и точн...

Металлоискатель пинпоинтер
Небольшой, легкий прибор обеспечивает точность отслеживан...

Импульсный металлоискатель — как это работает?

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

Затем ATtiny13 использует аналоговый компаратор для измерения времени спада до нуля резонансного контура. Когда металлический объект приближается к катушке, это сокращает время, необходимое для затухания импульса до нуля.

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

Обратите внимание, что в типичных конструкциях PI-детекторов отсутствует резонансный контур, и измеренный коэффициент немного отличается!

Инструкции пользователя

  1. Включите устройство. Процесс калибровки занимает около секунды и заканчивается сигналом зуммера.
  2. Используйте переменный резистор для регулировки чувствительности детектора (вы можете найти его где-то между непрерывным сигналом зуммера и полной тишиной).
  3. Устройство готово к работе!

Необходимые детали:

  • ATtiny13
  • T1 — полевой транзистор IRF3205 (N-канальный )
  • LED1 — светодиод
  • D1 — диод 1N4007
  • D2, D3 — диод 1N4148
  • R1- переменный резистор 10 кОм
  • R2, R3 – резистор 220 Ом (5%)
  • R4 – резистор 330 Ом (5%)
  • R5, R6 – резистор10 кОм (5%)
  • C1 – конденсатор 470 нФ
  • L1 – катушка диаметр 50-55 мм, около 30 витков, провод 0,5 мм.

Принципиальная электрическая схема

Программное обеспечение

Этот код написан на C и может быть скомпилирован с помощью avr-gcc. Вся информация о том, как скомпилировать этот проект, находится здесь.

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

#define COIL_PIN PB2
#define BUZZER_PIN PB3
#define LED_PIN PB4

#define PULSE_WIDTH (32) // микросекунды
#define CALIBRATION_ATTEMPTS_MAX (128)
#define MEASUREMENT_ATTEMPTS_MAX (2048)

#define SIGNAL_ON() (PORTB |= _BV(LED_PIN)|_BV(BUZZER_PIN))
#define SIGNAL_OFF() (PORTB &= ~(_BV(LED_PIN)|_BV(BUZZER_PIN)))

static uint16_t
measure_decay(void)
{
 uint16_t i, counter = 0, decay = 0;
 PORTB |= _BV(COIL_PIN); // импульс on
 _delay_us(PULSE_WIDTH); // импульс задержка
 PORTB &= ~_BV(COIL_PIN); // импульс off

 for (i = 0; i < MEASUREMENT_ATTEMPTS_MAX; ++i) {
 if (ACSR & _BV(ACO)) {
 decay = counter;
 }
 counter++;
 }
 return decay;
}
static uint16_t
calibration(void)
{
 uint8_t i;
 uint16_t tmp, decay = 0;
 /* процесс калибровки */
 for (i = 0; i < CALIBRATION_ATTEMPTS_MAX; ++i) {
 tmp = measure_decay();
 if (tmp > decay) {
 decay = tmp;
 }
 }
 /* сигнализировать об окончании калибровки */
 for (i = 0; i < 3; ++i) {
 for (tmp = 0; tmp < 64; ++tmp) {
 SIGNAL_ON();
 _delay_ms(0.3);
 SIGNAL_OFF();
 _delay_ms(0.3);
 }
 _delay_ms(64);
 }
 return decay;
}
int
main(void)
{
uint16_t decay_cur, decay_max;
 /* setup */
 DDRB = _BV(COIL_PIN)|_BV(LED_PIN)|_BV(BUZZER_PIN); // установить контакты COIL, LED и BUZZER как выход
 ACSR = 0; // очистить регистр
 decay_max = calibration() - 1;
 _delay_ms(500);
 /* loop */
 while (1) {
 decay_cur = measure_decay();
 if (decay_cur < decay_max) {
 SIGNAL_ON();
 _delay_us(100);
 }
 SIGNAL_OFF();
 }
}

Источник

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

Ваш email нигде не будет показан. Обязательные для заполнения поля помечены *

*