Mundarija:

Arduino asosidagi pulsli indüksiyon detektori - burilish bobini: 5 qadam (rasmlar bilan)
Arduino asosidagi pulsli indüksiyon detektori - burilish bobini: 5 qadam (rasmlar bilan)

Video: Arduino asosidagi pulsli indüksiyon detektori - burilish bobini: 5 qadam (rasmlar bilan)

Video: Arduino asosidagi pulsli indüksiyon detektori - burilish bobini: 5 qadam (rasmlar bilan)
Video: Uskunalar yasab berish. Avtomatika, Arduino 2024, Iyul
Anonim
Arduino asosidagi pulsli indüksiyon detektori - burilish lasan
Arduino asosidagi pulsli indüksiyon detektori - burilish lasan
Arduino asosidagi pulsli indüksiyon detektori - burilish lasan
Arduino asosidagi pulsli indüksiyon detektori - burilish lasan

Fikr

O'tmishda turli xil natijalarga ega bo'lgan metall detektorlarni qurganimdan so'ng, men Arduino -ning bu yo'nalishdagi imkoniyatlarini o'rganmoqchi edim.

Arduino -da metall detektorlarni yasashning yaxshi misollari bor, ba'zilari bu erda ko'rsatma sifatida. Ammo ularni ko'rib chiqishda, odatda, analog signalni qayta ishlash uchun bir qancha tashqi komponentlar kerak bo'ladi yoki sezuvchanlik past bo'ladi.

Metall detektorlar haqida o'ylayotganda, asosiy mavzu - qidiruv bobini bilan bog'liq signallarda kuchlanishning engil o'zgarishini qanday sezish. Bu o'zgarishlar odatda juda kichik. Eng aniq yondashuv ATmega328 analog kirishlaridan foydalanish bo'ladi. Ammo texnik xususiyatlarga qaraganda, ikkita asosiy muammo bor: ular (tez -tez) sekinlashadi va hal qilish (ko'p hollarda) past bo'ladi.

Boshqa tomondan, Arduino 16 MGts chastotada ishlaydi va vaqtni aniqlash imkoniyatlariga ega. e. soat tezligidan foydalansangiz, o'lchamlari 0,0625 mS. Analog kirishni sezish uchun ishlatishning o'rniga, kuchlanishdagi kichik dinamik o'zgarishlarni sezishning eng oddiy usuli - bu vaqt o'tishi bilan belgilangan mos yozuvlar kuchlanishidagi kuchlanish pasayishining o'zgarishini solishtirish.

Shu maqsadda ATmega328 D6 va D7 o'rtasidagi ichki taqqoslagichning aniq xususiyatiga ega. Bu taqqoslash hodisani aniq boshqarishga imkon beradigan uzilishni boshlashi mumkin. Milis () va micos () kabi aniq kodlangan vaqt tartibidan tashqari, ATmega328 -ning yuqori aniqlikdagi ichki taymeriga o'tib, Arduino metallni aniqlash usullari uchun ajoyib asosdir.

Shunday qilib, manba kodi ko'rinishidan, kirish polaritesining "o'zgarishi" uchun ichki taqqoslagichni dasturlash va o'zgarish vaqtini o'zgartirish uchun eng yuqori tezlikdagi ichki hisoblagichdan foydalanish yaxshi boshlanish bo'lar edi.

Bunga erishish uchun Arduidodagi umumiy kod:

// Barcha kerakli oldingi o'zgaruvchilarni belgilash va hokazo va registrlarni o'rnatish

imzosiz char soatSelectBits = _BV (CS10); // oldindan o'lchov yo'q, to'liq xtal void setup () {pinMode (6, INPUT); // + taqqoslagich - ularni INPUT qilib belgilab, // yuqori impedansli pinMode (7, INPUT) ga o'rnatiladi; // - taqqoslagich - ularni INPUT qilib, // yuqori impedansli cli () ga o'rnatiladi; // to'xtatish uzilishlar TCCR1A = 0; // butun TCCR1A registrini 0 ga o'rnating TCCR1B = 0; // TCCR1B uchun bir xil -> normal rejimTCNT1 = 0; // hisoblagich qiymatini 0 ga boshlash; TCCR1B | = clockSelectBits; // oldindan hisoblagichni o'rnatadi va soatni ishga tushiradi TIMSK1 = _BV (TOIE1); // taymerni to'ldirishni to'xtatishni belgilaydi bit sei (); // uzilishlarga ruxsat berish ACSR = (0 << ACD) | // Analog solishtiruvchi: yoqilgan (0 << ACBG) | // Analog Comparator Bandgap Select: AIN0 ijobiy kirishga qo'llaniladi (0 << ACO) | // Analog komparatorning chiqishi: O'chirilgan (1 << ACI) | // Analog taqqoslagichning uzilish bayrog'i: kutayotgan uzilishni tozalash (1 << ACIE) | // Analog komparatorning uzilishi: yoqilgan (0 << ACIC) | // Analog taqqoslash moslamasini kiritish: O'chirilgan (0 << ACIS1 | 0 << ACIS0 // chiqish tugmachasida uzilish // (0 << ACIS1 | 1 << ACIS0 // zahiralangan // (1 << ACIS1 | 0 <<) ACIS0 // tushayotgan chiqish chetida uzilish // (1 << ACIS1 | 1 << ACIS0 // ko'tarilgan kirish chetida uzilish;}

// bu tartib har safar taqqoslagich uzilish yaratganda chaqiriladi

ISR (ANALOG_COMP_vect) {oldSREG = SREG; cli (); timeStamp = TCNT1; SREG = oldSREG; }

// bu tartib har safar ichki hisoblagichda to'lib toshganida chaqiriladi

ISR (TIMER1_OVF_vect) {timer1_overflow_count ++; }

// bu tartib taymerni 0 ga qaytarish uchun ishlatiladi

void resetTimer (void) {oldSREG = SREG; cli (); // uzilishlarni o'chirish TCNT1 = 0; // hisoblagich qiymatini 0 ga o'rnatish SREG = oldSREG; // TCCR1B holat registrini tiklash | = clockSelectBits; // oldindan hisoblagichni o'rnatadi va soatni ishga tushiradi timer1_overflow_count = 0; // to'ldirish hisoblagichini tiklaydi}

Albatta, bu fikr mutlaqo yangi emas. Ushbu kodning asosiy qismini boshqa joydan topish mumkin. TPIMD - Tiny Pulse Induksion metall detektori bosh sahifasida topilgan mikrokontrolderlarning bunday yaqinlashuvining yaxshi usuli.

www.miymd.com/index.php/projects/tpimd/ (afsuski, bu sahifa endi onlayn emas, hozirda www.basic4mcu.com saytining zaxira nusxasi mavjud, "TPIMD" ni qidiring).

1 -qadam: Arduino pulsli indüksiyon g'oyasi - burilish lasan

Arduino pulsli indüksiyon g'oyasi - burilish lasan
Arduino pulsli indüksiyon g'oyasi - burilish lasan
Arduino pulsli indüksiyon g'oyasi - burilish lasan
Arduino pulsli indüksiyon g'oyasi - burilish lasan

Fikr Arduino -ni TPIMD -dagi kabi impulsli indüksiyon detektori sifatida ishlatishdir, chunki parchalanish egri chizig'ining vaqtini aniqlash g'oyasi juda yaxshi ishlaydi. Pulse indüksiyon detektorlarining muammosi shundaki, ular odatda ishlashi uchun har xil kuchlanishni talab qiladi. Bobini quvvatlantirish uchun bitta kuchlanish va parchalanish egri chizig'ini hal qilish uchun alohida kuchlanish. Bu ikkita kuchlanish manbai puls indüksiyon detektorlarini har doim biroz murakkablashtiradi.

PI detektoridagi lasanning kuchlanishiga qarab, hosil bo'lgan egri chiziqni ikki xil bosqichga bo'lish mumkin. Birinchi bosqich - bu impulsning o'zi rulonni quvvatlantirishi va magnit maydonini hosil qilishi (1). Ikkinchi bosqich-bu kuchlanish cho'qqisidan boshlanadigan, so'ngra lasanning (2) "kuchsiz" kuchlanishiga tez aylanadigan kuchlanishning pasayish egri chizig'i. Muammo shundaki, rulon pulsdan keyin qutblanishini o'zgartiradi. Puls musbatmi (Var 1. ilova qilingan rasmda) parchalanish egri chizig'i manfiy. Puls manfiy bo'ladimi, parchalanish egri chizig'i ijobiy bo'ladi (biriktirilgan rasmda 2. Var)

Ushbu asosiy muammoni hal qilish uchun impulsdan keyin rulonni elektron tarzda "ag'darish" kerak. Bu holda puls musbat va parchalanish egri ham ijobiy bo'lishi mumkin.

Bunga erishish uchun lasanni impulsdan keyin Vcc va GND dan ajratish kerak. Hozirgi vaqtda amortizator qarshiligidan faqat oqim oqadi. Bu izolyatsiya qilingan amortizatorli rulonli tizim har qanday moslama kuchlanishiga "yo'naltirilgan" bo'lishi mumkin. Bu nazariy jihatdan birlashgan ijobiy egri chizig'ini hosil qiladi (chizmaning pastki qismi)

Bu ijobiy egri chiziqni taqqoslash moslamasidan foydalanib, parchalanish zo'riqishining mos yozuvlar kuchlanishini "kesib o'tadigan" vaqt nuqtasini aniqlash uchun ishlatish mumkin. Sarguzasht yaqinida xazinalar bo'lsa, parchalanish egri o'zgaradi va mos yozuvlar kuchlanishining o'tish vaqti o'zgaradi. Bu o'zgarish aniqlanishi mumkin.

Bir oz tajriba o'tkazgandan so'ng, quyidagi sxema o'z ishini ko'rsatdi.

Zanjir Arduino Nano modulidan iborat. Ushbu modul D10 orqali rulonni (SV3 da) quvvatlaydigan ikkita MOSFET tranzistorini boshqaradi. D10 dagi puls tugaganda, ikkala MOSFET ham 12V va GND bobinlarini izolyatsiya qiladi. Bobinda saqlangan energiya R2 (220 Ohm) orqali oqadi. Shu bilan birga, R1 (560 Ohm) rulonning oldingi ijobiy tomonini GND bilan bog'laydi. Bu R5 (330 Ohm) da salbiy parchalanish egri chizig'ini ijobiy egri chiziqqa o'zgartiradi. Diodlar Arduino kirish pinini himoya qiladi.

R7 - taxminan 0,04 V kuchlanishli kuchlanish. Hozirgi vaqtda D7 da parchalanish egri chizig'i D6 da 0,04 ga qaraganda ko'proq salbiy bo'ladi, uzilish tetiklanadi va puls tugagandan keyingi davomiylik saqlanadi.

Qoplamaga yaqin metall bo'lsa, parchalanish egri uzoq davom etadi va pulsning oxiri bilan uzilish orasidagi vaqt uzayadi.

2 -qadam: Detektorni yaratish (non paneli)

Detektorni yaratish (non paneli)
Detektorni yaratish (non paneli)
Detektorni yaratish (non paneli)
Detektorni yaratish (non paneli)
Detektorni yaratish (non paneli)
Detektorni yaratish (non paneli)

Detektorni yaratish juda oson. Buni non taxtasida (asl sxemaga yopishgan holda) yoki qismlarni tenglikni lehimlash orqali amalga oshirish mumkin.

Arduino Nano doskasidagi D13 diodli metall metall ko'rsatkichi sifatida ishlatiladi

Non taxtasini ochish - bu detektorning ishlashining eng tezkor usuli. Juda ko'p simlar kerak, lekin buni kichik non taxtasida qilish mumkin. Rasmlarda bu 3 bosqichda ko'rsatilgan, chunki Arduino va MOSFETlar ba'zi simlarni yashirishadi. Sinov paytida men qandaydir tarzda diodlarni uzib qo'ydim, lekin buni sezmay qoldim. Bu detektorning xatti -harakatiga salbiy ta'sir ko'rsatmadi. PCB versiyasida men ularni butunlay tashlab qo'ydim.

0.96 OLED -displeyga ulanish rasmlarda ko'rsatilmagan. Bu displey ulangan:

Vcc - 5V (Arduino pinida, besleme zo'riqishida emas !!!)

GND - GND

SCL - A5

SDA - A4

Bu OLED -displey dastlab detektorni kalibrlash uchun kerak. Bu Arduino PIN6 -ga to'g'ri kuchlanishni o'rnatish orqali amalga oshiriladi. Bu kuchlanish 0,04 V atrofida bo'lishi kerak. Displey to'g'ri kuchlanishni o'rnatishga yordam beradi.

Non paneli versiyasi juda yaxshi ishlaydi, garchi u yovvoyi tabiatga chiqish uchun mos bo'lmasa ham.

3 -qadam: PCBga o'tish

PCB ketmoqda
PCB ketmoqda
PCB ketmoqda
PCB ketmoqda
PCB ketmoqda
PCB ketmoqda
PCB ketmoqda
PCB ketmoqda

Lehimlashga kelsak, men ikki tomonlama yuqori texnologiyali tenglikni yoqtirmayman, shuning uchun men sxemani bir tomonlama PCBga mos ravishda o'zgartirdim.

Quyidagi o'zgartirishlar kiritildi:

1. diodlar tashqarida qoldi.

2. MOSFET eshiklari 10 Ohm qarshilikka ega bo'ldi

3. D6 da kuchlanish bo'luvchi uchun besleme zo'riqishi D8 da yuqori darajali signal bilan beriladi

4. MOSFET uchun haydovchi pinasi o'zgartirildi.

Shunday qilib, universal tenglikni lehimlanadigan bir tomonlama PCB yaratilishi mumkin. Ushbu sxemadan foydalanib, sizda faqat 8-10 tashqi komponentli ishlaydigan OT detektori bo'ladi (OLED displey va/yoki karnay ishlatilishiga qarab).

4 -qadam: Detektorni o'rnatish va ishlatish

Detektorni o'rnatish va ishlatish
Detektorni o'rnatish va ishlatish
Detektorni o'rnatish va ishlatish
Detektorni o'rnatish va ishlatish
Detektorni o'rnatish va ishlatish
Detektorni o'rnatish va ishlatish

Agar detektor to'g'ri tuzilgan bo'lsa va dastur Arduino -ga yozilgan bo'lsa, qurilmani o'rnatishning eng oson yo'li (agar bo'lmasa ham) - OLED -displeydan foydalanish. Displey 5V, GND, A4, A5 ga ulangan. Jihoz yoqilgandan so'ng displeyda "kalibrlash" ko'rsatilishi kerak. Bir necha soniyadan so'ng "kalibrlash bajarildi" deb yozilishi kerak va displeyda uchta raqam ko'rsatilishi kerak.

Birinchi raqam - kalibrlash paytida aniqlangan "mos yozuvlar qiymati". Ikkinchi qiymat-bu oxirgi o'lchovning oxirgi qiymati va uchinchi qiymati-oxirgi 32 o'lchovning o'rtacha qiymati.

Bu uchta qiymat bir xil bo'lishi kerak (mening test holatimda 1000 dan kichik). O'rta qiymat ko'p yoki kamroq barqaror bo'lishi kerak.

Dastlabki o'rnatishni boshlash uchun rulon yaqinida metall bo'lmasligi kerak.

Endi kuchlanishni ajratuvchi (trim potansiometr) kesilishi kerak, shunda ham past o'qish davom etar ekan, pastki ikkita qiymat maksimal darajada o'rnatilishi kerak. O'rta qiymat g'alati o'qishni boshlaydigan muhim parametr mavjud. Qayta barqaror qiymatlarni olish uchun trimmerni orqaga burang.

Ehtimol, displey muzlab qolishi mumkin. Qayta tiklash tugmachasini bosing va qaytadan boshlang.

O'rnatish uchun (bobin: 20 sm @ 18 burilish) barqaror qiymat 630-650 atrofida. O'rnatilgandan so'ng, reset tugmachasini bosing, qurilma qayta kalibrlanadi va barcha daraxt qiymatlari yana bir xil diapazonda bo'lishi kerak. Agar metall endi rulonga keltirilsa, Arduino-Board (D13) diodidagi chiroq yonishi kerak. Qo'shilgan karnay bir necha marta bosish tovushini beradi (u erda dasturlashni yaxshilash uchun joy bor).

Katta umidlarning oldini olish uchun:

Detektor ba'zi narsalarni aniqlaydi, lekin u juda oddiy va cheklangan detektor bo'lib qoladi.

Qobiliyatlar haqida taassurot qoldirish uchun, boshqa detektorlar yordamida bir nechta ma'lumotlarga murojaat qildik. Natijalarga qaraganda, bu faqat 8 ta tashqi qismga ega, lekin professional detektorlarga mos kelmaydigan detektor uchun juda ta'sirli.

Sxema va dasturga qaraganda, takomillashtirish uchun juda ko'p joy bor. Rezistorlar qiymatlari tajriba yordamida aniqlandi, 250ms puls vaqti tasodifiy tanlandi, shuningdek, bobin parametrlari. Agar sizda yaxshilanish g'oyalari bo'lsa, men ularni muhokama qilishdan xursand bo'laman.

Maza qiling!

5 -qadam: 1 -yangilanish: 16x2 o'lchamli LCD displeydan foydalanish

1 -yangilanish: 16x2 o'lchamli LCD displeydan foydalanish
1 -yangilanish: 16x2 o'lchamli LCD displeydan foydalanish
1 -yangilanish: 16x2 o'lchamli LCD displeydan foydalanish
1 -yangilanish: 16x2 o'lchamli LCD displeydan foydalanish
1 -yangilanish: 16x2 o'lchamli LCD displeydan foydalanish
1 -yangilanish: 16x2 o'lchamli LCD displeydan foydalanish

Yaxshilashlar

Keyingi sinovlar davomida I2C OLED -displey kutubxonasi ancha vaqt sarflaganini tushundim. Shuning uchun men uning o'rniga I2C konvertori bo'lgan 16x2 displeydan foydalanishga qaror qildim.

Shunday qilib, men dasturni LCD displeyda qabul qildim va ba'zi foydali xususiyatlarni qo'shdim. Endi displeyning birinchi qatorida mumkin bo'lgan ko'rsatkichning signal kuchi ko'rsatilgan. Ikkinchi satrda ikkita qiymat ko'rsatilgan. Musht kalibrlash qiymatiga nisbatan joriy signalning burilishini ko'rsatdi. Bu qiymat "0" bo'lishi kerak. Agar bu qiymat doimo manfiy yoki musbat bo'lsa, detektorni reset tugmasini bosib qayta kalibrlash kerak. Ijobiy qiymatlar lasan yaqinidagi metallni ko'rsatadi.

Ikkinchi qiymat parchalanish egri chizig'ining haqiqiy kechikish qiymatini ko'rsatadi. Odatda bu qiymat unchalik qiziq emas, lekin detektorni dastlabki sozlash uchun kerak.

Endi dastur bir nechta puls davomiyligini ketma -ketlik bilan bajarishga imkon beradi (tajribani o'tkazish / ishlashni yaxshilash vositalari). Men hech qanday muvaffaqiyatsizlikka erishmadim. Shunday qilib, standart pulsning davomiyligiga o'rnatiladi.

Detektorni dastlabki sozlash

Detektorni o'rnatishda ikkinchi qatorning ikkinchi qiymati mos keladi (birinchisini e'tiborsiz qoldirish mumkin). Dastlab, qiymat "beqaror" bo'lishi mumkin (rasmga qarang). Qiymat barqaror o'qishga kelguncha trim rezistorini aylantiring. Keyin qiymatni maksimal barqaror qiymatga oshirish uchun aylantiring. Qayta kalibrlash uchun reset tugmasini bosing va detektor ishga tayyor.

Men maksimal barqaror qiymatni o'rnatib, temir bo'lmagan metallarga sezgirlikni yo'qotdim degan taassurot oldim. Demak, temir bo'lmagan narsalarga yaxshi sezgir bo'lish uchun sozlamalarni sinab ko'rishga arziydi.

Bobinlar

Men keyingi sinov uchun 3 ta rulon quraman

1 -> 200 mm uzunlikdagi 18 burilish

2 -> 100 mm ga 25 burilish

3 -> 100 mm uzunlikdagi 48 burilish

Qizig'i shundaki, barcha rulonlar juda yaxshi ishlagan, deyarli bir xil ko'rsatkichga ega (havoda 40-50 mm bo'lgan 20ctli tanga). Bu juda sub'ektiv kuzatuv bo'lishi mumkin.

Tavsiya: