HC-SR04 Ultralydssensorer på et Arduino Uno-kort

Placeret på

HC-SR04 Ultralydssensorer på et Arduino Uno-kort

Indlæsning af en HC-SR04-sensor på et Arduino kort er relativt let, men hvad nu hvis du vil indlæse flere sensorer? Hvordan gør du det på en effektiv måde? Denne artikel forklarer ved hjælp af et eksempel, hvordan du effektivt kan indlæse 4 sensorer, og hvordan du kan udvide dette yderligere til flere sensorer.

Byg 4x HC-SR04 ultralydssensorer på et Arduino Uno-kort Byg 4x HC-SR04 ultralydssensorer på et Arduino Uno-kort

Hvad er en HC-SR04

HC-SR04 er et break-out board med ultralydssensorer. På dette skilt er der to cylindriske genstande, hvoraf den ene er markeret med bogstavet "T", som står for "Sender", som betyder "sender", mens den anden er markeret med bogstavet "R" for "Receiver", som betyder "modtager". Senderen udsender en ultralydslydbølge, og modtageren "lytter" efter, at denne lydbølge kolliderer med en genstand og reflekteres tilbage. Den tid, der går mellem transmission og modtagelse, angiver, hvor langt objektet er fra sensoren. Flagermus, delfiner, hvaler og sonar i skibe arbejder efter et lignende princip, og dette princip omtales ofte som "ekkoplacering".

HC-SR04 breakout board HC-SR04 breakout board

Kan du høre en ultralydslydbølge

Medmindre du har din hunds ører, kan du ikke høre ultralydslydbølger. HC-SR04 bruger en lydbølge med en frekvens på 40kHz, mens et menneskeligt øre kun kan høre 16kHz, og yngre mennesker kan høre op til 20-22kHz. Langt under frekvensen af en ultralydslydbølge.

Ydermere er en ultralydslydbølge ikke en radiobølge (som bølgerne fra en smartphone), og er fuldstændig uskadelig for helbredet.

Hvordan virker HC-SR04

Som tidligere nævnt udsender HC-SR04 en ultralydslyd, som kolliderer med en genstand og vender tilbage til sensoren. Sensoren tæller den tid, der går mellem afsendelse og modtagelse af dette signal. Hvis du kender lydens hastighed, kan du beregne afstanden mellem sensoren og objektet. Lyden rejser selvfølgelig ikke uendeligt langt og fordi sensorens lydbølge er relativt svag, er måleområdet også ret begrænset. HC-SR04 kan måle afstande op til cirka 400 cm (4m). Sensorens "synsvinkel" eller "målevinkel" er heller ikke uendelig. Objekter, der falder uden for en vinkel på 15°, kan ikke registreres af sensoren. Derfor er det nogle gange interessant at bruge flere sensorer, som man f.eks. placerer i en cirkel. På denne måde kan du øge målevinklen.

Læs sensoren

For at læse HC-SR04 skal du generere en startpuls på sensorens "trigger"-pin. Responsen fra sensoren vises på dens "ekko"-stift. Begge ben er forbundet til digitale I/O-ben på Arduino .

Udløser

For at generere en startimpuls skal du udføre følgende trin

  1. Udløserstiften skal være lav i mindst 2µs (mikro sekunder).
  2. Udløserstiften skal derefter være høj i 10µs
  3. Aftrækkerpinden lavt tilbage

Med Arduino kan du nemt gøre dette med følgende stykke kode:

HC-SR04 "Trigger"

Ekko

Det svar, der vises på sensorens ekkostift, er en puls, hvis varighed er lig med tiden mellem transmission og modtagelse af ultralydslydbølgen, udtrykt i µs (mikrosekunder). En mulighed for at måle sådan en puls på Arduino er med funktionen "pulseIn":

Meet "echo"

Beregn afstand

Selvfølgelig kender du efter alt dette kun lydbølgens rejsetid, men det betyder ikke, at du kender afstanden. Lydens hastighed er heldigvis kendt, og afstanden kan beregnes med denne:

distance [m] = speed_sound [m/s] * tid [s]

og lydens hastighed er 343m/s, så

afstand [m] = 343 [m/s] * tid [s]

HC-SR04 giver dog tiden i µs, og for nem optælling ville afstanden i cm være mere praktisk, men med nogle beregninger kan formlen justeres til

afstand [cm] = 0,0343 [cm/µs] * tid [µs]

Det eneste problem, der er tilbage nu, er, at tiden angivet af HC-SR04 er den tid, pulsen bevæger sig frem OG tilbage, og da kun afstanden til objektet er nyttig, skal du bare dividere tiden med 2:

afstand = 0,0343 * (tid/2)

Enkel testopsætning

En hurtig testopsætning for at teste driften af HC-SR04 kan realiseres med følgende skema og kode:

Én HC-SR04 sensor på Arduino Uno Én HC-SR04 sensor på Arduino Uno

Eenvoudige code voor het testen van een HC-SR04 op een Arduino Uno

Multi HC-SR04

Herfra bliver det lidt sværere. Fordi funktionen "pulseIn" sætter koden på pause og ikke er tilstrækkelig præcis, bruger den udvidede kode portregistre og interrupts. Hvis dette lyder ukendt, kan du finde mere information på webstedet for forfatteren af denne artikel: http://kunoichi.be/projects/
(hjemmesiden er kun tilgængelig på engelsk)

Flere sensorer

For at bruge flere sensorer kan du fortsætte på tre måder:

  1. separat trigger pr. sensor; separat ekko pr. sensor
  2. fælles trigger; separat ekko pr. sensor
  3. separat trigger pr. sensor; fælles ekko

separat trigger pr. sensor; separat ekko pr. sensor

Den nemmeste og mindst effektive måde er at forbinde hver udløser- og ekkoben på hver sensor til en separat pin på Arduino .
Med andre ord, 2 ben på Arduino pr. sensor.

fælles trigger; separat ekko pr. sensor

En anden måde er at forbinde alle sensorernes triggere og forbinde dem til 1 pin på Arduino . Ekkobenet på hver sensor skal derefter forbindes til et separat ben på Arduino . Fordelen, såvel som ulempen, er, at alle sensorer sender deres svar på samme tid. Der er mulighed for, at sensorerne forstyrrer hinanden, og du skal også bruge en separat afbrydelsesstift til hver sensor ( Arduino Uno har kun 2). Du kunne bruge almindelige stifter, men så ville nøjagtigheden falde en smule.

separat trigger pr. sensor; fælles ekko

Hvis det ikke er nødvendigt med superhurtig læsning, kan man stadig opnå rigtig god nøjagtighed med den tredje metode, og man har ikke den ulempe, at sensorerne vil forstyrre hinanden.
Hver udløserstift på sensoren er tilsluttet separat til Arduino , og alle ekkostifter er forbundet til 1 enkelt Arduino stift. Denne pin kaldes en interrupt pin. Fordi du bestemmer hvilken trigger der styres, ved du hvilken sensors respons på den fælles ekko-pin.
Dette er den mest effektive måde at bruge flere HC-SR04-sensorer på et enkelt Arduino kort.

Ordning

En lille ulempe ved den gængse echo pin metode er, at sensorerne kan forstyrre hinanden på denne pin, men det kan nemt afhjælpes ved at bruge dioder. Systemets opbygning er som følger:

Skema 4x HC-SR04 sensorer på fælles ekko pin Skema 4x HC-SR04 sensorer på fælles ekko pin

Tidsdiagrammet viser, hvordan signalerne skrider frem.

  1. Startimpulsen (trigger) for sensor 4 sendes.
  2. Dette reagerer på ekkostiften.
  3. Startimpulsen (trigger) for sensor 3 sendes.
  4. Den reagerer på samme ekko-pin, men da startimpulsen overvåges, ved man fra hvilken sensor responsen kommer.
  5. Startimpulsen (trigger) for sensor 2 sendes.
  6. ...
  7. Gentag fra trin 1

Resten er bogstaveligt talt copy/paste, og kan nemt udvides til flere (eller færre) sensorer på denne måde.

Tidsdiagram 4 udløsere, 1 ekko Tidsdiagram 4 udløsere, 1 ekko

Koden til aflæsning af sensorerne er som følger:
(Forklaring af koden gives via kommentarfelter i selve koden)

Uitbreidbare code voor het uitlezen van meerdere sensoren

Selvom dette ikke er den hurtigste metode, og med lange afstande og mange sensorer kan ledetiden være relativt høj, giver denne metode nogle fordele

  • kun 1 afbrydelsesstift nødvendig
  • meget let at udvide
  • sensorer forstyrrer ikke hinanden
  • optimal udnyttelse af antallet af sensorer i forhold til tilgængelige I/O-ben

Bemærk vedrørende strømforsyning

Fordi 5V pin på Arduino kan levere begrænset strøm, anbefales det at sørge for en ekstra 5V DC strømforsyning til at forsyne sensorerne. Af denne grund er en "Breadbard Power Supply" inkluderet i komponentlisten, men i det væsentlige kan den erstattes af en hvilken som helst 5V DC strømkilde.

Komponenter

Komponenterne brugt i dette projekt er alle tilgængelige på Opencircuit, og er anført nedenfor:

HC-SR04 Ultralydsafstandsregistreringsmodul Udsolgt € 2,30 Brødbræt 830 point - hvid På lager € 3,15 Herre-Han jumper sæt 65 stk På lager € 3,05 Breadboard Strømforsyning Udsolgt € 2,30 Arduino Uno R3 - klon På lager € 11,90 1N4004 400V 1A ensretterdiode - 50 stk. På lager € 2,60 i alt € 32,20
Sendt af Internet side

Kommentarer

Webwinkelkeur Kiyoh Trustpilot Opencircuit