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
Arduino kártya
összekötő vezetékek
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.