Kopogtatás észlelése

Ez az oktatóanyag bemutatja, hogyan lehet Piezo elemet használni a rezgés észlelésére.


Utolsó felülvizsgálat: 2022.02.04 16:50


Ez az oktatóanyag bemutatja, hogyan lehet Piezo elemet használni a rezgés észlelésére, jelen esetben az ajtón, asztalon vagy más szilárd felületen történő kopogtatáshoz.

A piezo olyan elektronikus eszköz, amely feszültséget hoz létre, amikor vibráció, hanghullám vagy mechanikai terhelés hatására fizikailag deformálódik. Hasonlóképpen, ha feszültséget helyezünk egy piezóra, az rezeg és hangot hoz létre. A piezók hangok lejátszására és hangok érzékelésére egyaránt használhatók.

A vázlat beolvassa a piezo kimenetet az analogRead() paranccsal, kódolva a 0 és 5 volt közötti feszültségtartományt egy 0 és 1023 közötti numerikus tartományba egy analóg-digitális átalakításnak vagy ADC-nek nevezett folyamatban.

Ha az érzékelők kimenete erősebb egy bizonyos küszöbértéknél, a kártya a "Kopognak!" stringet küldi a számítógépnek a soros porton keresztül.

A szöveg megtekintéséhez nyissa meg a soros monitort.

Hardver szükséglet

  • Arduino kártya

  • Piezo elektromos lemez

  • 1 megohmos ellenállás

  • szilárd felület

Az áramkör

A piezók polarizáltak, ami azt jelenti, hogy a feszültség egy meghatározott irányban halad át rajtuk (vagy belőlük). Csatlakoztassa a fekete vezetéket (alacsonyabb feszültség) a testhez, a piros vezetéket (a magasabb feszültség) pedig az analóg 0-s kivezetéshez. Ezenkívül csatlakoztasson párhuzamosan egy 1 megohmos ellenállást a piezo elemmel, hogy korlátozza a piezo által termelt feszültséget és áramot, valamint védje az analóg bemenetet.

Lehetőség van piezo elemek beszerzésére műanyag ház nélkül. Ezek úgy néznek ki, mint egy fémlemez, és könnyebben használhatók bemeneti érzékelőként. A piezo érzékelők akkor működnek a legjobban, ha erősen hozzá vannak nyomva, tapasztva vagy ragasztva az érzékelő felületükhöz.

Vázlat

A piezo az analóg 0 kivezetéshez csatlakozik párhuzamosan 1 megohmos ellenállással.

A kód

Az alábbi kódban a bejövő piezoadatokat a felhasználó által beállított küszöbértékkel hasonlítják össze. Próbálja meg növelni vagy csökkenteni ezt az értéket az érzékelő általános érzékenységének növelése érdekében.

/*
  Knock Sensor

  Ez a vázlat egy piezo elemet olvas, hogy észlelje a kopogó hangot.
  Beolvas egy analóg kivezetést, és összehasonlítja az eredményt egy beállított küszöbértékkel.
  Ha az eredmény nagyobb, mint a küszöb, akkor a soros portra a "Kopognak!" szöveget írja,
  és a 13-as kivezetésen átkapcsolja a LED-et.

  Az áramkör:Kopognak!
	- a piezo pozitív csatlakója az analóghoz 0-hoz csatlakoztatva
	- a piezo negatív csatlakója a földhöz csatlakoztatva
	- 1 megohmos ellenállás az analóg 0-tól a földhöz csatlakoztatva

  created 25 Mar 2007
  by David Cuartielles <http://www.0j0.org>
  modified 30 Aug 2011
  by Tom Igoe

  Ez a kód nyilvános.

  https://docs.arduino.cc/built-in-examples/sensors/Knock
*/


// ezek az állandók nem változnak:
const int ledPin = 13;      // LED csatlakoztatva a digitális 13 kivezetéshez
const int knockSensor = A0; // piezo csatlakoztatva az analóg 0 kivezetéshez
const int threshold = 100;  // küszöbérték annak eldöntésére, hogy az észlelt hang kopogás-e vagy sem


// ezek a változók megváltoznak:
int sensorReading = 0;      // változó az érzékelő kivezetéséről leolvasott érték tárolására
int ledState = LOW;         // változó az utolsó LED állapot tárolására, a világítás váltására

void setup() {
  pinMode(ledPin, OUTPUT); // deklarálja a ledPin-t OUTPUT-ként
  Serial.begin(9600);       // használja a soros portot
}

void loop() {
  // olvassa le az érzékelőt és tárolja a sensorReading változóban:
  sensorReading = analogRead(knockSensor);

  // ha az érzékelő leolvasott értéke nagyobb, mint a küszöbérték:
  if (sensorReading >= threshold) {
    // a ledPin állapotának váltása:
    ledState = !ledState;
    // frissítse a LED kivezetést:
    digitalWrite(ledPin, ledState);
    // küldje el a "Kopognak!" stringet vissza a számítógéphez, majd egy újsort 
    Serial.println("Kopognak!");
  }
  delay(100);  // késleltetés, hogy elkerüljük a soros port puffer túlterhelését
}

Tudj meg többet

További alapvető oktatóanyagokat a beépített példák részben talál.

Felfedezheti a nyelvi referenciát is, az Arduino programozási nyelv részletes gyűjteményét.