wersja mobilna

Laserowy czujnik odległości V53L1X i zestaw X-NUCLEO-53L1A1

Numer: Listopad/2018

Bezstykowy pomiar odległości jest wykorzystywany w wielu zastosowaniach: czujnikach zbliżeniowych stosowanych w układach automatyki przemysłowej, systemach automatycznego ustawiania ostrości w aparatach fotograficznych, kamerach wideo, w urządzeniach do automatycznego pomiaru prędkości czy sterowaniu zarządzaniem działania automatów do sprzedawania żywności. Przykładem zastosowania pomiaru odległości mogą być inteligentne urządzenia konsumenckie takie jak bezobsługowe kosiarki do trawy, samobieżne odkurzacze, układy automatycznego sterowania drzwiami, drony itp. Pomiar odległości jest używany w algorytmach wykrywania przeszkód i unikania kolizji w trybie pracy autonomicznej.

Pobierz PDF

Realizacja pomiaru odległości może się odbywać na różne sposoby. Najprostsza metoda wykorzystuje promieniowanie podczerwone IR. Pomiar polega na mierzeniu siły sygnału odbitego, który jest proporcjonalny do mierzonej odległości. Niestety, poziom sygnału odbitego może silnie zależeć od współczynnika odbicia powierzchni przedmiotu. Powoduje to wiele problemów z pomiarem odległości od różnych powierzchni i konieczność skomplikowanej kalibracji dla osiągnięcia zadanej dokładności.

Takiej wady nie mają czujniki pracujące w oparciu na zasadzie pomiaru czasu przejścia wiązki światła od źródła do detektora. Ogólną zasadę pomiaru pokazano na rysunku 1. Zmierzoną odległość można wyliczyć z zależności odległość = (czas przelotu wiązki fotonów /2)×prędkość światła. Ta metoda wymaga mierzenia bardzo krótkiego czasu. Na przykład, jeśli przedmiot jest w odległości 1 cm od czujnika, światło musi przebyć dystans 2 cm (od nadajnika do przeszkody i od przeszkody do odbiornika), czyli 0,02 m. Czas na to potrzebny to ok. 0,02 m/300000000 m/s= 67 ps. Pomiar tak krótkiego czasu, nawet bardzo szybkim mikrokontrolerem ogólnego przeznaczenia, jest praktycznie nie do zrealizowania. Do takich celów są wykorzystywane specjalizowane układy scalone. Jednym z nich jest VL53L1X produkowany przez firmę STMicroelectronics. Jest to układ z rodziny będącej nową generacją czujników zbliżeniowych opartych na technologii FlightSense, bazującej na zasadzie działania Time-of-Flight (ToF).

Schemat blokowy układu VL53L1X pokazano na rysunku 2. Zawiera on między innymi:

  • Macierz detektorów SPAD (Single Photon Avalanche Diode).
  • Nadajnik laserowy ze sterownikiem i driverem będący źródłem światła o długości 940 nm.
  • Specjalizowany blok funkcjonalny służący do obliczania odległości.
  • Mikrokontroler z interfejsem I2C.

Długość fali światła laserowego jest spoza zakresu fal widzialnych (bliska podczerwień). Pozwala to w połączeniu z filtrami podczerwieni na wyeliminowanie zaburzeń spowodowanych światłem widzialnym. Aby czujnik mógł być bezpiecznie eksploatowany nawet przez nieprzeszkolony personel, zastosowano laser VCESL klasy 1. Klasa 1 definiuje takie parametry źródła światła laserowego, że jest ono bezpieczne dla oczu w każdych warunkach eksploatacyjnych.

Czujnik VL53L1X został zaprojektowany z myślą o bardzo małym poborze mocy i z tego powodu dobrze nadaje się do zastosowań bezprzewodowych i Internetu Rzeczy. Zastosowano w nim specjalne algorytmy oraz bloki funkcjonalne pozwalające na pomiar odległości pomiędzy czujnikiem a obiektem w zakresie od 0 do 4000 mm z rozdzielczością 1 mm. Pomiar jest możliwy nawet w trudnych warunkach środowiskowych i jak już wspomniałem jest w szerokim zakresie niezależny od rodzaju powierzchni mierzonego przedmiotu.

Teoretycznie światło laserowe powinno rozchodzić się w postaci wiązki o bardzo dużym skupieniu. Jednak w wypadku lasera zastosowanego w tym sensorze wiązka nie jest równoległa i im dalej od emitera światła, tym średnica plamki światła jest większa. Jak pokazano na rysunku 3, przy odległości 4 m średnica plamki wynosi 192 cm. Trzeba to uwzględnić przy pomiarach odległości od małych przedmiotów. Na rysunku 4 pokazano typowy układ pomiarowy wykorzystujący metodę pomiaru czasu przejścia promienia światła.

Czujnik w rzeczywistych warunkach eksploatacyjnych powinien być chroniony przed zabrudzeniem spowodowanym na przykład zapyleniem powietrza. Najprostszą barierą dla zanieczyszczeń jest ochronna płytka szklana. Jednak zanieczyszczenia osiadające na powierzchni szkła powodują, że część światła lasera się od nich odbija, co generuje problemy z prawidłowym pomiarem. Ten problem można stosunkowo łatwo rozwiązać, stosując specjalną obudowę czujnika chroniącą przed przenikaniem odbitych promieni z lasera do detektora (rysunek 4). Sensor VL53L1X jest umieszczony w obudowie do montażu powierzchniowego, którą pokazano na rysunku 5.

Producent czujnika zadbał o pełne wsparcie dla potencjalnych konstruktorów i użytkowników tego elementu. Jednym z elementów tego wsparcia jest zestaw ewaluacyjny X-NUCLEO-53L1A1. Wykonany zgodnie ze standardem Arduino Uno Ver.3. X-NUCLEO-53L1A1, jest przeznaczony do połączenia z firmowym modułem Nucleo-F401RE (fotografia 6). Oczywiście, standard Arduino pozwala na sprzętowe połączenie z dowolnym modułem mikrokontrolera zgodnym z Arduino, ale zastosowanie Nucleo-F401RE umożliwia testowanie czujnika za pomocą oprogramowania dostarczonego przez firmę STM.

Na płytce modułu umieszczono czujnik VL53L1X z plastikową osłoną, na którą można zakładać szkło ochronne. Czujnik odległości jest zasilany napięciem +2,5 V. Na płytce zamontowano stabilizator napięcia +2,5 V oraz układy dostosowujące poziomy logiczne czujnika (+2,5 V) i mikrokontrolera (+3,3 V). Oprócz modułu ewaluacyjnego w skład zestawu wchodzą dwie dodatkowe płytki z czujnikami VL53L1X. Te płytki można połączyć z modułem ewaluacyjnym za pomocą złączy IDC, jak to zostało pokazane na fotografii 7. Można je również wykorzystać we własnych autonomicznych aplikacjach, pamiętając o napięciu zasilania i napięciach poziomów logicznych. Konfiguracja sprzętowa z dwoma lub trzema czujnikami może być przydatna do testowania funkcji wykrywania gestów. W zestawie są też 3 ramki (elementy dystansowe) o grubościach: 0,25 mm, 0,5 mm i 1 mm symulujące różne szczeliny powietrzne pomiędzy szkłem ochronnym i czujnikiem, oraz dwa różne szkła osłonowe.

Testy rozpoczynamy od pobrania ze strony producenta oprogramowania testowego umieszczonego w spakowanym pliku en.STSW-IMG008.rar. Żeby to zrobić, trzeba mieć aktywne konto użytkownika i się na nie zalogować. W spakowanym pliku en.STSW-IMG008 jest umieszczona instrukcja obsługi aplikacji testowej VL53L1X GUI w formacie pdf i plik instalacyjny aplikacji VL53L1X_Setup.exe. Instalacja aplikacji przebiega typowo i obejmuje również niezbędną do działania instalację driverów USB.

STSW-IMG008 jest graficzną aplikacją użytkownika (GUI) pracującą pod kontrolą systemów Windows 7 (min. SP1 pack), Windows 8 i Windows 10. Jest przeznaczona do współpracy z zestawem P-NUCLEO-53L1A1 połączonym z komputerem za pomocą złącza USB. Standardowo STSW-IMG008 współpracuje z czujnikiem umieszczonym na płytce modułu X-NUCLEO-53L1A1, ale możliwa jest też współpraca z jednym z dodatkowych czujników dołączonych do płytki głównej.

Pakiet STSW-IMG008 zapewnia:

  • Wyświetlanie on-line odległości w centymetrach przedmiotu od czujnika.
  • Wyświetlanie on-line siły odbitego sygnału.
  • Ustawienia wybranego obszaru na matrycy czujnika. Rozmiar i położenie tego obszaru na matrycy jest określane programowo.
  • Możliwość wykonania procedur kalibracji.
  • Zapisywanie danych wyjściowych do pliku (logi).
  • Zapisywanie przebiegu transmisji danych przez interfejs I2C.

Pierwszą czynnością po uruchomieniu będzie wgranie firmware'u sterującego do modułu mikrokontrolera Nucleo-F401RE. W tym celu należy podłączyć moduł mikrokontrolera łączem USB z komputerem, wybrać zakładkę About i kliknąć na Flash Fw, jak na rysunku 8. Jeżeli wszystko jest sprawne i poprawnie połączone, to program sterujący zestawem zostanie automatycznie wgrany do pamięci mikrokontrolera i moduł jest gotowy do pracy. Po zaprogramowaniu pamięci zestaw powinien zostać wykryty i zidentyfikowany. Można to również zobaczyć w zakładce About (rysunek 9).

Komputer z uruchomionym GUI jest hostem sterującym pracą czujnika VL53L1X. Host wysyła do czujnika komendy przez wirtualny port szeregowy Virtual COM. Oprogramowanie uruchomione na mikrokontrolerze „tłumaczy” te komendy na polecenia wysyłane do czujnika magistralą I2C. Mikrokontroler następnie odczytuje magistralą I2C dane z czujnika i odsyła je wirtualnym portem szeregowym do hosta.

Przed użyciem czujnika można go skalibrować lub użyć domyślnych danych kalibracyjnych. Kalibrowanie wykonuje się w zakładce Calibration przez kliknięcie na CalRefSpads, CalOffset i Cal X-Talk (rysunek 10).

Kalibracja SPAD dostosowuje czułość detektora do poziomu sygnału laserowego. Jest wykonywana po to, żeby uwzględnić rodzaj szkła chroniącego czujnik. Powinna być wykonywana dla każdego nowego czujnika dołączonego do GUI. W wyniku kalibracji są ustawiane 2 parametry: Ref SPAD Location i Number of Ref Spads. Po poprawnie wykonanej kalibracji Calibration Status powinien mieć wartość 0.

Kalibracja Offsetu wprowadza stała wartość wyrażoną w mm, która jest dodawana do każdego zakresu pomiaru. Wprowadzenie kalibracji offsetu pomaga uzyskać dużą wymaganą dokładność pomiaru. W trakcie kalibracji offsetu odległość od mierzonego przedmiotu domyślnie wynosi 140 mm, ale można ją zmienić w oknie Call Height. Zaleca się, aby do dokładnej kalibracji użyć przedmiotu odbijającego światło w minimum 88%. Ja wykonałem próbę kalibracji dla sufitu oddalonego ok 1,5 m od powierzchni stołu (przy Call Heigt 140 mm) i uzyskałem wartość Offset Value –1514 mm (rysunek 11). Oczywiście, pomiary po takiej kalibracji nie będą wiarygodne.

Kalibracja X-Talk (Cross Talk Compensation Factor) ma za zadanie dodatkowe skompensowanie przesłuchów pomiędzy sygnałem nadawanym i odbieranym przez detektor spowodowanym stosowaniem szkła ochronnego. Alternatywnie można skutecznie redukować przesłuchy, stosując specjalną obudowę, jak pokazano na rysunku 4. W naszym module szyba ochronna nie jest przedzielona przesłoną i przesłuchy mogą wystąpić w mniejszym lub większym natężeniu. Przed uruchomieniem kalibracji należy w odległości 6 cm (określana programowalnym polem Call Height) umieścić czarny lub szary przedmiot o niskim współczynniku odbicia. Na próbę wywoływałem tę kalibrację bez spełniania koniecznych warunków układowych. To oczywiście powodowało, że układ po takim kalibrowaniu dział nieprawidłowo. W każdej chwili można jednak kliknąć na przycisk Reset, żeby przywrócić domyślne ustawienia kalibracji zapisane w aplikacji STSW-IMG008. Jeśli jednak kalibracja została przeprowadzona rzetelnie, to jej wynik można zapisać w pliku o dowolnej nazwie, klikając na przycisk Save i ponownie wczytać. Kliknięcie na przycisk Load powoduje wczytanie pliku z danymi kalibracji do bufora, a kliknięcie na Write powoduje fizyczne wczytanie kalibracji do czujnika.

Przy wstępnym testowaniu działania czujnika kalibracje możemy pominąć i zdać się na domyślne ustawienia oferowane przez STSW-IMG008. Warto jednak wiedzieć, jak ją wykonać, by uzyskać lepszą dokładność pomiaru w docelowym układzie pomiarowym.

W podstawowej zakładce programu STSW-IMG008, czyli w Low-Power Autonomous, są wyświetlane dane pomiarowe w czasie rzeczywistym w formatach: graficznym i numerycznym. Oprócz tego umieszczono tam elementy sterujące pomiarami. W oknie Range jest wyświetlany wykres odległości od przedmiotu mierzonej przez czujnik w czasie rzeczywistym. Dolne okno Signal Rate pokazuje również w czasie rzeczywistym pomiar siły sygnału w umownych jednostkach Mega Counts Per Seconds. Środkowe okno wyświetla dodatkowe informacje w postaci numerycznej:

Status – informuje o prawidłowości zakresu pomiarowego. Każda inna wartość niż 0 oznacza błąd (kody błędów opisane są w instrukcji do aplikacji STSW-IMG008).

  • Range jest mierzoną odległością od przedmiotu.
  • Signal Rate (mcps) określa siłę sygnału w mcps.
  • Ambient Rate – określa siłę sygnału zakłócającego pomiar w mcps (siłę sygnału światła otoczenia).

Okno z prawej strony zawiera szereg ustawień wykorzystywanych do zmiany parametrów pomiarów. Wszystkie one są dokładnie opisane w instrukcji programu STSW-IMG008. Najciekawsze z nich to Distance mode i Threshold Selection.

Zakres pomiaru Distance mode można ustawić w trzech wartościach:

  • Long – pełny zakres pomiarowy do 4 m.
  • Medium – średni zakres pomiarowy do 2,8 m.
  • Short – najniższy zakres pomiarowy do 1,4 m.

Przy ustawieniu największego zakresu pomiarowego trzeba się liczyć z większym wpływem światła otoczenia na pomiar odległości. W pewnych sytuacjach może to powodować problemy z prawidłowym pomiarem. Ustawianie zakresu short jest rekomendowane do pomiarów na zewnątrz budynków, gdzie światło słoneczne może stanowić czynnik zakłócający pomiar.

Thereshold selection filtruje mierzone dane zależnie od zmierzonej odległości. Można tu wybrać opcje:

  • Below – pomiar jest wyświetlany, kiedy odległość jest mniejsza od wartości min (domyślnie 500 mm).
  • Above – pomiar jest wyświetlany, kiedy odległość jest większa od wartości max (domyślnie 1000 mm).
  • Outside – pomiar jest wyświetlany, kiedy odległość jest mniejsza od wartości min (domyślnie 500 mm) lub większa od wartości max (domyślnie 1000 mm).
  • Inside p– omiar jest wyświetlany, kiedy odległość jest pomiędzy wartością minimalną (domyślnie 500 mm) i maksymalną (domyślnie 1000 mm).

Na rysunku 12 pokazano ekran zakładki Low-Power Autonomous dla pomiaru w trybie wyzwalania Inside.

Krótkie testy praktyczne zestawu ewaluacyjnego potwierdziły prawidłowe działanie czujników. Trzeba jednak zdawać sobie sprawę, że praca w układzie docelowym może wymagać dostosowania parametrów pomiarów do środowiska pomiarowego. Bardzo dużym ułatwieniem jest możliwość przeprowadzenia prób w docelowym układzie pomiarowym, używając do tego celu jednej płytek rozszerzeń pokazanych na rysunku 10 połączonych przewodami z płytką X-NUCLEO-53L1A1 Duże możliwości kalibracji, ustawień parametrów pomiaru i w końcu samego pomiaru programu STSW-IMG008 pozwalają ocenić przydatność czujnika we własnej aplikacji bez konieczności budowania swojej platformy sprzętowej i pisania oprogramowania testowego.

Tomasz Jabłoński, EP

Pozostałe artykuły

Dwurdzeniowe dsPIC33CH w praktyce

Numer: Czerwiec/2019

Dzięki uprzejmości firmy Microchip stałem się posiadaczem zestawu dsPI33CH Curiosity Development Board (fotografia tytułowa). Jest to testowa platforma mająca na pokładzie opisywany już w "Elektronice Praktycznej" dwurdzeniowy mikrokontroler dsPIC33CH128MP508. Wielordzeniowe mikroprocesory nie są czymś niezwykłym, ale w przypadku mikrokontrolerów takie rozwiązania dopiero zaczynają się pojawiać.

Nowości od Cypressa

Numer: Czerwiec/2019

Układy PSoC (programowalny system na chipie) to rodzina scalonych mikrokontrolerów firmy Cypress Semiconductor. Układy te zawierają w sobie rdzeń procesora oraz zespół zintegrowanych, konfigurowalnych urządzeń peryferyjnych - analogowych i cyfrowych - łączonych ze sobą za pomocą programowalnej macierzy połączeń dla sygnałów mieszanych - tak analogowych, jak i cyfrowych.

LoRaWAN - moduł ATSAMR34-XPro

Numer: Maj/2019

LoRaWAN jest radiowym protokółem komunikacyjnym, który pozwala łączyć się z Internetem urządzeniom IoT wyposażonym w łącze radiowe. Połączenie nie jest realizowane wprost, ale za pomocą specjalnych stacji bazowych nazywanych koncentratorami. Bardzo ważną cechą standardu jest możliwość uzyskania dużego zasięgu liczonego w kilometrach przy bardzo ograniczonej mocy nadawania (20 dBm),a co za tym idzie przy małym poborze ...

Mikrokontrolery STM32G0

Numer: Kwiecień/2019

Mikrokontrolery to elementy, które są używane w zastosowaniach, o których kiedyś nawet nie pomyślano. Niska cena powoduje, że wykorzystuje się je na szeroką skalę. Przez długi czas najtańsze były proste jednostki 8-bitowe, ponieważ ich struktury półprzewodnikowe zajmowały relatywnie małe powierzchnie krzemu. Wydajne mikrokontrolery 16-bitowe, a następnie 32-bitowe oferowały coraz większe możliwości, ale jednocześnie ...

Nowe mikrokontrolery Microchip DSC z rodziny dsPIC33CH

Numer: Luty/2019

Mikrokontrolery z rodziny dsPIC33 są przeznaczone głównie do stosowania w układach automatyki i sterowania, wymagających wykonywania złożonych algorytmów. Wydajny, 16-bitowy rdzeń RISC jest zintegrowany z jednostką DSP zoptymalizowaną do szybkiego wykonywania algorytmów przetwarzania cyfrowego. Takiemu połączeniu producent nadał nazwę Digital Signal Controllers - DSC.

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Lipiec 2019

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym