WETI PG Bezkontaktowy miernik odległości (ultradźwiękowy)
Ultradźwiękowy miernik odległości na ATtiny1616, mierzący dystans 10–50 cm z błędem RMSE ~2,4 mm. Metoda hybrydowa: pomiar czasu przelotu echa 40 kHz + docinanie fazą nośnej (filtr Goertzela) i kompensacja temperatury termistorem NTC. Firmware w czystym AVR-GCC, na rejestrach (bez Arduino), tryb uśpienia ~0,9 mW. Koszt elementów 43,73 zł.
- Błąd RMSE
- 2,4 mm
- Zakres
- 10–50 cm
- Pobór mocy
- 0,9 mW
Przegląd
Celem było zbudowanie taniego, dokładnego dalmierza ultradźwiękowego na jednym 8-bitowym mikrokontrolerze — z dokładnością milimetrową i poborem mocy pozwalającym na pracę z baterii. Projekt na konkurs „Wygraj Indeks WETI 2026".
Metoda
Zastosowałem hybrydę Pulse-Phase Ranging: zgrubny pomiar czasu przelotu (ToF) z obwiedni echa, dociągany fazą nośnej 40 kHz liczoną filtrem Goertzela.
Jak działa pomiar
- MCU generuje paczkę 40 kHz (dokładny rezonans przetwornika), wzmacnianą BC817.
- Echo wzmacnia dwustopniowy tor na MCP6002 (filtr pasmowy ~40 kHz), bramkowany P-MOSFET-em dla oszczędności energii.
- ADC próbkuje obwiednię echa; początek echa (onset, próg 40 % szczytu z interpolacją) daje czas przelotu mierzony licznikiem TCB0 (100 ns/takt).
- Filtr Goertzela wyznacza fazę nośnej, dociągając wynik do siatki λ/2 ≈ 4,3 mm.
- Termistor NTC koryguje prędkość dźwięku: c(T) = 331,3 + 0,606·T.
Filtr Goertzela (faza)
Energia
Między pomiarami mikrokontroler śpi w trybie Standby, budzony z RTC/PIT; tor analogowy zasilany jest tylko na czas pomiaru. Pobór spoczynkowy: 0,9 mW.
Efekt
Rezultaty
- 2,4 mm
- Błąd RMSE
- 10–50 cm
- Zakres
- 0,9 mW
- Pobór mocy
- 43,73 zł
- Koszt BOM