0

ML-R - PWM ultrazvučni senzor

Zastoj

Ultrazvučni senzori su najčešće PWM tipa. Nakon okidačkog digitalnog pulsa vrate drugi puls (obično na drugom pinu), duljina kojeg ovisi o udaljenosti prepreke od senzora. Senzori su jeftini i vrlo lako se koriste Arduino funkcijom pulseIn() digitalnog pina. Situacija bi bila idealna kad pulseIn() ne bi čekao dok ne dođe i prođe digitalni puls - što bi moglo trajati npr. 50 ms. Robot, koji se kreće 1 m/s, za to vrijeme prijeđe 5 cm. Ne smije li izaći iz polja, koje je omeđeno crtom debelom 1 cm, nastaje problem. Osim ako odustanemo od pulseIn().

Kod

Ovdje je kod za asinkrono korištenje PWM senzora: Test_USAsync.zip Originalni kod autora je na ovdje. Prepakirano u ML-R biblioteku: https://www.github.com/PribaNosati/MRMS. Za korištenje obavezno upišite pravilne parametre u UltrasonicAsyncPWM.h: PULSE_IS_HIGH, TRIGGER_PULSE_WIDTH i USE_TIMER_FOR_TRIGGER. Na nekom mjestu u kodu inicirate slanje ultrazvučnog signala, nakon toga kod radi druge korisne stvari i provjerava je li ultrazvučni senzor poslao cijeli signal. Ako jest, učitate rezultat. Za razumijevanje koda je potrebno relativno napredno poznavanje C++ jezika, ali za korištenje nije. Program je napisan za senzor HC-SR04, kakav je na Ebayu moguće kupiti za 2$. Žele li se bolji rezultati, potrebno je potrošiti nešto više novca. Isti kod će raditi i za druge PWM senzore.