Съдържание:
Видео: Импулсен детектор на базата на Arduino - LC -капан: 3 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:53
Докато търсех допълнителни идеи за прост метален детектор 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 мм.
Както винаги, отворени за обратна връзка
Препоръчано:
Esp8266 Часовник и импулсен генератор: 3 стъпки
Esp8266 Часовник и импулсен генератор: Тази инструкция е за проста част от тестово оборудване; генератор на часовник и импулс. Той използва хардуерен интерфейс i2S на esp8266 за генериране на тестови часовник или импулсна последователност. Това улеснява сглобяването, тъй като не се изисква специален хардуер
Индукционен металдетектор на базата на Arduino на базата на DIY: 5 стъпки
DIY Ардуино базиран импулсен метален детектор: Това е сравнително прост металдетектор с отлични характеристики
Устройство за импулсен оксиметър, използващо Arduino Nano, MAX30100 и Bluetooth HC06 .: 5 стъпки
Устройство за пулсоксиметър, използващо Arduino Nano, MAX30100 и Bluetooth HC06 .: Хей, момчета, днес ще изградим сензорно устройство, което да отчита нивото на кислород в кръвта и честотата на сърдечните удари по неинвазивен начин, използвайки сензора MAX30100. е решение за сензор за пулсова оксиметрия и сърдечен ритъм. Той съчетава две
Импулсен детектор на базата на Arduino - флип бобина: 5 стъпки (със снимки)
Импулсен индукционен детектор на базата на Arduino - Flip Coil: Идеята Създавайки някои металотърсачи в миналото с различни резултати, исках да проуча възможностите на Arduino в тази посока. Има някои добри примери за това как да се изграждат металотърсачи с Arduino, някои тук като инструкция
Arduino DCF77 импулсен часовник: 13 стъпки (със снимки)
Arduino DCF77 Pulse Clock: Въведение Тази инструкция ви показва как да направите цифров импулсен часовник и да го добавите към стар 12 " (300 мм) часовник или циферблат & рамка. Използвал съм стар английски часовник за набиране с 12 " наберете, но всеки часовник с достатъчно голям корпус може да се използва