» Elektronika » Metalo detektoriai »Metalo detektorius„ Arduino Pro Mini “. Kolokolovo-Ščedrino gelmių apdorojimas pagal „perdavimo“ principą

Metalo detektorius „Arduino Pro Mini“. Kolokolovo-Ščedrino gelmių apdorojimas pagal „perdavimo“ principą


Kolokolovo-Ščedrino giliųjų vandenų schemos perdirbimas. Skirtumai nuo pradinės schemos:
1. K561 .. mikroschemoje ir 32 kHz kvarce nėra kristalų generatoriaus. 32 kHz signalas suteikia „Arduino Pro Mini“.
2. Garso pranešimų grandinių, esančių keliose 561 serijos mikroschemose, taip pat nėra. Arduino taip pat skelbia taikinį (ir turiu pasakyti, kad, palyginti su autoriaus schema, jis turi puikų balsą).
3. Maitinamas vienpoliu 12 V įtampa (švino-rūgšties akumuliatorius).
4. Mygtukais sureguliuokite jautrumą. Naudojant ADC skalę nuo 0 iki 1023, atsako slenkstį galima reguliuoti nuo 1 iki 38 (reikšmę galima lengvai pakeisti eskize).


Metalo detektorius „Arduino Pro Mini“. Kolokolovo-Ščedrino gelmių apdorojimas pagal „perdavimo“ principą


Svarbiausia, kad šiame straipsnyje norėjau parodyti, kad Arduino MD galima surinkti ne prastesniu nei originalas jautrumu (tai pavyko, nes originalios grandinės originalai buvo surinkti 10 vienetų užsakymu, taigi yra medžiagos palyginimui). Originali grandinė:


Kai pirmą kartą pradėjau dirbti su „Arduino“, buvau toks įkvėptas, kad pamaniau, jog Arduino tinkle galiu rasti ir surinkti bet kurią metalo detektoriaus schemą iš interneto, kurią nesunkiai galiu rasti didžiulėje šiukšlių saugykloje. Iš principo paaiškėjo, kad taip, tačiau grandinės buvo pagrįstos dažnio skaitikliu, kuris neleido pasiekti tikrai gero diapazono. Kai kurie vaikų žaislai ir rašiklio testas + bandoma užsidirbti pinigų pradedantiesiems. Šio MD originalas yra tikras darbo arklys, leidžiantis surasti didelius objektus 2m atstumu (žr. „Kolokolov-Shchedrin“ knygą „Google“). Nėra duomenų apie transformuotą md. Tikiuosi, kad ji pasirodys palaikant MD ir Arduino gerbėjus. Schema veikė kartu su „Arduino Uno“ ir „Arduino Pro Mini“.

Toliau šioje nuorodoje pateikiamas šio MD gimimo procesas „Lituoklio“ tinklalapyje, kuris truko daugiau nei vienerius metus ir paskatino autorių studijuoti programavimo duetas. Galbūt eskizas kam nors atrodys apgailėtinas - aš mielai priimu jūsų FIXES.




Šiuo metu yra eskizas, leidžiantis sureguliuoti jautrumo barjerą (7 kaištis daro +1 + kliūtį, 8-kailis –1 – barjerą). .
Arduino apie mini 5v, 16MHz, ATmega168 ir ekraną naudojo šiuos. Šalia mastelio yra „Mini SD“ adapteris


Kaip jau minėta, 1602 kainuoja 86 rublius, „ProMini“ - 82 rublius. Jei norite, paprastai galite pasiimti plika ATmega168, sukurti jai lentą ir užpildyti eskizą tiesiai į ją.Taigi, pavyzdžiui, naudodamas jungtį, MD plokštėje įdiegiau mamą-tėtį. Nuotraukoje parodytas „Arduino“ 6 kontaktų kištukas, per kurį eskizai buvo pilami tiesiai ant lentos.

„Sketch-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino

// A3 analoginis įėjimas voltmetrui
// A4 analoginis įėjimas signalui
// 6- zoko išvada
// 9 - išvesties dažnis 31200 Hz
# įtraukti
Skystųjų kristalų LCD (12, 11, 5, 4, 3, 2);
                                       
  baitas z1 [8] = {// akumuliatoriaus piktograma
  0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
 
 int sąskrydžiai = 0; // kintamasis, kad būtų išsaugota skalės lygio reikšmė
 int voltagas = 0; // kintamasis įtampos vertei laikyti
 int noll = 0; // kintamasis, kad būtų galima išsaugoti vidurio taško vertę
   #define NUM_SAMPLES 10 // 10 analoginių pavyzdžių, kuriuos reikia perskaityti per 1 sekundę
   int suma = 0; // paimtų mėginių suma
   int saulė = 0; // tas pats, bet padalintas iš 10
   nepasirašytas char pavyzdys_skaičius = 0; // dabartinis mėginio numeris su
   plūdės įtampa = 0,0; // apskaičiuota įtampa
   const int mygtukas1 = 7; // barjerinis pliuso mygtukas
   const int mygtukas2 = 8; // barjero-minuso mygtukas
   int i = 5; // užtvara
   
negaliojanti sąranka () {
     lcd.begin (16, 2); // ekrano inicijavimas
     „lcd.setCursor“ (1, 0);
     „lcd.setCursor“ (10, 1);
     lcd.print („Rx-Tx“);
     vėlavimas (3000);
     lcd.clear ();
     
     TCCR1A = TCCR1A & amp; 0xe0 | 2;
     TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
     „analogWrite“ (9, 126); // kaištyje 10 PWM = 50% f = 31200Hz
     
     lcd.sukurtiChar (1, z1);
     }
     
tuščia kilpa () {
     int buttonState1 = AUKŠTA; // Mygtuko būsena yra viena
     int buttonState2 = AUKŠTA; // Dviejų mygtukų būsena
   pavyzdys_skaičius = 0; // atkurti papildymų skaičiaus kontūrą
   suma = 0; // atkurti 10 papildymų sumą
   o (pavyzdžio_skaičius & lt; NUM_SAMPLES) {
   suma + = analoginis skaitymas (A4); // kitas matas pridedamas prie sumos
   pavyzdys_skaičius ++; // vienetas pridedamas prie matavimo skaičiaus
   saulė = suma / 10;} // raskite vidutinę vertę iš 10 matavimų
   
   noll = analogRead (A3) / 2; // vidurio galia
   plūdės įtampa = žemėlapis (analoginis skaitymas (A3), 0,1023,0,1500) /100,0;
                                        // voltmetras, pastatytas ties A3 įėjimu
   if (sun & gt; = noll + i) {countleds = map (sun, noll + i, noll * 2 - 250, 9, 14);
                                        // jei gautas rezultatas yra 9-15-ajame skalės segmente
    tonas (6, kreipiasi * 100);}
   if (sun & lt; = noll - i) {countleds = map (sun, 116, noll - i, 0, 7);
                                        // jei gautas rezultatas yra 0–7 skalės segmentas
    tonas (6, kreipiasi * 50); }
     if (saulė & noll & saulė = noll - (i-1)) {countleds = 7;
    „noTone“ (6); } // virtualios NULĖS salelė (7 segmentas)
     if (sun & noll & amp; sun & lt; = noll + (i-1)) {countleds = 8;
    „noTone“ (6); } // virtualios NULL skalės sala (8 segmentai)

   
    {lcd.setCursor (pataria, 0); // nustatykite žymeklį į countleds stulpelį, 0 eilutę
    lcd.print („\ xff“); // užpildyta piktograma
    lcd.setCursor (0, 1); // pereiti prie 2 eilutės, 0 stulpelio
    lcd.print (char (1)); // Baterijos piktogramos indikacija
    „lcd.setCursor“ (1, 1); // pereiti prie įtampos indikacijos
    lcd.print (įtampa); // įtampa
    „lcd.setCursor“ (7,0); // 8-ojo stulpelio 1-oji eilutė
    if (sun & lt; noll) {lcd.print ("{");} // print
    „lcd.setCursor“ (8, 0); // 9 stulpelio 1 eilutė
    if (sun & gt; noll) {lcd.print ("}");} // spausdinti
    „lcd.setCursor“ (7, 1);
    lcd.print („B =“);
    „lcd.setCursor“ (9, 1); // 11 stulpelio 2 eilutė
    lcd.print (i); // užtvara
    „lcd.setCursor“ (13, 1); // 13 stulpelio 2 eilutė
    lcd.print (saulė); // išspausdinkite vidutinę ADC reikšmę
    vėlavimas (100); // palauk
    
  buttonState1 = digitalRead (mygtukas1); // Skaitykite 1 mygtuko būseną
  buttonState2 = digitalRead (2 mygtukas); // Skaitykite 2 mygtuko būseną
  if (buttonState1 == LOW) {i = i + 1; vėlavimas (50);}
                                        // Paspaudus mygtuką, užtvara padidėja 1. Atidėti 50
  if (buttonState2 == LOW) {i = i - 1; vėlavimas (50);}
                                        // Paspaudus mygtuką, barjeras sumažėja 1. Delay 50
  if (i & lt; 1) {i = 1;} // Apatinė užtvaros riba
  if (i> 38) {i = 38;} // Viršutinė užtvaros riba
 
 lcd.clear ();
    }
}

Aš nenaudojau automobilio. Paskutiniai du TL074 elementai nebuvo naudojami. Bet grandinėje ir plokštėje jie yra. Galbūt norėsite juos šiek tiek vėliau pasiekti į darbinę būklę. Tikiu, kad pasiekiau savo tikslą. Ekranas puikiai veikia. Visa kita priklauso nuo MD.
9.8
10
10

Pridėti komentarą

    • šypsotisšypsosixaxagerainežiniaYahoonea
      viršininkassubraižytikvailystaiptaip-taipagresyvusslapta
      atsiprašaušoktišokis2šokis3atleiskpadėtigėrimai
      sustotidraugaigeraigerašvilpukassupyktiliežuvis
      rūkytiplojimaiklastingaspareikštiniokojantisdon-t_mentionatsisiųsti
      šilumanedrąsusjuoktis1mdasusitikimasmoskingneigiamas
      not_ipopkornasnubaustiskaitytigąsdintigąsdinapaieška
      gundytiačiūtaito_clueumnikūmussusitarti
      blogaibičiųjuoda akisblum3skaistalaipasigirtinuobodulys
      cenzūruotamalonumasslapta2grasintipergalėju„sun_bespectacled“
      šoktipagarbalolišlenktaslaukiamekrutojusya_za
      ya_dobryipagalbininkasne_huliganne_othodifludisuždraustiarti
24 komentaras
Autorius
Ačiū puteec FU! Aš to paprašiau iš antro karto. Aš susiuvau per Arduino uno. Atnaujinus įkrovos įkėlimo programą problema išnyko. Dabar įdomu, kaip sukonfigūruoti toliau.
puteec fu
Bet kuris „Arduino“ tinkamas atmega168, atmega328. Apie nano tai su USB jungtimi, jei neklystu. Iš „Blink“ eskizo pavyzdžių siūkite „Arduino ide“ (mirksi šviesos diodai 13 kaištyje, šviesos diodas įmontuotas ant lentos). Įsitikinkite, kad naudojate teisingą prievadą, plokštė pasirinkta teisingai, plokštės procesorius pasirinktas teisingai, kvarco dažnis plokštėje pasirinktas teisingai, programinės įrangos metodas (μ2) pasirinktas teisingai.
Klaida neįvyko.
Sukurkite naują failą Arduino, nukopijuokite eskizą iš čia į naują ir švarų eskizą, ir jis veiks.Bet pirmiausia padarykite, kad „Arduino“ plokštės šviesos diodas mirksi standartiniu mirksinčiu pavyzdžiu. Tada judėkite toliau.
„Arduino p nano“ nusipirkau tik „Atmega328“ procesoriuje. Peržiūrėjau krūvą vaizdo įrašų ir forumų ... jie sakė, kad tai turėtų sugalvoti .... bet tada švilpukas NEMOKA ... suteikia #include tikisi „FILENAME“ arba . Ar kas nors su tuo susidūrė?
Autorius
Su šia lenta veikia eskizas. Kas tiksliai yra kamštis?
Jei supilate paskutinį eskizą, tada visos detalės, susijusios su D3.3 ir D3.4, taip pat jų pačių, negali būti įdiegtos. Ant lituoklio yra brėžinys šia tema
Anjey888
Sveiki! Ši tema labai domina. Noriu surinkti prietaisą. Aš pasidariau lituoklio lentą be perstojo ... ir tada įstrigiau. Kadangi tarp plokštės ir grandinės kyla daug nesutarimų. Pradėjote lyginti savo plokštę ... tai yra didelis skirtumas. Bet supainiotas su diržais Arduino.
Prašau išmanančių žmonių pagalbos.
Autorius
Tas pats kaip ir kiti metalai. Aptikimo gylis priklauso nuo taikinio srities. Kuo daugiau, tuo giliau.
Svečias Eugenijus
Kokios yra objektų aptikimo ribos? Auksas, aliuminis, varis.
Svečias Aleksandras
Ką daryti dabar, nes vis dar yra Schottky užtvara?
Autorius
Na čia! Apie net mažiausią vertę nesigilinama! Ačiū už paaiškinimus.
Citata: puteec_80
Žmonės greičiau ir intuityviau supras, apie ką aš kalbu.
Galite ir toliau išlikti šioje klaidoje. ((Techniškai raštingi žmonės bus šiek tiek prarasti.
BARRIERIS, vyras.
1. Kelyje esanti kliūtis (tam tikra siena, skersinis).
2. Tvora, aptvaras.

THRESHOLD, slenkstis, vyras.
1. Moksle ir technologijoje slenkstis vadinamas mažiausia verte, kažko pasireiškimo laipsniu.
Prietaiso jautrumo slenkstis. | Klausos slenkstis. | Skausmo slenkstis. | Jutiklis suveikia, kai viršijama nustatyta temperatūros riba.
šypsotis
Autorius
Pasilikime prie savų. Parašysiu „barjerą padidinus vienu vienetu“ ir „imtuvo jautrumas buvo 5 μV“. Jūs rašote „Padidinus veikimo slenkstį vienu vienetu“ ir „Imtuvo jautrumo slenkstį ..“ Be to, žmonės greičiau ir intuityviau supras, apie ką aš kalbu.
Ir paaiškinu šiame pavyzdyje. Griežtai kalbant nėra ribos, nes nėra aiškios atskaitos skalės. Iš plūduriuojančio signalo yra tam tikra iškirptė plūduriuojanti juosta. Taigi man atrodo, kad šios „plaukiojančios“ juostos apibrėžimas barjerui yra kur kas tinkamesnis nei slenkstis.
Paprastai beprasmis ir kvailas argumentas. Ar turite klausimų?
Citata: puteec_80
Kokia yra jų apatinė ir viršutinė slenksčiai?
Gal išverstų žodžių reikšmės nesutampa arba šiek tiek nesutampa. Bet jie puikiai apibūdina procesą ir pamažu įsitraukia į slengą.
Tiksliai kokia yra riba. Atsakymo riba yra jūsų atveju. Paaiškinkite, kaip „barjeras“ apibūdina procesą.
Kalbant apie prisijungimą prie slengo - dabar ten yra daugybė įvairiausių nesusipratimų. ((
Autorius
Šiuo atveju aš vis dar linkęs vartoti žodį „barjeras“, nes tai yra kliūtis, kuri nustatoma programos tekste, tačiau nepatekdamas į jos diapazoną, signalas mikrovaldikliui atrodo naudingas. Ir tai yra kliūtis, nes Jis turi dvi reikšmes - viršutinę ir apatinę įėjimo ribas, t. operacija vyksta virš „viršutinės“ ir žemiau „apatinės“ užtvaro sienos ADC skalėje. Vis dėlto geriau žinai. Kokia yra jų apatinė ir viršutinė slenksčiai?
Gal išverstų žodžių reikšmės nesutampa arba šiek tiek nesutampa. Bet jie puikiai apibūdina procesą ir pamažu įsitraukia į slengą.
Beje. Jautrumas ir barjeras yra visiškai skirtingi dalykai.
TaipJie susikerta. Bet ne daugiau.
Citata: puteec_80
Užsienio gydytojų meniu meniu rašoma „Barjeras“.

Galiu jus nustebinti, tačiau daugelis angliškų žodžių, panašių į mus, turi skirtingą reikšmę, kartais artimi, kartais ne. Ieškokite žodžių „netikri vertėjo draugai“.
Dabar iš esmės. Rusų kalba techninis dokumentacija ne tiesiog nėra tokios frazės „jautrumo barjeras“ - ir viskas! Yra „jautrumo slenkstis“, kai kuriais atvejais galima sakyti „jautrumo riba“, bet ne „jautrumo riba“. Galbūt kai kuriose kitose žinių srityse ji naudojama, bet ne elektronikoje.
Autorius
Na, tai reiškia, kad visi užsienio inžinieriai šokinėja per lazdą kelyje. Užsienio medicinos gydytojo meniu meniu rašoma „Barjeras“. Drauge Ivanai, jums į akis krinta toks mažylis! Kur yra jūsų komentarai dėl esmės? Po to jūs turite plačiai suspausti rankas ant kaktos? Tu dažnai mane grobė nubausti
Skirtumas nemažas: slenkstis yra techninis terminas, kliūtis yra „lazda per kelią“.
Autorius
Galbūt. Bet aš nematau skirtumo.
Gal ne „barjeras“, o slenkstis? ;)
Autorius
Diagrama nerodo barjerų reguliavimo mygtukų. Jie yra sujungti su Arduino 7 ir 8 kaiščiais. Kiekvienas ištrauktas su 10k pasipriešinimu pliusui, užsidaro, kai paspaudžiate masę.
Autorius
tuščia kilpa () {
int buttonState1 = AUKŠTA; // Mygtuko būsena yra viena
int buttonState2 = AUKŠTA; // Dviejų mygtukų būsena

int puodas = analoginis skaitymas (A4); // filtras greitam signalo pakeitimui
ženklas = ženklas * (1-K) + puodas * K;

noll = noll * (1-L) + ženklas * L; // ilgalaikio signalo filtras
// voltmetras, pastatytas ties A3 įėjimu
plūdės įtampa = žemėlapis (analoginis skaitymas (A3), 0,1023,0,1500) /100,0;

if (ženklas> = noll + i) {countleds = map (ženklas, noll + i, 1023, 9, 14);
// jei gautas rezultatas yra 9-15-ajame skalės segmente
tonas (6, kreipiasi * 100);}
if (ženklas <= noll - i) {countleds = map (ženklas, 0, noll - i, 0, 7);
// jei gautas rezultatas yra 0–7 skalės segmentas
tonas (6, kreipiasi * 50); }
if (ženklas = noll - (i-1)) {countleds = 7;
„noTone“ (6); } // virtualios NULĖS salelė (7 segmentas)
if (ženklas> noll && ženklas <= noll + (i-1)) {countleds = 8;
„noTone“ (6); } // virtualios NULL skalės sala (8 segmentai)


{lcd.setCursor (pataria, 0); // nustatykite žymeklį į countleds stulpelį, 0 eilutę
lcd.print („\ xff“); // užpildyta piktograma
lcd.setCursor (0, 1); // pereiti prie 2 eilutės, 0 stulpelio
lcd.print (char (1)); // Baterijos piktogramos indikacija
„lcd.setCursor“ (1, 1); // pereiti prie įtampos indikacijos
lcd.print (įtampa); // įtampa
„lcd.setCursor“ (7,0); // 8-ojo stulpelio 1-oji eilutė
if (ženklas „lcd.setCursor“ (8, 0); // 9 stulpelio 1 eilutė
if (ženklas> noll) {lcd.print ("}");} // spausdinti
„lcd.setCursor“ (7, 1);
lcd.print („B =“);
„lcd.setCursor“ (9, 1); // 11 stulpelio 2 eilutė
lcd.print (i); // užtvara
„lcd.setCursor“ (13, 1); // 13 stulpelio 2 eilutė
lcd.print (ženklas); // išspausdinkite vidutinę ADC reikšmę
vėlavimas (10); // palauk

buttonState1 = digitalRead (mygtukas1); // Skaitykite 1 mygtuko būseną
buttonState2 = digitalRead (2 mygtukas); // Skaitykite 2 mygtuko būseną
if (buttonState1 == LOW) {i = i + 1; vėlavimas (50);}
// Paspaudus mygtuką, užtvara padidėja 1. Atidėti 50
if (buttonState2 == LOW) {i = i - 1; vėlavimas (50);}
// Paspaudus mygtuką, barjeras sumažėja 1. Delay 50
if (i <1) {i = 1;} // Apatinė kliūties riba
if (i> 38) {i = 38;} // Viršutinė užtvaros riba

lcd.clear ();
}
}
Autorius
Naujas eskizas. Pakeistas naudingo signalo aptikimo algoritmas. Schema supaprastinta, nėra elementų D3.4 ir D3.3 su visais jų įrišimais. Jei pasiimsite savo ženklą, tada visos šios informacijos paprasčiausiai negalima įdiegti. Daugiau jautrumo. Jokių klaidingų teiginių.
Eskizas:

// A3-analoginis voltmetro įėjimas, nustatomas potenciometru R32.
// Signalo įvestis A4 formato - nustatykite esant mažiausią signalą D3.2
// rezistorius R40, skirtas ADC rodmenims apie 510.
// 6- zoko išvada
// 9 - išvesties dažnis 31200 Hz
# įtraukite
Skystųjų kristalų LCD (12, 11, 5, 4, 3, 2);

baitas z1 [8] = {// akumuliatoriaus piktograma
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int sąskrydžiai = 0; // kintamasis, kad būtų išsaugota skalės lygio reikšmė

plūdės įtampa = 0,0; // apskaičiuota įtampa
const int mygtukas1 = 7; // barjerinis pliuso mygtukas
const int mygtukas2 = 8; // barjero-minuso mygtukas
int i = 5; // užtvara
kontūrinis plūdės K = 0,1; // greitas filtrų stebėjimo pasikeitimas (koeficientas. kuo mažesnis, tuo stipresnis)
kontūrinis plūdis L = 0,07; // filtro stebėjimo pokyčiai per ilgą laiką
plūdės ženklas = 0; // filtras
plūdės noll = 0;

negaliojanti sąranka () {
lcd.begin (16, 2); // ekrano inicijavimas
lcd.sukurtiChar (1, z1);
pinMode (9, OUTPUT);
pinMode (6, OUTPUT);
TCCR1A = TCCR1A ir 0xe0 | 2;
TCCR1B = TCCR1B ir 0xe0 | 0x09;
„analogWrite“ (9, 126); // kaištyje 10 PWM = 50% f = 31200Hz
// iš tikrųjų, kai PWM = 50%, pagal osciloskopą reikia nustatyti bent 220 užpildymą
// Duin negali su tuo susitvarkyti. Tai nėra kritiška.
}
Autorius
Tie, kurie žiūrės eskizą. Ženklai> = ir <= buvo pakeisti keistais & gt ir & lt deriniais. Kodėl aš nežinau. Kai derinimas buvo normalus.

Mes patariame perskaityti:

Perduokite jį išmaniajam telefonui ...