Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

Komunikacja w mikrokontrolerach. Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

Mikroprocesory i Mikrosterowniki Magistrala szeregowa I2C / TWI Inter-Integrated Circuit Two Wire Interface

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

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

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

Zewnętrzne układy peryferyjne cz. 1 Wykład 12

Komunikacja w mikrokontrolerach Laboratorium

Magistrala I 2 C. Podstawy systemów mikroprocesorowych. Wykład nr 5 Interfejsy szeregowe c.d.

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

Instytut Teleinformatyki

Wbudowane układy komunikacyjne cz. 1 Wykład 10

ĆWICZENIE 5. TEMAT: OBSŁUGA PORTU SZEREGOWEGO W PAKIECIE KEILuVISON WYSYŁANIE PORTEM SZEREGOWYM

Expandery wejść MCP23S17 oraz MCP23017

LABORATORIUM - ELEKTRONIKI Układy mikroprocesorowe cz.2

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

Komunikacja z czujnikiem

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

Programowanie mikrokontrolerów AVR z rodziny ATmega.

UW-DAL-MAN v2 Dotyczy urządzeń z wersją firmware UW-DAL v5 lub nowszą.

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

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

THP-100-x parametry. Pobór prądu (przy zasilaniu 12V) Pobierana moc (przy zasilaniu 12V) 0,036W. Pomiar ciśnienia

Programowanie mikrokontrolerów

Komunikacja w mikrokontrolerach Laboratorium

HP-1 parametry. Pobór prądu (przy zasilaniu 12V) Pobierana moc (przy zasilaniu 12V) 0,036W. Pomiar ciśnienia

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

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

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

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

m e d i a s e r v i c e Moduł kamery JPEG z komunikacją szeregową CJ0706A

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

DIGA Object Dictionary opis

Arduino Power Shield. Moduł Arduino do sterowania silnikami dużej mocy i pomiaru prądu

Kod produktu: MP01105

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

SPECYFIKACJA Przetwornik wilgotności HCRH-Modbus

Przetwornik analogowo-cyfrowy

Schemat blokowy architektury AVR

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

Moduł komunikacyjny Modbus RTU do ciepłomierza SonoMeter 30

SPECYFIKACJA Przetwornik wilgotności HCRH-MODBUS-Kb

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

SPECYFIKACJA. Przetwornik wilgotności i temperatury RH&T MODBUS RTU. HCRH-Ka-Modbus. Opracował: HOTCOLD s.c

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

RFID. Czytniki RFID. Instrukcja rev. 1.01

start Program mikroprocesorowego miernika mocy generowanej $crystal = deklaracja

Kod produktu: MP01611

SPECYFIKACJA. Przetwornik temperatury PT100 MODBUS RTU. Opracował: HCC-03-Modbus. HOTCOLD s.c

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

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

Rozdział 2. Programowanie Arduino i kodowanie społecznościowe (29)

RS868v3 module configuration

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

RS485 MODBUS Module 8I8O

SPECYFIKACJA. Przetwornik temperatury PT100 MODBUS RTU. Opracował: HCC-05c-Modbus. HOTCOLD s.c

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Programowanie Mikrokontrolerów

Bootloader programming

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)

SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)

Komputery klasy PC. Dariusz Chaberski

DZT Licznik energii elektrycznej Sieć trójfazowa 4-przewodowa Połączenie bezpośrednie 100A Wyjście impulsowe oraz RS485/Modbus.

SPECYFIKACJA. Przetwornik różnicy ciśnień DPC250-M, DPC2500-M, DPC4000-M, DPC7000-M (MODBUS RTU)

MS360-LPM. wersja 1.09 (wersja robocza) Dokumentacja użytkownika

Akademia Górniczo- Hutmicza w Krakowie Katedra Elektroniki WIET

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

DZT Licznik energii elektrycznej Sieć trójfazowa 4-przewodowa Połączenie bezpośrednie 100A Wyjście impulsowe oraz RS485/Modbus.

UNIPROD GLIWICE ul. Sowińskiego 3 tel: , fax kontakt@uniprod.pl

IEEE Centronics

200M-ADAM.E. Systemy przesyłu sygnału audio. LAN-RING 200Mbps BOX + DIN35-LOCK* 1/6

Programowanie mikrokontrolerów. 8 listopada 2007

Nazwa implementacji: Pamięć i zręczność - zapamiętaj kolejność. Autor: Krzysztof Bytow

Opis czytnika TRD-HOT COMBO ver Naścienny czytnik transponderów UNIQUE w podświetlanej obudowie

Problematyka sieci miejscowej LIN

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

Termometr cyfrowy DS18B20 obudowy i wyprowadzenia

Oscyloskop (007; ; arduino; processing)

Instrukcja integracji urządzenia na magistrali Modbus RTU

Zastosowanie moduł Wi-Fi ESP-12 (1) Wirtualny interfejs szeregowy

Systemy Wbudowane. Raspberry Pi komunikacja szeregowa (wersja 2019) Higiena pracy z Qt. Komunikacja szeregowa. Qt Creator i uruchamianie.

DZT WEJŚCIE Napięcie znamionowe: (U n

Magistrala SPI. Linie MOSI i MISO sąwspólne dla wszystkich urządzeńna magistrali, linia SS jest prowadzona do każdego Slave oddzielnie.

Przemysłowy odtwarzacz plików MP3

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

1W-H3-04P (K)* *Litera K odnosi się do wersji czytnika ze wspólną katodą. Czytnik RFID 125 khz Unique. Karta produktu

1.10 MODUŁY KOMUNIKACYJNE

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

DZT WEJŚCIE Napięcie znamionowe: (U n

MiniModbus 4DI. Moduł rozszerzający 4 wejścia cyfrowe. Wyprodukowano dla

RS485 MODBUS Module 8I8RO

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

ze względu na jego zaokrąglony kształt musimy go umieścić w innych bloczkach np. ze zmienną: lub jeśli chcemy sprawdzić jaki właśnie znak odczytujemy:

RS485 MODBUS Module 8I8RO

4 Transmisja szeregowa, obsługa wyświetlacza LCD.

Transkrypt:

Instytut Informatyki Politechnika Poznańska

Zasilanie: 5V Pobór prądu: < 2mA Efektywny kąt: < 15º 11-2014 2

Zasada pomiaru Odległość = (Szerokość impulsu Prędkość dźwięku) / 2 11-2014 3

Zależność prędkości fali dźwiękowej (w m/s) od temperatury i wilgotności względnej powietrza C 20%RH 50%RH 80%RH 0 331,52 331,62 331,70 5 334,57 334,70 334,84 10 337,60 337,79 337,98 15 340,61 340,88 341,15 20 343,62 343,99 344,37 25 346,62 347,13 347,65 30 349,67 350,32 351,01 [ m/ s] 331 0,6 T[ C] 11-2014 4

Charakterystyka sensora: D[cm] = T[µs] / 58 Producent podaje zakres: 2cm - 500 cm (3 cm 300 cm) Rozdzielczość: 0,3 cm Częstotliwość: 40 khz (fala 8 x 25 µs = 200 µs) 11-2014 5

W temperaturze 21ºC prędkość dźwięku wynosi ok. 345m/s Oznacza to 0,0345 cm/µs Czyli przebycie odległości 1cm wymaga 28,9855 µs W zaokrągleniu przyjmujemy 29, a ponieważ dźwięk przebywa podwójną odległość i w związku z tym zmierzony czas odpowiedzi należy podzielić przez 58 11-2014 6

Charakterystyka sensora D[cm] = T[µs] / 58 Producent podaje zakres 2cm - 500 cm 11-2014 7

Charakterystyka sensora dookólna 11-2014 8

Transmisja asynchroniczna Brak 11-2014 9

Przykładowe biblioteki dla Arduino http://www.inmotion.pt/store/ultrasound-sensor-hc-sr04 https://github.com/jrodrigotech/ultrasonic-hc-sr04 http://playground.arduino.cc/code/newping https://code.google.com/p/arduino-new-ping/ https://code.google.com/p/arduino-new-ping/wiki/15_sensors_example https://code.google.com/p/arduino-new-ping/wiki/newping_single_pin_sketch https://code.google.com/p/arduino-new-ping/wiki/ping_event_timer_sketch https://code.google.com/p/arduino-new-ping/wiki/simple_newping_example https://code.google.com/p/arduino-new-ping/wiki/using_newping_syntax http://www.instructables.com/id/ultrasonic-range-detector-using-arduino-andthe-sr/ https://apcexpert.wordpress.com/category/sensor-ultrasonicohc-sr04/ http://www.instructables.com/id/simple-arduino-and-hc-sr04- Example/ 11-2014 10

Przykładowe realizacja // Pomiar odległości w cm z czujnikiem HC-SR04 //Konfiguracja sprzętowa int trigpin = 9; int echopin = 10; int gndpin = 11; int vccpin = 8; 11-2014 11

Przykładowe realizacja //Konfiguracja mikrokontrolera void setup() { Serial.begin(57600); pinmode(trigpin, OUTPUT); pinmode(echopin, INPUT); pinmode(gndpin, OUTPUT); digitalwrite(gndpin, LOW); pinmode(vccpin, OUTPUT); digitalwrite(vccpin, HIGH); // Zasilanie masa // Zasilanie +Vcc } Serial.println( Pomiar odleglosci (w cm) z HC-SR04 ); 11-2014 12

Przykładowe realizacja //Pętla główna void loop() { Serial.print(sonarPomiar_cm()); Serial.println( cm ); delay(1000); //Pomiar odległości w cm } 11-2014 13

Przykładowe realizacja // Funkcja realizującą pomiar w cm int sonarpomiar_cm() { digitalwrite(trigpin, LOW); delaymicroseconds(5); digitalwrite(trigpin, HIGH); delaymicroseconds(12); // Impuls >10 µs digitalwrite(trigpin, LOW); int czas = pulsein(echopin, HIGH); int odleglosc = czas / 58; if ((odleglosc > 500) (odleglosc < 0)) return 999; else return odleglosc; // obliczanie odległości // przekroczony zakres pomiaru // poprawny pomiar w cm } 11-2014 14

11-2014 15

11-2014 16

Sensor z magistralą I2C 11-2014 17

Protokół I2C wzorowany na układach EEPROM serii 24xx Domyślny adres SFR10: 0xE0 Może być on zmieniony przez użytkownika na jeden z adresów: E0, E2, E4, E6, E8, EA, EC, EE, F0, F2, F4, F6, F8, FA, FC lub FE Rejestry SRF10 Zakres pomiaru określany jest w µs, tzn. wartość max równa 65535 (0xFFFF) odpowiada odległości 1129 cm lub 442 cale Rejestr #2 umożliwia zmianę wzmocnienia analogowego 11-2014 18

Polecenia Polecenia #80 do #82 ustalają format wyniku Polecenia #160, #165, #170 przeznaczone są do zmiany adresu I2C 11-2014 19

Wzmocnienie analogowe 11-2014 20

Wzmocnienie analogowe 11-2014 21

Zmiana adresów I2C 11-2014 22

Czytnik zakresu SFR10 // I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder // by Nicholas Zambetti <http://www.zambetti.com> // and James Tichenor <http://www.jamestichenor.net> // Demonstrates use of the Wire library reading data from the // Devantech Utrasonic Rangers SFR08 and SFR10 // Created 29 April 2006 // This example code is in the public domain. #include <Wire.h> 11-2014 23

Czytnik zakresu SFR10 void setup() { Wire.begin(); Serial.begin(9600); } int reading = 0; // join i2c bus (address optional for master) // start serial communication at 9600bps void loop() { // step 1: instruct sensor to read echoes Wire.beginTransmission(112); // transmit to device #112 (0x70) // the address specified in the datasheet is 224 (0xE0) // but i2c adressing uses the high 7 bits so it's 112 Wire.write(byte(0x00)); // sets register pointer to the command register (0x00) Wire.write(byte(0x50)); // command sensor to measure in "inches" (0x50) // use 0x51 for centimeters // use 0x52 for ping microseconds Wire.endTransmission(); // stop transmitting 11-2014 24

Czytnik zakresu SFR10 // step 2: wait for readings to happen delay(70); // datasheet suggests at least 65 milliseconds // step 3: instruct sensor to return a particular echo reading Wire.beginTransmission(112); // transmit to device #112 Wire.write(byte(0x02)); // sets register pointer to echo #1 register (0x02) Wire.endTransmission(); // stop transmitting // step 4: request reading from sensor Wire.requestFrom(112, 2); // request 2 bytes from slave device #112 11-2014 25

Czytnik zakresu SFR10 // step 5: receive reading from sensor if (2 <= Wire.available()) // if two bytes were received { reading = Wire.read(); // receive high byte (overwrites previous reading) reading = reading << 8; // shift high byte to be high 8 bits reading = Wire.read(); // receive low byte as lower 8 bits Serial.println(reading); // print the reading } } delay(250); the output :) // wait a bit since people have to read 11-2014 26

/* Czytnik zakresu SFR10 Fragment zakomentowany // The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) // usage: changeaddress(0x70, 0xE6); void changeaddress(byte oldaddress, byte newaddress) { Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(byte(0xA0)); Wire.endTransmission(); 11-2014 27

Czytnik zakresu SFR10 Fragment zakomentowany Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(byte(0xAA)); Wire.endTransmission(); Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(byte(0xA5)); Wire.endTransmission(); Wire.beginTransmission(oldAddress); Wire.write(byte(0x00)); Wire.write(newAddress); Wire.endTransmission(); } */ 11-2014 28

Symulator czujnika SFR10 byte address = 112; // adres czujnika unsigned int manipvar = 0; // zmienna do zmiany danych byte bytessent = 2 ; // liczba bajtów do wysłania byte bytestosend[2] ; // przygotowanie danych do wysłania byte command = 0 ; // przechowywanie poleceń { void setup() TWAR = (address << 1) 0b00000001; // ustawienie adresu i ogólnej odpowiedzi na wywołania TWCR = 0b01000101; // ustawienie TWEA, TWEN i TWIE na 1 SREG = 0b10000000; // globalne włączenie przerwań pinmode(13, OUTPUT); } // koniec void setup() 11-2014 29

Symulator czujnika SFR10 void loop() { if (command == 0x50) // włączenie diody dla polecenia 0x50 digitalwrite (13, HIGH); if (command == 0x02) // wyłączenie diody dla polecenia 0x02 digitalwrite (13, LOW); manipvar++; // główna zmienna do manipulowania dwoma bajtami wyjściowymi bytestosend [0] = manipvar; // przygotowanie starszego i młodszego bajtu zmiennej manipvar bytestosend [1] = manipvar >> 8 ; // starszy bajt manipvar delay (250); // coś innego do zrobienia podczas oczekiwania } // koniec void loop() 11-2014 30

Symulator czujnika SFR10 ISR (TWI_vect) { // procedura obsługi przerwania przypisana do wektora if (TWCR & (1 << TWINT)) { // powtórne sprawdzenie, czy przerwanie jest właściwe if ((TWSR & 0b11111000) == 0x80) { // dane przychodzące } command = TWDR; // skopiowanie danych polecenia do wykorzystania później TWCR = 0b11000100; // reset oryginalnej konfiguracji 11-2014 31

Symulator czujnika SFR10 if ((TWSR & 0b11111000) == 0xA8 ) // żądanie danych wychodzących { while (bytessent > 0 ) // wysłanie bajtów do mastera { bytessent--; TWDR = bytestosend [bytessent]; // wysłanie danych od najstarszego do najmłodszego bajta TWCR = 0b11000101; // reset po każdym wysłaniu delay (5); // chwilowa pauza po wysłaniu } if (bytessent == 0 ) // reset liczby bajtów i jeżeli bufor jest pusty bytessent = 2; } // koniec if ((TWSR & 0b11111000) == 0xA8 ) 11-2014 32

Symulator czujnika SFR10 TWCR = 0b11000101; // jeszcze jeden reset na wszelki wypadek SREG = 0b10000000; // włączenie z powrotem przerwań } // koniec if (TWCR & (1 << TWINT)) } // koniec ISR (TWI_vect) 11-2014 33

Dziękuję 34 09-2006