Lekcja 6: Pomiar odległości czujnikiem ultradźwiękowym.
Tym razem zajmiemy sie pomiarem odległości za pomocą ultradźwiękowego czujnika US-020.
Skłąda się on z dwóch przetworników - wysyłającego i odbierającego fale dźwiękowe. Czujnik
ultradźwiękowy działający w efektywnym zakresie 2 - 700 cm. Do pomiarów można również wykorzystać podobny czujnik
o krótszym zasięgu (2-200cm) o symbolu HC-SR04.
Dane czujnika US-020:
- Napięcie zasilania: 5 V
- Średni pobór prądu: 3 mA
- Zakres pomiarowy: 2 - 700 cm
- Dokładność: 0,3 cm + 1 %
- Wyjście: sygnał częstotliwościowy
- Częstotliwość pracy: 40 kHz
- Wymiary: 45 x 20 x 15 mm
Aby rozpocząć pomiar należy podać na pin TRIG impuls napięciowy (stan wysoki 5 V) przez 10 uS (10 mikrosekund). Moduł dokonuje pomiaru odległości przy pomocy fali dźwiękowej o częstotliwości 40 kHz. Do mikrokontrolera wysyłany jest sygnał, w którym odległość zależna jest od czasu trwania stanu wysokiego i można ją obliczyć ze wzoru: , gdzie s - odległość, t -czas trwania wysokiego poziomu, v - prędkość dźwięku (340m/s). Wynik dzielimy przez 2 gdyż odległość od przeszkody jest o połowę krótsza od drogi jaką pokonuje dźwięk (dźwięk biegnie od czujnika do przeszkody i z powrotem).
*źródło: www.botland.com.plSkładamy układ z czujnikiem wg. poniższych schematów z połączeniami:
- VCC do 5V
- Trig do pinu 7
- Echo do pinu 8
- GND do GND
Piszemy kod jak poniżej.
#include < NewPing.h> #define TRIGGER_PIN 7 #define ECHO_PIN 8 #define MAX_DISTANCE 200 NewPing odl(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(115200); } void loop() { delay(50); unsigned int uS = odl.ping(); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); }
W linii 1 mamy instrukcję include i w nawiasach trójkątnych nazwę pliku nagłówkowego
NewPing.h, który został stworzony przez producenta czujnika. W tym pliku znajdują się instrukcje
obsługujące elementy czujnika. My tylko z nich korzystamy w naszym kodzie. Pliki można ściągnąć
stąd a następnie rozpakować do folderu
naszego projektu.
W linii 2 i 3 definiujemy dwie zmienne na pinach 7 i 8, które oznaczają wyzwalanie sygnału i odbiór.
W linii 4 deklarujemy maksymalny mierzony zakres odległości.
W linii 5 znajduje sie wywołanie z klasy NewPing nowej funkcji o nazwie odl, która będzie przechowywała
chwilową odległość.
Zauważmy, że w linii 7 zadeklarowaliśmy prędkość przesyłu danych portem szeregowym na 115200 bitów na sekundę.
Trzeba będzie pamiętać o tym by w oknie Serial Monitora, w którym będziemy widzieć wyniki, również zmienić prędkość
wysyłania danych (prawy dolny róg okna).
W linii 10 ustalamy czas między pomiarami na 50ms.
W linii 11 deklarujemy nową wartość unsigned int uS, która przyjmie wartości z funkcji odl. Jest to liczba bez znaku
i całkowita (dodatnia).
W linii 12 wysyłamy do okna Serial Monitor wynik przechowywany w zmiennej uS przeliczony na cm.
W linii 13 dopisujemy tylko jednostkę do wartości mierzonej.
Powinniśmy widzieć obraz jak poniżej. Wystarczy teraz zbliżać i oddalać od czujników dłoń by sprawdzić działanie układu.
Powrót do spisu materiałów