» elektronika » Detektory kovov »Detektor kovov na Arduino Pro Mini. Spracovanie hĺbok Kolokolov-Shchedrin podľa zásady „Prevodovka“

Detektor kovov na Arduino Pro Mini. Spracovanie hĺbok Kolokolov-Shchedrin podľa zásady „Prevodovka“


Recyklácia systému hlbinných vôd Kolokolov-Shchedrin. Rozdiely od pôvodnej schémy:
1. Na čipe k561 .. nie je krištáľový NO oscilátor a kremeň 32 kHz. Signál 32 kHz dáva Arduino Pro Mini.
2. Nie sú prítomné ani zvukové oznamovacie obvody na niekoľkých mikroobvodoch radu 561, Arduino tiež vyjadruje cieľ (a musím povedať, že je vynikajúci, v porovnaní so schémou autora).
3. Napájané unipolárnym napätím 12 V (olovená batéria).
4. Nastavte citlivosť pomocou tlačidiel. Pri stupnici ADC od 0 do 1023 je prah odozvy nastaviteľný od 1 do 38 (hodnotu je možné ľahko zmeniť v náčrte).


Detektor kovov na Arduino Pro Mini. Spracovanie hĺbok Kolokolov-Shchedrin podľa zásady „Prevodovka“


Najdôležitejšie je, že som v tomto článku chcel ukázať, že je možné zostaviť MD na Arduino, ktoré nie sú v porovnaní s pôvodnou citlivosťou nižšie (to sa vypracovalo, pretože originály pôvodného obvodu boli zhromaždené rádovo 10 kusov, takže existuje materiál na porovnanie). Pôvodný okruh:


Keď som prvýkrát začal pracovať s Arduino, bol som taký nadšený, že som si myslel, že môžem nájsť a zostaviť akékoľvek obvody detektorov kovov z internetu na Arduino, ktoré by som mohol ľahko nájsť v obrovskej skládke odpadu. V zásade sa to ukázalo takto, ale obvody boli založené na frekvenčnom čítači, ktorý neumožnil dosiahnutie skutočne dobrého rozsahu. Niektoré hračky pre deti a test pera + sa snažia zarobiť peniaze pre začiatočníkov. Originál tohto MD je skutočný workhorse, ktorý vám umožní nájsť veľké objekty vo vzdialenosti 2 m (pozrite si knihu Kolokolov-Shchedrin v Google). O transformovanom md neexistujú žiadne štatistiky. Dúfam, že sa objaví s podporou fanúšikov MD a Arduino. Program spolupracoval s Arduino Uno a Arduino Pro Mini.

Ďalej na odkaze je na webe Spájkovačka, ktorý trval viac ako jeden rok, uvedený priebeh narodenia tohto MD, ktorý nútil autora študovať programovacie duíny. Možno sa zdá, že náčrtok bude niekomu ubohý - s radosťou prijmem vaše FIXY.




V tejto chvíli je k dispozícii nákres, ktorý vám umožňuje nastaviť bariéru citlivosti (pin 7 douins +1 k bariére, pin 8 -1 k bariére). ,
Arduino o mini 5v, 16MHz, ATmega168 a displej ich použili. Vedľa mierky je adaptér Mini SD


Ako už bolo povedané, 1602 stojí 86 rubľov, ProMini - 82 rubľov. Ak si želáte, môžete spravidla vziať nahý model ATmega168, vyvinúť dosku a vyplniť náčrt priamo do neho.A tak napríklad pomocou konektora som na MD dosku nainštaloval mama-otec. Na fotografii je Arduino 6-kolíková zástrčka, cez ktorú boli nalievané náčrtky priamo na dosku.

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

// Analógový vstup A3 pre voltmeter
// Analógový vstup A4 pre signál
// 6- záver zook
// - výstupná frekvencia 31200 Hz
#include
Liquid Crystal lcd (12, 11, 5, 4, 3, 2);
                                       
  bajt z1 [8] = {// ikona batérie
  0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
 
 int počítané = 0; // premenná na uloženie hodnoty úrovne mierky
 int voltag = 0; // premenná na uloženie hodnoty napätia
 int noll = 0; // premenná na uloženie hodnoty stredného bodu
   #definujte NUM_SAMPLES 10 // 10 analógových vzoriek na čítanie za 1 sekundu
   int súčet = 0; súčet odobratých vzoriek
   int sun = 0; // rovnaké, ale vydelené 10
   unsigned char sample_count = 0; // číslo aktuálnej vzorky pomocou
   plavákové napätie = 0,0; vypočítané napätie
   const int button1 = 7; // bariéra plus tlačidlo
   tlačidlo konšt. int2 = 8; // tlačidlo mínus bariéra
   int i = 5; // bariéra
   
neplatné nastavenie () {
     lcd.begin (16, 2); // zobrazenie inicializácie
     lcd.setCursor (1, 0);
     lcd.setCursor (10, 1);
     lcd.print ("Rx-Tx");
     oneskorenie (3000);
     lcd.clear ();
     
     TCCR1A = TCCR1A & amp; 0xe0 | 2;
     TCCR1B = TCCR1B & 0xe0 | 0x09;
     analogWrite (9, 126); // na kolíku 10 PWM = 50% f = 31200 Hz
     
     lcd.createChar (1, z1);
     }
     
void loop () {
     int buttonState1 = HIGH; // Stav tlačidla je jeden
     int buttonState2 = HIGH; // Stav dvoch tlačidiel
   sample_count = 0; // vynuluje obrys počtu dodatkov
   súčet = 0; // resetuje súčet 10 pridaní
   while (sample_count  = noll + i) {počítané = mapa (slnko, noll + i, noll * 2 - 250, 9, 14);
                                        // ak je prijatý výsledok v 9-15. segmente stupnice
    tón (6, počet * 100);}
   if (sun <= noll - i) {počítané = mapa (slnko, 116, noll - i, 0, 7);
                                        // ak je výsledným výsledkom 0-7 segment stupnice
    tón (6, počet * 50); }
     ak (slnko a slnko = noll - (i-1)) {počítané = 7;
    noTone (6); } // ostrovček virtuálnej nuly (7 segment)
     ak (slnko & noll & slnko <= noll + (i-1)) {počítané = 8;
    noTone (6); } // ostrov virtuálnej stupnice nuly (8 segmentov)

   
    {lcd.setCursor (počítané, 0); // nastavte kurzor na stĺpec počítania, riadok 0
    lcd.print ("\ xff"); // vyplnená ikona
    lcd.setCursor (0, 1); // presunúť na 2 riadok, stĺpec-0
    lcd.print (char (1)); // Indikácia ikony batérie
    lcd.setCursor (1, 1); // prejsť na indikáciu napätia
    lcd.print (napätie); // napätie
    lcd.setCursor (7, 0); // 8. stĺpec 1. riadok
    if (sun  noll) {lcd.print ("}");} // print
    lcd.setCursor (7, 1);
    lcd.print ("B =");
    lcd.setCursor (9, 1); // 11 stĺpec 2. riadok
    lcd.print (i); // bariéra
    lcd.setCursor (13, 1); // tretí stĺpec, druhý riadok
    lcd.print (slnko); // vytlačí priemernú hodnotu hodnoty ADC
    oneskorenie (100); // počkaj
    
  buttonState1 = digitalRead (button1); // Stav tlačidla na čítanie 1
  buttonState2 = digitalRead (button2); // Stav tlačidla na čítanie 2
  ak (buttonState1 == LOW) {i = i + 1; oneskorenie (50);}
                                        // Po stlačení tlačidla bariéra narastie o 1. Oneskorenie 50
  if (buttonState2 == LOW) {i = i - 1; oneskorenie (50);}
                                        // Po stlačení tlačidla sa bariéra zníži o 1. Oneskorenie 50
  ak (i ​​<1) {i = 1;} // Dolná hranica bariéry
  if (i> 38) {i = 38;} // Horná hranica bariéry
 
 lcd.clear ();
    }
}

Auto som nepoužil. Posledné dva prvky TL074 zostali nečinné. Ale na okruhu a na palube sú. Možno ich budete chcieť uviesť o trochu neskôr. Verím, že som dosiahol svoj cieľ. Zobrazovacia jednotka funguje úžasne. Všetko ostatné závisí od MD.
9.8
10
10

Pridajte komentár

    • usmievaťúsmevyxaxaokdontknowyahoonea
      bossškrabanecoklamaťánoáno, ánoútočnýtajomstvo
      ľutovaťtanecdance2dance3odpusteniehelpnápoje
      zastávkapriateliadobrýgoodgoodpíšťalaomdlieťjazyk
      dymtlieskanieCraydeklarovaťvýsměšnýdon-t_mentiondownload
      teplohnevlivýlaugh1MDAstretnutiemoskingnegatívny
      not_ipražená kukuricatrestaťprečítaťvydesiťzdesenievyhľadávať
      posmechthank_youtototo_clueumnikakútnasúhlasiť
      zlýbeeeblack_eyeblum3očervenieťchvastanienuda
      cenzurovanéžartysecret2hroziťvíťazstvoyusun_bespectacled
      shokrešpektlolprevedievitajtekrutoyya_za
      ya_dobryipomocníkne_huliganne_othodiFLUDzákazzavrieť
24 komentáre
Autor
Vďaka puteec FU! Požiadal som o to druhýkrát. Šil som cez Arduino uno. Tento problém zmizol po aktualizácii zavádzača. Teraz zaujíma, ako ďalej konfigurovať.
puteec fu
Akýkoľvek Arduino je vhodný pre atmega168, atmega328. O nano s USB konektorom, ak sa nemýli. Šiť v Arduino ide z príkladov Blink skica (blikajúce LED na pin 13, LED je nainštalovaný na doske). Uistite sa, že používate správny port, či je doska správne vybraná, či je správne vybraný procesor na doske, či je správne zvolená frekvencia kremeňa a či je správne zvolená metóda firmvéru (μ2).
Vyskytla sa chyba.
Vytvorte nový súbor v Arduino, skopírujte skicu odtiaľto na novú a čistú skicu a bude to fungovať.Najprv však nechajte blikať LED na doske Arduino štandardným blikajúcim príkladom. Potom choďte ďalej.
Arduino p nano som kúpil iba na procesore Atmega328. Preskúmali sme veľa videí a fór ... povedali, že by to malo prísť .... ale potom horák nebliká .... dáva #include očakáva „FILENAME“ alebo . Stretol sa s tým niekto?
Autor
Na tejto doske pracuje skica. Čo presne tvorí zátka?
Ak nalievate poslednú skicu, nie je možné nainštalovať všetky podrobnosti týkajúce sa D3.3 a D3.4, ako aj samotné. Na spájkovacej doske je prekreslenie tejto témy
Anjey888
ahoj Táto téma ma veľmi zaujíma. Chcem zostaviť zariadenie. Vyrobil som spájkovaciu dosku z cesty ... a potom som uviazol. Pretože medzi doskou a obvodom existuje veľa nezhôd. Začal som porovnávať vašu dosku ... to je veľký rozdiel. Ale zamieňané s postrojom v Arduino.
Pýtam sa na pomoc dobre informovaných ľudí.
Autor
Rovnaké ako pre iné kovy. Hĺbka detekcie závisí od oblasti cieľa. Čím viac, tým hlbšie.
Hosť Eugene
Aké sú limity na detekciu objektov? Zlato, hliník, meď.
Hosť Alexander
Čo robiť, pretože ešte stále existuje Schottkyho bariéra?
Autor
Tak tu! O najmenšej hodnote nie je pochýb! Ďakujem za objasnenie.
Citácia: puteec_80
A ľudia rýchlejšie a intuitívnejšie pochopia, o čom hovorím.
V tejto chybe môžete naďalej zostať. ((Technicky gramotní ľudia budú mať malú stratu.
BARRIER, manžel.
1. Bráni prekážka (druh steny, priečka).
2. Oplotenie, oplotenie.

THRESHOLD, prah, manžel.
1. Vo vede a technike sa prahová hodnota nazýva najmenšia hodnota, stupeň prejavu niečoho.
Hranica citlivosti zariadenia. | Prah sluchu. | Prah bolesti. | Senzor sa spustí, keď sa prekročí nastavená teplota.
usmievať
Autor
Zostaňme s našimi. Napíšem „zvýšenie bariéry o jednu jednotku“ a „citlivosť prijímača bola 5 μV.“ A napíšete „Zvýšenie prahu prevádzky o jednu jednotku“ a „prah citlivosti prijímača ...“ Navyše ľudia rýchlejšie a intuitívnejšie pochopia, o čom hovorím.
A v tomto príklade vysvetlím. Neexistuje žiadna hranica, ktorá je prísne vzatá do úvahy, pretože neexistuje jasná referenčná stupnica. Existuje nejaký výrez plávajúce pásmo z plávajúceho signálu. Zdá sa mi teda, že definícia prekážky je pre tento „plávajúci“ pás oveľa vhodnejšia ako pre prahovú hodnotu.
Všeobecne zbytočné a hlúpe argumenty. Máte nejaké otázky?
Citácia: puteec_80
Aké sú ich dolné a horné prahy?
Možno, že význam preložených slov sa nezhoduje alebo sa mierne nezhoduje. Dokonale však popisujú tento proces a postupne vstupujú do slangu.
Presne to, čo je prahová hodnota. Hranica odpovede je vo vašom prípade. Vysvetlite, ako postup opisuje „bariéra“.
Pokiaľ ide o pripojenie k slangu - v súčasnosti existuje veľa nedorozumení. ((
Autor
V tomto prípade stále používam slovo „bariéra“, pretože je to bariéra, ktorá je stanovená v programovom texte, ale bez toho, aby sa dostal do svojho rozsahu, mikrokontrolér vníma signál ako užitočný. A je to prekážka, pretože Má dve hodnoty - hornú a dolnú hranicu zábehu, t. k operácii dôjde nad "hornou" a pod "dolnou" hranicou bariéry na stupnici ADC. Ale viete to lepšie. Aké sú ich dolné a horné prahy?
Možno, že významy preložených slov sa nezhodujú alebo sa mierne nezhodujú. Dokonale však popisujú tento proces a postupne vstupujú do slangu.
Mimochodom. Citlivosť a bariéra sú úplne odlišné veci.
Áno.Pretínajú sa. Ale už nie.
Citácia: puteec_80
Na zahraničných MD sa v ponuke hovorí „Barier“.

Možno vás prekvapím, ale mnoho anglických slov, ktoré vyzerajú podobne ako naše, má odlišný význam, niekedy blízko, niekedy nie. Vyhľadajte slová „falošní prekladatelia priateľov“.
Teraz v podstate. V ruštine technický dokumentácia žiadny jednoducho neexistuje takáto veta „bariéra citlivosti“ - a to je všetko! Existuje „prah citlivosti“, v niektorých prípadoch možno povedať „limit citlivosti“, ale nie „bariéru citlivosti“. Možno sa používa v niektorých iných odvetviach znalostí, ale nie v elektronike.
Autor
To znamená, že všetci zahraniční inžinieri skákajú cez palicu na ceste. Na zahraničnom MD sa v ponuke hovorí „Barier“. Súdruh Ivan, padáte mi do očí s takou malichernou duskavosťou! Kde sú vaše pripomienky k podstate veci? Potom musíte zatlačiť ruky na čelo? Často ste ma kazili trestať
Rozdiel je významný: prahová hodnota je technický pojem, prekážkou je „prilepiť sa cez cestu“.
Autor
Možno. Ale nevidím ten rozdiel.
Možno nejde o „prekážku“, ale o prahovú hodnotu? ;)
Autor
Schéma nezobrazuje tlačidlá nastavenia bariéry. Sú spojené s kolíkmi 7 a 8 Arduina. Každý vytiahnutý s odporom 10k voči plusu sa uzavrie, keď stlačíte masu.
Autor
void loop () {
int buttonState1 = HIGH; // Stav tlačidla je jeden
int buttonState2 = HIGH; // Stav dvoch tlačidiel

int pot = analogRead (A4); // filter na rýchlu zmenu signálu
znamienko = znamienko * (1-K) + hrniec * K;

noll = noll * (1-L) + znamienko * L; // dlhodobý filter signálu
// Voltmeter zabudovaný na vstupe A3
plávajúce napätie = mapa (analogRead (A3), 0,1023,0, 1500) / 100,0;

if (sign> = noll + i) {countleds = map (sign, noll + i, 1023, 9, 14);
// ak je prijatý výsledok v 9-15. segmente stupnice
tón (6, počet * 100);}
if (sign <= noll - i) {countleds = map (sign, 0, noll - i, 0, 7);
// ak je výsledným výsledkom 0-7 segment stupnice
tón (6, počet * 50); }
if (sign = noll - (i-1)) {počítané = 7;
noTone (6); } // ostrovček virtuálnej nuly (7 segment)
if (sign> noll && sign <= noll + (i-1)) {countcheds = 8;
noTone (6); } // ostrov virtuálnej stupnice nuly (8 segmentov)


{lcd.setCursor (počítané, 0); // nastavte kurzor na stĺpec počítania, riadok 0
lcd.print ("\ xff"); // vyplnená ikona
lcd.setCursor (0, 1); // presunúť na 2 riadok, stĺpec-0
lcd.print (char (1)); // Indikácia ikony batérie
lcd.setCursor (1, 1); // prejsť na indikáciu napätia
lcd.print (napätie); // napätie
lcd.setCursor (7, 0); // 8. stĺpec 1. riadok
if (sign lcd.setCursor (8, 0); // 9. stĺpec 1. riadok
if (sign> noll) {lcd.print ("}");} // print
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 stĺpec 2. riadok
lcd.print (i); // bariéra
lcd.setCursor (13, 1); // tretí stĺpec, druhý riadok
lcd.print (sign); // vytlačí priemernú hodnotu hodnoty ADC
oneskorenie (10); // počkaj

buttonState1 = digitalRead (button1); // Stav tlačidla na čítanie 1
buttonState2 = digitalRead (button2); // Stav tlačidla na čítanie 2
ak (buttonState1 == LOW) {i = i + 1; oneskorenie (50);}
// Po stlačení tlačidla bariéra narastie o 1. Oneskorenie 50
if (buttonState2 == LOW) {i = i - 1; oneskorenie (50);}
// Po stlačení tlačidla sa bariéra zníži o 1. Oneskorenie 50
if (i <1) {i = 1;} // Dolná hranica bariéry
if (i> 38) {i = 38;} // Horná hranica bariéry

lcd.clear ();
}
}
Autor
Nová skica. Algoritmus na zisťovanie užitočného signálu sa zmenil. Schéma je zjednodušená, neexistujú žiadne prvky D3.4 a D3.3 so všetkými ich väzbami. Ak si vezmete vlastný podpis, všetky tieto údaje sa jednoducho nedajú nainštalovať. Viac citlivosti. Žiadne falošné poplachy.
skica:

// Analógový vstup A3 pre voltmeter Nastaviteľný potenciometrom R32.
// Analógový vstup A4 pre signál. Nastavte s minimálnym signálom na D3.2
// odpor R40 pre hodnoty ADC asi 510.
// 6- záver zook
// - výstupná frekvencia 31200 Hz
#include
Liquid Crystal lcd (12, 11, 5, 4, 3, 2);

bajt z1 [8] = {// ikona batérie
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int počítané = 0; // premenná na uloženie hodnoty úrovne mierky

plavákové napätie = 0,0; vypočítané napätie
const int button1 = 7; // bariéra plus tlačidlo
tlačidlo konšt. int2 = 8; // tlačidlo mínus bariéra
int i = 5; // bariéra
konštanta float K = 0,1; // rýchle sledovanie zmien filtra (koeficient. čím menší, tým silnejší)
konštanta float L = 0,07; // zmeny sledovania filtra po dlhú dobu
plavák znamenie = 0; // filter
float noll = 0;

neplatné nastavenie () {
lcd.begin (16, 2); // zobrazenie inicializácie
lcd.createChar (1, z1);
pinMode (9, VÝSTUP);
pinMode (6, VÝSTUP);
TCCR1A = TCCR1A & 0xe0 | 2;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite (9, 126); // na kolíku 10 PWM = 50% f = 31200 Hz
// v skutočnosti pre PWM = 50% musíte podľa osciloskopu nastaviť najmenej 220 náplní
// duin to nezvládne. To nie je rozhodujúce.
}
Autor
Tí, ktorí budú sledovať náčrt. Znaky> = a <= boli nahradené zvláštnymi kombináciami & a <. Prečo to neviem. Keď bolo ladenie normálne.

Odporúčame vám prečítať si:

Ruku pre smartphone ...