Pomiar odległości z Arduino czujniki, schematy, przykładowe kody

Podobne dokumenty
Przyrząd do grania bluesa Projekt zaliczeniowy z przedmiotu Programowanie Mikrokontrolerów

Uwaga: dioda na wyjściu 13 świeci gdy na wyjście podamy 0.

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

SCL > Pin 21 SDA > Pin 20 VCC > 5V GND > GND

Przetwornik analogowo-cyfrowy

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zmierzyć się z żywiołami, czyli jak zbudować własną stację badawczą! Zaczynamy! Pole komunikatów programu. Nawigacja w programie Arduino

Prosty system alarmowy z Arduino

Silnik prądu stałego. Sterowanie silnika prądu stałego

BEZDOTYKOWY CZUJNIK ULTRADŹWIĘKOWY POŁOŻENIA LINIOWEGO

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Notatka lekcja_#3_1; na podstawie W.Kapica 2017 Strona 1

Spis treści. Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Rafał Staszewski Maciej Trzebiński, Dominik Derendarz

Schemat blokowy architektury AVR

Kod produktu: MP01611

Pomiar temperatury Czujnik temperatury TMP36

Klawiatura matrycowa

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Kurs Arduino dla początkujących - Michał Jaworski str. 1. Lekcja 5

Pilot RF 4-kanałowy + odbiornik XY-DJM-5V umożliwia zdalne sterowanie do czterech urządzeń. Nadajnik pilot MX804. Odbiornik XY-DJM.

Badanie czujników odległości Laboratorium Mechatroniki i Robotyki

WIZUALIZACJA DANYCH SENSORYCZNYCH MINISTACJA METEOROLOGICZNA

LOW ENERGY TIMER, BURTC

SDD287 - wysokoprądowy, podwójny driver silnika DC

Modulatory PWM CELE ĆWICZEŃ PODSTAWY TEORETYCZNE

Systemy Wbudowane. Arduino C. Arduino C - stałe. Arduino C - Stałe. Arduino C - Stałe. Funkcje matematyczne. Arduino C - Stałe

Interfejs analogowy LDN-...-AN

INSTRUKCJA OBSŁUGI K3-3. Czytnik kart i zamek kodowy z kontrolerem dostępu i interfejsem Wiegand. Copyright Domster T. Szydłowski

SDD287 - wysokoprądowy, podwójny driver silnika DC

SiMod-X-(A1) Przetwornik parametrów powietrza z interfejsem RS485 (MODBUS RTU) oraz wyjściem analogowym (dotyczy wersji -A1)

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

TRD-MINI COMBO. Uniwersalny moduł czytnika transponderów UNIQUE - wersja OEM. Podstawowe cechy :

Język C. Wykład 9: Mikrokontrolery cz.2. Łukasz Gaweł Chemia C pokój 307

Różnicowy przetwornik ciśnienia EL-PSa-xxx

PiXiMo Driver LED 12x350 ma

Arduino jako wyłącznik z opóźnieniem

Teraz możesz kupić zestaw ponad 70 elementów niezbędnych do przeprowadzenia ćwiczeń z kursu u naszych dystrybutorów!

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ DPC250; DPC250-D; DPC4000; DPC4000-D

LabVIEW PLATFORMA EDUKACYJNA Lekcja 6 LabVIEW i Arduino programy wykorzystujące wyświetlacz LCD, czujnik temperatury, PWM i diodę LED

Podstawowe zastosowania wzmacniaczy operacyjnych wzmacniacz odwracający i nieodwracający

RPTC CONTROLLER (v1.11) STEROWNIK PRZEMIENNIKA RADIOWEGO OBSŁUGA KOMUNIKATÓW GŁOSOWYCH OBSŁUGA KOMUNIKATÓW IDCW OPCJONALNY MODUŁ GSM

Przetworniki cyfrowo-analogowe C-A CELE ĆWICZEŃ PODSTAWY TEORETYCZNE

Pomiar natężenia światła (005; ; arduino, processing)

ORVALDI ATS. Automatic Transfer Switch (ATS)

Instrukcja użytkownika FAKOPP TIMER DO POMIARU PRĘDKOŚCI FAL ULTRADŹWIĘKOWYCH.

Programowanie mikroprocesorów w systemie Arduino. Instrukcja do ćwiczenia laboratoryjnego

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

MoboLab roboty i tablety w Twojej szkole Obszar II. Stwórz własnego robota Scenariusze lekcji i zajęć pozalekcyjnych

Moduł wejść/wyjść VersaPoint

Terminali GPRS S6 Strona 1 z 11. Terminal GPRS. Albatross S6. Instrukcja montażu wersja 4.2

MULTIMETR CYFROWY TES 2360 #02970 INSTRUKCJA OBSŁUGI

SPECYFIKACJA HTC-K-VR. Kanałowy przetwornik CO2 z wyjściem analogowym V i progiem przekaźnikowym

Z pomocą Arduino budujemy mikrofon podsłuchowy

KA-NUCLEO-UniExp. Wielofunkcyjny ekspander dla NUCLEO i Arduino z Bluetooth, MEMS 3DoF, LED-RGB i czujnikiem temperatury

PRZYCISK DO PUSZKI UNIV x

TERMOSTAT Z WYŚWIETLACZEM LED - 50,0 do +125,0 C

Kurs Elektroniki. Zastosowanie elektroniki w robotyce cz

Arduino prezentuje działanie bramki logicznej AND

Politechnika Wrocławska

Urządzenie pomiarowe ERMA

by Jody Culkin PIERWOTNY WZÓR BĘDĄCY PODSTAWĄ DO STWORZENIA GOTOWEGO PRODUKTU.

Tematem projektu jest oparty na Arduino zegar pokazujący godzinę oraz datę.

Drivery LED PWM oraz prosty sterownik Świt Zmierzch oparty na Arduino

Generator tonów CTCSS, 1750Hz i innych.

Q3 Autonomiczny czytnik kart i zamek kodowy z kontrolerem dostępu, przyciskiem dzwonka i interfejsem Wiegand

Instrukcja użytkownika

Systemy Wbudowane. Arduino - rozszerzanie. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD. Podłączanie wyświetlacza LCD

INSTRUKCJA OBSŁUGI M-320 #02905 KIESZONKOWY MULTIMETR CYFROWY

MCAR Robot mobilny z procesorem AVR Atmega32

Laboratorium Analogowych Układów Elektronicznych Laboratorium 6

Ławki. Dorota Błaszczak. Opis techniczny. projektu Joanny Napieralskiej. Warszawa, 2 lipca 2011

Opis czytnika TRD-FLAT CLASSIC ver Naścienny czytnik transponderów UNIQUE w płaskiej obudowie

KAmodQTR8A. Moduł QTR8A z ośmioma czujnikami odbiciowymi

Model: OR-ZS-802 (OR-ZS-SB-102) ZAMEK SZYFROWY Z CZYTNIKIEM KART I BRELOKÓW ZBLIŻENIOWYCH ID. Instrukcja montażu i programowania

Instrukcja obsługi. Zamek szyfrowy ATLO-RM (wersja bez klawiatury) Dane techniczne oraz treść poniższej instrukcji mogą ulec zmianie bez uprzedzenia.

AKTUATOR DO SYSTEMU DUO Q

MODEL: UL400. Ultradźwiękowy detektor pomiaru odległości, metalu, napięcia i metalowych kołków INSTRUKCJA OBSŁUGI

Moduł przełączania temperatury Nr produktu

SPECYFIKACJA PRZETWORNIK RÓŻNICY CIŚNIEŃ

Opis czytnika TRD-80 CLASSIC ver Moduł czytnika transponderów UNIQUE z wbudowaną anteną

2.1 Porównanie procesorów

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Otwór w panelu WYMIAR MINIMALNIE OPTYMALNIE MAKSYMALNIE A 71(2,795) 71(2,795) 71,8(2,829) B 29(1,141) 29(1,141) 29,8(1,173)

Częstościomierz wysokiej rozdzielczości

SPECYFIKACJA HTC-VR, HTC-VVR-RH, HTC-VVR-T, HTCVVVR, HTC-VR-P, HTC-VVR-RH-P

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Firma DAGON Leszno ul. Jackowskiego 24 tel Produkt serii DAGON Lighting

Czym jest sygnał PWM?

Zakład Teorii Maszyn i Układów Mechatronicznych. LABORATORIUM Podstaw Mechatroniki. Sensory odległości

INSTRUKCJA OBSŁUGI Generatora impulsów PWM

Opis czytnika TRD-55 CLASSIC ver Moduł czytnika transponderów UNIQUE z zewnętrzną anteną

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Nowy MULTIMETR z czujnikiem Halla

MM05-IIIe. Dokumentacja techniczna

System Informacji Technicznej SIT MTC mini

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

ASTOR IC200ALG320 4 wyjścia analogowe prądowe. Rozdzielczość 12 bitów. Kod: B8. 4-kanałowy moduł ALG320 przetwarza sygnały cyfrowe o rozdzielczości 12

Transkrypt:

Pomiar odległości z Arduino czujniki, schematy, przykładowe kody W robotyce, mechatronice czy modelarstwie do rozwiązania jest problem pomiaru odległości do czegoś, na przykład do ściany lub do kogoś idącego w kierunku Arduino. Poniżej prezentujemy 3 przykładowe rozwiązania. Rozwiązanie 1 czujnik PING)))J W tym rozwiązaniu wykorzystujemy popularny ultradźwiękowy czujnik odległości o nazwie PING)))J firmy Parallax do pomiaru odległości obiektu od 2 centymetrów do około 3 metrów. Odległość wyświetlana jest na monitorze szeregowym i miga dioda LED, tym szybciej im obiekty się przybliżają. Na rysunku 1 pokazano widok czujnika PING)))J firmy Parallax, a na rysunku 2 schemat podłączenia tego czujnika do płytki Arduino. Rys. 1. Widok czujnika PING)))J firmy Parallax Przykładowy kod dla Arduino wyświetlający odległość i sygnalizujący miganiem diody LED zbliżanie się do obiektu zamieszczono poniżej /* Czujnik Ping))) * drukuje odległość i zmienia prędkość migania diody * w zależności od odległości od czujnika Ping))) */ const int pingpin = 5; const int ledpin = 13; // pin podłączony do diody LED void setup() Serial.begin(9600); pinmode(ledpin, OUTPUT); void loop() int cm = ping(pingpin) ; Serial.println(cm); digitalwrite(ledpin, HIGH); delay(cm * 10 ); // każdy centymetr dodaje 10 millisekund opóźnienia digitalwrite(ledpin, LOW); delay( cm * 10); // following code based on http://www.arduino.cc/en/tutorial/ping // returns the distance in cm int ping(int pingpin) 1

// establish variables for duration of the ping, // and the distance result in inches and centimeters: long duration, cm; // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinmode(pingpin, OUTPUT); digitalwrite(pingpin, LOW); delaymicroseconds(2); digitalwrite(pingpin, HIGH); delaymicroseconds(5); digitalwrite(pingpin, LOW); pinmode(pingpin, INPUT); duration = pulsein(pingpin, HIGH); // convert the time into a distance cm = microsecondstocentimeters(duration); return cm ; long microsecondstocentimeters(long microseconds) // The speed of sound is 340 m/s or 29 microseconds per centimeter. // The ping travels out and back, so to find the distance of the // object we take half of the distance travelled. return microseconds / 29 / 2; Rys. 2. Schemat podłączenia czujnika Ping)))J do modułu Arduino 2

Mierzenie odległości z Arduino czujniki, schematy, przykładowe kody Czujniki ultradźwiękowe zapewniają pomiar czasu potrzebnego na odbicie dźwięku od obiektu i powrót do czujnika. Impuls dźwiękowy ping jest generowany, gdy poziom na ping Pin przyjmuje stan wysoki (HIGH) na dwie mikrosekundy. Czujnik generuje impuls, który zakończy się, gdy dźwięk powróci. Szerokość impulsu jest proporcjonalna do odległości przebytego dźwięku, a szkic wykorzystuje funkcję pulsein do pomiaru czasu jego trwania. Prędkość dźwięku w powietrzu wynosi 340 metrów na sekundę, czyli 29 mikrosekund na centymetr. Wzór na odległość podróży dźwięku tam i z powrotem jest zatem następujący: odległość tam i z powrotem = ilość mikrosekund/29. Tak więc wzór na odległość w jedną stronę w centymetrach wynosi: (ilość mikrosekund/29)/2 Rozwiązanie 2 czujnik MAXSonar-EZ1 MaxSonar EZ1 to kolejny czujnik ultradźwiękowy, który może służyć do pomiaru odległości. Jest on łatwiejszy do wbudowania niż Ping))), ponieważ nie musi być pingowany (namierzany). Może zapewnić ciągłą informację o odległości, albo jako napięcie analogowe, albo proporcjonalnie do szerokości impulsu. Na rysunku 3 pokazano widok czujnika EZ1, a na rysunku 4 schemat podłączenia tego czujnika do płytki Arduino. Przykładowy kod dla czujnika EZ1 podłączonego do Arduino zamieszczono na następnej stronie. Szkic wykorzystuje wyjście szerokości impulsu EZ1 (PW) do uzyskania wyniku podobnego do tego z poprzedniego szkicu: Czujnik EZ1 jest zasilany przez piny +5V i masę i są one podłączone do odpowiednich pinów Arduino. Należy połączyć pin PW czujni- GND +5V TX AN PW Rys. 3. Widok czujnika MAXSonar-EZ1 wraz z opisem jego wyprowadzeń ka EZ1 z cyfrowym pinem Arduino pinem nr 5. Szkic mierzy szerokość impulsu za pomocą polecenia pulsein. Szerokość impulsu wynosi 58 mikrosekund na centymetr. Rys. 4. Schemat podłączenia czujnika MAXSonar-EZ1 do modułu Arduino 3

/* * Czujnik odległości EZ1 * drukuje odległość i zmienia prędkość migania diody * w zależności od odległości od czujnika Ping))) */ const int sensorpin = 5; const int ledpin = 13; // pin connected to LED long value = 0; int cm = 0; int inches = 0; void setup() Serial.begin(9600); pinmode(ledpin, OUTPUT); void loop() value = pulsein(sensorpin, HIGH) ; cm = value / 58; // szerokość ipulsu to 58 mikrosekund na cm inches = value / 147; // który to 147 mikrosekund na cal Serial.print(cm); Serial.print(, ); Serial.println(inches); digitalwrite(ledpin, HIGH); delay(cm * 10 ); // każdy centymetr dodaje 10 millisekund opóźnienia digitalwrite(ledpin, LOW); delay( cm * 10); delay(20); Uwaga Konieczne może być dodanie kondensatora miedzy linią +5V i Gnd, aby ustabilizować zasilanie czujnika, jeśli używane są długie przewody połączeniowe. Jeśli otrzymywane są błędne odczyty, należy podłączyć kondensator odprzęgający 10μF na czujniku. Można również uzyskać odczyt odległości z czujnika EZ1 poprzez jego wyjście analogowe należy podłączyć pin AN do wejścia analogowego i odczytać wartość za pomocą analogread. Poniższy kod wypisuje wejściowe dane analogowe przekonwertowane na cale: value = analogread(0); inches = value / 2; // każda cyfra odczytu analogowego to około 5mv Serial.println(inches); Wyjście analogowe wynosi około 9.8mV na cal. Wartość z analogread wynosi około 4,8mV na jednostkę, a poprzedni kod zaokrągla je tak, aby każda grupa dwóch jednostek miała jeden cal. Błąd zaokrąglenia jest niewielki w porównaniu do dokładności urządzenia, ale jeśli chcesz bardziej precyzyjnego obliczenia, możesz użyć kodu zmiennoprzecinkowego w następujący sposób: 4

value = analogread(0); float mv = (value /1024.0) * 5000 ; float inches = mv / 9.8; // 9.8mV na cal Serial.println(inches) ; Rozwiązanie 3 czujnik HC-SR04 W tym rozwiązaniu zastosowany został ultradźwiękowy czujnik odległości HC-SR04. Jest to czujnik działający w zakresie od 2 cm do 200 cm. Zasilany napięciem 5V. Wyjściem jest sygnał, którego czas trwania jest proporcjonalny do mierzonej odległości. Na rysunku 5 pokazano widok czujnika HC-SR04, a na rysunku 6 schemat podłączenia tego czujnika do płytki Arduino UNO. Przykładowy kod dla tego czujnika zamieszczono na następnej stronie. Rys. 5. Widok czujnika HC-SR04 HC SR04 VCC Trig Echo GND Rys. 6. Schemat podłączenia czujnika odległości HC-SR04 do modułu Arduino UNO 5

Przykładowy kod dla czujnika odległości HC-SR04 podłączonego do Arduino int echopin = 13; // kontakt Echo na Pinie 13 int trigpin = 12; // kontakt Trig na Pinie 12 void setup() Serial.begin (9600); pinmode(trigpin, OUTPUT); pinmode(echopin, INPUT); void loop() int duration, cm; digitalwrite(trigpin, LOW); delaymicroseconds(2); digitalwrite(trigpin, HIGH); delaymicroseconds(10); digitalwrite(trigpin, LOW); duration = pulsein(echopin, HIGH); cm = duration / 58; Serial.print(cm); Serial.println( cm ); delay(500); 6