Fórum témák
» Több friss téma |
Cikkek » Jani-6 (Sharp szenzor értékeinek grafikus ábrázolása Processing-gel) Jani-6 (Sharp szenzor értékeinek grafikus ábrázolása Processing-gel)
Szerző: Fizikus, idő: Jan 6, 2011, Olvasva: 20536, Oldal olvasási idő: kb. 2 perc
A Sharp GP2Y0A21YK szenzor mérési adatainak linearizálásaA Sharp infravörös távolságérzékelőket sok helyen használhatjuk a robotikában. Ezeknek az érzékelőknek az a legfőbb hátránya, hogy a távolsággal fordítottan arányos és nemlineáris a válaszuk. Sokkal jobban tudnánk az adatokat használni, ha a mért értékeket valahogyan közvetlen távolságadatokká tudnánk alakítani. Erre mutatok most egy példát. A robothoz egy 10-80cm méréstartományú Sharp GP2Y0A21YK szenzort használtam. Egyik korábbi cikkemben már szerepelt a szenzor feszültség-távolság görbéje ( LINK ). Erről látható, hogy a szenzor maximális feszültsége kb. 3,1 V, ezért 10 bites ADC felbontás és 5V-os ADC referenciafeszültség használata esetén a mért ADC értékek kb. 0-650 közé esnek. A cikkben szereplő kapcsolást és AVR kódot felhasználva felvehető a szenzor távolság-feszültség (ADC érték) görbéje: A fenti görbe alakja nagyon hasolít az 1/x függvényre, ezért megpróbálhatjuk ezzel átalakítani a Sharp szenzor válaszgörbéjét egy egyenessé (linearizálás). Az egyenes általános egyenletét felhasználva és a mért ADC értékek reciprokát az egyenletbe helyettesítve a távolságra (x) egy kis átalakítás után az alábbi egyenletet kapjuk: Ez egy hasznos képlet, ha tudunk floating point műveleteket végezni. De az ideális megoldás az lenne, ha találnánk egy olyan függvényt is, ami integer műveletekkel is jó eredményt ad. Az AVR-be írandó program méretének drasztikus megnövekedését elkerülendő, a floating point műveletek használatát mindenképpen célszerű kihagyni. Egy kis további átalakítással kapjuk: Ez már integer műveletekkel is egyszerűen használható. 10 bites ADC-t használva a Sharp szenzor értékei általában 80 fölötti értékek, ha a szenzor előtt van valamilyen céltárgy. Ha a szenzor előtt nincs semmi, akkor a mért értékek lecsökkenhetnek akár 0-ig is. Hogy elkerüljük a nullával való osztást, az ADC értékekhez hozzáadunk 1-et (mivel az ADC értékek nem lehetnek negatívak). Ezután már csak a megfelelő függvényparamétereket kell megtalálni, próbálgatással. (Az én szenzorom esetén m`= 6400 és b`= 5 értékek használata esetén volt a legjobb a végeredmény.) Az alábbi ábra az x=(6400/(adc+1))-5 függvényt ábrázolja: Látható, hogy ez a közelítés kb. 50 cm-es távolságig használható megfelelő pontossággal, e felett a számított távolságadatok már nem nagyon használhatóak. Az integer műveletek miatt fellépő kerekítések miatt a számolt értékek nem lesznek hajszálpontosak, de az így számolt közelítő távolságadatok szerintem sokkal emberközelibbek, mintha közvetlenül az ADC nyers mérési eredményeit használnánk. A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |