Tās īpatnība ir tāda, ka ierīce ir izgatavota cimda formā, ir gan elektroniskā daļa, gan meklēšanas spole. Metāla detektors tika izveidots, lai meklētu mājā pazaudētas sīkas metāla lietas, piemēram, auskarus, gredzenus un citas lietas. Tomēr, pamatojoties uz šo shēmu, jūs varat izgatavot klasisku metāla detektoru āra darbiem. Lai izgatavotu ierīci, jums būs nepieciešams minimāls materiālu daudzums, lauvas tiesu uzdevumu atrisina Arduino mikrokontrolleris.

Metāla detektora jauda ir maza, taču sadzīves vajadzībām ar to pilnīgi pietiek.


Materiāli un instrumenti ražošanai:
- Arduino UNO mikrokontrolleris;
- 28 gabarīta stieple (diametrs 0,32 mm);
- viens slēdzis;
- pjezo skaņas signāls;
- divi 10K rezistori;
- viens 1,2K rezistors;
- divi 100n kondensatori;
- divi 22n kondensatori;
- viens BC547 tipa tranzistors;
- 9V akumulators;
- celtniecības cimdi.

Jums būs nepieciešams arī saplāksnis, koka līme, lodāmurs ar lodmetālu, savīta stieple, maizes dēlis un citi sīkumi.

Metāla detektora ražošanas process:

Pirmais solis. Spoles izgatavošana
Lai izgatavotu spoli, jāizgriež pamatne, korpuss. Autors uz mašīnas griež saplākšņa spoli, tās diametrs ir 6 collas. Rezultāts ir divi gredzeni, kas pēc tam tiek salīmēti kopā ar koka līmi. Pēc žāvēšanas spoli rūpīgi apstrādā ar smilšpapīru, lai tā būtu gluda. Pēc pamatnes izgatavošanas uz tās var uztīt stiepli. Kopumā jums ir jāveic 30 stieples pagriezieni, atstājot savienojumu vismaz 5 collas garu. Vads ir cieši jāaptin, tas nodrošinās kvalitatīvu spoles darbību. Labākai fiksācijai spoli var aptīt ar elektrisko lenti vai lenti virs stieples.





Otrais solis. Ķēdes salikšana uz maizes dēļa
Lai pārliecinātos, ka spole ir pareizi salikta un visa sistēma darbojas pareizi, tā vispirms ir jāsamontē uz maizes dēļa un tikai pēc tam jāpielodē. Savienojuma secība nav svarīga, autors sāka ar tranzistoru, tad nāca rezistori un kondensatori. Pēc tam tika savienoti Arduino plates “vīriešu un sieviešu” savienotāji.












Pēc tam jūs varat pievienot spoli. Tā kā stieplei ir lakas pārklājums, tā galos jānokasa ar smilšpapīru vai asu nazi. Jāpanāk labs kontakts. Spole ir savienota, izmantojot "vīriešu un sieviešu" savienotājus. Pēc visu elementu montāžas kontrolierī varat lejupielādēt programmaparatūru un pārbaudīt, kā viss darbojas praksē.

Trešais solis. Programmaparatūras instalēšana un sistēmas pārbaude
Tālāk jums ir jālejupielādē programmaparatūra kontrolierī. Lai metāla detektors darbotos pareizi, var būt nepieciešams arī veikt dažus pielāgojumus kodā. Kad kods ir augšupielādēts, varat sākt testēšanu. Sistēmai jāpievieno 9 V barošanas avots un jāizslēdz slēdzis. Ja metāla detektors darbojas, varat sākt lodēt visus elementus uz tāfeles.


Ceturtais solis. Ķēžu lodēšana
Viss ir salikts uz PCB gabala, kontakti tiek pielodēti kopā, izmantojot stieples gabalus. Ja nepieciešams, ierīcei varat izgatavot īpašu dēli, izmantojot kodināšanas metodi. Sīkāk, kā ķēde tiek samontēta, varat redzēt fotoattēlā.





Piektais solis. Pēdējais montāžas posms
Dēļa nostiprināšanai autore izmanto saplākšņa gabalu. Tam jābūt tādam izmēram, lai tas atbilstu Arduino kontrollerim un iespiedshēmas platei. Malas ir jānoslīpē, lai tās būtu gludas. Lai pielīmētu elementus pie saplākšņa, varat izmantot abpusēju lenti. Derēs arī līme un jebkādas citas stiprināšanas metodes.

Plaši pazīstamā impulsa metāla detektora - "Pirate" - pārveidota versija, bet uz Arduino. Tam ir laba jutība pat mazām monētām. Stabils neatkarīgi no temperatūras un akumulatora uzlādes. Shēma ir pēc iespējas vienkāršota.

Viens no trūkumiem ir nespēja noteikt metāla veidu. Tikai metāla detektori ar radio izstarojošu noteikšanas principu var noteikt veidu (tie ir sarežģītas konstrukcijas un prasa precīzu regulēšanu). Savukārt impulsu metāla detektors darbojas, lai magnētiski noteiktu inducētās strāvas metālā. Indukcija meklēšanas laikā nav atšķirama melnajiem un krāsainajiem metāliem.

Starp citu, ir arī trešais metāla detektoru veids – frekvences detektors. Neefektīva un ļoti vienkārša konstrukcija, kuras pamatā ir magnētiskās ķēdes svārstību ģenerators, kas ir jutīgs pret spoles indukcijas lieluma izmaiņām. Mēs to neuzskatīsim zemas jutības dēļ. Personīgie eksperimenti, lai izstrādātu šādu dizainu, labākajā gadījumā ļāva atklāt pannu 20 cm dziļumā. Viņš reaģēja uz monētām tikai tukšajā diapazonā. Gandrīz bezjēdzīga lieta. Tāpēc viņš uzreiz no tā atteicās.


Mūsu impulsu metāla detektora ķēdei ir vairākas galvenās sastāvdaļas. Arduino ģenerē impulsus, tos pastiprina lauka efekta tranzistors (barošanas slēdzis), kas savukārt inducē impulsus spolē esošajā magnētiskajā laukā. Magnētiskais impulss pāriet uz vēlamo metālu un inducē tajā strāvu un pēc tam atgriešanās magnētiskā lauka signālu. Šī apgrieztā magnētiskā plūsma pēc īsas aiztures atgriežas atpakaļ metāla detektora spolē un ģenerē impulsu. Signāls iet pa diožu pāri (diodes ir nepieciešamas, lai ierobežotu spriegumu līdz 1 voltam) un nonāk darbības pastiprinātāja ieejā. Pastiprinātais signāls nonāk arduino, kurā “krītošā aste” tiek aprēķināta pēc tam, kad spole ir izslēgta ar strāvas slēdzi. Tie. tikai atbilde no vēlamā metāla priekšmeta. Atkarībā no sabrukšanas laika mēs varam spriest par objekta izmēru vai attālumu. Indikators parāda šo vērtību 8 rādītāju līmeņos.

Runājot par spoli. Tam jābūt 20 cm diametrā ar 20 stieples apgriezieniem 0,4 - 0,8 mm. Vada biezums ietekmē arī visas spoles indukciju. Spēcīga novirze no stieples biezuma novedīs pie ierīces jutīguma pasliktināšanās. Spole ir ievietota PVC ūdens caurulē, un tai nav papildu metāla savienojumu.



Programmas skice satur impulsu ģeneratoru un algoritmu no pastiprinātāja ienākošā signāla apstrādei.

Int ss0 = 0; int ss1 = 0; int ss2 = 0; garš c0 = 0; garš c1 = 0; garš c2 = 0; baits i = 0; int sss0 = 0; int sss1 = 0; int sss2 = 0; int s0 = 0; int s1 = 0; int s2 = 0; void setup() ( DDRB = 0xFF; // ports B — viss ārā DDRD = 0xFF; // ports D — viss, kas paredzēts (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); aizkave (1); sss0 = 0; sss1 = 0; sss2 = 0; ) )






No šīs instrukcijas jūs uzzināsit, kā mājās izgatavot mājās gatavotu metāla detektoru. Dažādu metāla priekšmetu atrašana ir lielisks vaļasprieks, kas ļaus pavadīt laiku brīvā dabā, atklāt jaunas vietas un, iespējams, atrast ko interesantu. Pirms iemācāties pats izgatavot metāla detektoru, pārbaudiet vietējos likumus par to, kā rīkoties ar iespējamiem atradumiem, īpaši bīstamiem priekšmetiem, arheoloģiskām relikvijām vai objektiem ar nozīmīgu ekonomisku vai emocionālu vērtību.

Internetā ir diezgan daudz instrukciju jaudīgu krāsaino metālu metāla detektoru montāžai mājās ar savām rokām, tomēr šīs instrukcijas īpatnība ir tāda, ka papildus Arduino ir nepieciešami tikai daži komponenti. : parasts kondensators, rezistors un diode, kas veido serdi kopā ar meklēšanas spoli, kas sastāv no 20 elektriski vadoša kabeļa tinumiem. LED, skaļrunis un/vai austiņas. Papildu priekšrocība ir tā, ka visu var darbināt no 5V, kas ir pietiekami kopējai USB jaudai 2000 mAh.

Lai interpretētu signālu un saprastu, kādus materiālus un objektu formas detektors spēj noteikt, ir jāiedziļinās fizikā. Saskaņā ar īkšķa likumu detektors ir jutīgs pret objektiem attālumā vai dziļumā, kas nepārsniedz spoles rādiusu. Tas ir visjutīgākais pret objektiem, kuros spoles plaknē var plūst strāva. Tādējādi metāla disks spoles plaknē radīs daudz spēcīgāku reakciju nekā tas pats metāla disks, kas ir perpendikulārs spolei. Objekta svaram nav lielas nozīmes. Plāna alumīnija folija, kas orientēta spoles plaknē, radīs daudz spēcīgāku reakciju nekā smagā metāla skrūve.

1. solis: darbības princips

Kad elektrība sāk iet caur spoli, tā rada magnētisko lauku. Saskaņā ar Faradeja indukcijas likumu mainīgs magnētiskais lauks radīs elektrisko lauku, kas ir pretrunā mainīgajam magnētiskajam laukam. Tādējādi spolē attīstīsies spriegums, kas neitralizēs strāvas pieaugumu. Šo efektu sauc par pašinduktivitāti, un induktivitātes mērvienība ir Henrijs, kur 1 Henrija spole attīsta potenciālu starpību 1 V, kad strāva mainās par 1 ampēru sekundē. Spoles ar N tinumiem un rādiusu R induktivitāte ir aptuveni 5 µH x N^2 x R, ar R metros.

Ja spoles tuvumā atrodas metāla priekšmets, mainīsies tā induktivitāte. Atkarībā no metāla veida induktivitāte var palielināties vai samazināties. Nemagnētiski metāli, piemēram, varš un alumīnijs spoles tuvumā, samazina induktivitāti, jo mainīgais magnētiskais lauks objektā izraisa virpuļstrāvas, kas samazina vietējā magnētiskā lauka intensitāti.

Feromagnētiskie materiāli, piemēram, dzelzs spoles tuvumā, palielina induktivitāti, jo inducētie magnētiskie lauki sakrīt ar ārējo magnētisko lauku.

Tādējādi, izmērot spoles induktivitāti, var noteikt metālu klātbūtni tuvumā. Ar Arduino, kondensatoru, diodi un rezistoru spoles induktivitāti var izmērīt šādi: Padarot spoli par augstfrekvences LR filtra daļu un barojot to ar viļņu blokiem, tiks izveidoti īsi uzliesmojumi plkst. katra pāreja. Šo pārrāvumu ilgums ir proporcionāls spoles induktivitātei. Faktiski LR filtra raksturīgais laiks ir tau = L/R. Spolei ar divdesmit apgriezieniem un 10 cm diametru L ~ 5muH x 20^2 x 0,05 = 100 µH.

Lai aizsargātu Arduino no pārmērīgas strāvas, minimālā pretestība ir 200 omi. Tāpēc mēs sagaidām aptuveni 0,5 mikrosekundes garus impulsus. Tos ir grūti izmērīt tieši ar augstu precizitāti, ņemot vērā, ka Arduino pulksteņa ātrums ir 16 MHz.

Tā vietā pieaugošo impulsu var izmantot, lai uzlādētu kondensatoru, ko pēc tam var nolasīt ar Arduino analogo-digitālo pārveidotāju (ADC). Paredzamais lādiņš no 25 mA impulsa, kas ilgst 0,5 mikrosekundes, ir 12,5 nK, kas nodrošinātu 1,25 V 10 nF kondensatorā. Sprieguma kritums pāri diodei samazinās šo vērtību. Ja impulsu atkārto vairākas reizes, kondensatora lādiņš palielinās līdz ~2V. Šos parametrus var iegūt ar Arduino ADC, izmantojot analogRead(). Pēc tam kondensatoru var ātri izlādēt, mainot sensora ligzdu uz izvadi un iestatot to uz 0 V uz dažām mikrosekundēm.

Visi mērījumi aizņem apmēram 200 mikrosekundes, 100 kondensatora uzlādēšanai un atiestatīšanai un 100 ADC pārveidošanai. Precizitāti var ievērojami palielināt, atkārtojot mērījumu un vidējo rezultātu: vidēji 256 mērījumi aizņem 50 ms un uzlabo precizitāti 16 reizes. Tādējādi 10 bitu ADC sasniedz 14 bitu ADC precizitāti.

Tā kā iegūtie parametri ir ārkārtīgi nelineāri ar spoles induktivitāti, mēs nevaram zināt indukcijas reālo vērtību. Tomēr metālu noteikšanai mūs interesē tikai nelielas izmaiņas spoles induktivitātē tuvumā esošo metālu dēļ, un šim nolūkam šī metode ir ideāla.

Mērījumu kalibrēšanu var veikt automātiski, izmantojot programmatūru. Ja lielāko daļu laika spoles tuvumā nav metāla, tad novirze no vidējās vērtības norāda uz metāla priekšmeta klātbūtni tuvumā.

Izmantojot dažādu krāsu spuldzes un skaņas, jūs varat arī redzēt atšķirību - indukcija palielinās vai samazinās.

2. darbība: nepieciešamo komponentu saraksts

Elektriskā bāze:

  • Arduino UNO R3 + izstrādes plate vai Arduino Nano ar 5x7cm izstrādes plati
  • 10nF kondensators
  • Maza signāla diode, piemēram, 1N4148
  • 220 omu rezistors

Pārtikai:

  • Pārnēsājams lādētājs ar USB kabeli

Vizuālai izvadei:

  • 2 dažādu krāsu gaismas diodes, piemēram, zila un zaļa
  • 2 220 omu rezistori strāvas ierobežošanai

Lai izvadītu skaņu:

  • Pasīvs zummers
  • Mikroslēdzis skaņas izslēgšanai

Austiņu izvadei:

  • Austiņu ligzda
  • Rezistors 1 kOhm
  • Austiņas

Lai viegli pievienotu/atvienotu meklēšanas spoli:

  • 2 kontaktu skrūvju spaile (termināls)

Meklēšanas spolei:

  • ~ 5 metri tievs elektrības kabelis

Ruļļu dizains. Tam jābūt stīvam, bet ne apaļam. Būvniecībai: Apmēram 1 metrs - koka, plastmasas vai selfiju nūja.

3. darbība: meklēšanas spole

Meklēšanas spolei es aptinu apmēram 4 m stieples ap 9 cm diametra kartona cilindru, iegūstot 18 pagriezienus. Kabeļa veidam nav nozīmes, kamēr pretestība ir vismaz desmit reizes mazāka par R vērtību RL filtrā, tāpēc pārliecinieties, ka tā paliek zem 20 omi. Es to izmērīju, un tas iznāca līdz 1 omam, tāpēc tas ir droši. Piemērots ir arī 10 metru savienojuma stieples rullis ar sazarotiem galiem.

4. darbība: izveidojiet prototipu




Ņemot vērā nelielo ārējo komponentu skaitu, ir pilnīgi iespējams salikt ķēdi uz neliela maizes paneļa. Tomēr gala rezultāts ir diezgan apjomīgs un ne pārāk uzticams. Tāpēc labāk ir izmantot Arduino nano un lodēt ar papildu komponentiem uz 5x7 cm prototipa paneļa (skatiet nākamo soli)

Metāla noteikšana izmanto tikai 2 Arduino tapas, no kurām viena nodrošina impulsus LR filtram, bet otra, lai uztvertu kondensatora spriegumu. Pulsēšanu var veikt no jebkuras izejas tapas, bet nolasīšana jāveic, izmantojot vienu no analogajām tapām A0-A5. Vēl 3 tapas tiek izmantotas 2 gaismas diodēm un audio izvadei.

Montāžas secība:

  1. Uz maizes paneļa pievienojiet kondensatoram virknē 220 omu rezistoru, kondensatoru un diodi ar negatīvo spaili (melno līniju).
  2. Pievienojiet A0 rezistoram (gals nav savienots ar diode)
  3. Pievienojiet A1 diodes un kondensatora krustpunktam
  4. Savienojiet vienu spoles galu ar rezistora un diodes krustpunktu
  5. Savienojiet spoles otru galu ar zemi
  6. Savienojiet vienu LED ar pozitīvo spaili ar tapu D12 un tās negatīvo spaili caur 220 omu rezistoru ar zemi
  7. Savienojiet citu LED ar pozitīvo spaili ar tapu D11 un tās negatīvo spaili caur 220 omu rezistoru ar zemi
  8. Ja vēlaties, pievienojiet austiņas vai skaļruņus starp kontaktu 10 un zemi. Lai samazinātu skaļumu, sērijveidā var pievienot kondensatoru vai rezistoru.

Tas ir viss!

5. darbība. Ierīces galīgās versijas izveide


Lai metāla detektoru izmantotu ārpus telpām, visām sastāvdaļām jābūt droši pielodētām. Parasts 7x5 cm maizes dēlis lieliski saderēs ar Arduino nano un visām pārējām sastāvdaļām. Izmantojiet to pašu modeli kā iepriekšējā darbībā. Es arī nolēmu pievienot slēdzi sērijveidā ar zummeru, lai varētu izslēgt skaņu, kad tas nav nepieciešams. Izmantojot skrūvju skavu, jūs varat ātri izmēģināt dažādas spoles bez atkārtotas lodēšanas. Visa strāva tiek piegādāta caur Arduino Nano 5 V mini vai microUSB portu.

6. darbība. Programmatūra

Tālāk varat lejupielādēt Arduino skici. Lejupielādējiet un palaidiet to. Es izmantoju Arduino 1.6.12 IDE. Sākumā ieteicams palaist ar atkļūdošanas = true, lai pielāgotu impulsu skaitu vienam mērījumam. Vislabāk ir ADC rādījums no 200 līdz 300. Palieliniet vai samaziniet impulsu skaitu, ja jūsu spole parāda pilnīgi atšķirīgu rādījumu.

Skice veic zināmu paškalibrēšanu. Pietiek kādu laiku novietot spoli prom no metāliem. Tiks novērotas nelielas induktivitātes izmaiņas, bet pēkšņas lielas izmaiņas ilgtermiņa vidējo rādītāju neietekmēs.

Faili

7. darbība. Nostipriniet ierīci


Visticamāk, jūs nevēlaties meklēt dārgumus, rāpojot pa grīdu, tāpēc labāk ir uzstādīt visu konstrukciju uz nūjas gala. Pašbildes nūja ir ideāla; tā ir viegla, salokāma un regulējama. Pārnēsājamais akumulators lieliski pieguļ nūjai. Dēli var nostiprināt, izmantojot kabeļu saites un spoli tādā pašā veidā, piestiprinot to pie akumulatora vai selfie stick.

8. darbība: lietošanas instrukcija

Lai noteiktu atsauces vērtību, pietiek ar paštaisīto metāla detektoru uz aptuveni 5 sekundēm pārvietot prom no metāliem. Pēc tam, kad spole tuvojas metālam, sāks mirgot zaļā vai zilā gaismas diode, kā arī būs dzirdami skaņas signāli.

Zili mirgoņi un zemas frekvences pīkstieni norāda uz neferomagnētisko metālu klātbūtni. Zaļi mirgoņi un augstas frekvences pīkstieni norāda uz feromagnētisko metālu klātbūtni. Lūdzu, ņemiet vērā, ka tad, kad spole atrodas metāla tuvumā ilgāk par 5 sekundēm, iegūtā vērtība tiks uzskatīta par atsauces vērtību, un, pārvietojot detektoru prom no metāla, atskanēs skaņas signāls, kas pēc dažām sekundēm nodzisīs. sekundes. Mirgojošo diožu un skaņas signālu biežums ir atkarīgs no signāla stipruma.

Savulaik, savām rokām uzbūvējot vairākus dažādas veiktspējas pakāpes metāla detektorus, vēlējos izpētīt, kā Arduino shēma darbojas šajā virzienā.

Ir vairāki labi piemēri, kā ar savām rokām salikt metāla detektoru. Tomēr parasti tiem ir nepieciešams diezgan daudz ārējo komponentu, lai apstrādātu analogo signālu, vai arī izvades jutība ir diezgan vāja.

Kad mēs domājam par impulsu metāla detektoriem, galvenā tēma ir par to, kā noteikt nelielas sprieguma izmaiņas signālos, kas saistīti ar meklēšanas spoli. Šīs izmaiņas parasti ir ļoti nelielas. Acīmredzamākā pieeja ir izmantot ATmega328 analogās ieejas. Bet, aplūkojot specifikācijas, ir divas galvenās problēmas: tās galvenokārt ir lēnas, un izšķirtspēja (vairumā gadījumu) ir zema.

No otras puses, uz mikrokontrolleriem balstīts metāla detektors darbojas ar 16 MHz, un tam ir diezgan labas laika noteikšanas iespējas, proti, izšķirtspēja 0,0625 µs, izmantojot pulksteņa frekvenci. Tātad, tā vietā, lai nolasīšanai izmantotu analogo ieeju, vienkāršākais veids, kā sajust nelielas dinamiskas sprieguma izmaiņas, ir salīdzināt sprieguma krituma izmaiņas laika gaitā pie fiksēta atsauces sprieguma.

Šim nolūkam ATmega328 ir piemērotas iekšējās salīdzinājuma funkcijas starp D6 un D7. Šis salīdzinājums spēj izraisīt pārtraukumu, ļaujot notikumus apstrādāt precīzi. Izmantojot to kopā ar glīti kodētām laika noteikšanas rutīnām, piemēram, millis () un micos (), un izmantojot ATmega328 daudz augstākas izšķirtspējas iekšējo taimeri, Arduino ir lielisks pamats šāda veida metāla detektoram.

Tātad, runājot par avota kodu - labs sākums būtu ieprogrammēt iekšējo komparatoru, lai tas "apgrieztu" ieeju polaritāti un pēc iespējas ātrāk izmantotu iekšējo skaitītāju, lai mainītu izmaiņu biežumu.

Galīgais Arduino kods:

// Visu nepieciešamo pirms mainīgo definēšana utt. un reģistru iestatīšana unsigned char clockSelectBits = _BV(CS10); // bez iepriekšējas skalas, full xtal void setup() ( pinMode(6,INPUT); // + no salīdzinājuma — iestatot tos kā INPUT, tie tiek // iestatīti uz augstas pretestības pinMode(7,INPUT); // - no salīdzinājuma - iestatot tos kā INPUT, tie tiek // iestatīti uz augstu pretestību cli(); // pārtraukt pārtraukumus TCCR1A = 0; // iestatīt visu TCCR1A reģistru uz 0 TCCR1B = 0; // tas pats TCCR1B TCNT1 = 0 ; // inicializē skaitītāja vērtību uz 0; TCCR1B |= clockSelectBits; // iestata priekšskalotāju un sāk pulksteni TIMSK1 = _BV(TOIE1); // iestata taimera pārplūdes pārtraukuma iespējo bitu sei(); //atļaut pārtraukumus ACSR = (0<< ACD) | // Analog Comparator: Enabled (0 << ACBG) | // Analog Comparator Bandgap Select: AIN0 is applied to the positive input (0 << ACO) | // Analog Comparator Output: Off (1 << ACI) | // Analog Comparator Interrupt Flag: Clear Pending Interrupt (1 << ACIE) | // Analog Comparator Interrupt: Enabled (0 << ACIC) | // Analog Comparator Input Capture: Disabled (0 << ACIS1 | 0 << ACIS0 // interrupt on output toggle // (0 << ACIS1 | 1 << ACIS0 // reserved // (1 << ACIS1 | 0 << ACIS0 // interrupt on falling output edge // (1 << ACIS1 | 1 << ACIS0 // interrupt on rising input edge ; } // this routine is called every time the comparator creates an interrupt ISR(ANALOG_COMP_vect) { oldSREG=SREG; cli(); timeStamp=TCNT1; SREG = oldSREG; } // this routine is called every time there is an overflow in internal counter ISR(TIMER1_OVF_vect){ timer1_overflow_count++; } // this routine is used to reset the timer to 0 void resetTimer(void){ oldSREG = SREG; cli(); // Disable interrupts TCNT1 = 0; //initialize counter value to 0 SREG = oldSREG; // Restore status register TCCR1B |= clockSelectBits; // sets prescaler and starts the clock timer1_overflow_count=0; // resets overflow counter }

Protams, šī ideja nav gluži jauna. Šī koda lielākā daļa var atšķirties. Mēģiniet meklēt citus avotus, piemēram, TPIMD.

1. darbība: Arduino indukcijas detektora ideja — Flip Coil


Ideja ir izmantot Arduino kā impulsa indukcijas detektoru, tāpat kā TPIMD, jo šķiet, ka samazinājuma līknes ideja darbojas ļoti labi. Problēma ar impulsa indukcijas detektoriem ir tāda, ka to darbībai parasti ir nepieciešams atšķirīgs spriegums. Viens spriegums spoles darbināšanai un atsevišķs spriegums, lai apstrādātu samazinājuma līkni. Šie divi sprieguma avoti vienmēr sarežģī impulsu indukcijas detektoru veidošanas procesu.

Ņemot vērā spoles spriegumu PI detektorā, iegūto līkni var sadalīt divos dažādos posmos. Pirmais posms ir pats impulss, kas darbina spoli un rada magnētisko lauku (1). Otrais posms ir sprieguma samazināšanās līkne, kas sākas ar sprieguma maksimumu un pēc tam strauji mainās uz "bez strāvas" spoles spriegumu (2).

Problēma ir tāda, ka pēc impulsa spole maina savu polaritāti. Ja impulss ir pozitīvs (Var 1. pievienotajā attēlā), samazinājuma līkne ir negatīva. Ja impulss ir negatīvs, samazinājuma līkne būs pozitīva (Var 2. pievienotajā attēlā).

Lai atrisinātu šo pamatproblēmu, pēc impulsa spole ir elektroniski "jāapgriež". Šajā gadījumā pulss var būt pozitīvs, un samazinājuma līkne arī paliks pozitīva.

Lai to izdarītu, pēc impulsa spolei jābūt izolētai no Vcc un GND. Šajā brīdī caur snubber rezistoru plūst tikai strāva. Šo izolēto spoles un snubber rezistoru sistēmu var "mērķēt" uz jebkuru atsauces spriegumu. Tas teorētiski radīs kombinētu pozitīvu līkni (skatiet zīmējuma apakšdaļu).

Šo pozitīvo līkni var izmantot salīdzinājums, lai noteiktu laika punktu, kurā sabrukšanas spriegums "šķērso" atsauces spriegumu. Gadījumā, ja dārgums atrodas netālu no spoles, mainās atsauces sprieguma maiņas vājināšanās līkne un laika pārtveršana. Šīs izmaiņas var noteikt.

Pēc dažiem eksperimentiem es izvēlējos šādu shēmu:

Ķēde sastāv no Arduino Nano moduļa. Šis modulis kontrolē divus MOSFET, kas baro spoli (pie SV3), izmantojot D10. Kad impulss D10 beigās beidzas, abi MOSFET izolē spoli no 12V un GND.

Spolē uzkrātā enerģija tiek atbrīvota caur rezistoru R2 (220 omi). Tajā pašā laikā rezistors R1 (560 omi) savieno spoles pirmo pozitīvo pusi ar GND. Tas maina negatīvo vājinājuma līkni pāri rezistoram R5 (330 omi) uz pozitīvu līkni. Diodes aizsargā Arduino ievades tapu.

R7 ir aptuveni 0,04 V sprieguma dalītājs. Tagad samazinājuma līkne uz D7 kļūst negatīvāka nekā 0,04 uz D6, tiek aktivizēts pārtraukums un tiek saglabāts ilgums pēc impulsa beigām.

Gadījumā, ja metāls atrodas netālu no spoles, sabrukšanas līkne ilgst ilgāk un palielinās laiks starp impulsa beigām un pārtraukumu.

2. darbība: detektora izveide (izkārtojums)






Detektora izveides process ir diezgan vienkāršs. To var izdarīt vai nu uz maizes plates (pieturoties pie oriģinālās diagrammas), vai lodējot detaļas uz iespiedshēmas plates.

D13 LED uz Arduino Nano plates tiek izmantots kā metāla indikators.

Maizes dēļa izmantošana ir ātrākais veids, kā izveidot strādājošu detektoru. Ir jāveic daži vadi, taču to var izdarīt uz atsevišķa maza maizes dēļa. Attēlos tas parādīts 3 posmos, jo Arduino un MOSFET slēpj dažus vadus. Pārbaudes laikā es nejauši izslēdzu diodes, uzreiz nemanot. Tas īpaši neietekmēja detektora uzvedību. Es tos atstāju PCB versijā.

Ilustrācijās nav parādīti savienojumi ar 0,96 OLED displeju. Šis displejs ir savienots šādi:

Vcc - 5V (pie Arduino tapas, nevis barošanas avota!)
GND - GND
SCL - A5
SDA-A4

Šis OLED displejs ir nepieciešams sākotnējai detektora kalibrēšanai. Tas tiek darīts, iestatot pareizo spriegumu Arduino PIN6. Šim spriegumam jābūt aptuveni 0,04 V. Displejs palīdz iestatīt pareizo spriegumu.

Prototipa versija darbojas ļoti labi, lai gan, iespējams, tā nav piemērota izmantošanai uz lauka.

3. darbība: PCB dizains




Ciktāl tas attiecas uz lodēšanu, man īsti nepatīk divpusējais augstākās klases PCB, tāpēc es modificēju ķēdi vienpusējai.

Ir veiktas šādas izmaiņas:

  1. Diodes tika izslēgtas.
  2. MOSFET kontaktiem ir pievienots 10 omu rezistors.
  3. Sprieguma dalītāja barošanas spriegums uz D6 tiek iestatīts ar augsta līmeņa signālu uz D8
  4. MOSFET draivera tapa ir mainīta.

Tādā veidā var izveidot vienpusēju PCB, ko var pielodēt uz universālās PCB. Izmantojot šo shēmu, jūs iegūsit strādājošu PI detektoru ar 8-10 ārējiem komponentiem (atkarībā no tā, vai tiek izmantots OLED displejs un/vai skaļrunis).

4. darbība: iestatiet un izmantojiet detektoru




Ja detektors ir uzbūvēts pareizi un programma ir rakstīta Arduino, vienkāršākais (ja ne vienīgais) veids, kā konfigurēt ierīci, ir izmantot OLED displeju. Displejs ir savienots ar 5V, GND, A4, A5. Pēc ierīces ieslēgšanas displejā ir jāparāda “kalibrēšana”. Pēc dažām sekundēm vajadzētu paziņot “kalibrēšana pabeigta”, un displejā ir jāparāda trīs cipari.

Pirmais cipars ir “atsauces vērtība”, kas norādīta kalibrēšanas laikā. Otrā vērtība ir pēdējā izmērītā vērtība, bet trešā vērtība ir pēdējo 32 mērījumu vidējā vērtība.

Šīm trim vērtībām vajadzētu būt vairāk vai mazāk vienādām (manos testos līdz 1000). Vidējam vajadzētu būt vairāk vai mazāk stabilam.

Lai sāktu sākotnējo iestatīšanu, spoles tuvumā nedrīkst būt metāla.

Tagad sprieguma dalītājs (skaņošanas rezistors) ir jānoregulē tā, lai divas apakšējās vērtības būtu iestatītas uz maksimālo, vienlaikus saglabājot stabilu rādījumu. Ir kritisks iestatījums, kad vidējais rādītājs sāk parādīt dīvainus rādījumus. Pagrieziet trimmeri, lai atkal iegūtu stabilas vērtības.

Var gadīties, ka displejs sasalst. Vienkārši nospiediet atiestatīšanas pogu un sāciet no jauna.

Manai konfigurācijai (spole: 18 apgriezieni\20 cm) stabilā vērtība ir aptuveni 630-650. Pēc instalēšanas nospiediet atiestatīšanas pogu, ierīce atkal kalibrēsies un visas trīs vērtības būs vienā diapazonā. Ja metāls tagad atrodas spoles tuvumā, vajadzētu iedegties gaismas diodei uz Arduino plates (D13). Iekļautais skaļrunis veic dažus klikšķus (avota kodā ir vietas uzlabojumiem).

Lai izvairītos no lielām cerībām:

Detektors atklāj dažas lietas, taču tas joprojām ir ļoti vienkāršs un ierobežots.

Lai sniegtu priekšstatu par iespējām, es salīdzināju dažus citus detektorus ar manējiem. Rezultāti joprojām ir diezgan iespaidīgi detektoram ar 8 ārējiem elementiem, taču tie nav līdzvērtīgi profesionālajam aprīkojumam.

Skatoties uz shēmu un programmu, es redzu daudz iespēju uzlabot. Rezistoru vērtības tika izvēlētas, pamatojoties uz pieredzi, impulsa laiks 250 ms tika izvēlēts nejauši, un tāpat tika izvēlēti spoles parametri.

Faili

5. darbība. 16x2 displeja pievienošana



Testēšanas laikā es sapratu, ka I2C OLED displeja bibliotēka patērē pārāk daudz resursu, tāpēc nolēmu izmantot 16x2 displeju ar I2C pārveidotāju.

Esmu pielāgojis programmu LCD displejam, pievienojot dažas noderīgas funkcijas. Displeja pirmajā rindā tagad ir redzams iespējamās indikācijas signāla līmenis. Otrajā rindā tagad ir parādītas divas vērtības. Pirmais norāda pašreizējā signāla novirzi salīdzinājumā ar kalibrēšanas vērtību. Šai vērtībai jābūt "0". Ja šī vērtība pastāvīgi ir negatīva vai pozitīva, detektors ir jākalibrē, nospiežot atiestatīšanas pogu. Pozitīvās vērtības norāda uz metālu pie spoles.

Otrā vērtība parāda samazināšanās līknes faktisko aizkaves vērtību. Šī vērtība parasti nav tik interesanta, bet tā ir nepieciešama detektora sākotnējai iestatīšanai.

Programma tagad ļauj izsekot vairākiem impulsu ilgumiem pēc kārtas (līdzeklis eksperimentēšanai/veiktspējas uzlabošanai). Tomēr es nesaņēmu nekādu izrāvienu, tāpēc noklusējuma iestatījums ir viens impulsa platums.

Sākotnējā detektora iestatīšana

Uzstādot detektoru, svarīga ir otrās rindas otrā vērtība (pirmo var ignorēt). Sākotnēji vērtība var būt "nestabila" (skatiet attēlu). Pagrieziet trimmeri, līdz vērtība sasniedz stabilu rādījumu. Pēc tam pagrieziet to, lai palielinātu vērtību līdz maksimālajai stabilai vērtībai. Nospiediet atiestatīšanas pogu, lai veiktu atkārtotu kalibrēšanu, un detektors ir gatavs lietošanai.

Man radās iespaids, ka, iestatot maksimālo stabilo vērtību, es zaudēju jutību pret krāsainajiem metāliem. Tāpēc, iespējams, ir vērts eksperimentēt ar iestatījumiem, lai to labotu.

Ruļļi

Es izveidoju 3 spoles impulsu metāla detektora ķēdes turpmākai pārbaudei:

  • 1 -> 18 pagriezieni/ 200 mm
  • 2 -> 25 pagriezieni/100 mm
  • 3 -> 48 pagriezieni/100 mm

Interesanti, ka visas spoles strādāja diezgan labi, ar gandrīz tādu pašu veiktspēju (rubļa monēta 40-50 mm gaisā). Tas var būt ļoti subjektīvs novērojums.