» elektronika » Fémdetektorok »Fémdetektor az Arduino Pro Mini készüléken. A Kolokolov-Shchedrin mélységeinek feldolgozása az „átvitel” elve szerint

Fémdetektor az Arduino Pro Mini készüléken. A Kolokolov-Shchedrin mélységeinek feldolgozása az „átvitel” elve szerint


A Kolokolov-Shchedrin mélyvízi rendszer újrahasznosítása. Különbségek az eredeti rendszertől:
1. Nincsenek kristály oszcillátorok a k561 .. chipen és a 32 kHz kvarcon. A 32 kHz-es jel adja az Arduino Pro Mini-t.
2. Több 561-es sorozatú mikroáramkör hangjelző áramkörei szintén nincsenek jelen, Arduino szintén hangot ad a célnak (És azt kell mondanom, hogy kiváló hangjelzés, a szerző vázlatához képest).
3. A tápfeszültséget 12v egypoláris feszültség (ólom-sav akkumulátor) táplálja.
4. Állítsa be az érzékenységet a gombokkal. Az ADC skála 0 és 1023 között a válaszküszöb 1 és 38 között állítható (az érték a vázlatban könnyen megváltoztatható).


Fémdetektor az Arduino Pro Mini készüléken. A Kolokolov-Shchedrin mélységeinek feldolgozása az „átvitel” elve szerint


A legfontosabb, hogy meg szeretném mutatni ebben a cikkben, hogy lehetséges az MD-k összeszerelése Arduino-nál, az érzékenységnél nem alacsonyabb az eredetinél (ez azért működött, mert az eredeti áramkör eredetiit 10 darab sorrendben gyűjtötték össze, tehát van összehasonlításhoz szükséges anyag). Eredeti áramkör:


Amikor először elkezdtem dolgozni az Arduino-val, annyira lelkes voltam, hogy azt hittem, hogy bármilyen fémdetektor áramkört megtalálhatom és összeállíthatom az internetről az Arduinóban, amit könnyen megtalálhatok a hatalmas szeméttelepen. Elvileg így derült ki, de az áramkörök frekvenciaszámlálón alapultak, amely nem tette lehetővé a valóban jó tartomány elérését. Néhány gyermekjáték és a toll tesztje + próbál pénzt keresni kezdőknek. Az MD eredetije egy valódi munkás ló, amely lehetővé teszi, hogy nagy tárgyakat 2 m távolságra találjon (lásd a Kolokolov-Shchedrin könyvet a Google-ban). Nincs adat a transzformált md-ről. Remélem, hogy megjelenik az MD és Arduino rajongói támogatásával. A rendszer együttműködött Arduino Uno-val és Arduino Pro Mini-vel.

A linket ezenkívül ismerteti az MD születésének folyamata a Forrasztópáka honlapján, amely több mint egy éve tartott és a szerzőt arra kényszerítette, hogy tanulmányozza a programozási csatornát. Lehet, hogy a vázlat valakinek nyomorultnak tűnik - örömmel fogadom el a FIX-eket.




Jelenleg van egy vázlat, amely lehetővé teszi az érzékenységi akadály beállítását (a 7. tű csap +1 az akadályhoz, a 8–1 tű az akadályhoz). .
Arduino a mini 5v, 16MHz, ATmega168 körül és a kijelző ezeket használta. A skála mellett található a Mini SD-adapter


Mint már említettük, a 1602 86 rubelt, a ProMini pedig 82 rubelt fizet. Ha szeretné, általában meztelen ATmega168-at is készíthet, kidolgozhat neki egy táblát, és a vázlatot közvetlenül rá tudja tölteni.És így például a konnektor segítségével telepítettem anya-apa az MD kártyára. A képen Arduino 6 tűs dugója látható, amelyen keresztül a vázlatokat közvetlenül a táblára öntötték.

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

// A3 analóg bemenet voltmérőhöz
// A4 analóg bemenet a jelhez
// a zook következtetése
// 9 - 31200 Hz kimeneti frekvencia
#include
Folyadékkristályos LCD (12, 11, 5, 4, 3, 2);
                                       
  z1 byte byte [8] = {// elem ikon
  0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
 
 int országok: 0; // változó a skálaszint érték tárolására
 int voltag = 0; // változó a feszültségérték tárolására
 int noll = 0; // változó a középpont értékének tárolására
   #defináljon NUM_SAMPLES 10 // 10 analóg mintát 1 másodperc alatt
   int összeg = 0; // a vett minták összege
   int nap = 0; // ugyanaz, de 10-el osztva
   aláírhatatlan char minta_szám = 0; // az aktuális minta száma
   úszó feszültség = 0,0; // számított feszültség
   const int gomb1 = 7; // akadály plusz gomb
   const int gomb2 = 8; // akadály-mínusz gomb
   int i = 5; // akadály
   
érvénytelen beállítás () {
     lcdbegin (16, 2); // a képernyő inicializálása
     lcd.setCursor (1, 0);
     lcd.setCursor (10, 1);
     lcd.print ("Rx-Tx");
     késés (3000);
     lcd.clear ();
     
     TCCR1A = TCCR1A & amp; 0xe0 | 2;
     TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
     analogWrite (9, 126); // 10-es érintkezőn PWM = 50% f = 31200Hz
     
     lcd.createChar (1, z1);
     }
     
void loop () {
     int buttonState1 = HIGH; // A gomb állapota egy
     int buttonState2 = HIGH; // Két gomb állapot
   minta_szám = 0; // alaphelyzetbe állítja a kiegészítések számának kontúrját
   összeg = 0; // visszaállítja a 10 kiegészítés összegét
   míg (mintaszámláló & lt; NUM_SAMPLES) {
   összeg + = analogRead (A4); // a következő mérést hozzáadjuk az összeghez
   minta_szám ++; // az egységet hozzáadják a mérési számhoz
   sun = összeg / 10;} // 10 mérésből keresse meg az átlagértéket
   
   noll = analogRead (A3) / 2; // középpontbeli teljesítmény
   úszófeszültség = térkép (analogRead (A3), 0,1023,0,1500) /100,0;
                                        // Az A3 bemeneten épített voltmérő
   if (nap> noll + i) {megyék = térkép (nap, noll + i, noll * 2 - 250, 9, 14);
                                        // ha a kapott eredmény a skála 9-15. szegmensében van
    hang (6, megyék * 100);}
   if (sun <= noll - i) {countleds = map (sun, 116, noll - i, 0, 7);
                                        // ha a kapott eredmény a skála 0-7 szegmense
    hang (6, * 50); }
     if (sun & noll & sun = = noll - (i-1)) {countleds = 7;
    noTone (6); } // virtuális ZERO szigete (7 szegmens)
     if (sun & noll & sun; = noll + (i-1)) {countleds = 8;
    noTone (6); } // virtuális ZERO-skála szigete (8 szegmens)

   
    {lcd.setCursor (számol, 0); // állítsa a kurzort a mezők oszlopára, 0 sor
    lcd.print ("\ xff"); // kitöltött ikon
    lcd.setCursor (0, 1); // lépjen a 2. sorba, 0. oszlop
    lcd.print (char (1)); // Akkumulátor ikon jelzése
    lcd.setCursor (1, 1); // lépés a feszültség jelzésére
    lcd.print (feszültség); // feszültség
    lcd.setCursor (7, 0); // 8. oszlop, 1. sor
    if (sun & noll) {lcd.print ("{");} // print
    lcd.setCursor (8, 0); // 9. oszlop 1. sora
    if (sun & noll) {lcd.print ("}");} // print
    lcd.setCursor (7, 1);
    lcd.print ("B =");
    lcd.setCursor (9, 1); // 11. oszlop 2. sor
    lcd.print (i); // akadály
    lcd.set kurzor (13, 1); // 13. oszlop 2. sor
    lcd.print (nap); // nyomtassa ki az ADC érték átlagértékét
    késleltetés (100); // várj
    
  buttonState1 = digitalRead (gomb1); // Olvassa el az 1. gomb állapotát
  buttonState2 = digitalRead (button2); // Olvassa el a 2. gomb állapotát
  if (buttonState1 == LOW) {i = i + 1; késleltetés (50);}
                                        // A gomb megnyomásakor az akadály 1-re növekszik. Késleltetés 50
  if (buttonState2 == LOW) {i = i - 1; késleltetés (50);}
                                        // A gomb megnyomásakor az akadály 1-rel csökken. Késleltetés 50
  if (i <1) {i = 1;} // Az akadály alsó határa
  if (i> 38) {i = 38;} // Az akadály felső határa
 
 lcd.clear ();
    }
}

Az autó nem használt: A TL074 utolsó két eleme üresjáratban maradt. De az áramkörön és a kártyán vannak. Érdemes kicsit később üzembe helyezni őket. Hiszem, hogy elértem a célomat. A kijelzőegység csodálatosan működik. Minden más az MD-től függ.
9.8
10
10

Adj hozzá egy megjegyzést

    • smilemosolyogxaxarendbendontknowjehunea
      főnökkarcolásbolondigenigen-igenagresszívtitok
      Bocsánattáncdance2dance3megbocsátássegítségitalok
      megállásbarátokjógoodgoodsípájulásnyelv
      füsttapsolóCrayállapítsagúnyosdon-t_mentionletöltés
      hőségingerültlaugh1MDAtalálkozómoskingnegatív
      not_ipopcornbüntetolvasmegijesztijesztkeresés
      gúnyolódásthank_youeztto_clueumnikakutegyetért
      rosszbeeeblack_eyeblum3pírdicsekvésunalom
      cenzúrázottvidámságsecret2fenyegetgyőzelemyusun_bespectacled
      ShokRespektlolprevedfogadtatáskrutoyya_za
      ya_dobryisegítőne_huliganne_othodiFLUDtilalomközel
24 megjegyzések
A szerző
Köszönöm puteec FU! Másodszor kértem. Odafűztem Arduinón. A probléma eltűnt a rendszerbetöltő frissítése után. Most érdekli, hogyan lehet tovább konfigurálni.
puteec fu
Bármely Arduino alkalmas az atmega168, atmega328 típusokhoz. Körülbelül nano, usb csatlakozóval, ha nem tévedek. Varrja be az Arduino ide-t a Blink vázlat példáiból (villogó LED-ek a 13. tűn, a LED a táblára van felszerelve). Ellenőrizze, hogy a megfelelő portot használja-e, a fórumot megfelelően választotta-e meg, a fórumon lévő processzort helyesen választotta-e meg, a frekvenciaváltó kvarc frekvenciáját megfelelően választotta-e meg, a firmware-módszert (μ2) helyesen választotta-e meg.
Hiba nem történt.
Hozzon létre egy új fájlt az Arduino-ban, másolja a vázlatot innen egy új és tiszta vázlatra, és ez működni fog.De először tegye rá, hogy az Arduino tábla LED-jén egy villogó példa villogjon. Akkor lépj tovább.
Arduino p nano-t csak az Atmega328 processzoron vettem. Átnéztem egy csomó videót és fórumot ... azt mondták, hogy fel kell készülnie .... de akkor a lökhárító NEM villog. Találkozott valaki ezzel?
A szerző
Vázlat működik ezen a táblán. Pontosan mi a dugó?
Ha önti az utolsó vázlatot, akkor a D3.3-hoz és a D3.4-hez kapcsolódó összes részletet, valamint magukat nem lehet telepíteni. A forrasztópályán ábrázolás készült erről a témáról
Anjey888
Helló Ez a téma nagyon érdekli. Szeretnék összeszerelni a készüléket. Készítettem egy forrasztópáka táblát útközben ... majd beragadtam. Mivel sok a vita az alaplap és az áramkör között. Elkezdtem összehasonlítani a tábládat ... ez nagy különbség. De összekeverve az Arduino hevederrel.
Kérem a tájékozott emberek segítségét.
A szerző
Ugyanaz, mint a többi fémen. Az észlelés mélysége a célterülettől függ. Minél több, annál mélyebb.
Vendég Eugene
Milyen korlátok vannak az objektumok észlelésére? Arany, alumínium, réz.
Vendég Alexander
Mi a teendő most, mert még mindig van Schottky akadály?
A szerző
Nos itt! Akár a legkisebb érték is ki van zárva. Köszönöm a magyarázatot.
Idézet: puteec_80
Az emberek gyorsabban és intuitívebben megértik, miről beszélek.
Folytathatja ezt a hibát. ((A műszaki ismeretekkel rendelkező emberek enyhén vesztesek lesznek.
BARRIER, férj.
1. Egy akadály (egyfajta fal, keresztrúd), amely az útba van állítva.
2. Kerítés, kerítés.

THRESHOLD, küszöb, férj.
1. A tudományban és a technológiában a küszöböt a legkisebb értéknek, valami megnyilvánulásának mértékének nevezik.
A készülék érzékenységi küszöbértéke. | Hallási küszöb. | A fájdalom küszöbértéke. | Az érzékelő bekapcsol, ha a beállított hőmérsékleti küszöbértéket túllépik.
smile
A szerző
Maradjunk a sajátunknál. Azt írom, hogy "növeli a gátat egy egységgel" és "a vevő érzékenysége 5 μV volt". És azt írja: „A működési küszöb növelése egy egységgel” és „A vevő érzékenységi küszöbje ..” Ezenkívül az emberek gyorsabban és intuitívebben megértik, miről beszélek.
És ebben a példában magyarázom. Nincs szigorúan szólva a küszöb, mert nincs egyértelmű referencia-skála. Van egyfajta kivágott lebegő sáv a lebegő jelből. Tehát számomra úgy tűnik, hogy az akadály meghatározása sokkal alkalmasabb erre a „lebegő” szalagra, mint egy küszöbértékre.
Általában értelmetlen és ostoba érv. Van kérdése?
Idézet: puteec_80
Mi az alsó és felső küszöbük?
Lehet, hogy a lefordított szavak jelentése nem egyezik, vagy kissé nem egyezik. De tökéletesen leírják a folyamatot, és fokozatosan szlengbe lépnek.
Pontosan mi a küszöb. A válaszküszöb az Ön esetében. Kérjük, magyarázza el, hogy a „akadály” hogyan írja le a folyamatot.
Ami a szlenghez való csatlakozást illeti - most sok mindenféle félreértés van itt. ((
A szerző
Ebben az esetben továbbra is hajlamosak a "akadály" szót használni, mert ez az akadály, amelyet a programszöveg beállít, de anélkül, hogy a tartományba kerülne, a jelet a mikrovezérlő hasznosnak veszi. És ez az akadály, mert Két értéke van - a bejutás felső és alsó határa, azaz A művelet az ADC skálán a „felső” és az „alsó” határ alatt történik. De jobban tudod. Mi az alsó és felső küszöbük?
Lehet, hogy a lefordított szavak jelentése nem egyezik, vagy kissé nem egyezik. De tökéletesen leírják a folyamatot, és fokozatosan szlengbe lépnek.
Mellesleg. Az érzékenység és a gát teljesen más dolgok.
Igen.Keresztezik egymást. De nem több.
Idézet: puteec_80
A külföldi MD-ben a menü „Barier” felirattal rendelkezik.

Lehet, hogy meglep, de sok olyan angol szónak, amely hasonló a miénkhez, más jelentése van, néha közeli, néha nem. Keresd a "hamis fordító barátok" szavakat.
Most lényegében. Oroszul műszaki dokumentáció nincs egyszerűen nincs ilyen „érzékenységi akadály” kifejezés - és ennyi! Van egy „érzékenységi küszöb”, bizonyos esetekben mondhatjuk az „érzékenységi határ”, de nem az „érzékenységi akadályt”. Talán más tudáságakban használják, de az elektronikában nem.
A szerző
Nos, ez azt jelenti, hogy minden külföldi mérnök ugrál át egy boton az úton. A külföldi MD-ben a menü "Barier" feliratot mutat, Ivan elvtárs, olyan szembeszállásokra esik a szemembe! Hol vannak véleményed az érdemről? Ezután a kezét laposan a homlokára kell tapsolni? Sokszor elrontottál engem büntet
A különbség szignifikáns: a küszöb egy technikai kifejezés, az akadály egy "bot az út túloldalán".
A szerző
Talán. De nem látom a különbséget.
Lehet, hogy nem "akadály", hanem egy küszöb? ;)
A szerző
Az ábra nem mutatja az akadálybeállító gombokat. Csatlakoztatva vannak az Arduino 7. és 8. érintkezőjéhez. Mindegyik 10 k plusz ellenállással fel van húzva, amikor megnyomja a tömeget.
A szerző
void loop () {
int buttonState1 = HIGH; // A gomb állapota egy
int buttonState2 = HIGH; // Két gomb állapot

int pot = analogRead (A4); // szűrő a gyors jelváltáshoz
jel = jel * (1-K) + edény * K;

noll = noll * (1-L) + jel * L; // hosszú távú jelszűrő
// Az A3 bemeneten épített voltmérő
úszófeszültség = térkép (analogRead (A3), 0,1023,0,1500) /100,0;

if (jel> = noll + i) {countleds = térkép (jel, noll + i, 1023, 9, 14);
// ha a kapott eredmény a skála 9-15. szegmensében van
hang (6, megyék * 100);}
if (jel <= noll - i) {countleds = map (jel, 0, noll - i, 0, 7);
// ha a kapott eredmény a skála 0-7 szegmense
hang (6, * 50); }
if (jel = noll - (i-1)) {countleds = 7;
noTone (6); } // virtuális ZERO szigete (7 szegmens)
if (sign> noll && sign <= noll + (i-1)) {countleds = 8;
noTone (6); } // virtuális ZERO-skála szigete (8 szegmens)


{lcd.setCursor (számol, 0); // állítsa a kurzort a mezők oszlopára, 0 sor
lcd.print ("\ xff"); // kitöltött ikon
lcd.setCursor (0, 1); // lépjen a 2. sorba, 0. oszlop
lcd.print (char (1)); // Akkumulátor ikon jelzése
lcd.setCursor (1, 1); // lépés a feszültség jelzésére
lcd.print (feszültség); // feszültség
lcd.setCursor (7, 0); // 8. oszlop, 1. sor
if (jel lcd.setCursor (8, 0); // 9. oszlop 1. sora
if (sign> noll) {lcd.print ("}");} // print
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11. oszlop 2. sor
lcd.print (i); // akadály
lcd.set kurzor (13, 1); // 13. oszlop 2. sor
lcd.print (jel); // nyomtassa ki az ADC érték átlagértékét
késleltetés (10); // várj

buttonState1 = digitalRead (gomb1); // Olvassa el az 1. gomb állapotát
buttonState2 = digitalRead (button2); // Olvassa el a 2. gomb állapotát
if (buttonState1 == LOW) {i = i + 1; késleltetés (50);}
// A gomb megnyomásakor az akadály 1-re növekszik. Késleltetés 50
if (buttonState2 == LOW) {i = i - 1; késleltetés (50);}
// A gomb megnyomásakor az akadály 1-rel csökken. Késleltetés 50
if (i <1) {i = 1;} // Az akadály alsó határa
if (i> 38) {i = 38;} // Az akadály felső határa

lcd.clear ();
}
}
A szerző
Új vázlat. Megváltozott a hasznos jel detektálásának algoritmusa. A séma egyszerűsített, nincs D3.4 és D3.3 elem az összes kötéssel. Ha saját feliratát veszi, akkor ezeket az adatokat egyszerűen nem lehet telepíteni. Több érzékenység. Nincs hamis pozitív.
vázlat:

// A3-analóg bemenet voltmérőhöz, beállítható az R32 potenciométerrel.
// A4-analóg bemenet a jelhez. Állítsa be a D3.2 minimális jelével
// R40 ellenállás kb. 510 ADC leolvasáshoz.
// a zook következtetése
// 9 - 31200 Hz kimeneti frekvencia
# beletartozik a
Folyadékkristályos LCD (12, 11, 5, 4, 3, 2);

z1 byte byte [8] = {// elem ikon
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int országok: 0; // változó a skálaszint érték tárolására

úszó feszültség = 0,0; // számított feszültség
const int gomb1 = 7; // akadály plusz gomb
const int gomb2 = 8; // akadály-mínusz gomb
int i = 5; // akadály
const float K = 0,1; // gyors változások szűrőkövetése (együttható, minél kisebb, annál erősebb)
const float L = 0,07; // szűrőkövetési változások hosszú ideig
úszó jel = 0; // szűrő
úszó noll = 0;

érvénytelen beállítás () {
lcdbegin (16, 2); // a képernyő inicializálása
lcd.createChar (1, z1);
pinMode (9, OUTPUT);
pinMode (6, OUTPUT);
TCCR1A = TCCR1A és 0xe0 | 2;
TCCR1B = TCCR1B és 0xe0 | 0x09;
analogWrite (9, 126); // 10-es érintkezőn PWM = 50% f = 31200Hz
// valójában PWM = 50% esetén legalább 220 töltést kell beállítani az oszcilloszkóp szerint
// az duin nem tudja kezelni. Ez nem kritikus.
}
A szerző
Azok, akik figyelni fogják a vázlatot. A> = és <= jeleket a & gt és a lt furcsa kombinációi váltják fel. Miért nem tudom. Amikor a hibakeresés normális volt.

Azt javasoljuk, hogy olvassa el:

Adja át az okostelefon számára ...