Sonary 2. Jednoduše, ale správně.

9. prosince 2012 v 3:05 | Petr |  Roboti
Minule jsem strhal oblíbené moduly SRFxx, tak musím předvést, že to umím lépe.
Vzhledem, k tomu, že se neodvažuju ani naznačit jaký mikrokontrolér by měl kdo používat tak jsem v náznaku nakreslil jenom analogovou část jednoduchoučkého sonaru.
Jak vidíte je třeba jeden (digitální) pin mikrokontroléru pro kmitání reproduktorem a jeden kanál AD převodníku pro digitalizaci odraženého echa.
Výstup označený jako INPUT jde do systému invertorů, které invertují signál a pak "můstkovým způsobem" v protifázi budí ultrazvukový reproduktor - tím dosáhnete toho, že při napájení 5V je na ultrazvukovém reproduktoru signál s amplitudou 2x větší tedy 10V, což je jednodušší alternativa MAX232 se SRF04. Tam dosahuje amplituda až 20 V, ale protože naše zpracování odraženého echa je lepší nepotřebujeme repráčkem tolik "hulákat".
Smysl kondenzátoru C4 je vytvořit překážku pro stejnosměrný proud a zabránit tak zkratu na výstupu 74HC04 když se zrovna nepíská. Ultrazvukové reprodukotry jsou piezo typu a chovají se sice jako kondenzátor, ale nikdy nevíme, kdy někoho napadne připojit k výsupu obyčejný repráček ...

Vstup a celé vstupní zesílení je primitivně jednoduché - střídavý signál jde bez jakéhokoliv usměrňování a dalšího zmršování rovnou do procesoru, kde se zpracovává digitálně. Povšimněte si "ochranného odporu" R1 a zejména kondenzátorů C2 a C3 - ty pustí jenom střídavý signál - vstupní offsety zesilovačů se tudíž dále nezesilují a neškodí. R3 a R4 nám střidavý signál umísítí "doprostřed" rozahu AD převodníku - do procesoru tedy půjde střídavý signál ne od -2,5 do +2,5V ale od 0 do 5V. C1 nám potlačuje šum odporového děliče.

Do procesoru nám tedy jde přímo střídavý signál. Jak se s ním dále pracuje ?
Jenom naznačím - pokud ultrazvuk píská na 40 kHZ musíme odraz digitalizovat na 4x větší frekvenci tedy 160 kHz. To pro dnešní mikrokontroléry není žádný problém. Na každou periodu signálu tedy máme 4 vzorky, které si označíme A, B, C, D, Vždy dvě dvojice od sebe odečteme asi takto
I = A - C
Q = B - D
Tím jsme dostali dva signály I - neboli In phase komponentu a Q - neboli Quadrature komponentu. Detaily třeba ZDE. Zároveň jsme se zbavili stejnosměrného offsetu (ať už nechtěného, nebo uměle zavedného), protože DC komponenta je v A, B, C i D stejná.
Pokud nás zajímá amplituda signálu tu teoreticky správně vypočteme jako
a = Odmocnicna ( I2 + Q2).
Umocňování a odmocnňování je pro procesor těžký záhul, takže si pomůžeme přibližnou hodnotou amplitudy, vypočtenou pomocí absolutní hodnoty.
a = ABS ( I ) + ABS ( Q )
A máme amplitudu, se kterou můžeme dále pracovat dle vlastní fantazie - v mých sonarech jsem vždy amplitudu aktuální porovnával s tzv. Exponenciálním klouzavým průměrem amplitud minulých a tím jsem eliminoval převážnou většinu falešných odrazů. Detaily i s nákresem ZDE.

Takže jsme jednodušším zapojením dostali informaci nejenom o velikosti odrazu (a můžeme malé odrazy ignorovat, nebo porovnat s minulým měřením), ale i o fázi, o využití fáze se pobavíme v díle č. 4. Takže těšte se pardálové.

Zbývá už jenom tradiční rada pro blondýny, co dočetly až sem : Když přijdete domů a miláčkovi stojí na stole flaška - nepodléhejte panice "lahváč" má velmi zajímavou ultrazvukovou odrazivost, takže pořád je naděje, že jeho alkoholismus znovu nevypuknul.

 

Buď první, kdo ohodnotí tento článek.

Komentáře

1 Slavo Slavo | E-mail | 9. prosince 2012 v 20:35

Prijemne jednoduchá konštrukcia, aké vzdialenosti ste takto dosiahli ( napr voči stene)?

2 Petr Petr | 9. prosince 2012 v 22:18

Celá místnost kolem 4m nebyla problém, vtip je ve zpracování v MCU - je výhoda když měření z dané polohy robota se může porovnat s měřemím z minulé polohy - a jenom ta echa, které (přibližně) odpovídají pohybu robota jsou pravá.

3 Karel Karel | 10. prosince 2012 v 18:42

Jen pro upřesnění, pokud se nepletu...
Vzorkovací frekvence musí být přesně čtyřnásobek, to možná není dostatečně uvedeno. Odmocninou získáme dvojnásobek amplitudy, ne celou amplitudu.

4 Petr Petr | 12. prosince 2012 v 9:02

[3]: V obou případech máš pravdu, ale v obou je to jedno - Amplituda - jelikož srovnáváš různé části stejného signálu se sebou samým je jedno jakou konstantou násobíš všechna data. Frekvence - pokud generuješ 40 kHz procesorem - není těžké generovat přesně 4x40 kHZ stejným procesorem, ale i přesto pokud by frekvence vzorkování byla mírně odlišná měl by přijatý signál parazitní modulaci - jejíž frekvence by byla rozdílem mezi frekvencí vzorkování a 160 kHz - copž by vzhledem ke zpracování I i Q komponenty nemělo na výpočet amplitudy vliv.

5 Karel Karel | 12. prosince 2012 v 15:36

To je jasné, já jen aby se toho někdo nechytl a nepoužil to co jsi napsal pro jiný účel. V tvém účelu je to jedno.

Komentáře jsou uzavřeny.


Aktuální články

Reklama