HC-SR04: allt om ultraljudssensorn

HC-SR04-sensor

Ibland är det nödvändigt Mät avstånd och för det har du till ditt förfogande flera sensorer. Vi har redan tillägnat en artikel för att prata om en högprecisionsavståndssensor som VL52L0X. Denna sensor var av ToF-typen och baserades på mycket exakta mätningar tack vare sin laser. Men om precision inte är så viktig för dig och du vill ha något som gör att du kan mäta avstånd till ett lågt pris, en annan möjlighet du har till hands är HC-SR04.

I fallet med HC-SR04 avståndssensor, avståndet mäts med ultraljud. Systemet liknar den optiska metoden för VL52L0X. Det vill säga, det avges, det finns en studs och det tas emot, men i det här fallet är det ultraljud istället för att vara en laser eller IR. Om du brinner för elektronik, robotik eller amatörtillverkare kan du använda den för en mängd DIY-projekt som hinderavkänningssystem för robotar, närvarosensorer etc.

Vad är HC-SR04?

Det är uppenbart, som jag redan har kommenterat i föregående stycken, HC-SR04 är en avståndssensor med låg precision baserat på ultraljud. Med det gör det att du kan mäta avstånd enkelt och snabbt, även om det i princip inte används för det. Oftast används den som en givare för att upptäcka hinder och kunna undvika dem genom andra mekanismer associerade med gensvarens respons.

Utseendet på HC-SR04 är mycket distinkt och lätt att känna igen. Dessutom är det ganska populärt i Arduino startpaket och nödvändigt för en mängd projekt. Det är lätt att identifiera eftersom det har två "ögon" som faktiskt är ultraljudsenheterna som denna modul integrerar. En av dem är en ultraljudssändare och den andra en mottagare. Det fungerar med en frekvens på 40 kHz, därför är det ohörligt för människor.

Principer för ultraljudssensor

Principen i vilken Den är baserad på att simulera den som används när du kastar en sten i en brunn för att mäta djupet. Du kastar stenen och tid hur lång tid det tar innan den faller till botten. Sedan gör du beräkningar av hastigheten för den förflutna tiden och du får det avstånd som stenen har rest. Men i så fall är sensorn du.

ESP8266
Relaterad artikel:
ESP8266: WIFI-modulen för Arduino

I HC-SR04 avger sändaren ultraljud och när de studsar av ett föremål eller ett hinder på det sättet kommer de att fångas av mottagaren. De krets kommer att göra de nödvändiga beräkningarna av det ekot för att bestämma avståndet. Detta kan också vara bekant för dig om du känner till systemet som vissa djur som delfiner, valar eller fladdermöss använder för att lokalisera hinder, byten etc.

Genom att räkna tiden sedan pulsen skickas tills svaret tas emot kan tiden och därför avståndet bestämmas exakt. Kom ihåg det [Mellanslag = hastighetstid] men i fallet med HC-SR04 måste du dela denna kvantitet med / 2, eftersom tiden har mätts från ultraljudet kommer ut och reser genom rymden tills det träffar hindret och vägen tillbaka, så det blir ungefär hälften av detta ...

Pinout och datablad

Du vet redan att det bästa är att se de fullständiga uppgifterna för den modell du har förvärvat hitta databladet tillverkarens betong. Till exempel, här är en Sparkfun datablad, men det finns många fler tillgängliga i PDF. Här är dock de viktigaste tekniska uppgifterna för HC-SR04:

  • pinout: 4 stift för ström (Vcc), trigger (Trigger), mottagare (Echo) och jord (GND). Utlösaren indikerar när sensorn ska aktiveras (när ultraljud startas), och därmed är det möjligt att känna till den tid som gått sedan mottagaren tar emot signalen.
  • matning: 5 v
  • Ultraljudsfrekvens: 40 Khz, det mänskliga örat kan bara höra från 20Hz till 20Khz. Allt under 20Hz (infraljud) och över 20Khz (ultraljud) är inte märkbart.
  • Förbrukning (beredskap): <2mA
  • Förbrukningen fungerar: 15 mA
  • Effektiv vinkel: <15º, beroende på objektens vinklar kan du få bättre eller sämre resultat.
  • Uppmätt avstånd: från 2 cm till 400 cm, men från 250 cm är upplösningen inte särskilt bra.
  • Medium upplösning: 0.3 cm variation mellan det faktiska avståndet och mätningen, så trots att de inte anses vara mycket exakta som laser, är mätningarna ganska acceptabla för de flesta applikationer.
  • pris: från cirka 0,65 €

Integration med Arduino

HC-SR04 med Arduino

till att ansluta den till Arduino kunde inte vara enklare. Du måste bara ha ansvaret för att ansluta GND till motsvarande utgång på din Arduino markerad som sådan, Vcc med Arduino 5v strömförsörjning och de andra två stiften på HC-SR04 med de ingångar / utgångar som valts för ditt projekt. Du kan se att det är enkelt i det övre Fritzing-schemat ...

Du måste bara tänka på att tiggeren måste få en elektrisk puls på minst 10 mikrosekunder för att den ska kunna aktiveras ordentligt. Tidigare måste du se till att den är i LÅG värde.

Beträffande kod för Arduino IDE, du behöver inte använda något bibliotek eller något liknande som med andra komponenter. Gör bara formeln för att beräkna avståndet och lite annat ... Om du vill att ditt projekt ska göra något som svar på mätningen av HC-SR04-sensorn måste du naturligtvis lägga till den kod du behöver. I stället för att bara visa mätningarna på konsolen kan du till exempel få servomotorer att röra sig i en eller annan riktning för vissa avstånd för att undvika hindret, eller för att en motor ska stanna, ett larm aktiveras när det upptäcker närhet etc. .

 Mer information om programmering: Arduino Manual (gratis PDF)

Till exempel kan du se detta grundläggande kod att använda som bas:

//Define las constantes para los pines donde hayas conectado el pin Echo y Trigger
const int EchoPin = 8;
const int TriggerPin = 9;
 
void setup() {
   Serial.begin(9600);
   pinMode(TriggerPin, OUTPUT);
   pinMode(EchoPin, INPUT);
}

//Aquí la muestra de las mediciones
void loop() {
   int cm = ping(TriggerPin, EchoPin);
   Serial.print("Distancia medida: ");
   Serial.println(cm);
   delay(1000);
}

//Cálculo para la distancia
int ping(int TriggerPin, int EchoPin) {
   long duration, distanceCm;
   
   digitalWrite(TriggerPin, LOW);  //para generar un pulso limpio ponemos a LOW 4us
   delayMicroseconds(4);
   digitalWrite(TriggerPin, HIGH);  //generamos Trigger (disparo) de 10us
   delayMicroseconds(10);
   digitalWrite(TriggerPin, LOW);
   
   duration = pulseIn(EchoPin, HIGH);  //medimos el tiempo entre pulsos, en microsegundos
   
   distanceCm = duration * 10 / 292/ 2;   //convertimos a distancia, en cm
   return distanceCm;
}


En kommentar, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   Jose sade

    Jag tyckte att förklaringen var mycket användbar och enkel.