Web nejen o robotice

Ultrazvukové senzory vzdálenosti: Kompletní průvodce sonarovými senzory pro robotiku a automatizaci

Reklama:

Ultrazvukové senzory vzdálenosti, známé také jako sonarové senzory, představují klíčovou technologii v moderní robotice a automatizaci. Tyto senzory využívají princip echolokace podobně jako netopýři nebo delfíni, kdy vysílají ultrazvukové vlny a měří čas jejich návratu po odrazu od překážky. Nejpopulárnějším představitelem této kategorie je HC-SR04, který se stal standardem díky své dostupnosti a jednoduchosti použití. Modernější alternativou je RCW-0001, který nabízí kompatibilitu s 3,3V systémy a menší mrtvou zónu. Článek poskytuje komplexní přehled dostupných senzorů, jejich technických parametrů, programovacích možností a praktických omezení, které je třeba zohlednit při jejich implementaci do projektů.

Princip fungování ultrazvukových senzorů

Ultrazvukové senzory vzdálenosti pracují na základě principu Time-of-Flight (ToF), který využívá měření času letu ultrazvukových vln. Základní princip fungování lze rozdělit do několika kroků1 2:

Senzor nejprve přijme spouštěcí signál na trigger pinu, který musí být vysoký minimálně 10 μs1 13. Po aktivaci trigger signálu modul automaticky vyšle osm cyklů ultrazvukových vln o frekvenci 40 kHz1 2. Tyto vlny se šíří rychlostí zvuku (přibližně 340 m/s při pokojové teplotě) až narazí na překážku a odrazí se zpět k senzoru1.

Když senzor detekuje odražené vlny, nastaví echo pin na vysokou úroveň po dobu, která je úměrná vzdálenosti k objektu1 2. Vzdálenost se pak vypočítá podle vzorce: Vzdálenost = (doba trvání echo signálu × rychlost zvuku) / 21. Dělení dvěma je nutné, protože ultrazvukové vlny urazí vzdálenost k objektu a zpět.

Pro praktické výpočty se často používají zjednodušené vzorce. U HC-SR04 platí: vzdálenost v centimetrech = čas v mikrosekundách / 58, nebo vzdálenost v palcích = čas v mikrosekundách / 1481 20. Tato zjednodušení vycházejí z konstantní rychlosti zvuku a usnadňují programování.

Využití v robotice a automatizaci

Ultrazvukové senzory našly široké uplatnění v robotických aplikacích díky své spolehlivosti a nezávislosti na světelných podmínkách13. Na rozdíl od infračervených senzorů nejsou ovlivněny slunečním světlem, reflektory ani barvou povrchu objektu3. Jejich hlavní výhodou je bezkontaktní měření, které umožňuje detekci objektů bez fyzického dotyku.

V mobilní robotice se tyto senzory používají především pro vyhýbání se překážkám a autonomní navigaci9 18. Roboti monitorují tyto senzory k vytváření map prostředí a plánování bezpečných tras. Aplikace zahrnují také detekci osob7, měření hladiny tekutin18 a parkovací asistenty9 18.

Průmyslové využití se rozšiřuje na měření úrovně materiálu v zásobnících7, bezpečnostní systémy9 a interaktivní instalace9. Senzory jsou také oblíbené v edukačních projektech díky své jednoduchosti a dostupnosti, což z nich činí ideální volbu pro výuku principů robotiky a automatizace.

Přehled dostupných senzorů

HC-SR04 - Klasický standard

HC-SR04 představuje nejrozšířenější ultrazvukový senzor na trhu, který se stal de facto standardem pro hobby i edukační projekty1 12. Tento senzor byl uveden na trh kolem roku 2005 a rychle si získal popularitu díky své nízké ceně a jednoduchosti použití12 13.

Senzor poskytuje měřicí rozsah 2 cm až 400 cm s přesností až 3 mm1 12. Pracuje s napájecím napětím 5V DC a spotřebovává 15 mA během měření1 13. Úhel detekce je omezen na 15 stupňů, což zajišťuje směrové měření1 12.

HC-SR04 je široce podporován ve všech populárních programovacích jazycích a platformách, včetně Arduino IDE, Python, CircuitPython a MakeCode13. Dokumentace a ukázkové kódy jsou dostupné pro prakticky všechny mikrokontroléry. Omezením je nutnost 5V napájení, což může komplikovat použití s 3,3V systémy bez úrovňových převodníků13.

RCW-0001 - Moderní alternativa

RCW-0001 od společnosti Cytron představuje vylepšenou verzi HC-SR04 s rozšířenou kompatibilitou3. Tento senzor byl uveden na trh v roce 2016 a řeší hlavní omezení svého předchůdce3.

Klíčovou výhodou je široký rozsah napájení 3,0V až 5,5V, což umožňuje přímé připojení k 3,3V systémům jako ESP32 nebo NodeMCU3. Minimální detekční vzdálenost je snížena na pouhý 1 cm (oproti 2 cm u HC-SR04), což rozšiřuje možnosti aplikace3. Maximální dosah dosahuje 400 cm při 3,3V a 450 cm při 5V3.

Spotřeba je výrazně nižší: 2,2 mA při 3,3V a 2,8 mA při 5V3. Senzor je pin-to-pin kompatibilní s HC-SR04, což umožňuje snadnou výměnu bez změn v hardware i software3. Protokol komunikace zůstává stejný, takže existující kódy fungují bez úprav.

US-100 - Senzor s teplotní kompenzací

US-100 nabízí pokročilejší funkcionalitu díky vestavěnému teplotnímu senzoru, který kompenzuje změny rychlosti zvuku při různých teplotách5 14. Senzor podporuje dva provozní režimy: GPIO režim kompatibilní s HC-SR04 a UART režim pro sériovou komunikaci14 17.

Měřicí rozsah je 2 cm až 450 cm s rozlišením 1 mm14. V UART režimu senzor automaticky odesílá naměřenou vzdálenost i teplotu prostředí při rychlosti 9600 baud17. Napájení je flexibilní: 3,3V až 5V se spotřebou 2 mA17.

Přepínání mezi režimy se provádí jumprem na zadní straně PCB14. UART režim eliminuje nutnost měření časových impulsů v mikrokontroléru, čímž zjednodušuje programování a zvyšuje přesnost měření17.

JSN-SR04T - Vodotěsná varianta

JSN-SR04T je specializovaná vodotěsná verze určená pro aplikace v náročných podmínkách6 15. Senzor má uzavřenou vodotěsnou sondu, která umožňuje použití ve vlhkých a nepříznivých prostředích6.

Základní specifikace zahrnují měřicí rozsah 25 cm až 450 cm při napájení 4,5V až 5,5V se spotřebou až 30 mA6. Pracovní teplota je rozšířena na rozsah -10°C až +70°C6. Úhel detekce je širší než u standardních variant: méně než 50 stupňů6.

JSN-SR04T podporuje několik provozních režimů ovládaných odpory nebo zkratováním kontaktů6. Režim 0 emuluuje HC-SR04, zatímco další režimy nabízejí automatické spouštění, nízkou spotřebu nebo funkci přepínače při detekci objektu do 1,5 m6.

PING))) - Jednokonektorové řešení

PING))) od společnosti Parallax využívá jediný I/O pin pro trigger i echo signály, což šetří porty mikrokontroléru9. Senzor měří vzdálenosti v rozsahu 3 cm až 3 m s úzkým úhlem detekce9.

Napájení vyžaduje 5V DC se spotřebou 35 mA během měření9. Komunikace probíhá pomocí pozitivních TTL pulsů, přičemž šířka pulsu odpovídá naměřené vzdálenosti9. Senzor je optimalizován pro použití s mikrokontroléry BASIC Stamp, Arduino, Propeller a micro:bit9.

Výhodou je LED indikátor, který signalizuje probíhající měření9. Kompaktní rozměry 22 × 46 × 16 mm a hmotnost pouhých 8,7 g umožňují snadnou integraci do robotických platforem9.

MaxBotix řada - Profesionální senzory

MaxBotix vyrábí řadu profesionálních ultrazvukových senzorů s pokročilými funkcemi. MB1210/MB1310 nabízejí extrémní dosah až 765 cm s rozlišením 1 cm7. Tyto senzory pracují s napájením 3,3V až 5V a poskytují multiple výstupní formáty7.

MB1240/MB1340 jsou optimalizovány pro kratší vzdálenosti s dosahem 645 cm a vyšší přesností11. Všechny MaxBotix senzory zahrnují automatickou kalibraci, potlačení šumu a detekci objektů od 0 cm7 11.

Tyto senzory podporují reálný čas analog envelope výstup, který zobrazuje průběh odražených vln11. To umožňuje pokročilé analýzy a detekci více objektů současně. Cena je však výrazně vyšší než u běžných hobby senzorů.

Srovnávací tabulka senzorů

Senzor Rozměry (mm) Napájení (V) Spotřeba (mA) Min. vzdálenost (cm) Max. vzdálenost (cm) Přesnost Úhel detekce (°)
HC-SR04 45×20×15 5.0 15 2 400 3mm 15
RCW-0001 45×20×15 3.0-5.5 2.2-2.8 1 400-450 1mm 15
US-100 20×45 3.3-5.0 2 2 450 1mm 15
JSN-SR04T Variabilní 4.5-5.5 30 25 450 10mm <50
PING))) 22×46×16 5.0 35 3 300 N/A Úzký
HY-SRF05 45×20 5.0 15 2 400 3mm 15
MB1210 Kompaktní 3.3-5.0 N/A 20 765 1cm N/A
MB1240 Kompaktní 3.3-5.0 N/A 20 645 1cm N/A

Tabulka ukazuje, že RCW-0001 vyniká nejnižší spotřebou a nejkratší minimální vzdáleností3, zatímco MaxBotix senzory nabízejí nejvyšší dosah711. HC-SR04 zůstává zlatým standardem pro běžné aplikace díky optimálnímu poměru cena/výkon1 12.

Ukázka MicroPython kódu

Následující ukázka demonstruje základní použití HC-SR04 nebo kompatibilního senzoru v MicroPythonu:

import machine
import time

class UltrasonicSensor:
    def __init__(self, trigger_pin, echo_pin):
        """
        Inicializace ultrazvukového senzoru

        Args:
            trigger_pin: GPIO pin pro trigger signál
            echo_pin: GPIO pin pro echo signál
        """
        self.trigger = machine.Pin(trigger_pin, machine.Pin.OUT)
        self.echo = machine.Pin(echo_pin, machine.Pin.IN)

    def measure_distance(self):
        """
        Měření vzdálenosti v centimetrech

        Returns:
            float: Vzdálenost v cm, nebo -1 při chybě
        """
        # Vyčištění trigger pinu
        self.trigger.off()
        time.sleep_us(2)

        # Spuštění měření - 10us puls
        self.trigger.on()
        time.sleep_us(10)
        self.trigger.off()

        # Čekání na začátek echo signálu
        timeout = time.ticks_ms()
        while self.echo.value() == 0:
            if time.ticks_diff(time.ticks_ms(), timeout) > 30:
                return -1  # Timeout

        # Měření délky echo pulsu
        start_time = time.ticks_us()
        timeout = time.ticks_ms()

        while self.echo.value() == 1:
            if time.ticks_diff(time.ticks_ms(), timeout) > 50:
                return -1  # Timeout

        end_time = time.ticks_us()

        # Výpočet vzdálenosti
        pulse_duration = time.ticks_diff(end_time, start_time)
        distance = pulse_duration / 58.0  # Převod na cm

        return distance

    def get_filtered_distance(self, samples=5):
        """
        Filtrované měření s mediánem

        Args:
            samples: Počet vzorků pro filtraci

        Returns:
            float: Filtrovaná vzdálenost v cm
        """
        measurements = []

        for _ in range(samples):
            dist = self.measure_distance()
            if dist > 0:
                measurements.append(dist)
            time.sleep_ms(60)  # Pauza mezi měřeními

        if measurements:
            measurements.sort()
            return measurements[len(measurements)//2]  # Medián
        else:
            return -1

# Ukázka použití
sensor = UltrasonicSensor(trigger_pin=5, echo_pin=18)

while True:
    distance = sensor.get_filtered_distance()

    if distance > 0:
        print(f"Vzdálenost: {distance:.1f} cm")

        # Jednoduché varování při blízké překážce
        if distance < 10:
            print("POZOR: Překážka velmi blízko!")
        elif distance < 30:
            print("Překážka blízko")
    else:
        print("Chyba měření nebo překážka mimo dosah")

    time.sleep(1)

Tento kód implementuje robustní měření s timeout ochranou a mediánovou filtrací pro zvýšení spolehlivosti1 18. Filtrování je důležité kvůli občasným chybným měřením způsobeným elektromagnetickým rušením nebo odrazy od více povrchů.

Záludnosti a omezení ultrazvukových senzorů

Problematické povrchy a materiály

Ultrazvukové senzory mají významná omezení při detekci určitých typů povrchů. Akusticky měkké materiály jako jsou textilie, koberce, pěna nebo závěsy mohou být obtížně detekovatelné3. Tyto materiály pohlcují ultrazvukové vlny místo jejich odrazu, což vede k falešným měřením nebo úplnému selhání detekce.

Velmi hladké povrchy pod ostrými úhly mohou způsobit úplný odraz vln mimo senzor1. Podobně zakřivené povrchy jako jsou trubky nebo kulové objekty rozptylují ultrazvukové vlny do různých směrů, což snižuje intenzitu signálu vracejícího se k senzoru.

Pro optimální funkci se doporučuje, aby detekovaný objekt měl plochu minimálně 0,5 m² a byl orientován kolmo k senzoru1 20. Menší objekty nebo ty pod ostrými úhly způsobují nedostatečný odraz pro spolehlivou detekci.

Vlivy prostředí

Teplota vzduchu výrazně ovlivňuje rychlost zvuku a tím i přesnost měření. Při změně teploty o 10°C se rychlost zvuku změní přibližně o 1,7%5. Některé pokročilé senzory jako US-100 tento problém řeší integrovaným teplotním senzorem5 14.

Vlhkost vzduchu také mění rychlost šíření zvuku, ačkoli méně výrazně než teplota. Silný vítr může rozptýlit ultrazvukové vlny a způsobit nepřesná měření. Prach a částice ve vzduchu mohou způsobit předčasné odrazy.

Elektromagnetické rušení od motorů, spínaných zdrojů nebo jiných elektronických zařízení může ovlivnit citlivé analogové obvody senzoru7. To je důvod, proč profesionální senzory jako MaxBotix obsahují pokročilé potlačení šumu.

Geometrické a fyzikální omezení

Mrtvá zóna senzoru je oblast příliš blízko, kde nelze provést spolehlivé měření. U HC-SR04 je to 2 cm, u RCW-0001 pouze 1 cm1 3. V této zóně může docházet k falešným odečtům nebo úplnému selhání.

Úhel detekce omezuje detekci na kužel obvykle 15° až 50°1 6. Objekty mimo tento kužel nebudou detekovány, i když jsou ve fyzickém dosahu senzoru. To může být problém při detekci tenkých objektů jako jsou tyče nebo dráty.

Vícecestné odrazy v uzavřených prostorech mohou způsobit echo efekty a falešná měření. Ultrazvukové vlny se mohou odrážet od stěn a vracet se k senzoru s dlouhým zpožděním, což vytváří zdání vzdálených objektů.

Programovací úskalí

Timing je kritický - příliš časté měření může způsobit interferenci mezi jednotlivými pulsy1. Doporučuje se minimální interval 60 ms mezi měřeními1. Blokující měření může zastavit celý program při čekání na echo signál, proto je důležité implementovat timeout.

Napěťové úrovně představují problém při připojování 5V senzorů k 3,3V mikrokontrolérům13. Echo signál může poškodit vstupy mikrokontroléru, pokud se nepoužijí vhodné úrovňové převodníky13.

Závěr

Ultrazvukové senzory vzdálenosti představují klíčovou technologii v moderní robotice a automatizaci, nabízející spolehlivé bezkontaktní měření v širokém spektru aplikací. HC-SR04 zůstává zlatým standardem díky své dostupnosti a rozsáhlé podpoře, zatímco novější alternativy jako RCW-0001 řeší jeho hlavní omezení v oblasti napájení a minimální detekční vzdálenosti.

Při výběru vhodného senzoru je třeba zohlednit specifické požadavky aplikace: napájecí napětí systému, požadovaný dosah a přesnost, podmínky prostředí a cenový rozpočet. Pro hobby projekty a vzdělávací účely zůstává HC-SR04 optimální volbou, zatímco pro komerční aplikace jsou vhodnější pokročilejší senzory s teplotní kompenzací nebo profesionální řešení od MaxBotix.

Úspěšná implementace vyžaduje pochopení fyzikálních omezení ultrazvukových senzorů a jejich vlivů na různé materiály a geometrie. Správná programovací praxe včetně timeout ochrany, filtrování měření a respektování timing požadavků je nezbytná pro dosažení spolehlivých výsledků. S rostoucím vývojem v oblasti miniaturizace a integrace pokročilých funkcí můžeme očekávat další vylepšení těchto všestranných senzorů, které budou i nadále hrát důležitou úlohu v autonomních systémech a robotických aplikacích.


  1. https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf 

  2. https://datasheetspdf.com/datasheet-pdf/1380136/HC-SR04.html 

  3. https://www.cytron.io/p-rcw-0001-micro-ultrasonic-range 

  4. http://www.seekic.com/part/r/6.html 

  5. https://www.tokopedia.com/larisrameshop/5pcs-us-100-ultrasonic-mulai-modul-dengan-suhu-kompensasi 

  6. https://assets.website-files.com/66f43ab41995d6ee71c55727/67395e29d57d477447e57ece_2590395282.pdf 

  7. https://www.gotronic.fr/pj-71.pdf 

  8. https://www.datasheetspdf.com/datasheet/HY-SRF05.html 

  9. https://www.parallax.com/product/ping-ultrasonic-distance-sensor/ 

  10. https://botland.store/distance-sensors/14329-ultrasonic-distance-sensor-2-400cm-hy-srf05-5903351241588.html 

  11. https://www.jameco.com/Jameco/Products/ProdDS/2157351.pdf 

  12. https://www.electroschematics.com/hc-sr04-datasheet/ 

  13. https://www.adafruit.com/product/3942 

  14. https://electronics.semaf.at/?a=1447\&lang=eng\&srsltid=AfmBOoryb8NEq8lIAEftUQjYj-4k75SjDOGICiF8gaELtGv0_qrHhxCk 

  15. https://www.scribd.com/document/651787457/JSN-SR04T 

  16. https://www.edn.com/hc-sr04-datasheet/ 

  17. https://etqan.sa/product/us100-ultrasonic-module-5pins/?srsltid=AfmBOopDhwl-hZ3st3X6tMtUWZduBYJnXd0Vnz569O5NEkzPUQAVDrsN\&v=c12e01f2a13f 

  18. https://handsontec.com/dataspecs/sensor/SR-04-Ultrasonic.pdf 

  19. https://www.steelcogroup.com/product/us-100-200/ 

  20. https://cdn.awsli.com.br/945/945993/arquivos/HCSR04.pdf 

  21. https://www.handsontec.com/dataspecs/HC-SR04-Ultrasonic.pdf 

  22. https://www.tokopedia.com/celectro/us-100-ultrasonic-sensor-distance-range 

  23. https://www.ebay.co.uk/itm/253094896874 

  24. https://www.youtube.com/watch?v=WAm7_x6mkpA 

  25. https://maxbotix.com/products/mb1240?srsltid=AfmBOoruc6z-qaF5p4ss9QBx0AHkLWC5TNhVZc1P7_iw4BdDGCE5MUeQ 

  26. https://www.robotshop.com/products/parallax-ping-ultrasonic-sensor?srsltid=AfmBOopBblXidKspNQuyVbjOSN95rDV2lHiJePGf6ikXGDe6vbqO6bSz 

  27. https://www.pololu.com/product/1605 

  28. https://core-electronics.com.au/parallax-ping-ultrasonic-sensor-28015.html 

  29. https://stackoverflow.com/questions/56687570/problem-with-multiple-parallax-ping-ultrasonic-sensors 

  30. https://boardsandsensors.com/products/hy-srf05-ultrasonic-distance-measuring-transducer-sensor-module-for-dev-boards