Мазмұны:

Arduino негізіндегі импульсті индукциялық детектор - LC -Trap: 3 қадам
Arduino негізіндегі импульсті индукциялық детектор - LC -Trap: 3 қадам

Бейне: Arduino негізіндегі импульсті индукциялық детектор - LC -Trap: 3 қадам

Бейне: Arduino негізіндегі импульсті индукциялық детектор - LC -Trap: 3 қадам
Бейне: Бакалавриат_СТ_МИСИК2_лекция 10 2024, Қараша
Anonim
Arduino негізіндегі импульсті индукциялық детектор - LC -Trap
Arduino негізіндегі импульсті индукциялық детектор - LC -Trap

Тек бір кернеуі бар қарапайым Ardino Pulse Induction металл детекторы туралы басқа идеяларды іздеу кезінде мен Teemo -ның басты бетін кездестірдім:

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

Ол LC-Trap принципін қолдана отырып, қарапайым импульстік индукция детекторын жасады. Ұқсас схемалар мұнда Instructable by TechKiwiGadgets -те орналастырылған. Тек Teemo схемасы PIC микроконтроллерінің ішкі компараторларын пайдаланады, сондықтан сыртқы компоненттер аз қажет.

Сондықтан мен осы схема үшін PIC-контроллердің орнына Arduino-ны қолдануға және қаншалықты алыс жүре алатынымды білуге шақырылдым.

1 -қадам: Схемалық

Схемалық
Схемалық
Схемалық
Схемалық
Схемалық
Схемалық

Arduino схемасы біршама күрделі, өйткені Arduino ішкі аналогтық сигналды компаратордың кірісіне жіберуге мүмкіндік бермейді. Бұл қарапайым кернеуді өлшеуге арналған екі компонентті қосады. Бұл Flip Coil дизайнындағы 9 -мен салыстырғанда 12 сыртқы компоненттері бар дизайнға әкеледі (динамик пен 16x2 СКД).

Схеманың жұмыс принципі Teemo сайтында өте жақсы түсіндірілген. Негізінен катушкаға қуат беріледі, содан кейін өшіріледі. Өшіргеннен кейін катушка мен конденсатор параллельді түрде тербеліс жасайды. Тербелістің жиілігі мен ыдырауына катушкаға жақын орналасқан металл әсер етеді. Схема туралы толығырақ ақпарат алу үшін Teemo немесе TechKiwi бетін нұсқаулықтардан қараңыз.

Flip Coil Pulse Induction детекторындағыдай, мен ішкі компараторды және катушкадан сигнал алу үшін үзілісті іске қосу мүмкіндігін қолданамын.

Бұл жағдайда мен бірнеше үзіліс аламын, себебі кернеу компараторда орнатылған эталондық кернеудің айналасында тербеледі. Тербелістің соңында катушкадағы кернеу шамамен 5В болады, бірақ дәл емес. Мен шамамен 4,9 вольт кернеуді алу үшін 200 Ом және 10к Ом кернеуді өлшеуішті таңдадым

Схемалардың күрделілігін төмендету үшін мен D4 және D5 GND (10к резистор үшін) және 5В (220 Ом резистор үшін) қамтамасыз ету үшін қолдандым. Ілмектер детекторды іске қосқанда орнатылады.

Бұл нұсқада мен Arduino негізіндегі металл детекторын қалай бағдарламалау керектігі сипатталғандай дыбыс деңгейін басқарылатын көп тонды аппаратураны қолданып динамик қосылымын қостым. Бұл мақсаттың қасиеттерін ажыратуға, сондай -ақ сигнал күшін сезінуге мүмкіндік береді. Динамикті қосымша 5 істікшелі тақырыпқа қосуға болады. Тақырыптың қалған 3 түйреуіші түймелер үшін қолданылады (орындалады).

2 -қадам: бағдарламалау

Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау
Бағдарламалау

Енді схема жасалып, прототипі құрастырылған кезде, металды табудың лайықты әдісін табатын кез келді.

1. Импульстарды санау

Тербелістің импульсін толық ыдырағанға дейін санау - бір идея.

Егер катушка жанында металл болса, тербеліс мөлшері азаяды. Бұл жағдайда компаратордың эталондық кернеуін соңғы импульс әлі де болса өлшенбейтін деңгейге қою керек. Егер бірдеңе анықталса, бұл импульс бірден жоғалады. Бұл біраз проблемалық болды.

Тербелістің әрбір толқыны екі үзіліс жасайды. Бірі төмен түсіп, бірі артқа қарай жүреді. Анықтамалық кернеуді тербеліс толқынының шыңына дәл орнату үшін төмен түсу мен көтерілу арасындағы уақыт мүмкіндігінше қысқа болуы керек (суретті қараңыз). Өкінішке орай, мұнда Arduino ортасының үстеме шығыны қиындық туғызады.

Үзілістің әр триггері осы кодты шақырады:

ISR (ANALOG_COMP_vect) {

Toggle1 = Toggle0 // соңғы мәнді сақтау Toggle0 = TCNT1; // жаңа мән алу}

Бұл код біраз уақытты алады (егер есімде болса, шамамен 78 нұсқаулық цикл шамамен 16 мГц 5 микросекунд). Сондықтан екі импульстің арасындағы анықталатын ең аз қашықтық дәл осы кодты алады, егер екі триггер арасындағы уақыт қысқарса (суретті қараңыз), ол анықталмайды, себебі код екінші үзілісті анықтағанға дейін толық орындалады.

Бұл сезімталдықтың жоғалуына әкеледі. Сонымен қатар, мен тербелістерді бәсеңдету кез келген сыртқы әсерлерге өте сезімтал екенін байқадым, осылайша бұл тәсілді біршама қиындатады.

2. Жиілікті өлшеу

Металды анықтаудың тағы бір әдісі - тербеліс жиілігін өлшеу. Бұл тербелістің өшуін өлшеуге қарағанда үлкен артықшылыққа ие, өйткені жиіліктің өзгеруі металды кемсітуге мүмкіндік береді. Егер катушканың жанында қара материал болса, жиілік баяулайды, егер катушка жанында қымбат металл болса, жиілік артады.

Жиілікті өлшеудің ең оңай жолы - катушкалар тербеліс басталғаннан кейін импульстар мөлшерін өлшеу. Басталу мен соңғы импульс арасындағы уақыт кезеңі өлшенген импульстардың жалпы мөлшеріне бөлінеді - жиілік. Өкінішке орай, соңғы бірнеше тербелістер өте симметриялы емес. Металдың болуы тербелістің ыдырауына әсер ететіндіктен, соңғы тербелістер одан да симметриялы емес, көрсеткіштерді түсіндіру қиын. Суретте бұл 1 -ден 1 -ге дейін және 2 -ден 2 -ге дейінгі қиылыспен көрсетілген.

Жақсы әдіс - жиілікті өлшеу үшін бұрынғы импульстарды қолдану. Тестілеу кезінде бір қызығы мен білдім, кейбір импульстар басқаларға қарағанда сезімтал. Тербелістің 2/3 бөлігінде деректерді алу үшін жақсы нүкте.

Деректерді өңдеу

Циклдың () цикліне негізделген бастапқы код катушканың уақытын жасау үшін импульс () функциясын шақырады. Нәтижелер жаман болмаса да, мен уақытты жақсартуға ұмтылдым. Мұны істеу үшін мен Arduino негізіндегі металл детекторын қалай бағдарламалауға болатынын көрсететін толық таймерге негізделген код жасадым. Бұл нұсқаулық уақытты, СКД шығысын және т

1. СКД

Бірінші әдіс 10 импульсті өлшеу, содан кейін СКД -де мәндерді көрсету болды. Мен I2C деректерді беру өте баяу екенін білдім, мен импульсте тек бір таңбаны жаңарту үшін кодты өзгерттім.

2. Минималды құндылық әдісі

Оқылымдардың тұрақтылығын одан әрі жақсарту үшін мен өлшенетін деректерді жақсы сезіну үшін сериялық шығару тәртібін жаздым. Көрсеткіштердің көпшілігі біршама тұрақты болғанымен, кейбіреулері тұрақсыз екені белгілі болды! «Бірдей» тербеліс импульсінің кейбір оқулары бір -бірінен алшақ болғандықтан, жиіліктің өзгеруін талдаудың кез келген тәсілін бұзады.

Мұны өтеу үшін мен құндылықтар сенімді болатын «шекара» құрдым. I. e. мәндер күтілетін мәннен 35 таймердің 1 циклінен артық болғанда, бұл мәндер еленбеді («Arduino негізіндегі металл детекторын қалай бағдарламалау керек» нұсқаулығында егжей -тегжейлі түсіндірілген)

Бұл тәсіл өте тұрақты болып шықты.

3. Кернеу

Teemo -ның түпнұсқалық дизайны 5 вольттан төмен. Менің болжамым «көп вольт = көп қуат = сезімталдық» болғандықтан, мен құрылғыны бастапқыда 12 В қуаттандырдым. Бұл MOSFET -тің қызуына әкелді. Бұл қыздыру өлшенген мәндердің жалпы ауытқуына әкелді, бұл детекторды жиі қайта теңестіруге әкелді. Кернеуді 5В дейін төмендету арқылы MOSFET -тің жылу генерациясын көрсеткіштердің дрейфі байқалмайтын деңгейге дейін азайтуға болады. Бұл схеманы одан да қарапайым етті, өйткені Arduino борттық кернеу реттегіші енді қажет болмады.

MOSFET үшін мен бастапқыда IRL540 таңдадым. Бұл MOSFET логикалық деңгейге сәйкес келеді, бірақ кернеудің максималды мәні 100В құрайды. Мен 200В рейтингі бар IRL640 деңгейіне ауысатын жақсы өнімділікке үміттендім. Өкінішке орай, нәтижелер бірдей болды. Сондықтан IRL540 немесе IRL640 бұл жұмысты орындайды.

3 -қадам: Соңғы нәтижелер

Соңғы нәтижелер
Соңғы нәтижелер
Соңғы нәтижелер
Соңғы нәтижелер
Соңғы нәтижелер
Соңғы нәтижелер

Детектордың артықшылығы - ол қымбат және қара түсті материалдарды ажыратады. Кемшілігі - бұл қарапайым схеманың сезімталдығы соншалықты жақсы емес. Өнімділікті салыстыру үшін мен Flip-Coil детекторындағы сілтемелерді қолдандым. Мүмкін, кейбіреулер дәл анықтай алады, бірақ шынымен іздеу көңілсіз болады.

Мұнда PIC контроллері бар түпнұсқа дизайн сезімтал болуы мүмкін, себебі ол термостің 16 МГц орнына 32 МГц жиілікте ауысуды анықтау үшін жоғары ажыратымдылықты қамтамасыз етеді.

Нәтижелерге 48 мм @ 100мм катушканы қолдану арқылы қол жеткізілді.

Әдеттегідей, кері байланыс үшін ашық

Ұсынылған: