2020-09-04
Kínából házhoz szállítva, nem kerül 2 USD-be (600HUF) ez a kis ultrahangos távolságmérő fej. Régi vágyam teljesült, hogy kipróbálhattam. Sok mindenre jó lehet. Hasonló eszköz dolgozik a gépkocsik tolató radarjában. Használható egy tartályban a folyadékszint magasságának a mérésére, mondjuk a korrózióállóságáról nem vagyok meggyőződve. Lehet vele érzékelni egy konvejor soron elhaladó csomagokat, vagy egy ajtóban az áthaladást. A fej egy ultrahang hangszóróból, és egy ultrahang mikrofonból áll. Az előzékeny kínaiak rögtön egybeszerelték a meghajtó áramkörrel. Szóval nekünk csupán annyi a dolgunk maradt, hogy a TRIG lábára kell egy 10 usec hosszúságú HIGH impulzust adnunk, ezzel indítjuk a mérést. Az ECHO lábon a távolságnak megfelelő hosszúságú HIGH impulzust kapunk. Eddig még nem használtam a pulseIn() Arduino függvényt, amivel jelen esetben a HIGH impulzus hosszát mérjük meg, amiből kiszámoljuk a távolságot. A 58.2-es állandót egy másik programból vettem, nyilván ki is számolhattam volna a hang levegőben való terjedési sebességéből, figyelembe véve a hőmérsékletét és páratartalmát :). A prospektus szerint az eszköz több méter távolságot is képes mérni, és nagyjából 30 fokos szögben lát. Én azt tapasztaltam, hogy ez inkább 50 cm. Nagyobb távolságoknál jobb ha a céltárgy kitölti a 30 fok-os látószöget, és a környezeti zajok is jobban bejátszanak.
/******************************************************************************
* Author - Kiraly Tibor
* http://www.tkiraaly.hu
* Date - 2020.09.04.
* Chip - Arduino nano, Ultrasonic Sensor HC-SR04
* Compiler - Arduino IDE 1.8.12
*
* NANO
* ----------+
* ! HC-SR04
* ! +---------+
* VCC +--------! VCC !
* D2 +--------! TRIG !
* D3 +--------! ECHO !
* GND +--------! GND !
* ! +---------+
* !
*
******************************************************************************/
#define TRIGGER_PIN 2
#define ECHO_PIN 3
long d;
void setup()
{
Serial.begin( 9600);
pinMode( TRIGGER_PIN, OUTPUT);
digitalWrite( TRIGGER_PIN, LOW);
pinMode( ECHO_PIN, INPUT);
}
void loop()
{
digitalWrite( TRIGGER_PIN, HIGH);
delayMicroseconds( 10);
digitalWrite( TRIGGER_PIN, LOW);
d= pulseIn( ECHO_PIN, HIGH);
Serial.print( d/ 58.2);
Serial.println( " cm");
delay( 250);
}
Itt a vége, fuss el véle.