Информация предоставлена исключительно в образовательных целях.
Администратор сайта не несет ответственности за возможные последствия использования предоставленной информации.
Плату Arduino можно использовать в импульсном металлодетекторе (Pulse Induction Metal Detector (PI) ) и как генератор импульсов, так и для обработки и отображения результатов.
Подробнее о принципах работы аналогового импульсного металлодетектора можно прочитать .
Мой импульсный металлодетектор на Arduino - проект FoxyPI
версия 1 (FoxyPI v1) (устаревшая
)
Что нового:
первая версия.
GNU General Public License v3.0,
доступен на Github
в репозитарии https://github.com/Dreamy16101976/foxyPIv1 .
Видео испытаний прототипа:
https://youtu.be/VWCA6jYK5tY
версия 2 (FoxyPI v2) (устаревшая )
Что нового:
- добавлено усреднение анализируемой длительности импульса катушки по алгоритму "скользящего среднего" (moving average , MA );
- добавлена возможность настройки длительности импульсов, интервалов между ними, времени задержки и ширины окна скользящего среднего с помощью меню, а также сохранение настроек в EEPROM ;
- добавлено изменение тональности сигнала при изменении длительности импульса катушки;
- добавлен динамический режим работы металлодетектора;
- модифицирован драйвер MOSFET ;
- объединены переключатели "+5 В" и "+12 В", а освободившийся переключтель использован для управления подсветкой LCD -экрана;
- добавлены светодиоды для индикации уровня сигнала.
Лицензия исходного кода скетча: проприетарная .
Hex
-файл
прошивки FoxyPI
(версия 2.11) для -
.
Как прошить hex
-файл в плату Arduino
, я описал .
Полевые испытания и поиск
(26.03.2016) - https://youtu.be/Xk4X6O1646M
Испытания прототипа
(4.01.2016) - https://youtu.be/ikJbqUCbyvw
Схема металлодетектора (версия 2 ) :
версия 3 (FoxyPI v3)
Что нового:
- для определения уровня сигнала используется не компаратор, как в предыдущей версии, а АЦП Arduino ;
- два режима поиска - динамический и статический (переключение между режимами по долгому нажатию на кнопку);
- для повышения стабильности используется интегрирование сигнала;
- выполняется эмуляция интегратора и фильтра высоких частот;
- изменены пункты меню;
- удержание кнопки при включении вызывает вход в меню настроек;
- нажатие кнопки запускает/останавливает балансировку;
- используются два уровня аудио- и визуальной индикации вместо четырех.
Дискриминация мишеней в этой версии отсутствует .
Схема металлодетектора (версия 3
) :
- исключаются элементы, связанные с использованием компаратора - R5 , R6 ;
- для повышения коэффициента усиления ОУ изменен номинал резистора R3 на 320 кОм (составлен из двух резисторов номиналами 220 кОм и 100 кОм);
- изменена схема питания микроконтроллера.
В схеме металлодетектора две изолированные друг от друга "земли" - аналоговая (значок заземления) и цифровая (значок корпуса).
Лицензия исходного кода скетча : проприетарная .
Hex
-файл
прошивки FoxyPI
-
Elf -файл прошивки FoxyPI (версия 3.3 от 16.04.2019, первая доступная прошивка версии 3.3) для -
Как прошить hex -файл в плату Arduino , я описал .
Видео "воздушных" испытаний в динамическом режиме (7.04.2019, версия 3.2) - https://youtu.be/HzIiA9ws0Ak
Видео "воздушных" и "подземных" испытаний в динамическом режиме (11.04.2019, версия 3.3) - https://youtu.be/GwRvhjCmOE4
Видео "воздушных" испытаний в статическом режиме (13.04.2019, версия 3.3) - https://youtu.be/1ulevNWBZ9A
Внешний вид электронного блока:
вид сверху
:
1 - LCD
-экран
2 - светодиод
3 - пьезодинамик
4 - кнопка управления
5 - выключатель подсветки LCD-экрана
6 - выключатель питания
7 - светодиоды индикации уровня сигнала
Металлодетектор транспортируется разобранным на три части - блоки электроники и питания с ручкой, штанга, катушка с проводом:
Внешний вид собранного металлодетектора:
Эксплуатация металлодетектора
Включение и запуск металлодетектора
При включении питания металлодетектора (выключателя 6) сначала запускается отсчет:
Для перехода между пунктами меню требуется короткое нажатие кнопки (4) (при этом загорается зеленый светодиод), а для выбора пункта меню - длинное нажатие кнопки (4) (при этом загорается красный светодиод):
Для перехода между значениями параметра для выбранного пункта меню требуется короткое нажатие кнопки (4) (при этом загорается зеленый светодиод), а для выбора значения параметра - длинное нажатие кнопки (4) (при этом загорается красный светодиод):
Для выхода из меню следует выбрать пункт "EXIT
":
После завершения отсчета на дисплее (1) отображается сообщение с обозначением устройства и номером версии программного обеспечения ("FoxyPI v3.x"), логотипом, а из пьезодинамика (3) звучит звуковой сигнал с изменяющейся тональностью, соответствующий различным уровням сигнала и сопровождающийся миганием светодиодов:
Обнаружение мишеней с помощью металлодетектора
Затем, если не выбран вход в меню, отображаются текущие настройки прибора:
L
- длительность импульса (мкс, us
)
R
- частота следования импульсов (имп./с, pps
)
I
- коэффициент интегратора
F
- коэффициент фильтра
S
- звук (вкл/выкл, ON
/OFF
)
Затем выполняется балансировка (zeroing
) в статическом режиме:
Металлодетектор работает в двух режимах:
- статический режим (static/non-motion mode ) (по умолчанию) - учитывается уровень сигнала, не требует постоянного перемещения катушки (может использоваться как для уточнения расположения мишени (pinpointing ), так и как основной режим поиска);
- динамический режим (dynamic/motion mode ) - учитывается динамика изменения сигнала, в процессе поиска катушку необходимо перемещать над поверхностью грунта
При балансировке желательно перемещать катушку (аналогично действиям при поиске - это особенно важно при балансировке в динамическом режиме). Необходимо выполнять автобалансировку над чистым участком грунта (не над мишенью), не содержащем минералы. О мешающем влиянии грунта на импульсный металлодетектор Вы можете прочитать .
Важно стараться перемещать (sweep
) катушку параллельно поверхности земли, иначе из-за влияния магнитного поля Земли на катушке будет наводиться некоторое напряжение (EFE
- earth field effect
), которое может вызвать появление ложных сигналов: даже просто при перемещении катушки над землей:
При неправильном перемещении поисковой катушки изменяется магнитный поток $\Phi$ через нее:
Это объясняется тем, что магнитный поток определяется выражением:
$\Phi = {B \, S \, sin \, \alpha}$, где $B$ - индукция магнитного поля Земли, $S$ - площадь сечения катушки, $\alpha$ - угол между плоскостью катушки и направлением силовых линий магнитного поля Земли.
На приведенном рисунке в первом положении катушки магнитный поток равен нулю, а при перемещении приобретает ненулевое значение. Из-за изменения магнитного потока через катушку в ней согласно закону электромагнитной индукции наводится ЭДС, которая искажает принимаемый сигнал.
Неаккуратное перемещение катушки увеличивает уровень сигнала на 4000...5000, а энергичное перемещение катушки из горизонтального положения в вертикальное - на 15000...20000.
В процессе автобалансировки устанавливается оптимальная начальная задержка и длительность анализируемого сигнала, а также оценивается динамика сигнала (в динамическом режиме) или уровень сигнала (в статическом режиме), при этом обновление "нулевого" уровня сопровождается коротким звуковым сигналом. При прекращении обновления балансировку можно остановить нажатием кнопки (4). Также балансировку можно запустить/остановить и в процессе работы нажатием кнопки (4). После окончания автобалансировки подается короткий звуковой сигнал и отображается "нулевое" значение (максимальное, в условных единицах).
После этого запускается основной цикл работы металлодетектора, при этом на экране отображается текущий режим (MODE
) работы детектора, ZERO
- значение "нулевого" уровня, заданное при балансировке (для статического режима типичные значения 120 000 - 125 000
, при изменении длительности импульса от 150 до 250 мкс меняется незначительно), и RX
- начальная и конечная точки (диапазон) анализируемого сигнала (типичные значения - 16...43,
, при изменении длительности импульса от 150 до 250 мкс меняются незначительно) для длительности импульса 150 мкс) (переключение между режимами выполняется долгим нажатием кнопки (4)):
Признаки неисправностей (нулевой уровень / диапазон)
- обрыв в катушке - 12250 / 3...4 или 23000 / 2...4
- неиндуктивная катушка (замена резистором 10 Ом) - 23000 / 0...2 или 1...3
Пример разброса начальных "нулевых" уровней:
111289 | 111701 | 111762 | 111819 | 112029 |
111907 | 112067 | 111871 | 111827 | 111625 |
При обнаружении металлического объекта-"мишени" звучит звуковой сигнал изменяющейся тональности и загорается зеленый светодиод (2), а также зеленый либо красный светодиоды (7). Характер аудиовизуальной индикации меняется в соответствии с динамикой (в динамическом режиме) или уровнем (в статическом режиме) регистрируемого RX -импульса:
Светодиоды | Статический режим | Динамический режим |
нет мишени | нет мишени | |
слабый уровень сигнала | уровень сигнала уменьшается | |
средний уровень сигнала | уровень сигнала увеличивается | |
сильный уровень сигнала | - |
Сильные помехи на работу металлодетектора оказывают работающие вблизи электронные устройства:
помехи от LCD
-телевизора (ощущаются на расстоянии до метра):
помехи от КЛЛ (ощущаются вблизи лампы):
помехи от магнитного поля включенного в сеть трансформатора проявляются в виде трели - очень частых срабатываний:
При эксплуатации прибор должен находиться на удалении от работающих телевизоров, компьютеров, силовых трансформаторов, КЛЛ!
Настройка металлодетектора
Если при включении удерживать нажатой кнопку (4) до начала отсчета, то затем происходит вход в меню, позволяющее изменить настройки металлодетектора.
Структура меню (выделены значения настроек по умолчанию):
- PULSE LEN - длина импульса (100/150 /200/250 us)
- PULSE FREQ - частота следования импульсов (10/20/30/40/50/60/70/80 /90/100 pps)
- INTEGRATOR K - коэффициент интегратора (5/10 /20/30/40/50)
- FILTER K - коэффициент фильтра (10/20/30/40/50/60/70/80 /90/100/110/120/130/140/150/160/170/180 /190/200)
- SOUND - звук (ON /OFF)
- EXIT - выход из меню
При коротком нажатии на кнопку (4) происходит переход к следующему пункту меню, а при долгом - переход к значениям выбранной настройки.
Короткое нажатие при этом вызовет переход к следующему возможному значению, а долгое - сохранение текущего значения и переход на верхний уровень меню (к списку настроек).
После выбора EXIT происходит выход из меню и сохранение настроек в EEPROM .
Тестирование металлодетектора
Для тестирования металлодетектора при сборке можно загрузить в Arduino тестовую прошивку (для версии 3):
Hex -файл тестовой прошивки FoxyPI -
Elf -файл тестовой прошивки FoxyPI (версия 3.T от 24.04.2019) для -
В тестовом режиме металлодетектор после включения генерирует в поисковой катушке импульс тока длительностью 150 мкс, а затем регистрирует и отображает на экране принятый сигнал. При нажатии кнопки генерируется новый импульс и т.д.
Примеры сигналов:
1 - без мишени, 2 - с мишенью:
Испытания металлодетектора
Испытания металлодетектора я провожу на расчищенной земляной площадке:
Мишени
Для испытаний используются различные мишени:
1 - алюминиевая пластина из "винчестера" (жесткого диска) (толщина 1,3 мм, внешний диаметр 3,75 дюйма, диаметр отверсия 1 дюйм)
2 - российская монета достоинством 5 рублей из меди, плакированной мельхиором (диаметр 25 мм, масса 6,45 грамма)
3 - золотое колечко
Дальности обнаружения мишеней "в воздухе":
Любопытно, что при наложении друг на друга двух пластин (мишеней 1) дальность обнаружения снижается !
При снижении напряжения батареи дальность обнаружения заметно снижается:
В зарубежных металлодетекторах в качестве тестовой мишени часто используется монета Великобритании 10 пенсов - 10p
диаметром 24,5 мм, которая ранее (до января 2012 года) изготавливалась из медно-никелевого сплава (медь 75 %, никель 25 %):
Аналог такой монеты - монета США 25 центов - 25 US cent (U.S. quarter
)
диаметром 24,26 мм толщиной 1,75 мм массой 5,67 грамма:
Заявленная глубина обнаружения таких монет для различных металлодетекторов (max. depth for a US quarter
):
Altai Treasure Seeker 2 hobby metal detector
- 15 см;
Prestige Metal Detector
- 16 см;
Supereye S3000 Metal Detector
- 18 см;
EE Treasure Hunter
- 20 см.
Дальности обнаружения массивных мишеней в статическом режиме:
Изделия из порошкового железа и многие ферритовые детали (1) металлодетектор не обнаруживает, но некоторые изделия из феррита (2) детектируются внутри катушки на расстоянии нескольких см от обмотки:
При быстром перемещении ферритового магнита внутри катушки возникают ложные срабатывания:
Результат первого поиска в саду с FoxyPI
v3.3 (21.04.2019):
Результат второго поиска в саду с FoxyPI
v3.3 (27.04.2019):
А вот еще находки, но уже после электролитической очистки (о ней ниже):
Про некоторые интересные находки можно прочитать .
Очистка находок от ржавчины
Найденные находки часто покрыты слоем ржавчины (оксида железа Fe 2 O 3).
Для очистки находок от ржавчины можно использовать несколько методов:
химический метод - использование химиката, преобразующего ржавчину в легкоудаляемое (рыхлое) состояние:
- щавелевая кислота;
- ортофосфорная кислота.
электролитический метод - наиболее эффективен, применяется для удаления грязи и продуктов коррозии, в том числе и в археологии:
возможны два режима очистки - анодная (очищаемый предмет является анодом, очистка производится пузырьками кислорода) и катодная (очищаемый предмет - катод, а очищающий эффект дают пузырьки водорода, которых выделяется в два раза больше, чем кислорода при анодном процессе - подобный процесс используется для получения водорода)
Ниже я опишу применяемый мной катодный способ очистки.
пластиковая или стеклянная (не подверженная коррозии) емкость наполняется:
2 % (по другим сведениями, 5 - 10 %) водным раствором щелочи - едкого натра NaOH
;
водным раствором кальцинированной соды Na 2 CO 3
(1 столовая ложка на три литра воды, но я использую более насыщенный раствор):
Один электрод (анод) - пластинка из стали, в том числе нержавеющей, листового железа, алюминия или латуни, иногда применяются и угольные электроды. Я использую нержавеющую сталь:
Примечание.
Анод из нержавеющей стали выделяет токсичные вещества, латунь способствует выделению меди на катоде, а алюминиевый анод быстро изнашивается.
Анод и катод опускаются в раствор, к аноду подключается "+" источника питания, а к очищаемой детали подключается "-" (я обматываю очищаемый предмет медной проволокой). Начинается процесс электролиза воды, сопровождаемый выделением пузырьков газа и образованием хлопьев ржавчины (на катоде - очищаемом предмете - выделяются пузырьки водорода, разрушающие ржавчину: 4H 2 0 + 4e - = 4OH +2H 2).
Также существует альтернативное описание реакции при катодной очистке:
4H + + 4e - = 2H 2 (но в этом случае требуется кислотная среда для образования достаточного количества ионов водорода).
В ходе процесса ржавчина начинает собираться возле анода:
В конце процесса вся емкость заполнена частицами ржавчины:
Ржавчина в процессе электролиза покрывает анод:
Лакмусовая бумажка, погруженная в раствор, показывает реакцию на щелочную среду:
После окончания процесса очистки очищаемая деталь оказывается покрыта рыхлым слоем загрязнения, который удаляется металлической щеткой:
После электролитической очистки находка выглядит так:
Осциллограммы
Используя лабораторный стенд, как цифровой осциллограф, я снял ряд осциллограмм:
лабораторный стенд -
напряжение на поисковой катушке -
Устройство металлодетектора
Конструктивное исполнение
Штанга
Для штанги металлодетектора я использовал ПВХ-трубу диаметром 25 мм с толщиной стенок 1,6 мм (PN16
):
Рукоятка
Рукоятка металлодетектора крепится к трубе, на которой закреплены электронный блок и блок питания, с помощью компрессионного фитинга:
Электронный блок
В качестве корпуса электронного блока металлодетектора я использовал распределительную коробку Tyco со степенью защиты IP55 (от воды и пыли) из ПВХ c десятью вводами диаметром 30 мм.
Вид внутри электронного блока:
На ПВХ-трубе электронный блок закрепляется посредством U
-образных держателей, которые фиксируются нейлоновыми стяжками:
Блок питания
Для размещения элементов питания я использую распределительную коробку. На ПВХ-трубе блок питания закрепляется посредством U -образных держателей, которые фиксируются нейлоновыми стяжками.
Электроника
Микроконтроллер
Я использую плату Arduino Nano 3.0.
3-й версии основана на 8-битном AVR
микроконтроллере ATmega328P
(32 кБайт Flash
, 2 кБайт SRAM
, 1 кБайт EEPROM
, 3 таймера) (2-й версии - на ATmega168
), причем буква "P
" обозначает "picoPower
".
контакты Arduino :
вывод Arduino | назначение |
D08 | выход сигнала генератора импульсов в катушке |
D13 | выход для подключения светодиода |
D11 | выход для подключения пьезодинамика |
A00 | вход АЦП - для ограниченного и усиленного сигнала с поисковой катушки |
A01 | выход для подключения зеленого светодиода |
A02 | выход для подключения красного светодиода |
D02 | вход подключения кнопки |
REF | вход опорного напряжения для АЦП |
ресурсы Arduino :
Для сопряжения с USB -портом в моей плате Arduino используется микросхема преобразователя CH340G .
Источники питания
Питание микроконтроллера
Для питания Arduino
я использую два соединенных последовательно литий-ионных аккумулятора UltraFire ZX 18650
емкостью 4200 мА·ч каждый:
Напряжение холостого хода такого полностью заряженного аккумулятора составляет 4,21 В, а на нагрузке 10 Ом через 1 минуту работы - 3,61 В.
Номинальное напряжение такой батареи составляет 7,4 В.
Напряжение батареи 7,4 В преобразуется в напряжение 5 В для питания платы Arduino
с помощью
интегрального стабилизатора 78L05
(на схеме обозначен VR1
):
Питание силовой части
Я использую в качестве источника питания силовой части 10 щелочных батарей размера AA (LR6 ).
Я оценил некоторые из использованных мной батарей:
Тип батареи | Напряжение х.х., В | Напряжение под нагрузкой (через 1 минуту работы), В |
Camelion Plus Alkaline
1 |
... | ... (10 Ом) |
... | ... (10 Ом) | |
Duracell Duralock (Alkaline)
2 |
1,54 | 1,47 (10 Ом) |
Ермак (алкалиновые) |
1,62 | 1,43 (10 Ом) |
Energizer Max
(Alkaline)
3
|
1,62 | 1,51 (10 Ом) |
Energy
(алкалиновые) |
1,62 | 1,48 (10 Ом) |
1 - номинальная емкость составляет 2700 мА·ч (при непрерывном разряде до 0,8 В током 25 мА)
2 - технология позволяет сохранять заряд при хранении до 10 лет,
на батарейках при этом на полоске нанесена надпись "":
1 - батарейки Duracell
, произведенные с использованием технологии
2 - обычные батарейки Duracell
3 - по данным производителя:
номинальное внутреннее сопротивление (Nominal IR
) - 150...300 мОм;
диаграмма зависимости емкости от тока разряда:
Для размещения батарей размера AA
я использую батарейный отсек на 10 элементов:
Номинальное напряжение такой батареи составляет 15 В.
Катушка L2 предназначена для снижения помех, вызванных импульсами тока поисковой катушки. Диод VD3 шунтирует батарею питания для отрицательных выбросов напряжения, возникающих на индуктивности поисковой катушки, и защищает от неправильной полярности батареи питания. Конденсатор C1 большой емкости является накопителем энергии - играет важную роль при генерации импульсов тока в катушке.
Для подключения источников питания используется четырехконтактный разъем на боковой стороне корпуса электронного блока:
1 - "+" батареи 15 В
2 - "-" батареи 15 В
3 - "-" батареи 7,4 В
4 - "+" батареи 7,4 В
Катушка
Параметры катушки
Поисковая катушка со средним диаметром $D$ = 25 см (средний радиус $R$ = 12,5 см) и радиусом сечения катушки $a$ = 0,29 см содержит $w$ = 27 витков эмалированного медного (удельное сопротивление $\rho$ = 0,0175 Ом·мм 2 /м) провода диаметром $d$ = 0,7 мм (радиус провода $r$ = 0,35 мм,площадь сечения провода $S$ = 0,385 мм 2):
Предполагаемое сопротивление катушки $R = {\rho {{\pi D w} \over {S}}}$ = 0,964 Ом, а измеренное составило $R$ = 1,3 Ом:
Для вычисления индуктивности такой катушки существует несколько формул.
приближенная формула :
$L = {{w^2}{{\mu}_0}R[{ln({{8R} \over a})}-2]}$ ,
где $a$ - радиус сечения катушки.
Эта формула приведена в книге [F. W. Grover, Inductance Calculations: Working Formulas and Tables, New York: Dover, 1946 ].
Для моей катушки:
$L$ = 440 мкГн
.
более точная формула :
$L = {{{\mu}_0} \over {4 \pi}} {w^2} D \Phi $, где $\Phi$ - вспомогательный коэффициент:
$\Phi = {2 \pi [{(1 + {{{\gamma}^2} \over 2})} {ln ({4 \over \gamma})} - 1,75 + {{{\gamma} ^2} \over 6} ] } $, где $\gamma = {a \over D}$, $a$ - радиус сечения катушки
Эта формула используется в плагине multiloop для программы Coil32 (http://coil32.net/multi-winding-round-loop.html) для расчета индуктивности многовитковой круглой катушки с круговым сечением (англ. multi-winding round loop with round cross-section ).
Для моей катушки:
$\gamma$ = 0,0116;
$\Phi$ = 25,7;
$L$ = 468 мкГн
.
интегральная формула :
$L = {{\mu}_0} {w^2} {\pi} R {{\int_0^{1-{a \over R}}} B_{rel}({\rho}) {\rho} \, {d{\rho}} } $,
где $B_{rel}({\rho}) = { {1 \over \pi} {\int_0^{\pi}} {{1 - {{\rho} cos {\phi} }} \over {{(1+{{\rho}^2}-2{\rho}cos{\phi})}^{3 \over 2}}} \, d{\phi} }$ - относительная магнитная индукция в плоскости катушки на расстоянии ${\rho} \over R$ по сравнению с индукцией в центре катушки, $a$ - радиус сечения катушки
Магнитное поле катушки
При протекании по такой катушке тока $I$ в точке на оси катушки, находящейся на расстоянии $z$ от плоскости катушки, создается магнитное поле, напряженность которого определяется известным выражением:
$H = {w {I \over 2} {{R^2} \over {{(R^2 + z^2)}^{3 \over 2}}}}$
Если принять внутреннее сопротивление одной батарейки как 0,3 Ом, ЭДС - 1,45 В, то для десяти батареек общая ЭДС $E$ составит 14,5 В, а общее сопротивление $R$ цепи с учетом сопротивления поисковой катушки 1 Ом составит 4 Ом. Принимая индуктивность катушки, равной 450 мкГн, получаем, что за длительность $T$ импульса, равную 150 мкс, ток в катушке достигнет значения ${E \over R} (1 - e^{-{T R}\over L}) = 2,7 А$.
Конструкция катушки
Для защиты катушки можно использовать гофрированный шланг для электропроводки (обычно серого цвета) который разрезается вдоль:
В него вставляется катушка, а затем он скрепляется изоляционной лентой. Катушка закрепляется в монтажной коробке с помощью термоклея и нейлоновых стяжек.
Катушка закрепляется на штанге с помощью компрессионного фитинга, резьбовая часть которого вкручена в полипропиленовую трубку диаметром 26 мм, закрепленную на крышке монтажной коробки с помощью нейлоновой стяжки и термоклея:
Для подключения катушки используется двухконтактный разъем на боковой стороне корпуса:
Генератор
Для выдачи импульсов я использую цифровой вывод D08
, установив его как "выход" (цифровой вывод D08
соответствует выводу PB0
микроконтроллера ATmega
) .
Для ускорения я использую не команду digitalWrite
, а прямую запись в порт, что быстрее примерно в 10 раз
!
Соответствие цифровых выводов Arduino и выводов портов ATmega
цифровой вывод Arduino | вывод порта ATmega |
D00 | PD0 |
D01 | PD1 |
D02 | PD2 |
D03 | PD3 |
D04 | PD4 |
D05 | PD5 |
D06 | PD6 |
D07 | PD7 |
D08 | PB0 |
D09 | PB1 |
D10 | PB2 |
D11 | PB3 |
D12 | PB4 |
D13 | PB5 |
Временные параметры генератора задаются через меню настроек при включении прибора.
Силовая часть
Так как напряжение на MOSFET
-е при его выключении резко возрастает (из-за индуктивности катушки), то транзистор может перейти в режим лавинного пробоя ("avalanche breakdown
"). Это происходит, если напряжение "сток-исток" $V_{DS}$ на MOSFET
-е превышает его напряжение пробоя $V_{DS (BR)}$.
Для современных транзисторов работа в этом режиме является штатной (они маркируются как "Repetitive Avalanche Rated
" или "100% AVALANCHE TESTED
"). При этом важно учитывать такие лавинные характеристики транзистора как максимальный повторяющийся лавинный ток $I_{AR}$ и максимальная энергия повторяющегося лавинного пробоя $E_{AR}$.
Необходимо, чтобы максимальный ток в катушке перед выключением не превышал значения $I_{AR}$, а максимальная энергия, запасенная в катушке, не превышала значения $E_{AR}$. Энергия магнитного поля катушки определяется как ${E_M} = {{{L {I^2}} \over {2}}}$ (например, для катушки индуктивностью $L$ = 700 мкГн с током $I$ = 3 А энергия составит 3,2 мДж).
Параметры некоторых MOSFET :
Наименование | $V_{DS (BR)}$, В | $I_{AR}$, А | $E_{AR}$, мДж |
IRF540 | 100 | 28 | 15 |
IRF740 | 400 | 10 | 13 |
IRF840 | 500 | 8 | 13 |
FQP12N60C | 600 | 12 | 22,5 |
Я использую MOSFET
IRF840
, обладающий подходящими характеристиками:
Цоколевка IRF840
:
G
- затвор, D
- сток, S
- исток
При лавинном пробое транзистора затухающий ток катушки проходит по участку "сток-исток MOSFET -а - батарея питания", обладающему малым сопротивлением, что приводит к замедлению затухания тока.
драйвер MOSFET
Управление MOSFET осуществляется с помощью оптопары PC817C (обладает быстродействием 3...4 мкс, выдерживает выходной ток 50 мА и напряжение в закрытом состоянии до 35 В) и дискретной транзисторной схемы:
цоколевка PC817
:
цоколевка BC547
/BC557
:
C
- коллектор, B
- база, E
- эмиттер
Подобный драйвер описан в статье http://radiohlam.ru/raznoe/driver_polevikov.htm .
Я исследовал характеристики такого драйвера (при подаче на светодиод оптодрайвера напряжения 5 В через резистор 470 Ом):
ток потребления во "включенном" состоянии (MOSFET
открыт) очень мал, в "выключенном" (MOSFET
закрыт) - меняется от 5,8 до 12 мА при росте напряжения питания от 7 до 15 В; напряжение на выходе драйвера составляет 12,15 / 1,83 В ("вкл"/"выкл") при напряжении питания 13 В.
Детектор
В основе работы импульсного металлодетектора лежит принцип электромагнитной индукции - Electromagnetic Pulse Induction (EMI ).
Схема детектора моего металлоискателя:
Сигнал с поисковой катушки $L1$ через токоограничивающий резистор $R2$ поступает на включенные встречно-параллельно диоды $VD1$ и
$VD2$, ограничивающие величину сигнала до ~ 1 В. Это ограничение не вносит заметной погрешности, так как для детектирования "мишени" имееет значение "хвостик" сигнала, напряжение на котором составляет малые доли вольта (вплоть до милливольт) - подтверждено моделированием:
Такой слабый сигнал для надежного детектирования необходимо усилить, для чего я использовал операционный усилитель $OP1$ LM358N , включенный по традиционной схеме неинвертирующего усилителя. Коэффициент усиления определяется выражением $1+ {R3 \over R4}$, при указанных номиналах элементов он составляет 570 .
Особенностью ОУ LMx58
является возможность однополярного питания (single supply
) - в отличие от, например, LM318
, LF356
, LF357
не требуется источник отрицательного напряжения.
Цоколевка LM358N
(N
- в DIP
-корпусе):
Вид сигнала на выходе ОУ:
Для обработки сигнала с поисковой катушки я использую встроенный в микроконтроллер ATmega аналого-цифровой преобразователь.
На опорный вход АЦП VREF
подается опорное напряжение u ref
, равное 1,235 В, которое берется с эталонного источника LM385Z-1.2
(используется режим работы АЦП EXTERNAL
).
Цоколевка LM385Z
:
На сигнальный вход АЦП ADC In подается усиленное операционным усилителем напряжение сигнала с поисковой катушки, ограниченное диодами VD1 и VD2 . АЦП дискретизирует сигнал с катушки в виде последовательности чисел (fast-time signal ) со значениями 0 (минимальный уровень, 0 В)...1023 (максимальный уровень u ref).
Наличие мишени вблизи катушки проявляется следующим образом:
(1023 - уровень сигнала, соответствующий перегрузке АЦП)
- смещение точки A вправо;
- увеличение интервала A -B ;
- смещение кривой вверх.
Сравните этот график сигнала с приведенным выше:
Для определения наличия мишени выполняется вычисление суммы (slow-time signal
) заданного числа дискретизированных уровней сигнала, расположенных на одинаковых интервалах друг от друга, во временном "окне" (evaluation window
). При этом значения, расположенные ранее заданной при балансировке начальной точки, не учитываются (для повышения чувствительности
).
Затем выполняется интегрирование последовательности получаемых суммарных значений (интегратор эмулируется программно). Параметром фильтра является коэффициент $K$, который равен числу импульсов, приходящихся на постоянную времени интегратора.
Уровень сигнала на выходе интегратора анализируется в статическом режиме работы металлодетектора.
При работе металлодетектора в динамическом режиме результаты интегрирования дополнительно проходят через фильтр высоких частот (high-pass filter
, HPF
), который эмулируется программно. Параметром фильтра является коэффициент $K$, который показывает, во сколько раз частота следования импульсов больше частоты среза фильтра.
На выходе фильтра получается сигнал, характеризующий динамику изменения RX
-сигнала.
При превышении выходным сигналом порога - "нулевого" уровня, заданного при балансировке, срабатывает триггер - мишень считается обнаруженной и реализуется аудиовизуальная индикация.
Звуковая индикация
Я использую для звуковой индикации пьезоэлемент от автономного пожарного извещателя. Громкость звучания пьезоэлемента весьма причудливым образом зависит от частоты сигнала. Я смог найти набор частот 900 (самый слабый сигнал))- 1000 - 1100 (самый сильный сигнал), для которых громкость звучания увеличивается. Для управления звучанием пьезоэлемента, подключенного к контакту 11 платы, я используют таймер 2 Arduino.
Беззвучный режим (только светодиодная индикация) может быть активирован через меню настроек при влючении прибора.
Визуальная индикация
Для индикации я использую LCD
-дисплей от мобильного телефона :
Дисплей для этого телефона - монохромный c разрешением 84×48:
Контроллер дисплея - Philips PCD8544
.
Подключение дисплея:
Вывод дисплея | Вывод Arduino | Назначение вывода дисплея |
---|---|---|
RST | D10 | сброс контроллера дисплея |
CE (или CS) | D09 | разрешение ввода данных в контроллер дисплея |
DC | D05 | режим ввода - данные/команды |
Din | D04 | данные шины SPI |
CLK (или SCLK) | D03 | команды шины SPI |
VCC | * | напряжение питания (2,7 ... 3,3 В) |
BL | ** | подсветка |
GND | GND | "земля" |
Существует два варианта дисплея LCD 5110
- с синим (именно такой я использую) или красным текстолитом:
* напряжения питания контроллера -
синий
- строго 3,3 В
(можно подключить к выводу 3V3
Arduino
)
красный
- по некоторым непроверенным
сведениям выдерживает напряжение питания 5 В (можно питать от выводов 5V
или 3V3 Arduino
)
** напряжение питания подсветки -
синий
- на вывод подсветки можно подать напряжение 3,3 или 5 В
красный
- на вывод подсветки подключается "земля" (?)
Проблемой такого дисплея является ненадежный контакт ЖК-панели с печатной платой посредством соединителя ZEBRA
, который устраняется, например, припаиванием проводника, прижимающего панель к плате - как рекомендовано :
Если эту проблему не устранить, то она приводит к "почернению" экрана, требующей повторной инициализации.
Для работы с таким дисплеем в Arduino я использую библиотеку Adafruit-PCD8544 от Adafruit Industries .
Выключатель (5) управляет подсветкой экрана. При хорошем внешнем освещении подсветку дисплея можно не использовать, так как она потребляет заметную мощность.
Дискриминация мишеней
Вихревые токи затухают из-за наличия электрического сопротивления у "мишени". Это затухание описывается экспоненциальным законом $i = k H_0 {e^{ {-t} \over \tau}}$. Коэффициент $k$ определяется формой и размерами "мишени". Постоянная времени $\tau = {L G} = {L \over R}$, определяющая длительность протекания вихревых токов, определяется электрической проводимостью материала мишени $G$ (или сопротивлением $R$) и ее индуктивностью $L$.
В таблице я привел относительную электрическую проводимость различных материалов по отношению к золоту:
Вихревые токи применяются для исследования свойств материалов посредством измерения электрической проводимости, так как материалы имеют уникальное значение проводимости в зависимости от их состава и способа изготовления. В качестве стандарта используется при этом значение проводимости химически чистой меди при температуре 20 ºC - стандарт International Annealed Copper Standard (IACS ) - удельное сопротивление 1,7241x10 -8 Ом·м или 5,8001x10 7 См/м (100% IACS ). Железо, например, имеет значение проводимости, равное 18% от проводимости меди.
Как утверждается (например, в статье исследователя Reg Sniff) , мишени из золота или из тонкой фольги имеют очень малую постоянную времени и вихревые токи в них быстро затухают, в отличие от мишеней из железа, меди или серебра.
Начальная напряженность магнитного поля $H_0$ определяется начальным током в катушке и уменьшается по кубическому закону $1 \over {h^3}$ при удалении от катушки. Величина напряженности магнитного поля $H_0$ вдоль оси катушки на расстоянии $z$ от ее центра, создаваемого током $I_0$, определяется выражением: ${H_0} = { {w {R^2} {I_0}} \over {2 { {({R^2}+{z^2})}^{3 \over 2} } } }$.
Вихревые токи создают собственное затухающее магнитное поле, которое наводит экспоненциально затухающее (с той же постоянной времени $\tau$) напряжение в поисковой катушке. Величина этого напряжения уменьшается как шестая степень расстояния $1 \over {h^6}$ при удалении "мишени" от катушки. Это приводит к удлинению импульса напряжения на поисковой катушке, что и регистрируется металлодетектором.
Дополнительный анализ кривой сигнала (напряжения на поисковой катушке) может быть выполнен с целью дискриминации (выделения разных типов) мишеней. Наклон кривой в ее начале можно оценить отношением $K = {{x_t} \over {x_{t+{\Delta}t}}}$ величин выборок, отделенных, например, пятью интервалами (${\Delta}t=5$). При этом постоянная времени определяется выражением: ${\tau} = {{{\Delta}t} \over {ln K}}$
Для иссследования вихревых токов могут использоваться программные пакеты для моделирования электромагнитных процессов. В качестве примера можно привести моделирование электромагнитного тормоза на вихревых токах в пакете COMSOL Multiphysics (описание - https://www.comsol.com/blogs/simulating-eddy-current-brakes/):
Существуют отрицательные мнения по поводу возможности эффективной дискриминации для импульсных металлодекторов.
"The most reliable discriminator is you, by digging the target!" (http://www.gold-prospecting-wa.com) - "Самый надежный дискриминатор - это вы, при выкапывании мишени" .
В книге "" авторов Ahmet S. Turk, Koksal A. Hocaoglu, Alexey A. Vertiy
приведены следующие утверждения:
"Важнейшим недостатком импульсных металлодетекторов является невозможность лёгкой дискриминации между различными типами металлов. ... Если размеры и глубина детектируемых металлических объектов различны и неизвестны, то в общем случае невозможно определить тип металла".
В качестве примера импульсного металлодетектора, для которого заявлена возможность дискриминации (ферромагнитные (FERROUS
)/неферромагнитные (N-FERROUS
) материалы), можно привести модель PULSE STAR II
.
Особенности дискриминации в таком детекторе:
- возможна только для мишеней не менее 10 см в диаметре (в отличие от VLF/TR -детекторов, которые обладают способностью дискриминации даже для маленьких объектов);
- объекты меньшего размера отображаются как ферромагнитные;
- несколько маленьких неферромагнитных объектов отображаются как один большой ферромагнитный.
Моя статья на Хабре о применении нейросети для дискриминации в импульсном металлодетекторе - https://habr.com/ru/post/435884/
Работа над проектом продолжается
Переработанная версия всеми известного импульсного металлоискателя - "Пирата", но на Arduino. Имеет неплохую чувствительность даже на мелкие монеты. Стабилен в не зависимости от температуры и заряда батареи. Схема максимально упрощена.
Из недостатков можно отметить отсутствие возможности определять тип металла. Определять тип могут только металлоискатели с радио излучающим принципом детектирования (сложны в устройстве и требуют точной настройки). Импульсный металлоискатель в свою очередь работает на магнитном детектировании индукционных токов в металле. Индукция при поиске не различима для черный и цветных металлов.
К слову сказать, что есть еще третий тип металлоискателей - частотный. Малоэффективная и очень простая конструкция в основе которой генератор колебаний магнитного контура, который чувствителен к изменению величины индукции катушки. Мы ее рассматривать не будем из-за низкой чувствительности. Личный эксперименты по разработке такой конструкции в лучшем случае позволяли детектировать сковородку на 20 см глубины. На монет реагировал только в "упор". Практически бесполезная штука. По тому от нее сразу отказался.
Наша схема импульсного металлоискателя имеет в себе несколько основных компонентов. Arduino генерирует импульсы, они усиливаются полевым транзистором (силовым ключом) который в свою очередь индуцирует импульсы магнитное поле в катушке. Магнитный импульс проходит до искомого металла и индуцирует в нем ток, а затем обратный сигнал магнитного поля. Этот обратный магнитный поток через небольшую задержку возвращается обратно в катушку металлодетектора и генерирует импульс. Сигнал проходит мимо пары диодов (диоды нужны что бы ограничить напряжение до 1 вольта) и уходит на вход операционного усилителя. Усиленный сигнал попадает в arduino в котором высчитывается "спадающий хвост" после отключения катушки силовым ключем. Т.е. как раз ответ от искомого металлического предмета. В зависимости от времени спада мы можем судить о величине или удаленности объекта. Индикатор показывает эту величину в 8-и уровнях индикаторов.
К слову о катушке. Она должна быть диаметром 20 см с 20-ю витками провода 0,4 - 0,8 мм. Толщина провода так же влияет на индукцию всей катушки. Сильное отклонение от толщины провода приведет к ухудшению чувствительности прибора. Катушка вставлена в водопроводную ПВХ трубу и не имеет никаких дополнительных металлический соединений.
Скетч программы содержит генератор импульсов и алгоритм обработки входящего сигнала с усилителя.
Int ss0 = 0;
int ss1 = 0;
int ss2 = 0;
long c0 = 0;
long c1 = 0;
long c2 = 0;
byte i = 0;
int sss0 = 0;
int sss1 = 0;
int sss2 = 0;
int s0 = 0;
int s1 = 0;
int s2 = 0;
void setup()
{
DDRB = 0xFF; // port B - all out
DDRD = 0xFF; // port D - all out
for (i = 0; i <255; i++) // калибровка
{
PORTB = B11111111;
delayMicroseconds(200);
PORTB = 0;
delayMicroseconds(20);
s0 = analogRead(A0);
s1 = analogRead(A0);
s2 = analogRead(A0);
c0 = c0 + s0;
c1 = c1 + s1;
c2 = c2 + s2;
delay(3);
}
c0 = c0 / 255;
c0 = c0 - 5;
c1 = c1 / 255;
c1 = c1 - 5;
c2 = c2 / 255;
c2 = c2 - 5;
}
void loop()
{
PORTB = B11111111;
delayMicroseconds(200);
PORTB = 0;
delayMicroseconds(20);
s0 = analogRead(A0);
s1 = analogRead(A0);
s2 = analogRead(A0);
ss0 = s0 - c0;
if (ss0 < 0)
{
sss0 = 1;
}
ss0 = ss0 / 16;
PORTD = ss0; // посылаем на индикатор (send to LEDs)
delay(1);
ss1 = s1 - c1;
if (ss1 < 0)
{
sss1 = 1;
}
ss1 = ss1 / 16;
PORTD = ss1; // посылаем на индикатор (send to LEDs)
delay(1);
ss2 = s2 - c2;
if (ss2 < 0)
{
sss2 = 1;
}
ss2 = ss2 / 16;
PORTD = ss2; // посылаем на индикатор (send to LEDs)
delay(1);
if (sss0+sss1+sss2 > 2)
{
digitalWrite(7,HIGH);
digitalWrite(6,HIGH);
digitalWrite(5,HIGH);
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
digitalWrite(2,HIGH);
digitalWrite(1,HIGH);
digitalWrite(0,HIGH);
delay(1);
sss0 = 0;
sss1 = 0;
sss2 = 0;
}
}
Его особенность заключается в том, что устройство выполнено в виде перчатки, здесь находится и электронная часть, и поисковая катушку. Металлоискатель был создан для поиска дома потерявшихся мелких металлических вещей, к примеру, сережек, колец и прочего. Впрочем, на основе этой схемы можно сделать и классический металлоискатель для работ на улице. Для изготовления устройства понадобится минимум материалов, львиную долю задач решает микроконтроллер Arduino.
Мощность металлоискателя небольшая, но для бытовых целей ее вполне хватит.
Материалы и инструменты для изготовления:
- микроконтроллер Arduino UNO;
- провод 28 калибра (диаметр 0.32мм);
- один переключатель;
- пьезозуммер;
- два резистора на 10К;
- один резистор на 1.2К;
- два конденсатора 100n;
- два конденсатора 22n;
- один транзистор типа BC547;
- батарея на 9В;
- строительные перчатки.
Также будет необходима фанера, клей по дереву, паяльник с припоем, многожильный провод, макетная плата и другие мелочи.
Процесс изготовления металлоискателя:
Шаг первый. Изготовление катушки
Чтобы изготовить катушку, для нее нужно вырезать основу, корпус. Автор вырезает катушку из фанеры на станке, ее диаметр составляет 6 дюймов. В итоге получается два кольца, которые впоследствии склеиваются столярным клеем. После высыхания, катушку тщательно обрабатывают наждачной бумагой, чтобы она была гладкой. После того, как основа будет изготовлена, на нее можно наматывать провод. Всего нужно сделать 30 витков провода, оставив конец длиной не менее 5-ти дюймов для подключения. Наматывать провод нужно плотно, это обеспечит качественную работу катушки. Поверх провода катушку можно обмотать изолентой или скотчем для лучшей фиксации.
Шаг второй. Сборка схемы на макете
Чтобы убедиться в том, что катушка собрана верно и вся система правильно работает, ее сперва нужно собрать на макетной плате, а уже потом спаивать. Порядок подключения не принципиален, автор начал с транзистора, потом пошли резисторы и конденсаторы. После этого были подключены «мужские и женские» разъемы на палате Arduino.
После этого можно подключать катушку. Так как провод имеет лаковое покрытие, его нужно соскоблить на концах наждачной бумагой или острым ножом. Нужно добиться хорошего контакта. Подключается катушка с помощью «мужских и женских» разъемов. После сборки всех элементов в контроллер можно загружать прошивку и проверять, как все работает на деле.
Шаг третий. Установка прошивки и проверка системы
Далее нужно загрузить в контроллер прошивку. Также возможно понадобится произвести некоторые настройки в коде, чтобы металлоискатель работал правильно. Как только код будет загружен, можно приступать к тестированию. К системе нужно подключить источник питания 9В и выключить переключатель. Если металлоискатель работает, можно приступать к спайке всех элементов на плате.
Шаг четвертый. Спайка схемы
Собирается все на куске текстолита, контакты спаиваются между собой с помощью кусочков провода. При необходимости можно сделать для устройства специальную плату методом травления. Более подробно увидеть, как происходит сборка схемы, можно увидеть на фото.
Шаг пятый. Завершающий этап сборки
Чтобы закрепить плату автор использует кусок фанеры. По размеру он должен быть таким, чтобы на него поместился контроллер Arduino и печатная плата. Края нужно обработать наждачной бумагой, чтобы сделать их гладкими. Для того чтобы приклеить элементы к фанере, можно использовать двусторонний скотч. Также подойдет клей и любые другие способы крепления.
Металлоискатель – это устройство, используемое для обнаружения присутствия металла в некоторой близости от этого металлоискателя, не касаясь самого металла. Такие устройства широко используют для поиска металлических предметов в земле, например, мин, кладов с драгоценными металлами, предметы старины и прочие вещи. Процесс бесконтактного обнаружения, используемый в металлоискателе, объясняется с помощью метода индуктивного зондирования. Основная концепция состоит в том, что наличие металла может изменять индуктивность индуктора (катушки). Таким образом, электронная начинка металлоискателя попросту определяет индуктивность катушки, которая зондирует исследуемую поверхность, и благодаря динамику или другому интерфейсному устройству оповещает пользователя о металлическом объекте поблизости.
Металлоискатели в официальных точках продаж стоят не так дешево, как хотелось бы. Но сегодня благодаря развитию радиолюбительской техники маталлоискатель можно сделать самостоятельно на основе Arduino.
По сути, с помощью Arduino можно создать простой индуктивный измеритель, то есть устройство, которое может использоваться для измерения неизвестной индуктивности катушки. В данном проекте используется обычный резонансный контур, в котором параллельно соединены конденсатор и катушка индуктивности. Естественная резонансная частота LC-контура изменяется в зависимости от присутствия металла поблизости от катушки. Для получения приемлемого для считывания сигнала с резонансного контура используется компаратор LM339. Поскольку колебания от LC-контура всегда будут в форме синусоидальной волны, то в этом проекте и используется детектор пересечения нуля на основе компаратора, чтобы преобразовать синусоидальную волну в прямоугольные частотные импульсы, чтобы плата Arduino могла измерять период этих импульсов, и на основе полученных данных о периоде оповещать о присутствии металла вблизи прибора. Благодаря встроенной в Arduino IDE функции pulseIn() можно измерять период времени импульса. Например, pulse = pulseIn (11, HIGH, 5000). В этом случае функция возвращает значение периода времени, в течение которого импульс оставался высоким на линии 11. Третий параметр является необязательным, он устанавливает время ожидания до появления импульса на указанной линии.
Схема металлоискателя на основе Arduino представлена ниже.
double pulse; void setup() { pinMode(11,INPUT); pinMode(13,OUTPUT); pinMode(8,OUTPUT); } void loop() { digitalWrite(13,HIGH); delayMicroseconds(5000); digitalWrite(13,LOW); delayMicroseconds(100); pulse = pulseIn(11,HIGH,5000); if(pulse > 920) { tone(8, 1); delay(3000); noTone(8); } }
Answer
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry"s standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five http://jquery2dotnet.com/ centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
Датский инженер Dzl, вместе со своим сыном собрали себе металлоискатель на базе контроллера Arduino.
Схема:
Частота работы генератора на транзисторе 2n222 зависит от индуктивности поисковой катушки и в отсутствии металла равна ~160кГц (это при авторских параметрах схемы - ёмкость конденсаторов у катушки по 22н и катуша диаметром 15см в 30 витков).
При приближении металлических предметов(особенно железа), индуктивность катушки меняется, меняется и частота генератора, за которой на pin 5 следит программа на Arduino.
Начальное нажатие NULL SW (pin 12) записывает эталонную частоту(начальная калибровка в отсутствии металла вблизи катушки).
При изменении частоты, пьезоизлучатель (pin 13) издаёт «щелчки», которые тем чаще, чем ближе металл.
Скетч:
// Arduino based metal detector
// (C)Dzl july 2013
// http://dzlsevilgeniuslair.blogspot.dk/
// Connect search coil oscillator (20-200kHz) to pin 5
// Connect piezo between pin 13 and GND
// Connect NULL button between pin 12 anf GND
// REMEMBER TO PRESS NULL BUTTON AFTER POWER UP!!
#define SET(x,y) (x |=(1<