» elektronika » Detektori metala »Metalni detektor Arduino Pro Mini. Obrada dubina Kolokolov-Shchedrin po principu "Prijenos"

Detektor metala na Arduino Pro Mini. Obrada dubina Kolokolov-Shchedrin po principu "Prijenos"


Recikliranje dubokovodne sheme Kolokolov-Shchedrin. Razlike od izvorne sheme:
1. Na k561 .. nema kristalni oscilator na k561 .. čipu i 32 kHz kvarc. Signal od 32 kHz daje Arduino Pro Mini.
2. Zvučni krugovi obavijesti na nekoliko mikro-krugova serije 561 također nisu prisutni, Arduino također izražava metu (I moram reći, to je izvrsno glasanje, u usporedbi s autorskom shemom).
3. Napaja unipolarnim naponom 12v (baterija sa olovnom kiselinom).
4. Prilagodite osjetljivost tipkama. S ADC ljestvicom od 0 do 1023, prag odziva je podesiv od 1 do 38 (vrijednost se lako može promijeniti u skici).


Detektor metala na Arduino Pro Mini. Obrada dubina Kolokolov-Shchedrin po principu


Ono što je najvažnije, želio sam u ovom članku pokazati da je moguće sastaviti MD-ove na Arduinu koji nisu osjetljivi na izvornike po osjetljivosti (ovo je uspjelo, jer su izvornici izvornog kruga sakupljeni u redoslijedu od 10 komada, tako da ima materijala za usporedbu). Izvorni krug:


Kad sam prvi put započeo raditi s Arduinom, bio sam toliko oduševljen da sam pomislio da bih mogao na Arduinu pronaći i sastaviti bilo koji sklop detektora metala da bih se lako našao na ogromnoj deponiji smeća. U principu, ispostavilo se da je tako, ali sklopovi su bili utemeljeni na brojaču frekvencija, što nije dopuštalo postizanje stvarno dobrog raspona. Neke dječje igračke i test olovke + pokušaji zarađivanja početnika. Original ovog MD-a je pravi radni konj koji vam omogućuje pronalaženje velikih predmeta na udaljenosti od 2 m (vidi Google-ovu knjigu Kolokolov-Shchedrin). Nema podataka o transformiranom md-u. Nadam se da se pojavljuje uz podršku fanova MD-a i Arduina. Shema je radila s Arduino Uno i Arduino Pro Mini.

Dalje na poveznici prikazan je postupak rođenja ovog doktora na web stranici Lemilice koji je trajao više od godinu dana i potaknuo autora da prouči programski duin. Možda će se skica nekome činiti jadnom - rado ću prihvatiti vaše FIXES.




Trenutačno postoji skica koja vam omogućava podešavanje osjetljivosti na barijeru (pin 7 douins +1 do barijere, pin 8 -1 do barijere). ,
Arduino o mini 5v, 16MHz, ATmega168 i zaslonu su to koristili. Pored ljestvice nalazi se Mini SD adapter


Kao što je već rečeno 1602 košta 86 rubalja, ProMini - 82 rubalja. Ako želite, možete čak i uzeti golu ATmega168, razviti ploču za nju i izravno u nju ubaciti skicu.I tako, na primjer, instalirao sam mamu i tatu na MD ploču pomoću priključka. Fotografija prikazuje Arduino 6-polni utikač kroz koji su skice ulijevane izravno na ploču.

Skica-MD.Rx-Tx.ProMini.SrednjajaTochkaRegBar.ino

// A3 analogni ulaz za voltmetar
// analogni ulaz A4 za signal
// 6- zaključak zuba
// 9 - izlazna frekvencija 31200 Hz
#include
Tekući kristalni LCD (12, 11, 5, 4, 3, 2);
                                       
  byte z1 [8] = {// ikona baterije
  0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
 
 int odbrojano = 0; // varijabla za spremanje vrijednosti razine skale
 int voltag = 0; // varijabla za pohranjivanje vrijednosti napona
 int noll = 0; // varijabla za pohranjivanje srednje vrijednosti
   #define NUM_SAMPLES 10 // 10 analognih uzoraka za čitanje u 1 sekundi
   int zbroj = 0; // zbroj uzetih uzoraka
   int sunce = 0; // isto, ali podijeljeno sa 10
   nepotpisani char sample_count = 0; // trenutni broj uzorka s
   napon plovka = 0,0; // izračunati napon
   const int tipka1 = 7; // barijera plus gumb
   const int tipka2 = 8; // tipka barijera-minus
   int i = 5; // barijera
   
poništavanje postave () {
     lcd.begin (16, 2); // inicijalizacija prikaza
     lcd.setCursor (1, 0);
     lcd.setCursor (10, 1);
     lcd.print ("Rx-Tx");
     kašnjenje (3000);
     lcd.clear ();
     
     TCCR1A = TCCR1A & amp; 0xe0 | 2;
     TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
     analogWrite (9, 126); // na pin 10 PWM = 50% f = 31200Hz
     
     lcd.createChar (1, z1);
     }
     
void petlja () {
     int buttonState1 = HIGH; // Stanje gumba je jedno
     int buttonState2 = HIGH; // Stanje dva gumba
   sample_count = 0; // resetiranje konture broja dodataka
   zbroj = 0; // resetirati zbroj 10 dodataka
   dok (sample_count & lt; NUM_SAMPLES) {
   sum + = analogRead (A4); // slijedeće mjerenje dodaje se zbroju
   sample_count ++; // jedinica se dodaje mjernom broju
   sun = sum / 10;} // pronađite prosječnu vrijednost iz 10 mjerenja
   
   noll = analogRead (A3) / 2; // srednja snaga
   napon plovka = karta (analogRead (A3), 0,1023,0,1500) /100,0;
                                        // Voltmetar ugrađen na ulazu A3
   ako (sun & gt; = noll + i) {countleds = karta (sun, noll + i, noll * 2 - 250, 9, 14);
                                        // ako je dobiveni rezultat na 9-15. segmentu ljestvice
    ton (6, odbrojavanje * 100);}
   ako (sun 
9.8
10
10

Dodajte komentar

    • osmijehosmjesixaxau redudontknowprostakNea
      gazdaogrebotinabudaladaDa-Daagresivantajna
      oprostiteplesdance2dance3pomilovanjepomoćpića
      zaustavljanjeprijateljidobrogoodgoodzviždaljkapasti u nesvijestjezik
      dimpljeskanjeCrayObjavitepodrugljivdon-t_mentionpreuzimanje
      vrućinaljutitlaugh1MDAsastanakmoskingnegativan
      not_ikokicekaznitičitatiuplašitiplašitraži
      podsmijehthank_youovoto_clueumnikakutansložiti
      lošebeeeblack_eyeblum3rumenilohvalisati sedosada
      cenzuriranizadirkivanjesecret2prijetitipobjedayusun_bespectacled
      shokrespektlolpreveddobrodošlikrutoyya_za
      ya_dobryipomoćnikne_huliganne_othodifludzabranablizu
24 komentari
Autor
Hvala puteec FU! To sam zatražio od drugog puta. Provukao sam se kroz Arduino uno. Problem je nestao nakon ažuriranja programa za pokretanje. Sad nas zanima kako dalje konfigurirati.
puteec fu
Bilo koji Arduino pogodan je za atmega168, atmega328. O nano ovo s usb priključkom ako se ne varam. Šivati ​​u Arduino ide iz primjera Blink treperenja (trepereći LED-i na pin 13, LED je ugrađen na ploču). Pazite da koristite ispravan priključak, je li ploča odabrana pravilno, procesor na ploči je pravilno odabran, kvarcna frekvencija na ploči je pravilno odabrana, pravilno je odabran način firmware-a (µ2).
Pogreška nije nađena.
Stvorite novu datoteku u Arduinu, kopirajte skicu odavde u novu i čistu skicu i ona će raditi.Ali najprije, LED na arduinoj ploči trepće standardnim treptajućim primjerom. Zatim krenite dalje.
Kupio sam Arduino p nano samo na Atmega328 procesoru. Pregledao sam gomilu videozapisa i foruma ... rekli su da bi se to trebalo pojaviti .... ali onda metak NE treperi .... daje #include očekuje "FILENAME" ili . Je li se netko susreo s tim?
Autor
S ovom pločom djeluje skica. Od čega se točno formira čep?
Ako izlijete zadnju skicu, tada se svi detalji koji se odnose na D3.3 i D3.4, kao i oni sami, ne mogu instalirati. Na željezu za lemljenje nalazi se crtanje na ovu temu
Anjey888
Bok Ova je tema vrlo zainteresirana. Želim sastaviti uređaj. Napravio sam ploču za lemljenje od poteza ... a zatim zaglavio. Budući da između ploče i kruga postoji veliko neslaganje. Počeli smo s uspoređivanjem vašeg odbora ... to je velika razlika. Ali zbunjen je s vezom u Arduinu.
Molim pomoć dobro poznatih ljudi.
Autor
Isto kao i za ostale metale. Dubina otkrivanja ovisi o području cilja. Što više, to dublje.
Gost Eugene
Koja su ograničenja za otkrivanje objekata? Zlato, aluminij, bakar.
Gost Aleksandar
Što sada učiniti, jer još uvijek postoji Schottkyjeva barijera?
Autor
Pa ovdje! O ni najmanjoj vrijednosti ne dolazi u obzir! Hvala na pojašnjenju.
Citat: puteec_80
I ljudi će brže i intuitivnije shvatiti o čemu pričam.
Možete i dalje ostati u ovoj pogrešci. ((Tehnički pismeni ljudi će biti na malom gubitku.
BARRIER, muž.
1. Prepreka (vrsta zida, poprečna greda) postavljena na putu.
2. Ograda, ograda.

PRIJATELJ, prag, muž.
1. U znanosti i tehnologiji prag se naziva najmanja vrijednost, stupanj očitovanja nečega.
Prag osjetljivosti uređaja. | Prag sluha. | Prag boli. | Senzor se uključuje kada je prekoračeni postavljeni prag temperature.
osmijeh
Autor
Ostanimo kod svojih. Napisat ću "povećanje barijere za jednu jedinicu" i "osjetljivost prijemnika bila je 5 μV." I napišete "Povećanje praga rada za jednu jedinicu" i "prag osjetljivosti prijemnika ..." Štoviše, ljudi će brže i intuitivnije shvatiti o čemu govorim.
I ja objašnjavam u ovom primjeru. Nema praga strogo govoreći, jer ne postoji jasna referentna ljestvica. Postoji neka vrsta izrezne plutajuće trake iz plutajućeg signala. Dakle, čini mi se da je definicija barijere mnogo prikladnija za ovaj "plutajući" trak nego za prag.
Općenito besmislena i glupa svađa. Imate li kakvih pitanja?
Citat: puteec_80
Koji su njihovi donji i gornji pragovi?
Možda značenja prevedenih riječi ne odgovaraju ili se malo ne podudaraju. Ali oni savršeno opisuju postupak i postupno ulaze u sleng.
Točno kakav je prag. Prag odgovora je u vašem slučaju. Objasnite kako "prepreka" opisuje postupak.
Što se tiče pridruživanja slengu - sada ima puno svakakvih nesporazuma. ((
Autor
U ovom slučaju i dalje sam sklon upotrebi riječi "barijera", jer to je barijera koja je postavljena u tekstu programa, samo bez ulaska u njegov domet signal mikrokontroler doživljava kao koristan. I to je barijera jer Ima dvije vrijednosti - gornju i donju granicu ugradnje, tj. rad se odvija iznad "gornje" i ispod "donje" granice barijere na ADC skali. Međutim, vi znate bolje. Koji su njihovi donji i gornji pragovi?
Možda značenja prevedenih riječi ne odgovaraju ili se malo ne podudaraju. Ali oni savršeno opisuju postupak i postupno ulaze u sleng.
Usput. Osjetljivost i barijera potpuno su različite stvari.
Da.Oni se presijecaju. Ali ne više.
Citat: puteec_80
U stranom MD-u, izbornik kaže "Barier".

Možda vas iznenadim, ali mnoge engleske riječi koje nalikuju našoj imaju različito značenje, ponekad blisko, ponekad ne. Potražite riječi "lažni prijatelji prevoditelja."
Sada u suštini. Na ruskom tehnička dokumentacija ne jednostavno ne postoji takva fraza "barijera osjetljivosti" - i to je to! Postoji "prag osjetljivosti", u nekim se slučajevima može reći "granica osjetljivosti", ali ne i "barijera osjetljivosti". Možda se u nekim drugim granama znanja koristi, ali ne i u elektronici.
Autor
Pa to znači da svi strani inženjeri skaču preko štapa na cesti. U stranom MD-u, izbornik kaže "Barier". Druže Ivane, padate mi u oči s tako sitnim nitkiranjem! Gdje su vaši komentari o osnovanosti? Nakon čega morate pljesnuti rukama ravno na čelo? Često ste me razmazili kazniti
Razlika je značajna: prag je tehnički pojam, prepreka je "štap preko ceste".
Autor
Možda. Ali ne vidim razliku.
Možda nije „prepreka“, već prag? )
Autor
Dijagram ne prikazuje gumbe za podešavanje barijere. Spojeni su na igle 7 i 8 Arduino. Svako izvučeno uz otpor od 10 k na plus, zatvara se kada pritisnete masu.
Autor
void petlja () {
int buttonState1 = HIGH; // Stanje gumba je jedno
int buttonState2 = HIGH; // Stanje dva gumba

int pot = analogRead (A4); // filter za brzu promjenu signala
znak = znak * (1-K) + lonac * K;

noll = noll * (1-L) + znak * L; // dugotrajni signalni filter
// Voltmetar ugrađen na ulazu A3
napon plovka = karta (analogRead (A3), 0,1023,0,1500) /100,0;

if (znak> = noll + i) {countleds = karta (znak, noll + i, 1023, 9, 14);
// ako je dobiveni rezultat na 9-15. segmentu ljestvice
ton (6, odbrojavanje * 100);}
if (znak <= noll - i) {countleds = karta (znak, 0, noll - i, 0, 7);
// ako je dobiveni rezultat 0-7 segment skale
ton (6, odbrojavanje * 50); }
if (znak = noll - (i-1)) {countleds = 7;
noTone (6); } // otočić virtualnog ZERO (7 segment)
if (znak> noll && znak <= noll + (i-1)) {countleds = 8;
noTone (6); } // otok virtualne ZERO ljestvice (8 segment)


{lcd.setCursor (odbrojano, 0); // postavite kursor na stupac odbrojavanja, redak 0
lcd.print ("\ xff"); // ispunjena ikona
lcd.setCursor (0, 1); // prelazak na 2 reda, stupac-0
lcd.print (char (1)); // Indikacija ikone baterije
lcd.setCursor (1, 1); // prelazak na indikaciju napona
lcd.print (napon); // napon
lcd.setCursor (7, 0); // 8. stupac 1. red
if (znak lcd.setCursor (8, 0); // 9. stupac 1. red
if (znak> noll) {lcd.print ("}");} // ispis
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 stupac 2. red
lcd.print (i); // barijera
lcd.setCursor (13, 1); // 13. stupac 2. red
lcd.print (znak); // ispisati prosječnu vrijednost ADC vrijednosti
kašnjenje (10); // čekati

buttonState1 = digitalno čitanje (gumb1); // Status gumba za čitanje 1
buttonState2 = digitalno čitanje (button2); // stanje čitanja 2
ako (buttonState1 == NISKO) {i = i + 1; kašnjenje (50);}
// Kad se gumb pritisne, prepreka raste za 1. Odgoda 50
ako (buttonState2 == LOW) {i = i - 1; kašnjenje (50);}
// Kad se gumb pritisne, prepreka se smanjuje za 1. Odgoda 50
ako (i <1) {i = 1;} // Donja granica barijere
ako (i> 38) {i = 38;} // Gornja granica barijere

lcd.clear ();
}
}
Autor
Nova skica. Algoritam za otkrivanje korisnog signala je promijenjen. Shema je pojednostavljena, nema elemenata D3.4 i D3.3 sa svim njihovim vezama. Ako uzmete svoj vlastiti potpis, tada se svi ti detalji jednostavno ne mogu instalirati. Više osjetljivosti. Nema lažnih pozitivnih rezultata.
skica:

// A3-analogni ulaz za voltmetar. Postavljanje potenciometrom R32.
// analogni ulaz A4 za signal. Postavite s minimalnim signalom na D3.2
// otpornik R40 za očitanja ADC-a od oko 510.
// 6- zaključak zuba
// 9 - izlazna frekvencija 31200 Hz
#include
Tekući kristalni LCD (12, 11, 5, 4, 3, 2);

byte z1 [8] = {// ikona baterije
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int odbrojano = 0; // varijabla za spremanje vrijednosti razine skale

napon plovka = 0,0; // izračunati napon
const int tipka1 = 7; // barijera plus gumb
const int tipka2 = 8; // tipka barijera-minus
int i = 5; // barijera
const pluta K = 0,1; // filtriranje brzih promjena (koeficijent. Što je manji, to je jači)
const pluta L = 0,07; // praćenje filtera tijekom dugog vremena
znak plovka = 0; // filtrirati
plutati noll = 0;

poništavanje postave () {
lcd.begin (16, 2); // inicijalizacija prikaza
lcd.createChar (1, z1);
pinMode (9, IZLAZ);
pinMode (6, IZLAZ);
TCCR1A = TCCR1A & 0xe0 | 2;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite (9, 126); // na pin 10 PWM = 50% f = 31200Hz
// zapravo, za PWM = 50% trebate postaviti najmanje 220 punjenja, prema osciloskopu
// Duin to ne može podnijeti. Ovo nije presudno.
}
Autor
Oni koji će gledati skicu. Znakovi> = i <= zamijenjeni su čudnim kombinacijama> gt i

Savjetujemo vam da pročitate:

Predaj to pametnom telefonu ...