Съдържание:

Импулсен детектор на базата на Arduino - LC -капан: 3 стъпки
Импулсен детектор на базата на Arduino - LC -капан: 3 стъпки

Видео: Импулсен детектор на базата на Arduino - LC -капан: 3 стъпки

Видео: Импулсен детектор на базата на Arduino - LC -капан: 3 стъпки
Видео: Димо Деспов - Транзистори 2024, Юли
Anonim
Импулсен детектор на базата на Arduino - LC -капан
Импулсен детектор на базата на Arduino - LC -капан

Докато търсех допълнителни идеи за прост метален детектор Ardino Pulse Induction само с едно захранващо напрежение, попаднах на началната страница на Teemo:

www.digiwood.ee/8-electronic-projects/2-metal-detector-circuit

Той създаде прост детектор за импулсна импулс, използвайки принципа LC-Trap. Подобни схеми бяха публикувани тук на Instructable от TechKiwiGadgets. С изключение на това, че веригата Teemo използва вътрешните сравнители на микроконтролера PIC, като по този начин се нуждае от по -малко външни компоненти

Затова бях изправен пред предизвикателството да използвам Arduino вместо PIC-контролер за тази схема и да видя докъде мога да стигна.

Стъпка 1: Схеми

Схематично
Схематично
Схематично
Схематично
Схематично
Схематично

Схемата на Arduino е малко по -сложна, тъй като Arduino не позволява да се насочи вътрешен аналогов сигнал към входа на компаратора. Това добавя два компонента за прост делител на напрежение. Това води до дизайн с 12 външни компонента (като изключим високоговорителя и 16x2 LCD), в сравнение с 9 от дизайна на Flip Coil.

Принципът на работа на схемата е обяснен много добре на уебсайта на Teemo. По принцип намотката се захранва и след това се изключва. След изключване намотката и кондензаторът паралелно ще създадат затихване на трептенията. Честотата и затихването на трептенията се влияят от метал в близост до бобината. За повече подробности относно веригата вижте страницата на Teemo или на TechKiwi тук на Instructables.

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

В този случай ще получа множество прекъсвания, тъй като напрежението се колебае около референтното напрежение, зададено в компаратора. В края на трептенето напрежението в бобината ще се установи около 5V, но не точно. Избрах делител на напрежение с 200 Ohm и 10k Ohm, за да получа напрежение от около 4,9 волта

За да намаля сложността на схемите, използвах D4 и D5, за да осигуря GND (за 10k резистор) и 5V (за резистор 220 Ohm). Щифтовете се настройват при стартиране на детектора.

В тази версия добавих връзка с високоговорители, използвайки многотоново приложение за контрол на силата на звука, както е описано в Как да програмирате метален детектор на базата на Arduino. Това позволява да се разграничат свойствата на целта, както и да се усети силата на сигнала. Високоговорителят може да бъде свързан към допълнителния 5 -пинов хедър. Останалите 3 пина на заглавката ще бъдат използвани за бутони (ще бъдат приложени).

Стъпка 2: Програмиране

Програмиране
Програмиране
Програмиране
Програмиране
Програмиране
Програмиране

Сега, когато веригата е проектирана и прототипът е изграден, е време да се намери подходящ подход за откриване на метал.

1. Преброяване на импулси

Преброяването на импулсите на трептенето до пълното му разпадане е една идея.

Ако в близост до бобината има метал, количеството на трептене намалява. В този случай референтното напрежение на компаратора трябва да бъде настроено на ниво, при което последният импулс едва се измерва. Така че в случай, че се открие нещо, този импулс веднага изчезва. Това беше малко проблематично.

Всяка вълна от трептенето създава две прекъсвания. Едно при спускане и едно връщане нагоре. За да настроите референтното напрежение точно на гребена на трептяща вълна, времето между слизане и изкачване трябва да бъде възможно най -кратко (вижте снимката). За съжаление тук режийните разходи на средата Arduino създават проблеми.

Всеки тригер на прекъсването извиква този код:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // запаметяване на последната стойност Toggle0 = TCNT1; // получавам нова стойност}

Този код отнема известно време (ако си спомням правилно, около 78 цикъла на инструкции, които са около 5 микросекунди при 16MHz). Следователно минималното откриваемо разстояние между два импулса е точно времето, което отнема този код. Ако времето между два тригера стане по -кратко (вижте снимката), то ще остане незабелязано, тъй като кодът се изпълнява напълно преди откриването на второ прекъсване

Това води до загуба на чувствителност. В същото време забелязах, че затихването на трептенията е много чувствително към всякакви външни влияния, което прави този подход като цяло малко труден.

2. Измерване на честотата

Друг начин за откриване на метал е измерването на честотата на трептене. Това има голямо предимство в сравнение с измерването на затихването на трептенията, тъй като промяната в честотата позволява дискриминация на метала. В случай, че в близост до бобината има железен материал, честотата ще се забави, в случай, че в близост до бобината има благороден метал, честотата ще се увеличи.

Най -лесният начин за измерване на честотата е да се измери количеството импулси, след като бобините започнат да се колебаят. Периодът от време между началния и последния импулс, разделен на общото количество измерени импулси, е честотата. За съжаление последните няколко трептения са доста несиметрични. Тъй като наличието на метал също влияе върху разпадането на трептенията, последните трептения са още по -несиметрични, показанията са трудни за интерпретиране. На снимката това е показано с пресичане 1 до 1’и 2 до 2’.

Следователно по -добър начин е да се използват някои по -ранни импулси за измерване на честотата. Интересно при тестването открих, че някои импулсни импулси са по -чувствителни от други. Някъде при 2/3 от трептенията е добра точка за получаване на данните.

Обработка на данните

Първоначалният код, базиран на цикъла (), извикващ функция pulse (), за да извърши синхронизацията на намотката. Въпреки че резултатите не бяха лоши, имах желание да подобря времето. За да направя това, създадох код, изцяло базиран на таймер, водещ до отделния инстуктируем начин за програмиране на метален детектор, базиран на Arduino. Тази инструкция обяснява подробно времето, изчистването на данни на LCD изхода и т.н.

1. LCD

Първият подход беше да се измерват 10 импулса и след това да се покажат стойностите на LCD. Тъй като разбрах, че преносът на данни I2C е твърде бавен, промених кода, за да актуализирам само един знак на импулс.

2. Подход за минимална стойност

За да подобря стабилността на показанията по -нататък, написах процедура за сериен изход, за да получа по -добро усещане за измерените данни. Там стана очевидно, че въпреки че повечето от показанията бяха донякъде стабилни, някои не! Някои показания на „един и същ“импулс на трептене бяха толкова далеч един от друг, че това би разрушило всеки подход за анализ на промяна в честотата.

За да компенсирам това, създадох „граница“, в рамките на която стойността беше надеждна. I. e. когато стойностите бяха на повече от 35 цикъла на таймер1 от очакваната стойност, тези стойности бяха игнорирани (обяснено подробно в инструкцията "Как да програмирате метален детектор на базата на Arduino")

Този подход се оказа много стабилен.

3. Напрежението

Оригиналният дизайн на Teemo се захранва под 5 волта. Тъй като предположенията ми бяха „повече волта = повече мощност = по -голяма чувствителност“, захранвах устройството в началото с 12V. Това доведе до загряване на MOSFET. След това нагряването доведе до общо отклонение на измерените стойности, което доведе до често пребалансиране на детектора. Чрез намаляване на напрежението до 5V, генерирането на топлина на MOSFET може да бъде сведено до минимум до ниво, при което почти не се наблюдава отклонение на показанията. Това направи веригата още по-опростена, тъй като регулаторът на напрежението на борда на Arduino вече не беше необходим.

За MOSFET първоначално избрах IRL540. Този MOSFET е съвместим с логическо ниво, но има максимално номинално напрежение 100V. Надявах се по -добро представяне да се промени към IRL640 с 200V номинални стойности. За съжаление резултатите бяха същите. Така че IRL540 или IRL640 ще свършат работа.

Стъпка 3: Крайни резултати

Крайни резултати
Крайни резултати
Крайни резултати
Крайни резултати
Крайни резултати
Крайни резултати

Предимството на детектора е, че той прави разлика между скъпоценни и черни материали. Недостатъкът е, че чувствителността с тази проста схема не е толкова добра. За да сравня производителността, използвах същите справки като за детектора Flip-Coil. Вероятно е добре за някои конкретни точки, но най -вероятно разочароващо за истинско търсене.

Тук оригиналният дизайн с PIC контролера може да е по -чувствителен, тъй като работи на 32MHz вместо на 16MHz на терфора, осигуряващ по -висока разделителна способност за откриване на промени в честотата.

Резултатите бяха постигнати чрез използване на бобина с 48 завъртания на 100 мм.

Както винаги, отворени за обратна връзка

Препоръчано: