HC-SR04 ultrahangos érzékelő használata

 

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.