Oldalforrás megtekintése Korábbi változatok Hivatkozások Exportálás PDF-be Share on ... Google+ Twitter LinkedIn Facebook Pinterest Telegram Tartalomjegyzék Távolságmérés TOF10120 lézeres távolságérzékelő modul Technikai jellemzők Vezeték-kiosztás Vezetékezés az Arduinoval Szoftver Sharp IR távolságérzékelők Néhány Sharp IR távérzékelő típus Néhány Sharp IR távérzékelő adatlap Vezetékezés Szoftver HC‑SR04 szonárszenzor Technikai adatok Pinek HC‑SR04 adatlap Vezetékezés Github Források Ultrasonic távolságmérő szenzor Távolságmérés A távolságmérők valamilyen kibocsátott rezgés (hang vagy fény) adott objektumról való visszaverődés távolságát az eltelt idővel mérik. A hangalalpú (sonáros) távolságmérő eszközöknél a fényalapúak pontosabbak, és itt is a lézeres mérés precízebb, mint az infravörös visszaverődés-mérés (elvileg, ha a hardver megbízható). Típusai: hangalapú (szonár) szenzorok Az angolul Ultra-Sonic Ranger nevű technikai megoldás két elemből áll, egy hangszóróból, ami hanginpulzusokat bocsát ki, és egy mikrofonból, ami érzékeli ezeknek a visszaverődését. A kiadás és az érzékelés között eltelt időből – a hang terjedési sebességét iserve – a távolság kiszámolható. Ide tartoznak: HC‑SR04 szonárszenzor Ultrasonic távolságmérő szenzor infravörös távolságérzékelő szenzorok A szenzor az ún. háromszögeléses módszerrel működik. A szenzor egy keskeny infravörös fénnyalábot bocsát ki (az IR fény hullámhossza 850nm ± 70nm). A kibocsátott IR fény a tárgyakról visszaverődik. Az érzékelő egy optikával leképezi a visszavert fényt egy CCD-re. Attól függően hogy milyen messze van a céltárgy, más-más szögben érkezik vissza a visszavert fény, és ennek megfelelően más-más CCD pixelre fókuszálódik. Ebből már meghatározható a távolság. Sharp IR távolságérzékelők lézeres távolságérzékelő szenzorok A lézeres érzékelők is – csakúgy, mint az IR-esek – az ún. háromszögeléses módszerrel működnek. A szenzor által kibocsátott lézernyaláb, a mért felületről visszaverődve, egy lencsén át az érzékelő CCD illetve CMOS fényszenzorának felületére vetül. A reflektáló felület közelítésével illetve távolodásával a fényszenzorra vetített pont helyzete is változik, aminek kiértékelésével az elektronika meghatározza a távolságot. TOF10120 lézeres távolságérzékelő modul TOF10120 lézeres távolságérzékelő modul A TOF10120 távolságérzékelését a gyártó Sharp SPAD (Single Photon Avalanche Diodes) eljárással valósítja meg, melyet CMOS-alkalmazásával használ. Pontosabb eredményt biztosít, a környezeti fénnyel szemben ellenállóbb és optikai kialakításának köszönhetően a térgyérzékelése is megbízhatóbb. A modul class 1 940nm-es lézert alkalmaz a méréshez, érzékelési távolsága 10 .. 180 cm. Kimenete UART, kommunikációja lehet RS232, I²C vagy IIC. Technikai jellemzők Érzékelés távolsága: 100 .. 1800 mm Tápfeszültség: 3 .. 5V DC Áramfelvétel: 35mA Üzemi hőmérséklet: -20 .. +70 °C UART: 9600 baud, 8N1, Flow Control : None Vezeték-kiosztás ①GND Black ②VCC Red ③RXD Yellow ④TXD white ⑤SDA blue ⑥SCL purple Vezetékezés az Arduinoval A vezetékezés attól függ, hogy I²C-t vagy Serial-t alkalmazunk. Mind a 6 vezetéket felesleges egyszerre bekötni, 4-nek elégnek kell lennie. TOF10120Arduino pinMegjegyzés 1.feketeArduino GNDGND 2.pirosArduino 5v DC5v DC táp 3.sárgaPin 1 TxRxD : A serialhoz kell bekötni 4.fehérPin 0 RxTxD : A serialhoz kell bekötni 5.kékPin A4SDA : Az I²C-hez kell bekötni 6.zöldPin A5SCL : Az I²C-hez kell bekötni A serial Rx és Tx használata blokkolja a soros letöltést és a serial monitor használatát. Szoftver A lenti szoftver az I²C-t használja a kommunikációhoz, azaz a fenti táblázatnak megfelelően az Arduino pin0-t és pin1-et nem kell bekötni. Szoftver megjelenítése Szoftver megjelenítése /* TOF10120 Distance Sensor Demonstration TOF10120-Demo.ino Demonstrates use of TOF10120 Distance Sensor Adapted from code from SurtrTech Displays results on Serial Monitor DroneBot Workshop 2019 https://dronebotworkshop.com */ #include <Wire.h> unsigned char ok_flag; unsigned char fail_flag; unsigned short lenth_val = 0; unsigned char i2c_rx_buf[16]; unsigned char dirsend_flag=0; void setup() { Wire.begin(); Serial.begin(9600,SERIAL_8N1); printf_begin(); } void loop() { int x=ReadDistance(); Serial.print(x); Serial.println(" mm"); } int serial_putc( char c, struct __file * ) { Serial.write( c ); return c; } void printf_begin(void) { fdevopen( &serial_putc, 0 ); } void SensorRead(unsigned char addr,unsigned char* datbuf,unsigned char cnt) { unsigned short result=0; // step 1: instruct sensor to read echoes Wire.beginTransmission(82); // transmit to device #82 (0x52) // the address specified in the datasheet is 164 (0xa4) // but i2c adressing uses the high 7 bits so it's 82 Wire.write(byte(addr)); // sets distance data address (addr) Wire.endTransmission(); // stop transmitting // step 2: wait for readings to happen delay(1); // datasheet suggests at least 30uS // step 3: request reading from sensor Wire.requestFrom(82, cnt); // request cnt bytes from slave device #82 (0x52) // step 5: receive reading from sensor if (cnt <= Wire.available()) { // if two bytes were received *datbuf++ = Wire.read(); // receive high byte (overwrites previous reading) *datbuf++ = Wire.read(); // receive low byte as lower 8 bits } } int ReadDistance(){ SensorRead(0x00,i2c_rx_buf,2); lenth_val=i2c_rx_buf[0]; lenth_val=lenth_val<<8; lenth_val|=i2c_rx_buf[1]; delay(300); return lenth_val; } Sharp IR távolságérzékelők Az Sharp távérzékelők népszerűek olyan projektekhez, melyek pontos távolságmérést igényelnek. Ez az infravörös érzékelő sorozat megbízhatóságával kiemelkedik a többi IR érzékelő sorából. Illesztése a mikrokontrollerekhez egyszerű: az egy analóg kimenet analóg-digitális átalakítóhoz csatlakoztatható távolságmérések elvégzéséhez, vagy a kimenet kompenzátorhoz csatlakoztatható a küszöbérzékeléshez. A különböző verziónak az érzékelési tartománya nagyjából 10 cm-től 150 cm-ig terjed; a távolságot minden esetben a kimeneti feszültséggel képezik le a mérőegységek. A legtöbb Sharp típus 3 pólusú JST csatlakozót használ, amely a 3 pólusú JST kábelhez csatlakozik az Sharp távérzékelőkhöz. A hátulról nézve a balról jobbra lévő három csatlakozás a táp (piros), a föld (fekete) és a kimeneti jel (sárga). A Sharp IR távérzékelők méréshez PSD szenzort használnak: Fontos tudni, hogy a szenzorok távolság-feszültségkonverziója még véletlenül sem lineáris. A lenti ábrán például a GP2Y0A21YK feszültség -távolsággörbéje látható: Néhány Sharp IR távérzékelő típus típusÜzemi feszültségÁramfelvetelTávolságmérési tartománymegjegyzés GP2Y0A60SZ(LF)2 működési mód 3V: 2,7..3,6V 5V: 2,7V..5,5V33 mA10..150 cm-igModul: 3V Pololu Válaszidő: kb. 16.5 ± 4 ms Engedélyező jel is van rajta GP2Y0A02(YK0F)4,5..5,5 V33 mA20..150 cm-igKimeneti feszültségkülönbség a távolságtartományon belül: 2,05 V Válaszidő: kb. 38.3ms ± 9.6ms GP2Y0A21(YK0F)4,5..5,5 V30 mA10..80 cm-ig (4"..32")Talán a leggyakoribb alkalmazott típus Kimeneti feszültségkülönbség a távolságtartományon belül: 1,9 V Válaszidő: kb. 38.3ms ± 9.6ms GP2Y0A41(SK0F)0,4..2,5 V12 mA4..30 cm-igKimeneti feszültségkülönbség a távolságtartományon belül: 2,3 V Válaszidő: kb. 16.5 ± 4 ms GP2Y0A51(SK0F)0,4..2,5 V12 mA2..15 cm-igKimeneti feszültségkülönbség a távolságtartományon belül: 1,65 V Válaszidő: kb. 16.5 ± 4 ms Néhány Sharp IR távérzékelő adatlap distance_ir_analog_sharp_gp2y0a21yk.pdf distance_ir_analog_sharp_gp2y0a21yk_new.pdf distance_ir_analog_sharp_gp2y0a41sk0f.pdf Vezetékezés piros vezeték (táp): Arduino +5V DC fekete vezeték (föld): Arduino GND sárga vezeték (jel): Arduino analóg input Az IR-LED belső időzítése miatt előfordulhat, hogy a tápvezetéken zavarójelek kerülhetnek ki a mérőegységből. Ezek kiküszöbölésére többen javasolják, hogy érdemes a táp- és földvezeték közé egy 1..10μF-os szűrőkondenzátort beiktatni. Szoftver GP2Y0A21(YK0F), GP2Y0A41(SK0F): A szoftverpéldákat ezúttal is a Githubon érdemes keresgélni, például itt: https://github.com/jeroendoggen/Arduino-distance-sensor-library HC‑SR04 szonárszenzor A modul a hangvisszaverődés idejét mérve következtet a távolságra, azaz szonár-elven működik (mint a tengeralattjárók szonárja). Természetesen ez a modul is több néven ismert, például: SRF04 - Ultra-Sonic Ranger. A mérés egy 10 μs-os TTL impulzussal indítható. Ezt követően a modul 8 cikluson keresztül 40 kHz-es hangimpulzusokat ad ki, majd a mikrofonnal érzékeli ezeknek a visszaverődését. A távolság a válaszidő (μs) / 58 = távolság (cm) vagy válaszidő (μs) / 148 = távolság (inch) képletekkel számolható ki, ennek a számításnak a háttere: A távolságmérés a hanghullámok visszaverődésének a figyelése alapján történik. A hanghullámok kibocsátási és visszaérkezési idejét ismerve kiszámolható a mérés ideje. Ezt kell a hangsebességgel beszorozni. Az ehhez szükséges számolásban a csavar, hogy a hangsebesség a légköri nyomás és hőmérséklet függvényében is változik. Jelen esetben csak a hőmérséklet-korrekciót építjük be a számításba, az ehhez szükséges formula: 331.5 + 0.6 * t Ha a hőmérséklet például 20° C, akkor a hang terjedési sebessége: 331.5 + 0.6 * 20 = 331.5 + 12 = 343.5 m/s, azaz 0.03435 cm/µs. Ebből az is átszámolható, hogy a hangnak 29,112 mikroszekundumra van szüksége egy centiméter megtételéhez (1/0.03435 cm/µs = 29.112 µs/cm). Nyilván a hang esetén az oda-vissza utat is számolni kell, így jön ki a fenti (kerekített) válaszidő (μs) / 58 = távolság (cm) A méréseket nem érdemes 60 ms-on belül ismételni, mert zavarhatják egymást: A modult a tapasztalatok alapján érdemes úgy a tápfeszülségre csatlakoztatni, hogy először a grund (GND) kerüljön a modulra. A mérés bizonytalanná válik, ha a visszaverődési felület kisebb, mint 0,5 m². A legtöbb szoftver, ha kifut a felügyeleti időből, válasz nélkül (azaz túl nagy a távolság), "0" értékkel tér vissza, amit a szoftverben külön vizsgálni kell. Technikai adatok jellemzőadat Üzemi feszültségDC 5V Áramfelvétel15 mA Üzemi frekvencia40 kHz Maximális távolság4m Minimális távolság2cm Mérés pontossága> 3mm Mérési tartomány (szög)15° Trigger jel10 μs TTL impulzus Pinek jelölésleírás Vcctáp, 5V DC Trig"ping" kiküldése Echoválasz (viszhang) a "ping"-re GNDgrund HC‑SR04 adatlap distance_ultrasonic_srf04.pdf Vezetékezés Arduino 5V ↔ HC-SR04 Vcc Arduino GND ↔ HC-SR04 Gnd Arduino pin 11 ↔ HC-SR04 "Echo" Arduino pin 12 ↔ HC-SR04 "Trig" Github A modulhoz könyvtár és példaprogramok a Github-ról letölthetők: https://github.com/JRodrigoTech/Ultrasonic-HC-SR04 https://bitbucket.org/teckel12/arduino-new-ping/downloads/ Források http://www.micropik.com/PDF/HCSR04.pdf Ultrasonic távolságmérő szenzor Az autóknál tolatóradarként funkcionáló szenzort a fenti HC-SR04 szenzorhoz hasonlóan kell vezetékezni és programozni. Azzal szemben ennek az előnye, hogy nagyobb távolságra érzékel és vízálló. Adatlapja: Üzemi feszültség: DC 5V Készenléti áramfelvétel: 5mA Üzemi áramfelvétel: 30mA Átviteli frekvencia: 40KHz Maximális távolság: 5M Holttér: 25cm Pontosság: 0.5cm Látószög: <50° Üzemi hőmérséklet: -10 to 70 °C Tárolási hőmérséklet: -20 to 80°C Méret: 41x28.5mm Vezetékhossz: 2.5m