Ping ultrahangos távolságmérő

Tárgyak észlelése ultrahangos távolságmérővel.


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


A SEN136B5B a Seeedstudio ultrahangos távolságmérője. Érzékeli a szenzor előtti legközelebbi tárgy távolságát (3 cm-től 400 cm-ig). Úgy működik, hogy ultrahangot küld ki, és figyeli a visszhangot, amikor az visszapattan egy tárgyról. Ultrahanggal "ping"-eli az akadályokat. Az Arduino kártya egy rövid impulzust küld az észlelés elindításához, majd a pulseIn() függvény segítségével figyeli, hogy van-e impulzus ugyanazon a kivezetésen. Ennek a második impulzusnak az időtartama megegyezik azzal az idővel, amely alatt az ultrahang eljut a tárgyhoz, majd vissza az érzékelőhöz. A hangsebesség felhasználásával ez az idő távolságra konvertálható.

Hardver szükséglet

Az áramkör

Az SEN136B5B 5V-os érintkezője a kártya 5V-os kivezetéséhez, a GND-érintkezője a GND-kivezetéshez, a SIG (jel) érintkező pedig a kártya 7-es digitális kivezetéséhez csatlakozik.

Vázlat

A kód

/*
  Ping))) Sensor

  Ez a vázlat egy PING))) ultrahangos távolságmérőt olvas, és visszaadja
  a távolságot a hatótávolságon belüli legközelebbi objektumtól.
  Ehhez impulzust küld az érzékelőnek, hogy elindítsa a leolvasást, majd
  figyeli, hogy visszatér-e egy impulzus. A visszatérő impulzus hossza
  arányos a tárgy az érzékelőtől való távolságával.

  Az áramkör:
	- A PING))) +V csatlakozása +5V-ra van kötve
	- A PING))) GND csatlakozása a földre csatlakozik
	- A PING))) SIG csatlakozása a 7-es digitális kivezetéshez van csatlakoztatva

  created 3 Nov 2008
  by David A. Mellis
  modified 30 Aug 2011
  by Tom Igoe

  Ez a kód nyilvános.

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

// ez az állandó nem fog változni. Az érzékelő kimenetének száma: 
const int pingPin = 7;

void setup() {
  // soros kommunikáció inicializálása:
  Serial.begin(9600);
}

void loop() {
  // Határozzon meg változókat a ping időtartamára vonatkozóan, és a távolság hüvelykben és centiméterben:
  long duration, inches, cm;

  // A PING)))-et 2 mikroszekundum vagy több HIGH impulzus váltja ki.
  // Adjon meg előtte egy rövid LOW impulzust a tiszta HIGH impulzus érdekében:
  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  // Ugyanezt a kivezetést használják a PING)) jel olvasására: egy HIGH impulzus,
  // amelynek időtartama a ping elküldésétől az objektum visszhangjának vételéig
  // eltelt idő (mikromásodpercben).
  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  // konvertálja az időt távolsággá
  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);

  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();

  delay(100);
}

long microsecondsToInches(long microseconds) {
  // A Parallax PING))) adatlapja szerint hüvelykenként 73,746 mikroszekundum
  // van (azaz a hang 1130 láb/s sebességgel halad).
  // Ez megadja a ping által megtett, ki- és visszatérő távolságot, ezért
  // elosztjuk 2-vel, hogy megkapjuk az akadály távolságát.
  // Lásd: https://www.parallax.com/package/ping-ultrasonic-distance-sensor-downloads/
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds) {
  // A hangsebesség 340 m/s vagy 29 mikroszekundum centiméterenként.
  // A ping oda-vissza halad, így a tárgy távolságának meghatározásához
  // a megtett távolság felét vesszük.
  return microseconds / 29 / 2;
}

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.