Äänitunnistin robottipiirille. Valaistuksen akustiset anturit ovat tekniikan ihme, joka säästää rahaa. Liipaisin valaistuksen ohjaamiseen

Kaavio akustisesta anturista radioamatöörimalleissa

Ensimmäisessä tarkasteltavassa kaaviossa akustinen tyyppinen anturi kootaan pietsosähköisen äänilähettimen pohjalta ja reagoi erilaisiin värähtelyihin pinnassa, johon se nojaa. Muiden mallien perustana on tavallinen mikrofoni.


Tämä anturi on tehokas, jos sen valvoma pinta johtaa hyvin akustisia aaltoja (metalli, keramiikka, lasi jne.). Tämän radioamatöörimallin akustinen muunnin on tyypillinen pietsosähköinen äänilähetin kiinalaisesta yleismittarista, tyyppi M830. Se on pyöristetty muovikotelo, jossa on messinkilevy. Sen pinnalla runkoa vastapäätä on pietsosähköinen elementti, jonka ulkopuoli on hopeoitu. Johdot tulevat ulos hopeoidusta pinnasta ja messinkilevystä. Anturi on asennettava säädettävälle pinnalle siten, että sen muovirunko on hyvässä kosketuksessa ohjattavaan pintaan. Kun asennat akustista anturin lasille, voit lisätä herkkyyttä poistamalla emitterin kotelosta ja kiinnittämällä sen niin, että sen sileä messinkipinta painuu lasia vasten.


Kun se altistetaan pinnalle, jonka kanssa muunnin B1 on kosketuksessa, siinä syntyy sähköisiä värähtelyjä, joita esivahvistin vahvistaa ja operaatiovahvistimen A1 komparaattori muuntaa loogisiksi pulsseiksi. Laitteen herkkyyttä säädetään viritysresistanssilla R3. Jos muuntimessa ilmaantuva jännite ylittää operaatiovahvistimen herkkyysrajan. Sen lähdössä muodostuu loogisia impulsseja, jotka ovat luonteeltaan kaoottisia.

Looginen laite on rakennettu K561LA9-mikrokokoonpanoon. Piiritoteutus on tyypillinen kertakäyttöinen RS-liipaisupiiri, jossa on tulon esto. Kun jännite syötetään virtalähteestä, liipaisin kytkeytyy yksittäistilaan ja pysyy immuunina tulopulsseille niin kauan kuin kondensaattori C2 latautuu vastuksen R6 kautta. Kun tämä kapasiteetti on latautunut, liipaisin vapautuu.

Kun ensimmäinen pulssi saapuu akustisesta anturista, liipaisin kytkeytyy nollatilaan. Transistorikytkin VT1-VT2 avaa ja kytkee releen kuorman tai sireenin turvahälytysjärjestelmästä. (Kuorma on kytketty rinnan diodin VD2 kanssa). Tämä aloittaa kapasitanssin C3 lataamisen vastuksen R13 kautta. Kun tämä lataus on käynnissä, liipaisin pidetään nolla-tilassa. Sitten se palautetaan yhtenäisyyteen ja kuorma sammutetaan.

Jotta piiri ei pyörähtäisi sireenin aiheuttamien omien akustisten värähtelyjensä vuoksi, on olemassa C4-R11-ketju, joka estää loogisen laitteen tulon ja avaa sen vasta lyhyen ajan kuluttua kuorman irrottamisen jälkeen. Voit estää logiikkapiirin painamalla vipukytkintä S1. Rakenne palaa toimintatilaan 10 sekuntia vipukytkimen S1 vapauttamisen jälkeen. Syöttöjännitteen U p tulee olla välillä 5-15 volttia.

Mikrofonipohjainen akustinen anturi

Signaalin esivahvistus tapahtuu piirin vasemmalla puolella. VT1-tyyppinen KT361 tai sen nykyaikaisempi analogi, jonka pohjalle seuraa signaali mikrofonista M1 kapasitanssin C2 kautta, joka yhdessä vastuksen R4 kanssa muodostaa yksivaiheisen mikrofonivahvistimen. Transistori VT2 tyyppi KT315 on tyypillinen emitteriseuraaja ja suorittaa ensimmäisen vaiheen dynaamisen kuorman toiminnon. Sen käyttämä virta ei saa ylittää 0,4-0,5 mA.

Signaalin lisävahvistus suoritetaan KR1407UD2-tyypin DA1-mikropiirillä alhaisella virrankulutuksella. Se on kytketty differentiaalivahvistinpiirin mukaan. Siksi liitäntäjohtoihin indusoituneet yhteismoodin häiriöt vaimentuvat täydellisesti. Tulojännitteiden yhteismoodin hylkäyskerroin on 100 dB. Kuormavastuksilta R6 ja R7 otettu signaali seuraa kondensaattoreiden C3 ja C4 kautta operaatiovahvistimen DA1 invertoiviin ja ei-invertoiviin tuloihin. Signaalin vahvistuskerrointa voidaan säätää muuttamalla vastusten R8 ja R9 arvoja. Vastukset R10, R11 ja kapasitanssi C5 luovat keinotekoisen keskipisteen, jossa jännite on yhtä suuri kuin puolet teholähteen jännitteestä. Resistanssin R13 avulla asetamme mikropiirin vaaditun virrankulutuksen.

Transistori akustinen anturi

Alla oleva kuva näyttää yksinkertaisen, erittäin herkän äänianturin piirin, joka ohjaa kuormaa releellä. Kehittämisessä käytetään elektreettimikrofonia, kun käytetään ECM:ää, tarvitaan vastus R1, jonka resistanssi on 2,2 kOhm - 10 kOhm. Kaksi ensimmäistä bipolaarista transistoria edustavat esimikrofonivahvistinta, R4 C7 tässä piirissä eliminoi vahvistimen epävakauden.


BC182B:n vahvistimen jälkeen akustinen signaali syötetään tasasuuntaajalle 1N4148-diodilla ja kondensaattorilla C5, tuloksena oleva tasajännite tasasuuntaajan jälkeen ohjaa BC212B-transistorin toimintaa, joka puolestaan ​​ohjaa relettä.

Vaihtoehto 2

Piiri on yksinkertainen eikä vaadi säätöä, haittoja ovat seuraavat: rele reagoi kaikkiin koviin ääniin, erityisesti matalilla taajuuksilla. Lisäksi rakenteen epävakaata toimintaa havaittiin pakkasessa.

CMA-4544PF-W tai vastaava;

  • 3 LEDiä (vihreä, keltainen ja punainen, esimerkiksi tästä sarjasta);
  • 3 vastusta 220 ohmia (tässä on erinomainen sarja yleisimpien arvojen vastuksia);
  • liitäntäjohdot (suosittelen tätä sarjaa);
  • leipälauta;
  • henkilökohtainen tietokone Arduino IDE -kehitysympäristöllä.
  • 1 Elektreetti kapseli mikrofoni CMA-4544PF-W

    Käytämme valmiita moduulia, joka sisältää mikrofonin sekä tarvittavan vähimmäisjohdotuksen. Voit ostaa tällaisen moduulin.

    2 Kytkentäkaavio mikrofoni Arduinoon

    Moduuli sisältää elektreettimikrofonin, joka vaatii 3-10 voltin virran. Napaisuus liitettäessä on tärkeää. Yhdistetään moduuli yksinkertaisen kaavion mukaan:

    • moduulin lähtö "V" - +5 voltin virtalähteeseen,
    • pin "G" - GND:hen,
    • pin "S" - Arduinon analogiseen porttiin "A0".

    3 Luonnos lukemien lukemista varten elektreettimikrofoni

    Kirjoitetaan Arduinolle ohjelma, joka lukee mikrofonin lukemat ja lähettää ne sarjaporttiin millivolteina.

    Const int micPin = A0; // aseta nasta, johon mikrofoni on kytketty void setup() ( Serial.begin(9600); // sekvenssin alustus portti } void loop() ( int mv = analogiRead(micPin) * 5,0 / 1024,0 * 1000,0; // arvot millivoltteina Serial.println(mv); // lähtö porttiin }

    Miksi sinun on ehkä liitettävä mikrofoni Arduinoon? Esimerkiksi melutason mittaamiseen; ohjata robottia: seuraa taputusta tai pysäytä. Jotkut jopa onnistuvat "kouluttamaan" Arduinoa havaitsemaan erilaisia ​​ääniä ja luomaan näin älykkäämmän ohjauksen: robotti ymmärtää "Stop"- ja "Go"-komennot (kuten esimerkiksi artikkelissa "Äänentunnistus Arduinolla").

    4 "Taajuuskorjain" Arduinossa

    Kootaan eräänlainen yksinkertainen taajuuskorjain oheisen kaavion mukaan.


    5 Luonnos"taajuuskorjain"

    Muokataan luonnosta hieman. Lisätään LEDit ja kynnykset niiden toiminnalle.

    Const int micPin = A0; const int gPin = 12; const int yPin = 11; const int rPin = 10; void setup() ( Serial.begin(9600); pinMode(gPin, OUTPUT); pinMode(yPin, OUTPUT); pinMode(rPin, OUTPUT); } void loop() ( int mv = analogiRead(micPin) * 5,0 / 1024,0 * 1000,0; // arvot millivoltteina Serial.println(mv); // lähtö porttiin /* LED-vasteen kynnykset säädät itse kokeellisesti: */ if (mv )

    Tasain on valmis! Yritä puhua mikrofoniin ja huomaa, että LED-valot syttyvät, kun muutat puheen äänenvoimakkuutta.

    Kynnysarvot, joiden jälkeen vastaavat LED-valot syttyvät, riippuvat mikrofonin herkkyydestä. Joissakin moduuleissa herkkyys asetetaan trimmausvastuksen avulla, mutta minun moduulissani ei. Kynnysarvoiksi tuli 2100, 2125 ja 2150 mV. Sinun on määritettävä ne itse mikrofonillesi.

    Kotitekoiset anturit

    Kuvassa Kuva 1 esittää laitetta heikon signaalin vahvistimelle. Laite on toteutettu kahdelle samanlaiselle pnp-johtavuudelle piitransistorille, joilla on korkea vahvistus (80-100 virtaa). Kun ääni johdetaan mikrofoniin VM1, vaihtuva signaali tulee transistorin VT1 kantaan ja vahvistuu sen avulla. Lähtösignaali, joka ohjaa oheis- tai toimilaitteita negatiivisella reunalla, poistetaan transistorin VT2 kollektorista.

    Herkän akustisen anturin sähköpiiri bipolaarisilla transistoreilla

    Oksidikondensaattori C1 tasoittaa virtalähteen jännitteen aaltoilua. Takaisinkytkentävastus R4 suojaa pientä signaalivahvistinta itseherättymiseltä.

    Transistorin VT2 lähtövirta mahdollistaa pienitehoisen sähkömagneettisen releen ohjauksen, jonka käyttöjännite on 5 V ja käyttövirta 15...20 mA. Akustisen anturin laajennettu piiri on esitetty kuvassa. 3.9. Toisin kuin edellisessä piirissä, siinä on lisäominaisuuksia vahvistuksen säätämiseen ja lähtösignaalin kääntämiseen.

    Kehittynyt akustinen anturipiiri

    Mikrofonin VM1 heikkojen signaalien vahvistusta säädetään säädettävällä vastuksella R6 (katso kuva 2). Mitä pienempi tämän vastuksen resistanssi on, sitä suurempi on transistorin VT1 transistoriasteen vahvistus. Pitkäaikaisella harjoittelulla suositellun yksikön käytössä oli mahdollista todeta, että kun vastuksen R6 resistanssi on nolla, kaskadin itseherätys on mahdollista. Tämän välttämiseksi toinen rajoitusvastus, jonka resistanssi on 100-200 ohmia, on kytketty sarjaan R6:n kanssa.

    Akustisen anturin sähköpiiri, jolla on mahdollisuus kääntää lähtösignaali ja säätää vahvistusta

    Kaavio näyttää kaksi lähtöä, joista ohjaussignaali poistetaan seuraaville piireille ja liittimien elektroniikkakomponenteille. Kohdasta "OUTPUT 1" poistuu ohjaussignaali negatiivisella reunalla (joka tulee näkyviin, kun mikrofoniin VM1 syötetään ääntä). Pisteestä "OUTPUT 2" tulee käänteinen signaali (positiivisella reunalla).

    Kenttätransistorin KP501A (VT2) käytön ansiosta loppuvirtavahvistimena laite vähentää virrankulutusta (suhteessa edelliseen piiriin), ja sillä on myös kyky ohjata tehokkaampaa kuormaa, esimerkiksi toimeenpanevaa relettä. kytkentävirralla jopa 200 mA. Tämä transistori voidaan korvata KP501:llä, jolla on mikä tahansa kirjainindeksi, sekä tehokkaammalla sopivan kokoonpanon kenttätransistorilla.

    Näitä yksinkertaisia ​​malleja ei tarvitse säätää. Kaikki ne on testattu, kun ne syötetään samasta stabiloidusta lähteestä 6 V:n jännitteellä. Suunniteltu virrankulutus (ilman relevirran kulutusta) ei ylitä 15 mA.

    Tänään selvitämme kuinka työskennellä äänisensorimoduulin, alias, kanssa taputusanturi KY-037. Tällaisia ​​antureita käytetään usein turvajärjestelmissä asetetun melukynnyksen ylittymisen havaitsemiseen (lukitusnapsahdusten, askeleiden, moottorin äänien jne. havaitseminen). KY-037 äänisensorimoduulia käytetään usein myös ohjaamaan automaattisesti esimerkiksi käsien taputukseen reagoivaa valaistusta.

    Levyllä näemme itse anturin mikrofonin ja vertailusirun muodossa, joka määrittää hetken, jolloin äänenvoimakkuuden kynnys ylittyy. Ja juuri tämän hetken herkkyys (äänenvoimakkuuden kynnys) asetetaan vertailijan viereen asennetulla muuttuvalla vastuksella (potentiometrillä). Jos äänikynnys ylittyy, lähtö D0 korkean tason signaali tulee näkyviin.

    Yhdistetään ensin äänitunnistin KY-037 Arduino-levylle. Otetaan esimerkiksi Arduino Nano -kehityslevy.

    Pin G kytke KY-037 äänianturimoduuli lähtöön GND Arduino levyt. Pin + kytke äänianturi lähtöön 5V Arduino levyt. Johtopäätös D0 anturi, liitä digitaalilähtöön D5 Arduino levyt.

    KY-037-äänianturin asennus.

    Yhdistämme Arduino Nano -levyn tietokoneeseen. Taputusanturimoduulissa KY-037, virran merkkivalon pitäisi syttyä välittömästi L1. Sinun on ensin otettava ruuvimeisseli ja kiristettävä trimmausvastus säätäen siten anturin herkkyyttä. Ja anturin vasteilmaisin auttaa meitä herkkyyden asettamisessa L2. Jos ilmaisin L2 kun moduuli kytketään päälle, se myös syttyy, käännä trimmausvastusta vastapäivään, kunnes saavutamme pisteen, jossa merkkivalo sammuu. Jos ilmaisin L2 on off-tilassa, kun moduuli käynnistetään, mikä tarkoittaa päinvastoin, käännämme trimmausvastusta myötäpäivään, kunnes saavutamme hetken, jolloin merkkivalo alkaa syttyä. Tämän seurauksena tässä paikassa, jossa viritysvastusta hieman kääntämällä yhteen tai toiseen, ilmaisin pyrkii sammumaan tai syttämään, meidän on käännettävä sitä melko vähän vastapäivään, jotta ilmaisin L2 sammui, mutta käsiä taputettaessa se yritti syttyä.

    Avaa Arduino IDE -ohjelma, luo uusi tiedosto ja lisää siihen koodi, joka näyttää meille kuinka digitaalinen signaali tulee lähdöstä D0 tapauksissa, joissa trimmausvastuksen avulla asetettu kohinakynnys ylittyy.

    const int sensorD0 = 5; // Arduino-nasta, johon anturin D0-nasta on kytketty void setup () // Asetukset ( Serial.begin (9600); // SerialPortin alustus ) void loop () // Pääohjelman silmukka ( int sensorValue = digitalRead(sensorD0) // vastaanottaa signaali anturilta if (sensorValue == true) // Jos korkean tason signaali on saapunut Serial.println(sensorValue) // Tulosta digitaalinen arvo terminaaliin;

    Lataa tämä luonnos ja siirry valikkoon "Työkalut" - "Portin valvonta". Porttivalvontaikkuna on tyhjä, mutta heti kun taputamme käsiämme, ikkunaan ilmestyy niitä, jotka osoittavat korkean tason signaalin olemassaolon äänianturimoduulin D0-nastassa.

    Kaikki on hyvin. Konfiguroimme anturin ja varmistimme, että Arduinomme vastaanotti signaalin siitä täydellisesti.

    Sytytämme valon taputtamalla ja sammutamme sen automaattisesti ajastimella.

    Keksittiin kuinka se laitetaan äänitunnistin KY-037 ja kuinka se reagoi, jos asetettu äänenvoimakkuuden kynnys ylittyy. Lisätään nyt tavallinen LED piiriimme ja kirjoitetaan yksinkertainen koodi, joka sytyttää LEDin, kun kohinaa havaitaan, ja sammuttaa sen jonkin ajan kuluttua.

    Liitä LED nastaan D2 Arduino levyt. Älä unohda laittaa mitään vastusta maahan ( GND) LED. Ja lataa seuraava luonnos.

    const int sensorD0 = 5; // Arduino-nasta, johon anturin D0-lähtö on kytketty const int diod = 2; // Arduino-nasta, johon LED on kytketty void setup () ( pinMode(diodi, OUTPUT); // aseta digitaalinen nasta 2 lähtötilaan) void loop () ( int sensorValue = digitalRead(sensorD0); // saada signaali anturista if (sensorValue == 1) //jos anturista vastaanotetaan signaali ykkösen muodossa ( digitalWrite(diodi, HIGH); // kytke LED-viive (4000) päälle; // keskeytä, jotta LED palaa 4 sekuntia) if (sensorValue == 0 ) // jos anturista tulee signaali muodossa nolla digitalWrite(diodi, LOW // sammuta LED )

    Yritetään taputtaa käsiämme. Näemme, että LED syttyi, toimi 4 sekuntia ja sammui. Jokainen rivi on kommentoitu yksityiskohtaisesti ja mielestäni on selvää, missä LED-paloaikaa voi muuttaa.

    Äänitunnistin KY-037 sytyttää valon, kun kuuluu taputus ja sammuttaa valon, kun kuuluu taputus.

    Ladataan uusi luonnos, joka sytyttää tai sammuttaa LEDimme taputtamalla. Otimme LEDin esimerkkinä, ei ole ongelmaa kytkeä sen sijaan relemoduuli ja siten kytkeä päälle tai pois kaikki kodinkoneet.

    const int sensorD0 = 5; // Arduino-nasta, johon anturin D0-lähtö on kytketty const int diod = 2; // Arduino-nasta, johon LED on kytketty in diodState = LOW; // LEDin tila on “off” void setup () ( pinMode(diodi, OUTPUT); // aseta digitaalinen nasta 2 lähtötilaan) void loop () ( int sensorValue = digitalRead(sensorD0); // saada signaali sensor if ( sensorValue == 1 && diodState == LOW) //jos äänenvoimakkuuden kynnys saavutetaan ja LED oli POIS PÄÄLTÄ ( digitalWrite(diodi, HIGH); // laita LED päälle dioditila = HIGH; // aseta LEDin tila "on"-viive(100) // pieni viive melun suodattamiseksi ) muuten (jos (sensorValue == 1 && diodState == HIGH) // jos äänenvoimakkuuden kynnys on saavutettu ja LED oli päällä ( digitalWrite); (diodi, LOW // sammuta LED diodState = LOW // aseta LED-tilaksi "off" viive (100 // pieni viive häiriön suodattamiseksi) )

    Nyt taputetaan käsiämme kerran, valo syttyy. Taputamme jälleen käsiämme, LED sammuu.

    Sytytä valo kaksinkertaisella tapulla.

    Monimutkaistaan ​​tehtävää ja kirjoitetaan koodi KY-037-äänitunnistimen käyttämiseksi kaksoisnapulla. Näin vähennämme mahdollisia tahattomia laukaisuja sivuäänistä, joita voi esiintyä yhden taputuksen tilassa.

    const int sensorD0 = 5; // Arduino-nasta, johon anturin D0-lähtö on kytketty const int diod = 2; // Arduino-nasta, johon LED on kytketty in diodState = LOW; // LED-tila on "pois" pitkä soundTime=0; // ensimmäisen taputuksen kellonaika () ( pinMode(diodi, OUTPUT); // aseta digitaalinen pin 2 lähtötilaan) void loop () ( int sensorValue = digitalRead(sensorD0); // saada signaali anturilta if (sensorValue = = 1 && diodState == LOW) //jos äänenvoimakkuuden kynnys saavutetaan ja LED oli POIS PÄÄLTÄ ( pitkä diodTime=millis(); // tallenna nykyinen aika //jos nykyinen taputusaika on 100 millisekuntia suurempi kuin viimeisimmän taputuksen aikaan //ja taputus ei tapahtunut myöhemmin kuin 1000 millisekuntia edellisen jälkeen //pidä tätä taputusta toisena ONNETTUNA if((millis()>soundTime) && ((diodTime-soundTime)> 100) && ((diodTime-soundTime)<1000)) { digitalWrite(diod, HIGH); // включаем светодиод diodState = HIGH; // устанавливаем статус светодиода "включен" delay(100); // небольшая задержка для фильтрации помех } soundTime=millis(); //записываем время последнего хлопка } else // иначе { if (sensorValue == 1 && diodState == HIGH) // если порог громкости достигнут и светодиод был ВКЛЮЧЕН { digitalWrite(diod, LOW); // выключаем светодиод diodState = LOW; // устанавливаем статус светодиода "выключен" delay(100); // небольшая задержка для фильтрации помех } } }

    Yritämme taputtaa käsiämme kahdesti, LED syttyy. Sammuta LED yhdellä napautuksella. Kaikki toimii hyvin ilman vikoja. Koodia on kommentoitu niin paljon kuin mahdollista, lue se, sen pitäisi olla enemmän kuin selkeä. Luulen, että ei ole vaikeaa saada valo sammumaan kahdella taputuksella. Nyt voit siirtää johdot esimerkiksi linjalta D2 relemoduuliin ja ohjata huoneen valaistusta tai muita kodinkoneita.

    Periaatteessa olemme selvittäneet tärkeimmät KY-037-äänianturin kanssa ilmenevät ongelmat. On vain muistutettava, että kortilla on myös analoginen lähtö A0, joka liitetään mihin tahansa Arduino-levyn analogiseen nastaan, esimerkiksi nastaan A1. Analoginen signaali vastaanotetaan linjalla sensorArvo = analogiRead(A1);. Anturin analogisen lähdön jännite muuttuu ympäristön melun muutoksista riippuen. Tällainen signaali antaa meille mahdollisuuden käyttää näiden samojen kohinoiden ohjelmistokäsittelyä, joka analysoi värähtelyjen luonnetta. Tämä voi antaa sinun reagoida ei vain meluon tietyllä hetkellä, vaan jopa luoda oman kantasi erilaisille meluille luottaen joihinkin lähtösignaalin lukemien tunnusomaisten muutosten avainkohtiin. A0. Tällaisella kohinapohjalla tehdyn tarkistuksen tuloksena on mahdollista toteuttaa erilaisia ​​reaktioita erilaisiin meluihin. Mutta tämä on niille, jotka haluavat uppoutua enemmän ohjelmointiin ja aihe on todennäköisesti toinen artikkeli.