HC-SR04: alt om ultralydssensoren

HC-SR04-sensor

Noen ganger er det nødvendig Mål avstander og for det har du til rådighet flere sensorer. Vi har allerede viet en artikkel for å snakke om en avstandssensor med høy presisjon som VL52L0X. Denne sensoren var av ToF-typen og var basert på meget nøyaktige målinger takket være laseren. Men hvis presisjon ikke er så viktig for deg, og du vil ha noe som lar deg måle avstander til en lav pris, er det en annen mulighet du har for hånden er HC-SR04.

I tilfelle av HC-SR04 avstandssensor, avstand måles med ultralyd. Systemet ligner på den optiske metoden til VL52L0X. Det vil si at den sendes ut, det er en sprett og den mottas, men i dette tilfellet er det ultralyd i stedet for å være en laser eller IR. Hvis du er lidenskapelig opptatt av elektronikk, robotikk eller amatørprodusent, kan du bruke den til en rekke DIY-prosjekter som hindringsdeteksjonssystemer for roboter, tilstedeværelsessensorer osv.

Hva er HC-SR04?

Vel, det er åpenbart, som jeg allerede har kommentert i forrige avsnitt, HC-SR04 er en avstandssensor med lav presisjon basert på ultralyd. Med den gjør det det mulig å måle avstander på en enkel og rask måte, selv om det i prinsippet vanligvis ikke brukes til det. Oftest brukes den som en svinger for å oppdage hindringer og unngå dem gjennom andre mekanismer forbundet med sensoren.

Utseendet til HC-SR04 er veldig særegen og lett gjenkjennelig. I tillegg er det ganske populært i Arduino startpakker og nødvendig for mange prosjekter. Det er lett å identifisere fordi det har to "øyne" som faktisk er ultralydenhetene som denne modulen integrerer. En av dem er en ultralydsemitter og den andre en mottaker. Det fungerer med en frekvens på 40 kHz, derfor er det uhørbart for mennesker.

Prinsipper for ultralydssensor

Prinsippet der Den er basert på å simulere den som brukes når du kaster en stein i en brønn for å måle dybden. Du kaster steinen og tid hvor lang tid det tar før den faller til bunns. Deretter gjør du beregninger av hastigheten for forløpt tid, og du får avstanden som steinen har gått. Men i så fall er sensoren deg.

ESP8266
Relatert artikkel:
ESP8266: WIFI-modulen for Arduino

I HC-SR04 vil senderen avgi ultralyd, og når de spretter av et objekt eller en hindring på den måten blir de fanget opp av mottakeren. De krets vil gjøre de nødvendige beregningene av det ekkoet for å bestemme avstanden. Dette kan også være kjent for deg hvis du kjenner systemet som noen dyr som delfiner, hvaler eller flaggermus bruker for å finne hindringer, byttedyr etc.

Ved å telle tiden siden pulsen er sendt til responsen er mottatt, kan tiden og derfor avstanden bestemmes nøyaktig. Husk at [Mellomrom = hastighetstid] men når det gjelder HC-SR04, må du dele denne mengden med / 2, siden tiden er målt fra ultralyden kommer ut og reiser gjennom rommet til den treffer hindringen og veien tilbake, så det vil være omtrent halvparten av dette ...

Pinout og datablad

Du vet allerede at det beste er å se de fullstendige dataene til modellen du har anskaffet finn databladet produsentens betong. For eksempel er her en Sparkfun datablad, men det er mange flere tilgjengelige i PDF. Her er imidlertid de viktigste tekniske dataene til HC-SR04:

  • pinout: 4 pinner for strøm (Vcc), trigger (Trigger), mottaker (Echo) og bakken (GND). Utløseren indikerer når sensoren skal aktiveres (når ultralyden startes), og dermed vil det være mulig å kjenne tiden som har gått da mottakeren mottar signalet.
  • Fôring: 5 V.
  • Ultralydfrekvens: 40 Khz, det menneskelige øret kan bare høre fra 20Hz til 20Khz. Alt under 20Hz (infralyd) og over 20Khz (ultralyd) vil ikke være synlig.
  • Forbruk (beredskap): <2mA
  • Forbruk fungerer: 15mA
  • Effektiv vinkel: <15º, avhengig av vinklene på gjenstandene, kan du få bedre eller dårligere resultater.
  • Målt avstand: fra 2 cm til 400 cm, men fra 250 cm vil ikke oppløsningen være veldig bra.
  • Middels oppløsning: 0.3 cm variasjon mellom den faktiske avstanden og målingen, så til tross for at de ikke blir ansett som svært nøyaktige som laser, er målingene ganske akseptable for de fleste applikasjoner.
  • Pris: fra ca € 0,65

Integrasjon med Arduino

HC-SR04 med Arduino

Til å koble den til Arduino kunne ikke være enklere. Du må bare ha ansvaret for å koble GND til den tilsvarende utgangen på din Arduino merket som sådan, Vcc med Arduino 5v strømforsyning og de to andre pinnene på HC-SR04 med inngangene / utgangene som er valgt for prosjektet ditt. Du kan se at det er enkelt i den øvre Fritzing-ordningen ...

Du må bare ha en vurdering at tiggeren må motta en elektrisk puls på minst 10 mikrosekunder for at den skal kunne aktiveres riktig. Tidligere må du sørge for at den er i LAV verdi.

Som til kode for Arduino IDE, trenger du ikke bruke noe bibliotek eller noe sånt som med andre komponenter. Bare lag formelen for å beregne avstanden og lite annet ... Hvis du vil at prosjektet ditt skal gjøre noe som svar på målingen av HC-SR04-sensoren, må du selvfølgelig legge til koden du trenger. For eksempel, i stedet for å bare vise målingene på konsollen, kan du få servomotorer til å bevege seg i en eller annen retning for bestemte avstander for å unngå hindringen, eller for at en motor skal stoppe, en alarm som skal aktiveres når den oppdager nærhet, etc. .

 Mer informasjon om programmering: Arduino Manual (Gratis PDF)

For eksempel kan du se dette grunnleggende kode som skal brukes som base:

//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, legg igjen din

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Jose sa

    Jeg syntes forklaringen var veldig nyttig og enkel.