» elektroniikka » Metalli-ilmaisimet »Metalli-ilmaisin Arduino Pro Mini: ssä. Kolokolov-Shchedrinin syvyysten käsittely "Transmission" -periaatteen mukaisesti

Metalliilmaisin Arduino Pro Mini -mallissa. Kolokolov-Shchedrinin syvyysten käsittely "Transmission" -periaatteen mukaisesti


Kolokolov-Shchedrin-syvänmeren kierrätys. Eroa alkuperäiseen järjestelmään verrattuna:
1. K561 .. -piirissä ja 32 kHz kvartsissa ei ole kideoskillaattoria. 32 kHz: n signaali antaa Arduino Pro Mini -sovelluksen.
2. Ääniilmoituspiirejä useissa 561-sarjan mikropiireissä ei myöskään ole läsnä, Arduino myös ilmaisee kohteen (ja minun on sanottava, että se on erinomainen äänitys, verrattuna kirjoittajan ohjelmaan).
3. Voimanlähteenä 12v yksinapainen jännite (lyijyakku).
4. Säädä herkkyyttä painikkeilla. ADC-asteikolla 0 - 1023 vastekynnystä voidaan säätää välillä 1 - 38 (arvo voidaan helposti muuttaa luonnoksessa).


Metalliilmaisin Arduino Pro Mini -mallissa. Kolokolov-Shchedrinin syvyyksien käsittely prosessin


Tärkeintä on, että halusin osoittaa tässä artikkelissa, että on mahdollista koota MD-levyjä Arduinolle, joka ei ole herkkyyttä huonompi kuin alkuperäinen (tämä toimi, koska alkuperäisen piirin alkuperäiset kerättiin 10 kappaleen tilauksesta, joten vertailua varten on materiaalia). Alkuperäinen piiri:


Kun aloin työskennellä Arduinon kanssa, innostuin niin, että ajattelin löytää ja koota mitä tahansa metalliilmaisinpiirejä Internetistä Arduinossa, jotta voisin helposti löytää suuren roskien avoimista tiloista. Periaatteessa se osoittautui niin, mutta piirit perustuivat taajuuslaskuriin, joka ei mahdollistanut saavuttaa todella hyvää etäisyyttä. Jotkut lasten lelut ja kynän testi + yrittävät ansaita rahaa aloittelijoille. Tämän MD alkuperäiskappale on todellinen työhevonen, jonka avulla voit löytää suuria esineitä 2 metrin etäisyydeltä (katso Google-kirjassa Kolokolov-Shchedrin). Muunnetusta md: stä ei ole tilastoja. Toivon, että hän ilmestyy MD: n ja Arduinon fanien tuella. Järjestelmä toimi Arduino Unon ja Arduino Pro Mini: n kanssa.

Linkki edelleen esitetään tämän MD-syntymän prosessissa juotosraudan verkkosivustolla, joka kesti yli vuoden ja pakotti kirjoittajan opiskelemaan ohjelmointiparia. Ehkä luonnos näyttää jollekin kurjalle - hyväksyn mielelläni KIINNÖT.




Tällä hetkellä on luonnos, jonka avulla voit säätää herkkyysestettä (nasta 7 merkitsee +1 esteelle, nasta 8 -1 esteelle). .
Arduino noin mini 5v, 16MHz, ATmega168 ja näyttö käyttivät näitä. Asteikon vieressä on Mini SD -sovitin


Kuten jo mainittiin, 1602 maksaa 86 ruplaa, ProMini - 82 ruplaa. Jos haluat, voit yleensä ottaa alasti ATmega168: n, kehittää siitä levyn ja täyttää luonnos suoraan siihen.Ja niin esimerkiksi asensin äiti-isä MD-kortille liittimen avulla. Kuvassa Arduinon 6-napainen pistoke, jonka läpi luonnokset kaadettiin suoraan pöydälle.

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

// A3-analogiatulo volttimittarille
// analoginen A4-tulo signaalille
// 6- zoo-johtopäätös
// 9 - lähtötaajuus 31200 Hz
#include
Nestekidenäyttö LCD (12, 11, 5, 4, 3, 2);
                                       
  tavu z1 [8] = {// paristokuvake
  0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
 
 int maat = 0; // muuttuja tallentaa asteikon tason arvon
 int voltag = 0; // muuttuja jännitearvon tallentamiseksi
 int noll = 0; // muuttuja keskipistearvon tallentamiseksi
   #define NUM_SAMPLES 10 // 10 analogista näytettä luettavaksi 1 sekunnissa
   int summa = 0; // otettujen näytteiden summa
   int aurinko = 0; // sama, mutta jaettuna 10: llä
   allekirjoittamaton char näytteen_luku = 0; // nykyinen näytteen numero painikkeella
   kelluva jännite = 0,0; // laskettu jännite
   const int-painike1 = 7; // este plus -painike
   const int-painike2 = 8; // este-miinus-painike
   int i = 5; // este
   
tyhjä asennus () {
     lcdbegin (16, 2); // näytön alustus
     lcd.setCursor (1, 0);
     lcd.setCursor (10, 1);
     lcd.print ("Rx-Tx");
     viive (3000);
     lcd.selkeä ();
     
     TCCR1A = TCCR1A & amp; 0xe0 | 2;
     TCCR1B = TCCR1B & amp; 0xe0 | 0x09;
     analogWrite (9, 126); // nastalla 10 PWM = 50% f = 31200Hz
     
     lcd.luoChar (1, z1);
     }
     
tyhjä silmukka () {
     int buttonState1 = KORKEA; // Painikkeen tila on yksi
     int buttonState2 = KORKEA; // Kahden painikkeen tila
   näyte_luku = 0; // nollaa lisäysten määrän muoto
   summa = 0; // nollaa 10 lisäyksen summa
   kun taas (näyte_luku  noll + i) {maapallot = kartta (aurinko, noll + i, noll * 2 - 250, 9, 14);
                                        // jos vastaanotettu tulos on asteikon 9-15. segmentissä
    ääni (6, neuvoo * 100);}
   if (aurinko <= noll - i) {countleds = map (aurinko, 116, noll - i, 0, 7);
                                        // jos tulos on 0-7 asteikon segmentti
    ääni (6, neuvoo * 50); }
     if (aurinko  = noll - (i-1)) {countleds = 7;
    noTone (6); } // virtuaalisen nollan saareke (7 segmentti)
     if (aurinko> noll & & aurinko <= noll + (i-1)) {countleds = 8;
    noTone (6); } // virtuaalisen ZERO-asteikon saari (8 segmenttiä)

   
    {lcd.setCursor (neuvoo, 0); // aseta kohdistin maakohtaisten sarakkeiden riville 0
    lcd.print ("\ xff"); // täytetty kuvake
    lcd.setCursor (0, 1); // siirry 2 riville, sarake-0
    lcd.print (char (1)); // Paristokuvakkeen ilmaisin
    lcd.setCursor (1, 1); // siirry jännitteen osoitukseen
    lcd.print (jännite); // jännite
    lcd.setCursor (7, 0); // 8. sarakkeen 1. rivi
    if (aurinko & noll) {lcd.print ("{");} // tulosta
    lcd.setCursor (8, 0); // 9. sarakkeen 1. rivi
    if (aurinko & noll) {lcd.print ("}");} // tulosta
    lcd.setCursor (7, 1);
    lcd.print ("B =");
    lcd.setCursor (9, 1); // 11 sarakkeen 2. rivi
    lcd.print (i); // este
    lcd.setCursor (13, 1); // 13. sarakkeen 2. rivi
    lcd.print (aurinko); // tulosta ADC-arvon keskiarvo
    viive (100); // odota
    
  buttonState1 = digitalRead (painike1); // Lue painikkeen 1 tila
  buttonState2 = digitalRead (painike2); // Lue painikkeen 2 tila
  if (buttonState1 == LOW) {i = i + 1; viive (50);}
                                        // Kun painiketta painetaan, este kasvaa 1. Viive 50
  if (buttonState2 == LOW) {i = i - 1; viive (50);}
                                        // Kun painiketta painetaan, este vähenee 1. Viive 50
  if (i <1) {i = 1;} // esteen alaraja
  if (i> 38) {i = 38;} // esteen yläraja
 
 lcd.selkeä ();
    }
}

En käyttänyt autoa. TL074: n kaksi viimeistä elementtiä jätettiin käyttämättä. Mutta piirillä ja kortilla ne ovat. Haluat ehkä viedä ne työtilaan vähän myöhemmin. Uskon saavuttaneen tavoitteeni. Näyttölaite toimii hienosti. Kaikki muu riippuu MD: stä.
9.8
10
10

Lisää kommentti

    • hymyillähymyileexaxakunnossadontknowyahoonea
      pomonaarmutyperyskylläkyllä-kylläaggressiivinensalaisuus
      anteeksitanssidance2dance3anteeksihelpjuomat
      pysäytysystäväthyvägoodgoodpillipyörtyäkieli
      savutaputusCrayjulistaapilkallinenDon-t_mentiondownload
      lämpöirefullaugh1MDAkokousmoskingnegatiivinen
      not_ipopcornrangaistaluettupelästyttääpelottaaetsi
      kiusatathank_youtämäto_clueumnikakuuttisuostua
      huonoBeeeblack_eyeblum3punastuaylpeilläikävystyminen
      sensuroituhassutussecret2uhatavoittoyusun_bespectacled
      SHOKrespektlolprevedtervetuloakrutoyya_za
      ya_dobryiauttajane_huliganne_othodifludkieltolähellä
24 kommentit
Kirjailija
Kiitos puteec FU! Pyysin sitä toisesta kerrasta. Ompelin Arduino unon läpi. Ongelma katosi käynnistyslataimen päivityksen jälkeen. Nyt kiinnostaa, miten määrittää edelleen.
puteec fu
Mikä tahansa Arduino sopii atmega168, atmega328. Tietoja nano tästä usb-liittimellä, jos ei erehty. Ompele Arduino ide Blink-luonnoksen esimerkeistä (vilkkuvat LEDit napissa 13, LED on asennettu levylle). Varmista, että käytät oikeaa porttia, kortti on valittu oikein, kortin prosessori on valittu oikein, kortin kvartsitaajuus on valittu oikein, laiteohjelmistomenetelmä (μ2) on valittu oikein.
Virhettä ei havaittu.
Luo uusi tiedosto Arduinossa, kopioi luonnos tästä uuteen ja puhtaan luonnoksen kanssa, ja se toimii.Mutta ensin, anna Arduino-levyn merkkivalo vilkkua tavallisella vilkkuvalla esimerkillä. Siirry sitten eteenpäin.
Ostin Arduino p nanon vain Atmega328-prosessorilla. Tarkistin joukon videoita ja foorumeita ... he sanoivat, että sen pitäisi keksiä .... mutta silloin puskuri EI EI vilku .... antaa #include odottaa "FILENAME" tai . Onko kukaan kohdannut tätä?
Kirjailija
Luonnos toimii tämän levyn kanssa. Mikä tulppa on tarkalleen muodostettu?
Jos kaatat viimeisen luonnoksen, kaikkia D3.3: een ja D3.4: ään liittyviä yksityiskohtia, samoin kuin niitä itse, ei voida asentaa. Juotosraudassa on piirretty uudelleen tästä aiheesta
Anjey888
Hei Tämä aihe on erittäin kiinnostunut. Haluan koota laitteen. Tein juotosrautalevyn liikkeellä ollessani ... ja sitten takertuin. Koska levyn ja piirin välillä on paljon erimielisyyksiä. Alasit verrata taulusi ... siinä on iso ero. Mutta sekoittaa Arduinon valjaisiin.
Pyydän asiantuntevien ihmisten apua.
Kirjailija
Sama kuin muilla metalleilla. Havaitsemissyvyys riippuu kohteen alueesta. Mitä enemmän, sitä syvempi.
Vieras Eugene
Mitkä ovat esineiden havaitsemisen rajat? Kulta, alumiini, kupari.
Vieras Alexander
Mitä tehdä nyt, koska Schottky-este on edelleen olemassa?
Kirjailija
No täällä! Noin pienin arvo ei ole kysymys! Kiitos selventämisestä.
Lainaus: puteec_80
Ja ihmiset ymmärtävät nopeammin ja intuitiivisemmin mitä puhun.
Voit jatkaa tämän virheen säilymistä. ((Teknisesti lukutaitoiset ihmiset menettävät pienen tappion.
BARRIER, aviomies.
1. Este (eräänlainen seinä, poikkipalkki) asetettu tielle.
2. Aita, aidat.

THRESHOLD, kynnys, aviomies.
1. Tieteessä ja tekniikassa kynnysarvoa kutsutaan pienimmäksi arvoksi, jonkin ilmaisun asteeksi.
Laitteen herkkyysraja. | Kuulokynnys. | Kipu kynnys. | Anturi laukeaa, kun asetettu lämpötilaraja ylitetään.
hymyillä
Kirjailija
Jäämme omien kanssa. Kirjoitan "esteen lisääminen yhdellä yksiköllä" ja "vastaanottimen herkkyys oli 5 μV". Ja kirjoitat: "Toimintakynnyksen lisääminen yhdellä yksiköllä" ja "Vastaanottimen herkkyyskynnyksen ..". Lisäksi ihmiset ymmärtävät nopeammin ja intuitiivisemmin mitä puhun.
Ja selitän tässä esimerkissä. Kynnystä ei ole tarkkaan ottaen, koska ei ole selkeää viiteasteikkoa. Kelluvassa signaalissa on jonkinlainen leikattu kelluva kaista. Joten minusta vaikuttaa siltä, ​​että esteen määritelmä on paljon sopivampi tähän ”kelluvaan” nauhaan kuin kynnysarvoon.
Yleensä turha ja tyhmä argumentti. Onko sinulla kysyttävää?
Lainaus: puteec_80
Mitkä ovat heidän ala- ja ylärajat?
Ehkä käännettyjen sanojen merkitykset eivät täsmää tai vastaavat vähän. Mutta ne kuvaavat prosessia täydellisesti ja astuvat vähitellen slängiin.
Mikä kynnys on. Vastauskynnys on sinun tapauksessasi. Selitä, kuinka este estaa prosessin.
Mitä tulee slängiin liittymiseen - nyt siellä on paljon kaikenlaisia ​​väärinkäsityksiä. ((
Kirjailija
Tässä tapauksessa olen edelleen taipuvainen käyttämään sanaa "este", koska se on este, joka asetetaan ohjelmatekstissä, mutta asettamatta sen toiminta-alueelle mikro-ohjain pitää signaalia hyödyllisenä. Ja se on este, koska Sillä on kaksi arvoa - sisäänajon ylä- ja alarajat, ts. toiminta tapahtuu esteen "ylä" ja "ala" -rajan yläpuolella ADC-asteikolla. Tiedät kuitenkin paremmin. Mitkä ovat heidän ala- ja ylärajat?
Ehkä käännettyjen sanojen merkitykset eivät täsmää tai vastaavat vähän. Mutta ne kuvaavat prosessia täydellisesti ja astuvat vähitellen slängiin.
Muuten. Herkkyys ja este ovat täysin erilaisia ​​asioita.
Kyllä.He leikkaavat toisiaan. Mutta ei enempää.
Lainaus: puteec_80
Ulkomaisessa MD-ohjelmassa valikossa lukee "Barier".

Voin yllättää, mutta monilla englanninkielisillä sanoilla, jotka näyttävät samanlaisilta kuin meidän omamme, on erilainen merkitys, joskus lähellä, toisinaan ei. Etsi sanat "vääriä kääntäjän ystäviä".
Nyt olennaisesti. Venäjäksi tekninen dokumentointi ei sellaista ilmausta "herkkyyden este" ei yksinkertaisesti ole - ja siinä se on! Siellä on "herkkyyskynnys", joissakin tapauksissa voidaan sanoa "herkkyysraja", mutta ei "herkkyysestettä". Ehkä joissakin muissa tiedon aloissa sitä käytetään, mutta ei elektroniikassa.
Kirjailija
No, se tarkoittaa, että kaikki ulkomaiset insinöörit hyppäävät tikun yli tien päällä. Ulkomaisessa MD: ssä valikossa on sanoma "Barier" .Toveri Ivan, putoat silmissäni sellaisilla pienillä paloilla! Missä kommentoit asiaa? Jonka jälkeen sinun täytyy taputtaa käsiäsi otsalle? Pilatit minua usein rangaista
Ero on merkittävä: kynnys on tekninen termi, este on "tien yli tien".
Kirjailija
Ehkä. Mutta en näe eroa.
Ehkä ei "este", mutta kynnys? ;)
Kirjailija
Kaavio ei näytä esteen säätöpainikkeita. Ne on kytketty Arduinon nastoihin 7 ja 8. Jokainen, jonka vetokyky on 10 k pluslilla, sulkeutuu, kun painat massaa.
Kirjailija
tyhjä silmukka () {
int buttonState1 = KORKEA; // Painikkeen tila on yksi
int buttonState2 = KORKEA; // Kahden painikkeen tila

int potti = analoginen lukema (A4); // suodatin nopeaa signaalinvaihtoa varten
merkki = merkki * (1-K) + potti * K;

noll = noll * (1-L) + merkki * L; // pitkäaikainen signaalin suodatin
// Tulolähteeseen A3 rakennettu volttimittari
kelluva jännite = kartta (analoginen luku (A3), 0,1023,0,1500) / 100,0;

if (merkki> = noll + i) {countleds = map (merkki, noll + i, 1023, 9, 14);
// jos vastaanotettu tulos on asteikon 9-15. segmentissä
ääni (6, neuvoo * 100);}
if (merkki <= noll - i) {countleds = map (merkki, 0, noll - i, 0, 7);
// jos tulos on 0-7 asteikon segmentti
ääni (6, neuvoo * 50); }
if (merkki = noll - (i-1)) {countleds = 7;
noTone (6); } // virtuaalisen nollan saareke (7 segmentti)
if (sign> noll && sign <= noll + (i-1)) {countleds = 8;
noTone (6); } // virtuaalisen ZERO-asteikon saari (8 segmenttiä)


{lcd.setCursor (neuvoo, 0); // aseta kohdistin maakohtaisten sarakkeiden riville 0
lcd.print ("\ xff"); // täytetty kuvake
lcd.setCursor (0, 1); // siirry 2 riville, sarake-0
lcd.print (char (1)); // Paristokuvakkeen ilmaisin
lcd.setCursor (1, 1); // siirry jännitteen osoitukseen
lcd.print (jännite); // jännite
lcd.setCursor (7, 0); // 8. sarakkeen 1. rivi
if (merkki lcd.setCursor (8, 0); // 9. sarakkeen 1. rivi
if (sign> noll) {lcd.print ("}");} // print
lcd.setCursor (7, 1);
lcd.print ("B =");
lcd.setCursor (9, 1); // 11 sarakkeen 2. rivi
lcd.print (i); // este
lcd.setCursor (13, 1); // 13. sarakkeen 2. rivi
lcd.print (merkki); // tulosta ADC-arvon keskiarvo
viive (10); // odota

buttonState1 = digitalRead (painike1); // Lue painikkeen 1 tila
buttonState2 = digitalRead (painike2); // Lue painikkeen 2 tila
if (buttonState1 == LOW) {i = i + 1; viive (50);}
// Kun painiketta painetaan, este kasvaa 1. Viive 50
if (buttonState2 == LOW) {i = i - 1; viive (50);}
// Kun painiketta painetaan, este vähenee 1. Viive 50
if (i <1) {i = 1;} // esteen alaraja
if (i> 38) {i = 38;} // esteen yläraja

lcd.selkeä ();
}
}
Kirjailija
Uusi luonnos. Algoritmia hyödyllisen signaalin havaitsemiseksi on muutettu. Kaavio on yksinkertaistettu, elementtejä D3.4 ja D3.3 ei ole kaikilla niiden sidoksilla. Jos otat oman merkin, kaikkia näitä yksityiskohtia ei yksinkertaisesti voida asentaa. Lisää herkkyyttä. Ei vääriä positiivisia.
luonnos:

// A3-analogiatulo volttimittarille, asetettavissa potentiometrillä R32.
// Signaalin A4-analogiatulo. Aseta minimisignaalilla kohtaan D3.2
// vastus R40 ADC-lukemiin noin 510.
// 6- zoo-johtopäätös
// 9 - lähtötaajuus 31200 Hz
# sisällytä
Nestekidenäyttö LCD (12, 11, 5, 4, 3, 2);

tavu z1 [8] = {// paristokuvake
0b01100, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110, 0b11110};
int maat = 0; // muuttuja tallentaa asteikon tason arvon

kelluva jännite = 0,0; // laskettu jännite
const int-painike1 = 7; // este plus -painike
const int-painike2 = 8; // este-miinus-painike
int i = 5; // este
const-kelluvuus K = 0,1; // suodatusseuranta nopeat muutokset (kerroin. mitä pienempi, sitä voimakkaampi)
const-kelluvuus L = 0,07; // suodattimen seurannan muutokset pitkän ajan kuluessa
kelluva merkki = 0; // suodatin
kelluva noll = 0;

tyhjä asennus () {
lcdbegin (16, 2); // näytön alustus
lcd.luoChar (1, z1);
pinMode (9, OUTPUT);
pinMode (6, OUTPUT);
TCCR1A = TCCR1A & 0xe0 | 2;
TCCR1B = TCCR1B & 0xe0 | 0x09;
analogWrite (9, 126); // nastalla 10 PWM = 50% f = 31200Hz
// itse asiassa, kun PWM = 50%, sinun on asetettava vähintään 220 täyttämistä oskilloskoopin mukaan
// duin ei pysty käsittelemään sitä. Tämä ei ole kriittistä.
}
Kirjailija
Ne, jotka katsovat luonnoksen. Merkit> = ja <= on korvattu outoilla yhdistelmillä & gt ja & lt. Miksi en tiedä. Kun virheenkorjaus oli normaalia.

Suosittelemme lukemaan:

Anna se älypuhelimelle ...