HC-SR04: alles oor die ultrasoniese sensor

HC-SR04-sensor

Soms is dit nodig Meet afstande en daarvoor het u verskeie sensors tot u beskikking. Ons het reeds 'n artikel toegewy om oor a te praat hoë akkuraatheid afstandsensor soos die VL52L0X. Hierdie sensor was van die ToF-tipe en was gebaseer op baie presiese metings danksy die laser. Maar as presisie nie vir u so belangrik is nie en u iets wil hê waarmee u afstande teen 'n lae prys kan meet, is dit ook 'n moontlikheid die HC-SR04 binne u vingers is.

In die geval van HC-SR04 afstandsensor, afstand word gemeet deur ultraklank. Die stelsel is soortgelyk aan die optiese metode van die VL52L0X. Dit wil sê, dit word uitgestraal, daar is 'n weiering en dit word ontvang, maar in hierdie geval, in plaas van 'n laser of IR, is dit ultraklank. As u passievol is oor elektronika, robotika of amateurvervaardiger, kan u dit gebruik vir 'n menigte selfdoenprojekte, soos struikelblokopsporingstelsels vir robotte, teenwoordigheidssensors, ens

Wat is die HC-SR04?

Dit is voor die hand liggend, soos ek reeds in die vorige paragrawe opgemerk het, Die HC-SR04 is 'n afstandsensor met lae presisie wat gebaseer is op ultraklank. Hiermee kan u afstande op 'n eenvoudige en vinnige manier meet, hoewel dit in beginsel gewoonlik nie daarvoor gebruik word nie. Dit word meestal as 'n omskakelaar gebruik om hindernisse op te spoor en te vermy deur middel van ander meganismes wat verband hou met die reaksie van die sensor.

Die voorkoms van die HC-SR04 is baie kenmerkend en maklik herkenbaar. Daarbenewens is dit 'n baie gewilde artikel in Arduino-aanvangskits en nodig vir 'n menigte projekte. Dit word maklik geïdentifiseer omdat dit twee "oë" het wat eintlik die ultraklankapparate is wat hierdie module integreer. Een daarvan is 'n ultraklank-emitter en die ander een 'n ontvanger. Dit werk teen 'n frekwensie van 40 KHz, daarom is dit vir mense onhoorbaar.

Beginsels van die ultrasoniese sensor

Die beginsel waarin Dit is gebaseer op die simulasie van die een wat gebruik word as u 'n klip in 'n put gooi om die diepte daarvan te meet. Jy gooi die klip en tyd hoe lank dit neem om na onder te val. Dan bereken u die spoed vir die verstreke tyd en kry u die afstand wat die klip afgelê het. Maar in daardie geval is die sensor u.

ESP8266
Verwante artikel:
ESP8266: die WIFI-module vir Arduino

In die HC-SR04 sal die emitter ultraklank uitstuur en wanneer hulle van 'n voorwerp of hindernis afbons, word dit deur die ontvanger vasgevang. Die stroombaan die nodige berekeninge sal doen van daardie eggo om die afstand te bepaal. Dit is moontlik aan u bekend as u die stelsel ken wat sommige diere soos dolfyne, walvisse of vlermuise gebruik om hindernisse, prooi, ens. Op te spoor.

Deur die tyd te tel sedert die pols gestuur is totdat die antwoord ontvang word, kan die tyd en dus die afstand akkuraat bepaal word. Onthou dat [Ruimte = snelheidstyd] maar in die geval van die HC-SR04, moet u hierdie hoeveelheid verdeel deur / 2, aangesien die tyd gemeet is vanaf die ultraklank wat deur die ruimte beweeg totdat dit die hindernis tref en die terugweg, dus dit sal ongeveer die helfte hiervan ...

Pinout en datablaaie

U weet reeds dat die beste ding is om die volledige data van die model wat u aangeleer het, te sien vind die datablad vervaardiger se beton. Hier is byvoorbeeld 'n Sparkfun datablad, maar daar is baie meer in PDF beskikbaar. Hier is egter die belangrikste tegniese gegewens van die HC-SR04:

  • pinout: 4 penne vir krag (Vcc), sneller (Trigger), ontvanger (Echo) en grond (GND). Die sneller dui aan wanneer die sensor geaktiveer moet word (wanneer die ultraklank geloods word), en dit sal dus moontlik wees om te weet wat die tyd is wat verloop het wanneer die ontvanger die sein ontvang.
  • voeding: 5 V
  • Ultraklank frekwensie: 40 Khz, die menslike oor kan net van 20Hz tot 20Khz hoor. Alles onder 20Hz (infraklank) en bo 20Khz (ultraklank) is nie waarneembaar nie.
  • Verbruik (bystand): <2mA
  • Verbruik werk: 15 mA
  • Effektiewe hoek: <15º, afhangende van die hoeke van die voorwerpe, kan u beter of slegter resultate hê.
  • Gemete afstand: van 2 cm tot 400 cm, maar vanaf 250 cm sal die resolusie nie baie goed wees nie.
  • Medium resolusie: 0.3 cm variasie tussen die werklike afstand en die meting, dus hoewel die laser nie baie akkuraat beskou word nie, is die metings vir die meeste toepassings heel aanvaarbaar.
  • prys: vanaf ongeveer € 0,65

Integrasie met Arduino

HC-SR04 met Arduino

om Dit kan nie makliker wees om dit aan Arduino te koppel nie. U moet net toesig hou oor die aansluiting van GND op die ooreenstemmende uitvoer van u Arduino, as sodanig gemerk, Vcc met die Arduino 5v-toevoer en die ander twee penne van die HC-SR04 met die in- / uitsette wat u vir u projek gekies het. U kan sien dat dit eenvoudig in die boonste Fritzing-skema is ...

U moet net een oorweging neem dat die sneller 'n elektriese pols van ten minste 10 mikrosekondes moet ontvang om dit behoorlik te kan aktiveer. Voorheen moet u seker maak dat dit in LAE waarde is.

Soos vir die kode vir Arduino IDE, hoef u geen biblioteek of iets dergeliks soos ander komponente te gebruik nie. Maak net die formule om die afstand en bietjie anders te bereken ... As u wil hê dat u projek iets moet doen in reaksie op die meting van die HC-SR04-sensor, moet u die kode wat u benodig, byvoeg. In plaas daarvan om byvoorbeeld net die metings op die konsole te vertoon, kan u servomotors vir sekere afstande in die een of ander rigting laat beweeg om die hindernis te vermy, of om 'n motor te stop, 'n alarm wat geaktiveer moet word as dit nabyheid opspoor, ens .

 Meer inligting oor programmering: Arduino-handleiding (gratis PDF)

U kan dit byvoorbeeld sien basiese kode om as basis te gebruik:

//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;
}

 


Die inhoud van die artikel voldoen aan ons beginsels van redaksionele etiek. Klik op om 'n fout te rapporteer hier.

'N Opmerking, los joune

Laat u kommentaar

Jou e-posadres sal nie gepubliseer word nie. Verpligte velde gemerk met *

*

*

  1. Verantwoordelik vir die data: Miguel Ángel Gatón
  2. Doel van die data: Beheer SPAM, bestuur van kommentaar.
  3. Wettiging: U toestemming
  4. Kommunikasie van die data: Die data sal nie aan derde partye oorgedra word nie, behalwe deur wettige verpligtinge.
  5. Datastoor: databasis aangebied deur Occentus Networks (EU)
  6. Regte: U kan u inligting te alle tye beperk, herstel en verwyder.

  1.   Jose dijo

    Ek het die verduideliking baie nuttig en eenvoudig gevind.