čtvrtek 23. srpna 2012

Kamera TCM8230MD


Kameře na letounu bylo věnováno několik málo řádků v předchozím příspěvku. Touto problematikou se dále zabývám a tak bych rád doplnil několik dalších informací.

Nejprve upřesním samotné zapojení kamery. Parametry modulu jsou nastavovány pomocí registrů dostupných po I2C sběrnici, tou je možné pouze kameru inicializovat (v požadovaném nastaví). Samotnou obrazovou informaci zprostředkovává 8 datových pinů a 4 řídící.

Pro chod kamery je nezbytně nutné připojení hodin (EXTCLK), které určují „frame rate“ ale současně musí být aktivní i při inicializaci kamery! V případě, že odešleme kameře požadavek na nastavení registru s absencí hodinového signálu, modul potvrdí (potvrzením je myšleno nastavení ACK bitu do „0“) pouze svojí adresu (0x3C) a adresu registru a tudíž i hodnotu, kterou chceme zapsat, nepotvrdí. Zbylé 3 řídící piny jsou výstupní a jedná se o hodinový výstup (DCLK), jehož frekvence je poloviční oproti EXTCLK a s náběžnou hranou pulzu se čte byte z DOUT0-DOUT7 (neplatí pro každý pulz)


Další dva výstupy (HD, VD) slouží jako příznaky nového řádku a nového obrázku. Frame rate, se tedy odvíjí od frekvence hodinového signálu.

Při testování bylo nastaveno EXTCL na 15MHz, což po připojení sondy osciloskopu způsobilo značné rušení I2C sběrnice, stačilo i připojení drátku s délkou jednotek centimetrů a data na I2C byla rušena. Tuto skutečnost píši jako varování pro ty, co ve svých aplikacích s tímto modulem budou navrhovat DPS.

STM32F103, ke kterému je kamera připojena má za úkol čtení obrazových dat, ale i jeho zpracování do podoby vektoru pohybu obrazu. Použití MCU nemá periferii pro připojení kamery, a aby stihl data přečíst i zpracovat, je třeba tyto data načítat pomocí DMA, které poskytne čas, pro zpracování.

DMA tedy „Direct Memory Access“ nám dovoluje přímý přístup do paměti z paměti, nebo nějaké periferie (a opačně) bez interakce samotného výkonného jádra procesoru. Samotný přenos dat je trigrován například těmito periferiemi:



Přenos bohužel nelze trigrovat externím přerušením, proto je zatím myšlenka triigeru postavena na timeru (TIM1_CH1 – připojený na DCLK), ten by měl pracovat v režimu input capture mode. V tomto režimu je pin timeru nastaven jako vstup, který dovoluje vyvolání přerušení či DMA request.


Tlumení vibrací


Motory, které jsou umístěny na ramenech kvadrotoru, jsou zdrojem vibrací, tyto vibrace, způsobují značný šum na výstupním signálu z akcelerometru, proto je třeba maximálně omezit přenos mechanických kmitů. Amplituda kmitů je závislá na mechanice, která je šíří, na její délce, tuhosti, tvaru atd. Pomocí zmíněných parametrů lze například posouvat rezonanční kmitočet v závislosti na otáčkách motorů. Cílem by mělo být, dostat rezonanční kmitočet mimo pásmo pracovních otáček.

Taková konfigurace, která by takový požadavek splňovala, ovšem není dostačující a vlivem rozdílných otáček každého z motorů může být těžko dosažitelná. Velký význam při generování parazitních kmitů motory, tvoří také vrtule, které zvyšují amplitudu vibrací. Je tak nutné, aby byly vrtule co nejlépe vyvážené.
V praxi byla problematika vibrací řešena pružným uchycením řídící jednotky a zbroušením listů vrtule, tak aby byly vrtule co nejlépe vyvážené.

Jednotka je připevněna ve čtyřech bodech, pružnými silikonovými lanky, které jsou původně určeny k navlékání bižuterie. Silikonové lanko má vhodnou pružnost i pevnost a přitom nepodléhá puchření, jako pryž. Také bylo nutné použít dostatečně flexibilní vodiče, které propojují řídící jednotku s křížem nanoQUADU.

Popsané řešení, velice dobře plní svůj účel a slouží jako mechanický filtr.