České vysoké učení technické v Praze Fakulta elektrotechnická
Bakalářská práce
Hračky Furby s kvalitním audio kanálem Martin Šebek
Vedoucí práce: Ing. Miroslav Skrbek Ph.D. Studijní program: Elektronika a informatika strukturovaný bakalářský Obor: Výpočetní technika leden 2009
ii
Poděkování Tímto bych rád poděkoval vedoucímu mé bakalářské práce Ing. Miroslavu Skrbkovi Ph.D. za pomoc během její tvorby. Dále děkuji společnosti IBM Česká republika, spol. s r.o. za poskytnutí finančních prostředků a materiálu pro implementaci této bakalářské práce.
iii
iv
Prohlášení: Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu §60 Zákona č. 121/2000 SB., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne 15. 1. 2009
..........................................................................................................
v
vi
Abstract The aim of this thesis is to modify the Furby Toy to allow its wireless control and sound transmission. The goal of the project is to design new electronics for Furby in such a way, that any mechanical part doesn’t have to be modified. Wireless transmission is based on BlueTooth technology using F2M03AC2 module by Free2Move. Modified toy should be able to execute movements and monitor state of its sensors. Additional requirement is to support carrying of quality audio signal between the toy and controlling PC.
Abstrakt Tato bakalářská práce se zabývá modifikací hračky Furby umožňující její bezdrátové ovládání a přenos zvuku. Cílem projektu je návrh nového elektronického vybavení hračky a jeho implementace bez nutnosti mechanických úprav zařízení. Bezdrátový přenos je založen na technologii BlueTooth při využití modulu F2M03AC2 od firmy Free2Move. Upravená hračka má být schopna vykonávat pohyby a sledovat stav svých snímačů. Má být zajištěn i přenos kvalitního audio signálu mezi hračkou a řídícím počítačem.
vii
viii
Obsah Seznam obrázků .......................................................................................................................xi Seznam tabulek........................................................................................................................xiii 1
Úvod ................................................................................................................................1
2
Popis hračky Furby..........................................................................................................2 2.1 Mechanická konstrukce ...............................................................................................3 2.2 Elektronické části ........................................................................................................4
3
Analýza a návrh řešení ....................................................................................................4 3.1 Výběr elektronických prvků ........................................................................................7 3.1.1
BlueTooth modul Free2Move F2M03AC2 ........................................................8
3.1.2
Mikrokontrolér ....................................................................................................9
3.1.3
Audio kodek ......................................................................................................12
3.1.4
Vstupní a výstupní zesilovače ...........................................................................17
3.1.5
Napěťový stabilizátor ........................................................................................18
3.2 4
Řízení motorů ............................................................................................................18 Implementace hardwaru ................................................................................................22
4.1 Popis zapojení............................................................................................................22 4.1.1
Napájení.............................................................................................................22
4.1.2
Zapojení provozních pinů mikrokontroleru.......................................................23
4.1.3
Zapojení audio kodeku ......................................................................................24
4.1.4
Propojení Audio kodeku a MCU........................................................................26
4.1.5
Zapojení BlueTooth modulu..............................................................................28
4.1.6
Zapojení H-můstku............................................................................................29
4.1.7
Připojení A/D převodníku .................................................................................31
4.1.8
Připojení mikrofonu...........................................................................................32
4.1.9
Připojení reproduktoru.......................................................................................33
4.1.10 Propojení BlueTooth modulu a MCU ...............................................................34 4.2
Konekrory připojené k desce......................................................................................35
4.3
Generování hodinových signálů pro kodek ...............................................................40
4.4 Deska plošných spojů ................................................................................................43
5
4.4.1
Rozměry desky ..................................................................................................43
4.4.2
Návrh desky plošných spojů..............................................................................46
Testování .......................................................................................................................51
ix
6
Závěr..............................................................................................................................54
7
Seznam literatury...........................................................................................................55
A. Příloha – Použité zkratky..................................................................................................56 B. Příloha – Generování hodinového signálu pomocí OC ...................................................57 C. Příloha – Původní blokové schéma ..................................................................................59 D. Příloha – Obrazová dokumentace ....................................................................................60 E. Příloha – Obsah přiloženého CD.......................................................................................64
x
Seznam obrázků Obr. 1 – boční pohled................................................................................................................2 Obr. 2 – zadní pohled................................................................................................................3 Obr. 3 – nová hardwarová architektura.....................................................................................6 Obr. 4 – generování hodinových pulsů pro kodek ....................................................................7 Obr. 5 – BlueTooth modul Free2Move F2M02AC2.................................................................8 Obr. 6 – mikrokontrolér dsPIC33FJ256GP506 ........................................................................9 Obr. 7 – přehled pinů mikrokontroléru ...................................................................................12 Obr. 8 – blokové schéma kodeku............................................................................................13 Obr. 9 – celkový přehled všech pinů a jejich význam ............................................................14 Obr. 10 – průběh zasílání dat ..................................................................................................15 Obr. 11 – průběh adresačního módu .......................................................................................16 Obr. 12 – průběh datového módu............................................................................................17 Obr. 13 – zesilovač TLC271D ................................................................................................17 Obr. 14 – zesilovač LM386.....................................................................................................18 Obr. 15 – obecná struktura H-můstku .....................................................................................19 Obr. 16 – blokové schéma řízení motorů ................................................................................20 Obr. 17 – PWM průběh...........................................................................................................21 Obr. 18 – zapojení napájecí části 3.3 V ..................................................................................23 Obr. 19 – zapojení provozních pinů mikrokontroléru.............................................................24 Obr. 20 – napájení audio kodeku ............................................................................................25 Obr. 21 – výstupní audio kanály .............................................................................................25 Obr. 22 – vstupní audio kanály ...............................................................................................26 Obr. 23 – připojení kodeku k mikrokontroléru .......................................................................26 Obr. 24 – blokové schéma DCI...............................................................................................27 Obr. 25 – napájení BlueTooth modulu....................................................................................28 Obr. 26 – zapojení resetovacího obvodu.................................................................................28 Obr. 27 – připojení signalizační LED diody ...........................................................................29 Obr. 28 – připojení BlueTooth modulu k mikrokontroléru.....................................................29 Obr. 29 – zapojení H-můstku ..................................................................................................30 Obr. 30 – napěťový dělič pro A/D převodník .........................................................................32 Obr. 31 – napájecí obvod mikrofonu ......................................................................................33 Obr. 32 – sečtení audio kanálů................................................................................................33
xi
Obr. 33 – připojení reproduktoru ............................................................................................34 Obr. 34 – výběr zařízení..........................................................................................................35 Obr. 35 – detekce dsPIC .........................................................................................................36 Obr. 36 – programovací prostředí ...........................................................................................36 Obr. 37 – zapojení programovacího konektoru.......................................................................36 Obr. 38 – konektor enkodéru ..................................................................................................37 Obr. 39 – zapojení enkodéru ...................................................................................................37 Obr. 40 – zapojení čidel ..........................................................................................................38 Obr. 41 – zapojení čidel Furbyho............................................................................................38 Obr. 42 – indexový spínač motorů..........................................................................................39 Obr. 43 – blokové schéma oscilátoru......................................................................................40 Obr. 44 – blokové schéma PLL...............................................................................................41 Obr. 45 – blokové schéma čítače ............................................................................................41 Obr. 46 – blokové schéma Output compare............................................................................42 Obr. 47 – rozměry desky tištěných spojů................................................................................43 Obr. 48 – díry pro uchycení desky v pravém dolním rohu .....................................................44 Obr. 49 – díry pro uchycení desky v levém horním rohu .......................................................44 Obr. 50 – rozmístění součástek z jedné strany ........................................................................46 Obr. 51 – rozmístění součástek z druhé strany .......................................................................47 Obr. 52 – propojení obvodů a napájení na horní vrstvě ..........................................................48 Obr. 53 - propojení obvodů na spodní vrstvě..........................................................................49 Obr. 54 – zemnící plocha ........................................................................................................50 Obr. 55 – nastavení jumperů kodekového modulu .................................................................53 Obr. 56 – původní hardwarová architektura............................................................................59 Obr. 57 – celkové schéma zapojení.........................................................................................60 Obr. 58 – výkres obrysu desky................................................................................................61 Obr. 59 – konečný layout desky..............................................................................................62 Obr. 60 – schéma zapojení kodekového modulu ....................................................................63
xii
Seznam tabulek Tab. 1 – parametry mikrokontroléru .........................................................................................5 Tab. 2 – vybrané součástky.......................................................................................................8 Tab. 3 – technické parametry modulu.......................................................................................9 Tab. 4 – využití pinů ...............................................................................................................10 Tab. 5 – velikost paměti a I/O piny.........................................................................................10 Tab. 6 – elektronické parametry..............................................................................................10 Tab. 7 – použité signály ..........................................................................................................14 Tab. 8 – poměry frekvencí ......................................................................................................15 Tab. 9 – minimální doby trvání signálů .................................................................................16 Tab. 10 – porovnání napěťových stabilizátorů........................................................................18 Tab. 11 – elektrické parametry obvodu L293D ......................................................................19 Tab. 12 – logická funkční tabulka...........................................................................................19 Tab. 13 – ovládání směru otáčení ...........................................................................................20 Tab. 14 – propojení H – můstku a mikrokontroléru................................................................30 Tab. 15 – propojení mikrokontroléru a BlueTooth modulu ....................................................34 Tab. 16 – připojení programovacího konektoru k mikrokontroléru........................................37 Tab. 17 – propojení mikrokontroléru a enkodéru ...................................................................38 Tab. 18 – propojení čidel Furbyho a mikrokontroléru ............................................................39 Tab. 19 – propojení indexového spínače motorů a mikrokontroléru ......................................39 Tab. 20 – nastavení registrů PLL jednotky .............................................................................51 Tab. 21 – nastavení registrů čítače..........................................................................................52 Tab. 22 – nastavení registrů OC..............................................................................................52
xiii
xiv
1 Úvod Bakalářská práce se zabývá úpravou hračky Furby, konkrétně výměnou stávající řídící elektroniky a přidáním kvalitního audio kodeku. Původní hračka Furby je produktem firmy Tiger Electronics. Jedná se o dříve velmi populární hračku, která je schopna rozpoznávat některé jednoduché podněty z okolí. Například je schopna vnímat dotyky a rozpoznat určitě hlasové příkazy. Pro rozpoznávání dotyků obsahuje hračka několik čidel, dotyková čidla na břiše, na zádech a v zobáku. Navíc obsahuje čidlo polohy, pomocí kterého hračka pozná, zda stojí normálně nebo vzhůru nohama. Hračka má v sobě zabudovaný mikrofon a reproduktor pro možnost přenosu zvuku mezi hračkou a řídícím PC. Komunikace mezi Furbym a PC je zajištěna pomocí bezdrátového rozhranní BlueTooth, kterým se zabýval předchozí projekt a na který já navazuji. Kromě možnosti ovládání pohybů bylo nutné také vyřešit audio přenos, umožňující hlasovou komunikaci v dobré kvalitě. Esteticky je Furby poměrně zdařilá a možnost interakce hračky a člověka je velmi lákavá, protože nabízí mnoho možností. Tuto bakalářskou práci jsem si zvolil, protože jsem se chtěl seznámit s navrhováním hardwaru od sestavení schéma zapojení, přes návrh desky plošných spojů, až po konečnou implementaci a testování. Má bakalářská práce se zabývá úpravou hračky Furby a to konkrétně nahrazením stávající řídící elektroniky novou. Jedná se především o základní desku řídící logiky. Zadání stanovilo, že původní deska bude odebrána a nahrazena deskou novou, kterou je třeba navrhnout. Jelikož je předmětem úprav pouze deska plošných spojů a nikoliv hračka jako taková, je nutné, aby nově navržená deska byla plně kompatibilní s deskou původní. Musí být kompatibilní jak po elektrické, tak po mechanické stránce. Jinými slovy, musí být zaměnitelná bez mechanických úprav Furbyho. Pro tuto práci jsem mohl využít informací získaných z předchozích projektů, a to především z projektu, který se zabýval ovládáním Furbyho přes BlueTooth modul firmy Free2Move a projektem, který se zabýval přenosem kvalitního audio kanálu za pomoci audio kodeku. V dokumentacích těchto projektů jsem načerpal cenné informace týkající se mechanického provedení, funkce čidel, zapojení BlueTooth modulu a zapojení audio kodeku.
1
2 Popis hračky Furby V této kapitole bych rád věnoval několik slov popisu hračky Furby, detailnější popis lze nalézt v literatuře [9], na kterou navazuji. Jelikož mechanická část hračky není pro mou práci podstatná, budu se zde zabývat především částí elektrickou a mechanickou část zmíním jen okrajově, bude-li to nutné pro pochopení dalších souvislostí. Na obr. 1 a obr. 2 je zobrazena hračka s odebranou deskou plošných spojů. Odebraná deska je předmětem nahrazení. Popisky u obrázků označují podstatné části hračky.
čidlo v zobáku
index spínač motoru č. 1
čidlo na břiše reproduktor mikrofon
Obr. 1 – boční pohled (převzato z [9])
2
enkodér index spínač motoru č. 2 motor č. 2
čidlo na zádech motor č. 1 pouzdro na 4 tužkové baterie
Obr. 2 – zadní pohled (převzato z [9])
2.1 Mechanická konstrukce Jak jsem již zmínil, mechanická stránka hračky Furby není pro tento projekt důležitá, proto zde popíši jen několik základních částí a principů. Veškeré pohyby hračky jsou ovládány dvěma motory, které jsou napájené napětím přibližně 6 V. Každý z motorů má svou vlastní funkci. První motor, který je umístěn ve spodní části, slouží k pohonu nohou a zobáku. Nohy vykonávají kolíbavou chůzi a zobák je možné otevírat a zavírat. Přepnutí mezi pohybem nohou a pohybem zobáku je vyřešeno jednoduše, a to tak, že při rotaci motoru v jednom směru jsou ovládány nohy a při rotaci ve směru opačném je ovládán zobák. Je tedy patrné, že pohyb nohou je možný pouze v jednom směru. Rychlost kmitání nebo frekvence otevírání a zavírání zobáku se provádí změnou příkonu motoru. Druhý motor je využit pro ovládání zbylých částí hračky, jako jsou oči, uši a břicho. Tyto části nelze ovládat jednotlivě, nýbrž všechny najednou. Pohyb těchto částí je cyklický a sekvenční, vychází z principu vačkové hřídele. Pohyby jednotlivých částí jsou tedy závislé a během jednoho cyklu se vystřídá několik kombinací poloh. Rychlost pohybu je opět závislá na příkonu motoru. Pro zjištění aktuální polohy v cyklu je hračka vybavena optickým inkrementálním enkodérem a pro vymezení počátku cyklu je zde indexový spínač. Více informací k mechanické konstrukci hračky Furby lze nalézt v literatuře [9].
3
2.2 Elektronické části V této kapitole přiblížím některé elektronické prvky hračky Furby, které jsou pro tento projekt podstatné. Jak jsem již zmínil v předchozí kapitole, jeden z motorů je vybaven tvz. inkrementálním enkodérem. Jedná se o elektromechanický převodník, který snímá polohy motoru. Princip převodu rotačního pohybu na elektrické impulsy je na podobném principu jako starší kuličkové myši k PC, tedy fotoelektricky. Díky enkodéru lze zjistit nejen rychlost otáčení motoru, ale i směr rotace. Pokud bychom měli k dispozici pouze samotný enkodér, dala by se zjistit pouze ušlá vzdálenost, pomocí počítání impulsů, je tedy nutné ještě stanovit počátek cyklu. To zajišťuje indexový spínač, který spíná vždy na začátku cyklu. Hračka Furby obsahuje tři spínače, které reagují na stlačení. Umístěné jsou na břiše, na zádech a v zobáku. Dále je zde snímač polohy, který má za úkol rozeznat, zda se hračka nachází v normální poloze, či vzhůru nohama. V hračce je zabudovaný reproduktor a malý mikrofon, tvořící dohromady audio rozhraní pro hlasovou komunikaci. Detailnější popis těchto součástí je opět v literatuře [9]. Na závěr této kapitoly je třeba uvést, které komponenty je nutné propojit s řídící elektronikou: - motor č. 1 a motor č. 2 - čidla (břicho, záda, zobák, čidlo polohy) - indexový spínač motoru č. 1 a č. 2 - inkrementální enkodér - mikrofon - reproduktor
3 Analýza a návrh řešení Původní deska plošných spojů obsahovala veškerou řídící elektroniku, byly zde řídící i výkonové obvody. Deska byla osazena řídícím mikrokontrolérem Atmel ATMega8 a pro přenos audio kanálu byl využit audio kodek, který je integrovaný přímo v BlueTooth modulu. Obrázek blokového schéma původní architektury je v příloze (C. Příloha). Tuto desku plošných spojů bylo třeba kompletně nahradit novou. Bylo třeba navrhnout nové schéma zapojení řídící elektroniky včetně výběru vhodných součástek. Podle tohoto nově navrženého schématu bylo dále nutné navrhnout layout desky plošných spojů. Layoutem desky je myšleno rozmístění součástek a vodivých (plošných) spojů. Pouze některé části schématu bylo třeba nahradit a navrhnout znovu, zbylou část jsem mohl využít z předchozího návrhu. Výměna se týkala především řídícího mikrokontroléru a také audio kodeku. Pro naše potřeby byl integrovaný audio kodek v BlueTooth modulu nedostačující a bylo třeba přidat externí audio kodek pro zvýšení kvality audio přenosu. Z tohoto důvodu bylo třeba nahradit i původní mikrokontrolér novým, který obsahuje rozhraní DCI pro připojení kodeku. Jelikož bylo podstatné dodržet přesně stejný tvar a rozměry desky, návrh layoutu byl velmi náročný. Deska byla opravdu malá a navíc zmenšená o několik děr pro uchycení. S tím bylo třeba počítat již při sestavování schéma zapojení, minimalizovat počet součástek na nezbytné minimum a vybrat takové typy, které
4
zabírají nejméně plochy. Vybíral jsem především součástky v SMD pouzdře. Dalším omezujícím kritériem byla nutnost zachování rozmístění konektorů pro připojení periférií.
Původně byl použit mikrokontrolér Atmel ATMega8-L, který jsem nahradil mikrokontrolérem od firmy Microchip dsPIC33FJ256GP506. Zde uvedu několik parametrů původního MCU, aby bylo možné případné porovnání. Detailnější popis tohoto mikrokontroléru lze nalézt v katalogových listech a také v práci, na kterou navazuji. Atmel ATMega8-L: Jedná se o osmibitový mikrokontrolér značky Atmel s následujícími parametry.
Napájecí napětí velikost paměti FLASH velikost paměti SRAM velikost paměti EEPROM počet I/O pinů počet PWM jednotek externí přerušení počet A/D kanálů počet časovačů
2.7 - 5.5 V 8 kB 1 kB 512 B 23 3 2 8 3
Tab. 1 - parametry mikrokontroléru (převzato z [9])
Mikrokontrolér Atmel ATmega8 obsahuje celkem 3 porty pojmenované port B, C a D.
Blokové schéma nové hardwarové architektury systému je na obr. 3. Je zde zobrazeno hierarchické budoucí uspořádání Furbyho. Barevně je odlišeno, které části byly změněné. Žlutě jsou označeny části, které byly ponechány, a modrou barvou jsem označil části nově přidané či vyměněné.
Hlavní částí řídící logiky je mikrokontrolér, všechny ostatní části jsou přímo nebo nepřímo připojeny k němu. Další podstatnou částí je BlueTooth modul, který je s mikrokontrolérem spojen dvěma pomyslnými kanály, jeden představuje sériovou linku mezi BT modulem a mikrokontrolérem a druhý představuje řídící signály pro BT modul. K mikrokontroléru jsou dále připojeny všechna čidla a snímače, mezi které patří i napěťový dělič, sloužící k měření kapacity baterií. Jelikož mikrokontrolér neobsahuje výkonové vstupy a výstupy, je k němu připojen H – můstek, který má za úkol výkonové řízení motorů. H – můstek je dále připojen přímo na napájecí napětí a oba motory. Hlavní změnou oproti původní architektuře je externí audio kodek, propojený přímo s mikrokontrolérem. Audio kodek zde slouží pro kvalitní zpracování zvuku, získaného z připojeného mikrofonu. Mikrofon i reproduktor jsou tedy připojeny k externímu audio kodeku, oproti původní architektuře, kde byl využit audio kodek integrovaný v zařízení BlueTooth a mikrofon s reproduktorem byly připojeny k němu. Dále
5
jsou zde dva stabilizátory napětí, zajišťující stabilní napětí 3.3V. Jeden je využit pro BlueTooth modul a druhý pro mikrokontrolér a současně i audio kodek.
Bezdrátové BT rozhraní
Řídící elektronika stabilizátor napětí
Bluetooth modul F2M03AC2 sériová
řídící
linka
signály
napěťový dělič
enkodér
mikrokontrolér
index spínače
stabilizátor napětí
čidla
audio kodek
mikrofon
reproduktor
napájení motorů
H-můstek
motor1
motor2
Obr. 3 - nová hardwarová architektura
Při prostudování literatury [10], která se zabývala využitím zde použitého audio kodeku, jsem zjistil, že kodek potřebuje pro svou činnost dva zdroje frekvence. Je třeba připojit vzorkovací frekvenci pro kodek a vzorkovací hodinový signál, přesné poměry jsou uvedeny v tab. 8 v kapitole, zabývající se audio kodekem. V původním zapojení audio kodeku bylo počítáno s vlastním krystalem, jehož frekvence se pomocí klopných obvodů dělila na požadovanou. Toto řešení jsem však nemohl použít, jelikož znamenalo mnoho součástek navíc, což jsem si z důvodu úspory místa na desce nemohl dovolit. Možné řešení bylo využít hodinové frekvence krystalu, který je použit u mikrokontroléru. Zabýval jsem se touto možností a přišel jsem na to, že by se hodinová frekvence pro audio kodek dala generovat pomocí jednotky Output compare mikrokontroléru. Byla to pouze teorie, která nebyla dosud ověřena.
6
Následující blokové schéma znázorňuje generování hodinových pulsů pro audio kodek pomocí mikrokontroléru. mikrokontrolér
audio kodek
SYSCLK OC
PLL
BCK
TxCK
PLL – jednotka PLL TxCK – časovač mikrokontroléru OC – jednotka output compare SYSCLK – vzorkovací frekvence BCK – vzorkovací hodinový signál
Obr. 4 – generování hodinových pulsů pro kodek
3.1 Výběr elektronických prvků Bylo třeba vybrat konkrétní součástky za každý blok hardwarové architektury hračky Furby, které jsou uvedeny v blokovém schématu. V tomto případě to bylo poměrně jednoduché, protože klíčové součástky byly vybrány již při zadání práce, BlueTooth modul, mikrokontrolér i audio kodek. Zadání stanovilo povinnost využít pro zajištění bezdrátového přenosu BlueTooth modul firmy Free2Move. Ze začátku jsme s vedoucím práce přemýšleli, zda raději nevyužít jednodušší variantu neobsahující audio rozhranní z důvodu ušetření místa na desce. Toto provedení modulu se nám však nezdálo o nic menší, spíše naopak o trochu větší. Napájecí napětí modulu činí 3.3V, což je v souladu s napájecím napětím ostatních součástek. Dále bylo stanoveno, jakým mikrokontrolérem bude nahrazen původní a také jaký bude použit audio kodek. Jednalo se o mikrokontrolér firmy Microchip a kodek značky Philips. Všechny tyto součástky byly vybírány s přihlédnutím k jejich dostupnosti na fakultě. H – můstek a stabilizátor napětí jsem ponechal stejný, jako v předchozím projektu. Snažil jsem se tyto součástky nahradit podobnými s SMD pouzdrem, ale nepodařilo se mi najít odpovídající typy.
7
Hlavní součástky, které byly použity, jsou v tab. 2. Součástka mikrokontrolér BlueTooth modul audio kodek H-můstek stabilizátor napětí
Typ
Funkce řízení pohybu, snímání senzorů, řízení dsPIC33FJ256GP506 BlueTooth modulu a audio kodeku bezdrátová komunikace (sériová linka a audio Free2Move F2M03AC2 kanál) zpracování audio signálu, připojení mikrofonu a reproduktoru UDA1344TS L293D výkonové řízení motorů LP2950CZ-3.3 stabilizace napájecího napětí na 3.3V
Tab. 2 – vybrané součástky
3.1.1
BlueTooth modul
Obr. 5 - BlueTooth modul Free2Move F2M02AC2 Již při zadávání práce byl vybrán modul F2M03AC2, protože je na fakultě dostupný a také proto, že se jeho využitím zabývá již více projektů na fakultě. Pracováno s ním bylo již v předchozím projektu, ze kterého jsem vycházel. Při využití integrovaného audio kodeku lze dosáhnout relativně dobré kvality přenosu zvuku, ale pro naše účely není tato kvalita dostačující. Z tohoto důvodu, jsme s vedoucím práce zkoumali, zda raději nevyužít variantu bez audio rozhraní, jak jsem již uvedl. Zkoumaný BT modul, který neobsahoval audio rozhraní, se nám však zdál ještě o trochu větší než tento. Zde uvedu několik podstatných vlastností modulu F2M03AC2:
Obsahuje vlastní integrovanou anténu Obsahuje integrovaný audio kodek Obsahuje analogové audio rozhraní Podporuje profil bezdrátového sériového portu (wireless uart) Umožňuje konfiguraci parametrů sériové linky i parametry audio rozhraní Poskytuje asynchronní obousměrný přenosový kanál pro data Poskytuje synchronní obousměrný audio kanál, oba lze používat současně
Tento BT modul má v sobě integrován vlastní řídící procesor včetně firmwaru, který bez nutnosti dalšího programování zajišťuje párovací sekvenci při navazování spojení s dalším BlueTooth zařízením. Změna nastavení se provádí pomocí zasílání příkazů na USART vývody modulu, jedná se například o změnu přenosové rychlosti nebo jiných parametrů. Firma Free2Move dodává konfigurační
8
software, pomocí kterého lze toto nastavování provádět. Změna nastavení lze provádět pouze při odpojeném BlueTooth zařízení. Napájecí napětí modulu je 3.3V, což je v souladu s ostatními zvolenými součástkami. Základní elektrické parametry modulu jsou uvedeny v tab. 3
rozsah napájecího napětí maximální proudový odběr maximální výkon podporované rychlosti sériové linky
2.5 až 3.5 V 85mA 4dBm 2.4, 4.8, 9.6, 19.2, 38.4, 57.6, 115.2 kbaud
Tab. 3 – technické parametry modulu (převzato z [9])
3.1.2
Mikrokontrolér
Základním stavebním kamenem řídicího systému je mikrokontrolér. Mikrokontrolér řídí a koordinuje všechny zbylé části systému. Řídí pohyb motorů, zjišťuje stav senzorů a čidel a komunikuje s audio kodekem.
Obr. 6 - mikrokontrolér dsPIC33FJ256GP506 (převzato z [1]) Využití mikrokontroléru dsPIC33FJ256GP506 bylo stanoveno již při zadávání práce a je pro tyto účely vyhovující i vzhledem k jeho malým rozměrům. Rozměry pouzdra jsou 10 x 10 x 1 mm, napájecí napětí 3.3 V odpovídá napájení BlueTooth modulu i napájení externího audio kodeku. I/O, neboli Vstupní/Výstupní piny slouží ke komunikaci mikrokontroléru s ostatními perifériemi. Zde jsou využity především pro připojení čidel, ovládání motorů, nastavování BT modulu a kodeku. Tab. 4 udává, kolik pinů je využito a jaké periférie obsluhují.
9
Využití řízení motorů
Počet I/O pinů 6
inkrementální enkodér index spínače dotyková čidla čidlo polohy kontrolní linky BT modulu kontrola napětí baterie sériová linka audio kodek - nastavení audio kodek - hodiny audio kodek - přenos dat
2 2 3 2 2 1 2 6 2 4
Požadavky alespoň dva s podporou PWM alespoň jeden musí podporovat externí přerušení
vstup A/D převodníku TX a RX vývody jednotky USART s podporou PWM sériový vstup, výstup, hodiny a synchronizace
Tab. 4 – využití pinů Pro úplnost zde uvedu velikost paměti, ačkoliv pro toto využití není příliš podstatná. Velikost paměti je spolu s výčtem I/O pinů uvedena v tab. 5.
počet pinů paměť FLASH paměť RAM 16ti bitové čítače input capture output compare (PWM) ADC UART I/O piny
64 256 kB 16 kB 9 8 8 1ADC 18 ch 2 53
Tab. 5 – velikost paměti a I/O piny Zde přiblížím některé vlastnosti tohoto mikrokontroléru, kompletní informace o mikrokontroléru dsPIC33FJ256GP506 lze nalézt v literatuře [1]. Základní elektronické parametry jsou uvedeny v tab. 6.
napájecí napětí pracovní teplota VddCORE Vss out Vdd in proudový odběr 1 I/O proudový odběr všechny I/O napětí na digitálním pinu
3.3 V -40°C až 85°C 2.25V - 2.75V max 300mA max 250mA 4mA 200mA -0.3V - 5.6V
Tab. 6 – elektronické parametry
10
I/O porty Mikrokontrolér dsPIC33FJ256GP506 má celkem pět portů, které jsou pojmenované port B (RB), port C (RC), port D (RD), port F (RF) a port G (RG). Některé piny jsou samostatné, některé však sdílené s hardwarovými jednotkami včetně pinů pro připojení krystalu. Všechny piny portu mají tři registry. Registr směru dat TRISx určuje, zda bude pin nastaven jako vstupní (TRISx [1]) nebo výstupní (TRISx [0]). Všechny piny jsou po resetu nastaveny jako vstupní. Některé piny lze nastavit na režim pull-up, jsou to piny CN0 – CN23. Znamená to, že vstupní pin lze nastavit tak, že je na něm definována logická 1, pokud není pin připojen z vnějšku k potenciálu nižšímu, než je logická 1. Tuto funkci využiji pro připojení čidel. Dále je zde registr LATx pro čtení z registru a zápis do registru. A nakonec registr PORTx pro zápis a čtení z portu. Korespondující LATx a TRISx registry a piny portu jsou chápány jako nula. Pokud je pin sdílený s jinou periférií nebo funkcí, která je definovaná pouze jako vstupní, je přesto považován jako jednoúčelový, protože zde není žádný jiný kolidující výstup.
Output compare: Další důležitou součástí pro tuto práci je rozhraní Output compare. Jednotka obsahuje 8 těchto výstupů, které jsou schopné generovat PWM průběhy. PWM průběhy jsou pro nás podstatné. Popisem PWM se zabývá jiná kapitola. Podrobnější informace k jednotce Output compare lze nalézt v kapitole 4.3.
Rozhraní DCI: Hlavním důvodem pro volbu tohoto mikrokontroléru je rozhraní DCI, které je v něm zaintegrováno. Jedná se o rozhraní pro připojení kodeku, podporuje I2S a AC’97 protokoly. Více než 16bitová datová slova, více než 16 slov na rámec. Zásobník pro TX a RX velký 16 slov. Více informací o rozhraní DCI lze nalézt v kapitole 4.1.4.
11
Celkový přehled pinů mikrokontroléru dsPIC33FJ256GP506 je na obr. 7. Barevně jsou označeny některé důležité piny.
Obr. 7 - přehled pinů mikrokontroléru (převzato z [1])
3.1.3
Audio kodek
Audio kodek je součástka, která zajišťuje kvalitní zpracování audio signálu. Převádí analogový signál získaný na mikrofonu na digitální a naopak výstupní digitální signál převádí na analogový, který je připojen na reproduktor. Kodek PHILIPS UDA1344TS je nízkospotřebový A/D, D/A převodník s napájecím napětím 3.3V a s detektorem přebuzení. Jeho vzorkovací frekvence je 8 – 55 kHz, obsahuje digitální filtry a nastavení parametrů se provádí pomocí L3 interface.
12
Pomocí rozhranní L3 lze digitálně nastavovat hlasitost a dále nastavovat digitální equalizer, umožňující nastavování basů a středů Na obr. 8 je uvedeno blokové schéma kodeku.
Obr. 8 - blokové schéma kodeku (převzato z [3])
13
Obr. 9 - celkový přehled všech pinů a jejich význam (převzato z [3]) Použité signály mezi audio kodekem a mikrokontrolérem jsou popsané v tab. 7. Kodek Mikrokontrolér typ vzhledem k UDA1344TS dsPIC33FJ mikrokontroléru MP1 I/O vstup MP2 I/O výstup MP3 I/O výstup MP4 I/O výstup MP5 I/O výstup DATAI CSDO výstup DATAO CSDI vstup WS COFS výstup BCK CSCK výstup
popis ADC overload detection L3 mode L3 clock L3 data ADC input voltage selection data out data in ws clock
Tab. 7 – použité signály
14
WS – signál generovaný po 16 ti bitech (konec frame) BCK – vzorkovací signál hodin Nastavení vzorkovací frekvence: Vzorkovací frekvenci je třeba nastavit na hodnotu 16 kHz, tato frekvence je získaná dělením frekvence krystalu, generujícího hodinový signál pro mikrokontrolér, pomocí Output compare. Tab. 8 udává poměry frekvencí, které lze použít. Zvýrazněn je doporučený poměr frekvencí.
Vzorkování [samples/s] 16000 16000 32000 32000 48000 48000
SYSCLK [MHz] 6.144 6.144 12.288 12.288 12.288 12.288
BCK [MHz] 0.512 1.024 1.024 1.024 1.536 3.072
Počet bitů SYSCLK [poměr] 32 384 64 384 32 384 64 384 32 256 64 256
Tab. 8 – poměry frekvencí (převzato z [10]) Nastavování L3 interface: L3 interface je rozhraní, pomocí kterého lze nastavovat audio kodek. Nastavování se provádí zasíláním bitových posloupností, v tomto případě z mikrokontroléru. Na obr. 10 je znázorněn průběh zasílání dat. Signály, zasílané z mikrokontroléru lze rozdělit na adresní a datové.
Obr. 10 – průběh zasílání dat (převzato z [3])
15
Jako první se posílá adresa (L3 MODE = 0). Mikrokontrolér generuje hodinový signál na portu L3 CLOCK a současně se posílá požadovaná adresa na port L3 DATA. Poté se posílají data (L3 MODE = 1). Mikrokontrolér opět generuje hodinový signál na portu L3 CLOCK a zároveň se posílají data na port L3 DATA. Je důležité dodržet přesně definovaný průběh adresního i datového signálu. Signál musí být v daném stavu alespoň minimální stanovenou dobu, aby byl kodek schopen tento signál rozpoznat. V tab. 9 jsou uvedeny minimální časy trvání pro jednotlivé signály.
SYMBOL L3 interface Tcy(CLK)L3 tCLK(L3)H tCLK(L3)L tSU(L3)A th(L3)A tSU(L3)D th(L3)D tstp(L3) tSU(L3)DA th(L3)DA
PARAMETER input (see Figs and 5) L3CLOCK cycle time L3CLOCK HIGH time L3CLOCK LOW time L3MODE set-up time for address mode L3MODE hold time for address mode L3MODE set-up time for data transfer mode L3MODE hold time for data transfer mode L3MODE stop time L3DATA set-up time in data transfer and address mode L3DATA hold time in data transfer and address mode
CONDITIONS
MIN.
TYP.
MAX. UNIT
500 250 250 190 190
\ \ \ \ \
\ \ \ \ \
ns ns ns ns ns
190
\
\
ns
190 190
\ \
\ \
ns ns
190
\
\
ns
30
\
\
ns
Tab. 9 – minimální doby trvání signálů (převzato z [3])
Průběhy adresačního módu a datového módu jsou znázorněny na obr. 11 a na obr. 12.
Obr. 11 - průběh adresačního módu (převzato z [3]) 16
Obr. 12 - průběh datového módu (převzato z [3])
3.1.4
Vstupní a výstupní zesilovače
Pro zesílení vstupního signálu, získaného z mikrofonu jsem zvolil zesilovač TLC271D, a to pro jeho dobré parametry, dostupnost a také pro jeho SMD pouzdro. TLC271D je jednokanálový operační zesilovač CMOS. Jeho napájecí napětí je tedy v rozsahu 3-16 V, můžeme tedy použít napájení 3V. Na obr. 13 je znázorněno pouzdro zesilovače TLC271D.
Obr. 13 – zesilovač TLC271D (převzato z [4])
Jako výstupní zesilovač pro reproduktor jsem zvolil zesilovač LM386, který sice nebyl k dostání v SMD podobě, ale jeho vlastnosti jsou pro naše využití vyhovující. Napájecí napětí je v rozsahu 412V, budeme ho tedy napájet 6V, které máme k dispozici. Zesilovač je jednokanálový, bylo tedy třeba sečíst stereo výstup z kodeku do jednoho mono kanálu, zesilovač dosahuje výkonu okolo 500mW.
17
Obr. 14 - zesilovač LM386 (převzato z [5])
3.1.5
Napěťový stabilizátor
Funkce napěťového stabilizátoru spočívá ve snížení vstupního napětí na požadované a jeho následnou stabilizaci v daném rozmezí. Je třeba zajistit stabilizované napájení pro logická zařízení, jako jsou mikrokontrolér, BlueTooth modul a audio kodek. Všechny tyto obvody potřebují pro svou činnost napájení 3.3V. Kolega v předchozím projektu vybíral vhodný stabilizátor s pevným napětím. V úvahu připadaly dva modely uvedené v tab. 10. Oba mají nízký napěťový úbytek a splňují dané požadavky. Snažil jsem se nalézt podobný typ v SMD pouzdře z důvodu úspory místa na desce, ale nepodařilo se mi ho sehnat. Využit tedy bude jeden z těchto dvou, jako v předchozí práci.
Typ výstupní napětí max. vstupní napětí max. výstupní proud napěťový úbytek
LE33CZ 3.3V 18V 150mA 0.5V
LP2950CZ-3.3 3.3V 30V 100mA 0.4V
Tab. 10 – porovnání napěťových stabilizátorů (převzato z [9])
3.2 Řízení motorů Jak jsem již uvedl, motory u Furbyho budou řízeny pomocí H-můstku, protože mikrokontrolér neobsahuje výkonové výstupy a není tedy schopen ovládat motory přímo. H-můstek je výkonový obvod, který je určen pro řízení motorů. Obr. 15 znázorňuje obecné schéma zapojení H-můstku.
18
Obr. 15 – obecná struktura H-můstku (převzato z [9]) Pomocí tohoto zapojení je možné volit směr otáčení motoru a za pomocí PWM řízení i jeho rychlost. PWM řízením se zabývám níže. Funkce H-můstku je detailně popsána v předchozí práci a není tedy třeba jí zde vysvětlovat. Již v předchozí práci byl zvolen integrovaný obvod L293D. Snažil jsem se najít podobný obvod v pouzdře SMD, ale nebyl jsem úspěšný. Detailní popis této součástky je opět možné nalézt v literatuře [9], uvedu tedy jen některé podstatné informace. Obvod L293D obsahuje dva H-můstky, je tedy možné řízení dvou motorů. Dále obsahuje tepelnou ochranu a ochranné diody, je schopen spínat maximálně 1.2A. Z výsledků předchozí práce vyplývá, že by nemělo dojít k jeho přetížení a že je pro tyto účely vyhovující. Elektrické parametry obvodu jsou uvedeny v tab. 11.
napájecí napětí vstupních obvodů Vcc1 napájecí napětí výstupních obvodů Vcc2 maximální špičkové proudové zatížení vstup log 0 vstup log 1
4.5 - 7V Vcc1 - 36V 1.2A 2.3 - Vcc1 0 - 1.5V
Tab. 11 – elektrické parametry obvodu L293D (převzato z [9]) Možné kombinace vstupů a výstupů ukazuje logická funkční tabulka tab. 12.
vstupy A H L X
výstupy Y H L Z
EN H H L
A........vstupy
H.......log 1
X.......don´t care
Y........výstupy
L.......log 0
Z.......stav vysoké impedance
EN......enable (povolení vstupu)
Tab. 12 – logická funkční tabulka (převzato z literatury [11])
19
Řízení směru otáčení se provádí pomocí kombinací hodnot na vstupech H-můstku, kombinace jsou popsány v tab. 13, analogicky i pro druhý motor.
EN H H H H L
1A L H L H X
2A H L L H X
funkce směr doprava směr doleva rychlé zastavení motoru rychlé zastavení motoru rychlé zastavení motoru
Tab. 13 – ovládání směru otáčení (převzato z literatury [11]) Rychlost otáčení motorů lze řídit pomocí PWM, neboli pulsně šířkové modulace. Pro generování PWM průběhů použijeme vnitřní obvody mikrokontroléru. Námi zvolený mikrokontrolér nemá zaintegrovaný přímo PWM modul, ale lze použít jednotku Output compare. Jednotka Output compare mikrokontroléru lze nastavit pro generování PWM průběhů. Pro generování PWM signálu je třeba nastavit PWM periodu pomocí registru PRy, dále pracovní cyklus pomocí registru OCxRS a počáteční hodnotu do registru OxCR. Dále je třeba nastavit předděličku čítače v registru TMRy. Perioda PWM se pak vypočítá podle vzorce (1). TPWM = (PRy + 1) * TCY * TMRy
(1)
PWM frekvence je vyjádřena pomocí PWM periody, je to její převrácená hodnota. Podrobný návod, jak nastavit jednotku Output compare pro generování PWM signálů lze nalézt v literatuře [1].
Obr. 16 – blokové schéma řízení motorů
20
Obr. 17 – PWM průběh
Na obr. 17 je ukázka průběhu PWM signálu. Červeně je vyznačena střední hodnota napětí US, neboli stejnosměrná složka. Právě tato stejnosměrná složka, která závisí na šířce impulsu, má největší vliv na výkon motoru. Šířka impulsu je zde označena jako “t“, specifikována je pomocí registru OCxRS. Do tohoto registru lze hodnotu zapsat kdykoliv, změna se však projeví až po dokončení periody. Motor se po přivedení tohoto PWM signálu chová podobně jako u spojité analogové regulace, mění takto své otáčky. Jelikož frekvence PWM regulace je v řádu kHz, doporučuje se, aby tato frekvence byla vyšší, než je hranice slyšitelnosti. Pokud by se tato zásada nedodržela, bylo by slyšet pískání při běhu motoru. Horní hranice slyšitelnosti lidského ucha se pohybuje okolo 20 – 22 kHz. Doporučuji tedy frekvenci 25 kHz, nastavení registru PRy vypočítáme podle vzozce (1). Frekvenci FCY nastavíme na hodnotu 16 MHz a poměr na předděličce (TMRy) na 1:1. Pokud požadujeme PWM frekvenci 25 kHz, perioda PWM je rovna převrácené hodnotě, tedy 40 μs. TCY je rovna převrácené hodnotě FCY, tedy 62,5 ns. Po dosazení do vzorce (1): 40 μs = (PRy + 1) * 62,5 ns * 1
=>
PRy = 639
Do registru PRy je tedy třeby dosadit hodnotu 639, abychom dosáhly požadované frekvence 25 kHz, která je již za hranicí slyšitelnosti lidského ucha. Maximální rozlišení PWM se spočítá podle vzorce (2).
Maximální PWM rozlišení =
FCY FPWM log 102
log 10
[bitů]
(2)
Po dosazení do vzorce (2) nám pro tento případ vychází maximální rozlišení PWM 9,3 bitů.
21
4 Implementace hardwaru V následujících kapitolách se budu zabývat již konkrétní implementací jednotlivých částí hardwaru pomocí schémat zapojení a případného vysvětlení. Pro návrh veškerých schémat a návrh desky tištěných spojů jsem využíval program Eagle 4.16r2, je tomu tak především pro jeho jednoduchost a dostupnost. Celkové schéma ve velkém formátu je možné nalézt v příloze a také na přiloženém CD.
4.1 Popis zapojení V této kapitole se zabývám popisem klíčových součástí základní desky a uvádím výřezy ze schématu k jednotlivým částem.
4.1.1
Napájení
Napájení Furbyho je detailně popsáno v literatuře [9], uvedu tedy jen základní informace. Hračka je napájena pomocí čtyř tužkových baterií, tedy 6V. Napájení je třeba pro motory a pro logické obvody, jako je mikrokontrolér, audio kodek a BlueTooth modul. Napájení těchto logických obvodů je však třeba stabilizovat na hodnotu napětí 3.3V, pro tyto účely jsou zde dva stabilizátory napětí. Využit je stabilizátor LP2950-3.3, jehož maximální proudové zatížení činí 100mA. Z výsledků předešlé práce a z tabulkových hodnot nových součástek vyplývá, že postačí dva stabilizátory, jeden pro BlueTooth modul a druhý pro kodek a mikrokontrolér. Jelikož jsou motory připojeny přímo k bateriím, je třeba ošetřit poklesy napětí při jejich spouštění, k tomu slouží elektrolytický kondenzátor C1 a dioda D1, oddělující napájení logiky. Kondenzátor se přes diodu nabíjí a je zdrojem napětí pro řídící logiku v době jeho poklesu na bateriích. Ideální by bylo použít kondenzátor s maximální kapacitou, jsme však omezeni rozměry desky a proto je třeba zvolit přijatelný kompromis. Výpočtem minimálních parametrů kondenzátoru se zabýval kolega v předchozí práci, uvedu tedy jen jeho závěry. Čas, po který je kondenzátor schopen pokrýt pokles napětí, je po úpravě vyjádřen vztahem (1).
Δt =
C * ΔU I
(1)
Předpokládám, že pokles napětí by neměl být vyšší než 0,7V. Počítáno je s maximálním odběrem logických obvodů 200mA, k takovému zatížení by ale v praxi nemělo dojít. Pokud do vztahu (1) dosadíme tyto hodnoty, vyjde, že kondenzátor o kapacitě 470 µF by měl pokrýt výpadek, trvající 1.645 ms. Počítáno je s maximálním možným proudovým odběrem obvodů. Tento kondenzátor by tedy měl stačit.
22
Schéma zapojení napájení je uvedeno na obr. 18, kondenzátor C19 je zde z důvodu větší vzdálenosti stabilizátoru od kondenzátoru C1.
Kladný pól baterií výstup 3.3 V pro mikrokontrolér, audio kodek a programovací konektor
výstup 3.3 V pro BlueTooth modul
Obr. 18 - zapojení napájecí části 3.3 V
4.1.2
Zapojení provozních pinů mikrokontroléru
Jako provozní piny označuji vývody pro napájení mikrokontroléru, krystal a různé analogové referenční vstupy a napájení. Jejich zapojení zobrazuje obr. 19.
23
3.3 V od stabilizátoru
Obr. 19 - zapojení provozních pinů mikrokontroléru
4.1.3
Zapojení audio kodeku
Zde popíši, jak je zapojen audio kodek, jeho napájení, audio vstupy/výstupy a propojení s mikrokontrolérem přes rozhraní L3 a rozhraní DCI.
24
napájecí napětí 3.3V
napájecí napětí 3.3V
Obr. 20 - napájení audio kodeku
dva audio kanály na výstupní zesilovač
Obr. 21 - výstupní audio kanály
25
vstupní audio kanály z mikrofonu
Obr. 22 - vstupní audio kanály
kodek mikrokontrolér
připojeno na I/O vývody mikrokontroléru
Obr. 23 - připojení kodeku k mikrokontroléru
4.1.4
Propojení Audio kodeku a MCU
Rozhraní DCI (Data converter interface): Rozhraní DCI je integrováno v mikrokontroléru, který jsme zvolili. Slouží k připojení audio kodeku. Blokové schéma DCI je na obr. 24.
26
Obr. 24 - blokové schéma DCI (převzato z [1])
Jsou zde čtyři I/O piny, přidružené k tomuto rozhraní. Při zapnutí řídí modul data na všech čtyřech pinech. CSCK pin: CSCK (Serial clock) pin poskytuje sériové hodiny pro DCI modul. Může být nakonfigurován jako vstupní nebo výstupní použitím CSCKD kontrolního bitu. Zde bude nastaven jako výstupní (CSCKD [0]), sériové hodiny budou poskytovány přímo mikrokontrolérem dsPIC33. CSDO pin: CSDO (Serial data output) pin je nakonfigurován pouze jako výstupní pin, pokud je modul zapnutý. Tento pin řídí sériovou sběrnici, kdykoliv jsou data přenášena. CSDO pin je třístavový (CSDOM [1]) nebo řízen ‘0’ (CSDOM [0]) pomocí CSCK period, pokud data nejsou přenášena. Toto dovoluje ostatním zařízením umístit data na sériovou sběrnici během přenosové periody nevyužité DCI modulem. Bude využit pro zasílání dat do kodeku. CSDI pin: CSDI (Serial data input) pin jen nakonfigurován pouze jako vstupní pin, pokud je modul zapnut. Jeho funkce bude přijímání dat z kodeku.
27
COFS pin: COFS (Codec frame synchronization) pin se využívá k synchronizaci datového přenosu, který probíhá na CSDI a CSDO pinech. COFS pin může být nastaven buď jako vstupní nebo výstupní. Směr dat je určen pomocí COFSD kontrolního bitu. Zde bude nastaven jako výstupní (COFSD [0]). DCI modul zpřístupňuje soukromé registry, pokud je CPU v procesu přístupu do paměti.
4.1.5
Zapojení BlueTooth modulu
Zapojení napájení BlueTooth modulu, zapojení resetovacího obvodu a připojení modulu k mikrokontroléru. Na obr. 25 je uvedeno napájecí schéma BlueTooth modulu včetně stabilizátoru napětí. BlueTooth stabilizátor napětí
modul
napájecí napětí Obr. 25 - napájení BlueTooth modulu
reset
napájecí napětí 3.3V
Obr. 26 - zapojení resetovacího obvodu
28
K BlueTooth modulu na pin PIO[3] je přes rezistor připojena LED dioda signalizující navázané spojení, připojena je následně.
Obr. 27 - připojení signalizační LED diody BlueTooth modul je k mikrokontroléru připojen pomocí sériové linky a dále jsou k mikrokontroléru připojeny dva programovací vývody, RESET a PIO[2].
reset
pin programovacího módu sériová linka
Obr. 28 - připojení BlueTooth modulu k mikrokontroléru
4.1.6
Zapojení Hmůstku
Výkonové řízení motorů má za úkol H-můstek, konkrétně obvod s označením L293D. Obr. 29 ukazuje zapojení tohoto obvodu. Jsou zde vidět dvě napájení, Vcc1 a Vcc2. Obě napájení jsou připojena přímo na baterie, protože minimální napětí vstupní části je 4.5V. Dále jsou připojeny dva motory přes výkonové výstupy a zbývající piny slouží k propojení H-můstku a mikrokontroléru. Tab. 14 ukazuje, jak je propojen mikrokontrolér a H-můstek. 29
napájení 6V z baterií RB2
propojení s mikrokontrolérem RB1 OC2 OC1 RB0 RB3
Obr. 29 - zapojení H – můstku
H - můstek 4A 3A 3-4EN 2A 1A 1-2EN
MOT1_CH1 MOT1_CH2 PWM1 MOT2_CH1 MOT2_CH2 PWM2
Mikrokontrolér RB2 RB1 OC2 RB0 RB3 OC1
Tab. 14 - propojení H – můstku a mikrokontroléru
30
4.1.7
Připojení A/D převodníku
A/D, neboli analogově/digitální převodník, je modul mikrokontroléru, který je schopen převádět analogový vstupní signál na digitální. V této práci ho využiji k měření napětí baterií. Jeho interní referenci lze nastavit podle napětí AVDD/AVSS, které je 3.3V. Převodník je tedy schopen měřit napětí v rozsahu 0 – 3.3V. Jelikož napětí na bateriích se pohybuje lehce nad hodnotou 6V, je nutné toto napětí, před přivedením na převodník, snížit pomocí děliče napětí. Děličem napětí je třeba zajistit, aby při maximálním požadovaném napětí baterií bylo vstupní napětí do převodníku 3.3V, tak bude A/D převodník schopen měřit celý rozsah napětí baterií. Z výsledků předchozí práce jsem zjistil, že maximální napětí baterií by nemělo přesáhnout 6,5V. Vztah pro dělič napětí je následující:
⎛ R2 ⎞ Uvýst / ⎜ ⎟ = Ubat ⎝ R1 + R 2 ⎠ Je tedy za potřebí dělič na polovinu, abych mohl bez problému připojit i napětí 6.5V. Vybral jsem tedy R1 = R2 = 3.3 kΩ. Po dosazení do vzorce je patrné, že A/D převodník bude schopen měřit napětí baterie až do 6.6V:
3300 Ω ⎛ ⎞ 3.3V / ⎜ ⎟ = 6.6V ⎝ 3300Ω + 3300Ω ⎠ Převodník našeho mikrokontroléru lze nastavit buď na 10ti bitový nebo na 12ti bitový. Na počtu bitů přímo závisí rozlišení převodníku (počet kroků). Při využití 12ti bitového je rychlost vzorkování 500 ksps, pro tyto účely však postačí 10ti bitový, schopný dosáhnout rychlosti až 1.1 Msps. Tato rychlost není pro nás vůbec podstatná, jelikož převodník využíváme pouze pro měření baterií, uvedena je pouze pro úplnost. Počet kroků převodníku je roven 2^(počet bitů), v tomto případě tedy 1024. Citlivost převodníku na změnu napětí baterie neboli krok, který je schopen rozeznat, spočítáme následně: Při referenčním napětí na vstupu převodníku Uref = 3.3V činí krok
Pro daný dělič, který zachovává linearitu, vychází výsledný krok
Proud, který děličem protéká při napětí baterií 6.6 V, vychází
Id =
3.3V = 0.0032V 1024
6.6V = 0.0064V 1024
.
.
.
Ubat 6.6 = = 1mA Rd 3300 + 3300
Velikost tohoto proudu je podstatná, protože znamená velikost stálého odběru. Kdyby byl tento proud příliš vysoký, docházelo by k vybíjení baterií. Hodnota 1 mA je však zcela přijatelná.
31
Tyto hodnoty zcela vyhovují požadavkům a nepředstavují žádný problém pro A/D převodník. Kondenzátory, které jsou umístěné u děliče napětí, fungují jako filtry případných rušivých kmitočtů. Kondenzátor C12 je třeba umístit co nejblíže mikrokontroléru. napětí z baterií
vstup pro A/D převodník
AN8
Obr. 30 - napěťový dělič pro A/D převodník A/D převodník mikrokontroléru se nastavuje pomocí konfiguračních registrů ADxCON1, ADxCON2 a ADxCON3. Dále jsou zde registry pro výběr vstupů ADxCHS123 a ADxCHS0, registry konfigurace portu ADxPCFGH a PCxPCFGL a registry výběru vstupu vzorků ADxCSSH a ADxCSSL. Napťová reference 3.3V se nastaví registrem AD1CON2 <15:13> [000]. Pomocí registru AD1CHSO <4:0> [1000] vybereme vstupní kanál AN8. V tomto případě se port nastaví jako analogový vstup pomocí registru AD1PCFGL <15:0> [0]. Výsledky A/D převodu jsou uloženy do zásobníku, podle pořadí, ve kterém přišly. Zásobník umožňuje i náhodný přístup (lze číst slova i mimo pořadí). Použití A/D převodníku se skládá z několika kroků, konfigurace modulu, konfigurace přerušení, začátek vzorkování, odběr vzorků v určitém časovém intervalu, spuštění převodu A/D, čekání na dokončení převodu nebo přerušení od převodníku, čtení výsledků z paměti a vynulování příznaku přerušení. Konfigurace modulu spočívá v nastavení vstupů a výstupů a v nastavení napěťové reference. Dále je při konfiguraci modulu třeba vybrat hodiny konverze A/D pomocí registru AD1CON3 <5:0>[0], vybrat spouštěč převodu a zapnout A/D modul AD1CON1 <15>[1]. Konfigurace přerušení znamená vynulování příznaku přerušení (AD1IF bit) a výběr priority přerušení. Další informace a nastavení lze nalézt v literatuře [1].
4.1.8
Připojení mikrofonu
Furby obsahuje elektretový mikrofon pro příjem zvuku. Tento mikrofon připojuji k audio vstupu kodeku. Elektretový mikrofon potřebuje pro svou činnost přivést na kladnou svorku napájecí napětí. Toto napětí napájí interní předzesilovač, který je součástí mikrofonu a je skrytý uvnitř pouzdra. Většinou je tvořen JFET tranzistorem.
32
K zajištění napájení mikrofonu jsem využil schéma zapojení uvedené v práci, která se zabývala využitím zde použitého audio kodeku (literatura [10]). K zesílení vstupního signálu jsem použil výše zmíněný operační zesilovač TLC271D.
napájení mikrofonu
audio vstup do kodeku
Obr. 31 - napájecí obvod mikrofonu 4.1.9
Připojení reproduktoru
Furby má zabudovaný reproduktor pro zvukovou komunikaci s okolím. Reproduktor připojuji k audio výstupu kodeku. Jelikož je výstup z kodeku stereofonní a pro naše účely stačí pouze jeden kanál, bylo třeba stereo kanály sečíst v jeden. Sečtení kanálů je na obr. 32.
výstupní audio kanály z kodeku
vstup pro výstupní zesilovač
Obr. 32 - sečtení audio kanálů
33
Reproduktor je připojen na již zmíněný výstupní zesilovač LM386, který je napájený přímo z baterií 6V. Obr. 33 ukazuje zapojení výstupního zesilovače a připojení reproduktoru.
vstupní audio signál napájecí napětí 6V
Obr. 33 - připojení reproduktoru
4.1.10 Propojení BlueTooth modulu a MCU
Mikrokontrolér je pro účely sériové linky propojen s modulem pomocí signálů RXD, TXD, které zprostředkovávají komunikaci po sériové lince. Mikrokontrolér je současně schopen ovládat signály BlueTooth modulu, které slouží k resetu (pin RESET) a zakázání BlueTooth komunikace (PIO[2]). Toto propojení jsem použil kvůli možnosti měnit konfiguraci BlueTooth modulu jako je například přenosová rychlost, kód pro párování BlueTooth a podobně. K tomu je nutné zapojit oba výše zmíněné řídící signály. Piny jsou propojeny způsobem uvedeným v tab. 15.
Mikrokontrolér C1RX C1TX RF2 RF3
BlueTooth modul TXD RXD RESET PIO[2]
Tab. 15 - propojení mikrokontroléru a BlueTooth modulu
34
4.2 Konektory připojené k desce
Programovací konektor Programování mikrokontroléru dsPIC33FJ256GP506 se bude provádět pomocí rozhraní MPLAB – ICD. Pro programování je zapotřebí pěti-pinový konektor. Volba a umístění konektoru ve Furbym není zatím specifikováno a proto na desku umístím pouze kontakty pro případné napájení vodičů a připojení jakéhokoliv konektoru. Pravděpodobně bude na desku vpájen jen konektor pro ploché kabely, na který bude třeba udělat redukci z programovacího konektoru. MPLAB – ICD slouží pro sériové programování modulů řady dsPIC. Pracuje v rozmezí napětí 3-5.5V, napájeno je z VDD napětí cílového zařízení. Operační frekvence je 32kHz až 20MHz. Programovací rozhranní je kompatibilní s operačními systémy Windows 3.x, Windows 95/98, Windows NT a Windows 2000. Kompatibilní s RS232. MPLAB ICD nabízí real-time a single step provádění programu. PIC-MPLAB-ICD2 je výkonné vývojové prostředí pro mikrokontroléry MICROCHIP se schopností „In-Circuit Debugging“. Kit používá protokol ICSP (In - Circuit Serial Programming). Umožňuje efektní programování a debugging přes grafické uživatelské rozhraní. Lze v něm vyvíjet a ladit zdrojové kódy, krokovat, nastavovat „break pointy“, umožňuje též real-time emulaci. Připojuje se přes sériový COM port k PC. Na obr. 34, obr. 35 a na obr. 36 je ukázka programovacího prostředí pro mikroprocesory dsPIC.
Obr. 34 - výběr zařízení
35
Obr. 35 - detekce dsPIC
Obr. 36 - programovací prostředí
připojení k mikrokontroléru
Obr. 37 - zapojení programovacího konektoru
36
Připojení programovacího konektoru k mikrokontroléru ukazuje tab. 16, pin 5 (VDD) je připojen přímo na napájecí napětí za stabilizátorem, tedy 3.3V, a pin 4 (GND) je připojen přímo na GND.
Programovací konektor pin 6 (RESET) pin 5 (VDD) pin 4 (GND) pin 3 (PGD) pin 2 (PGC)
Mikrokontrolér MCLR \ \ PGD1 PGC1
Tab. 16 - připojení programovacího konektoru k mikrokontroléru
Inkrementální enkodér Schéma zapojení je na obr. 39. Propojení signálů mikrokontroléru a inkrementálního enkodéru uvedeno v tab. 17. GND
CH_A
CH_B
Vcc
Obr. 38 - konektor enkodéru (převzato z [9])
napájecí napětí
propojení s mikrokontrolérem
Obr. 39 - zapojení enkodéru 37
Mikrokontrolér T3CK INT1
Enkodér encoder ch 1 encoder ch 2
Tab. 17 - propojení mikrokontroléru a enkodéru
Čidla hračky Furby Každé čidlo, které hračka obsahuje, je vlastně obyčejný mechanický spínač s dvěma vývody. Výjimku tvoří snímač pozice, který má vývody tři, lze si ho však zjednodušeně představit jako dva spínače. Tyto spínače se připojují k mikrokontroléru tak, že jeden pól je vždy připojen k pinu mikrokontroléru a druhý na společnou zem. Tyto piny mikrokontroléru jsou nastaveny na režim vstupu. Výsledkem tohoto zapojení je logická 1 při rozepnutém spínači a logická 0 při sepnutém. Zapojení je názorné na obr. 40. Mikrokontrolér
čidlo - spínač
Obr. 40 - zapojení čidel (převzato z [9]) Pro čidla a snímače by bylo zbytečné řešit připojení k desce plošných spojů pomocí konektorů, postačí pájecí kontakty, kterými je deska opatřena. Čidla jsou tedy následující: čidlo v zobáku, čidlo na zádech, čidlo na břiše a čidlo pozice
propojení s mikrokontrolérem
Obr. 41 - zapojení čidel Furbyho
38
Čidla ZOB ZADA BRICH POS_A POS_B
Mikrokontrolér IC7 IC8 INT0 T4CK T1CK
Tab. 18 - propojení čidel Furbyho a mikrokontroléru Dále je na desku připojen indexový spínač motorů č. 1 a č. 2, opět je to řešeno pomocí pájecích plošek.
Propojení s mikrokontrolérem
Obr. 42 - indexový spínač motorů Index motorů INDX1 INDX2
Mikrokontrolér INT3 T2CK
Tab. 19 - propojení indexového spínače motorů a mikrokontroléru
Jeden vývod indexového spínače vyžaduje připojení na pin s možností přerušení, proto je zde vybrán pin mikrokontroléru INT3.
39
4.3 Generování hodinových signálů pro kodek V této kapitole upřesním, jak budou generovány hodinové signály pro audio kodek pomocí mikrokontroléru. Jak jsem již uvedl, audio kodek potřebuje pro svou činnost dva zdroje hodinových signálů, vzorkovací frekvenci pro kodek a vzorkovací hodinový signál. Přesné poměry mezi těmito kmitočty jsou uvedeny v kapitole o audio kodeku, doporučené hodnoty jsou označeny. Jak jsem již uvedl, hodinové signály pro audio kodek budou generovány pomocí mikrokontroléru. K tomuto řešení jsem dospěl z důvodu úspory místa na desce plošných spojů. Vlastní krystal a klopné obvody, které by dělili přesnou frekvenci, by zabírali příliš mnoho prostoru. Hodinový signál bude generován konkrétně jednotkou Output compare mikrokontroléru, je to zatím pouze teorie, kterou v testovací části ověřím. Na následujících řádcích uvedu popis nastavení jednotlivých modulů mikrokontroléru tak, abychom mohli generovat požadované frekvence. Nastavení registrů pro generování výstupních pulsů je přesně popsáno v katalogových listech v kapitolách Oscilator Configuration, Timers, Output Compare a Data Converter Interface (DCI). Je třeba provést nastavení registrů několika modulů. Jako zdroj frekvence použijeme krystal o frekvenci 12.288 MHz. Nejprve je třeba nastavit PLL jednotku pomocí registrů CLKDIV a PLLFBD. Blokové schéma PLL je na obr. 44. Musí se provést nastavení PLLPRE (předdělička) na poměr 1:2, PLLDIV (násobení) na poměr 16:1, PLLPOST na poměr 1:2 a nakonec DOZE na poměr 1:1 tak, abychom dostaly na výstup FCy požadovaný poměr vstupní frekvence. Za jednotkou PLL se ještě nachází dělička 1:2, to je třeba zohlednit. FCy by tedy měla teoreticky vyjít 24.576 MHz.
Obr. 43 – blokové schéma oscilátoru (převzato z [1]) 40
Obr. 44 – blokové schéma PLL (převzato z [1]) Požadovaný zdroj hodinového signálu zvolíme HS (High Speed) Primary oscilator s PLL pomocí nabídky v programovacím rozhranní.
Dále je třeba nastavit časovač T3CK, nastavuje se pomocí registru T3CON. Nastavením bitů TCS a TGATE zvolíme požadovaný zdroj frekvence (Tcy) a bity TCKPS určíme dělící poměr 1:1. Čítání se povolí nastavením bitu TON. Perioda čítání se nastaví pomocí registru PR3, doporučuji zvolit hodnotu 3. Blokové schéma čítače je na obr. 45.
Obr. 45 – blokové schéma čítače (převzato z [1]) 41
Nakonec je třeba nastavit jednotku Output Compare. Tato jednotka se nastavuje pomocí registru OCxCON, kde za x dosadíme číslo 1-8. Pomocí OCM bitů tohoto registru zvolíme, jaký průběh je požadován na výstupu – nepřetržité generování výstupních pulsů. Dále je nutné zapsat hodnoty času vzestupné hrany do registru OCxR a sestupné hrany do registru OCxRS, abychom docílili střídy 50%, například hodnoty OCxR [1] a OCxRS [3].
Obr. 46 – blokové schéma Output Compare (převzato z [1]) Druhý signál, který je třeba pro správné fungování kodeku je vzorkovací signál hodin (BCK). Tento kmitočet lze zjistit z tabulky frekvencí pro kodek (viz kapitola Audio kodek), doporučena je hodnota 0.512MHz. Této frekvence docílíme dělením vstupní frekvence FOSC rozhraní DCI poměrem 1:23. Tato hodnota se vypočte podle vzorce (1). FBCG = (FCY/2*FBCK) - 1
(1)
Je třeba nastavit BCG kontrolní bity, pro dosažení požadovaného dělícího poměru. Dále je třeba nakonfigurovat rozhraní DCI tak, aby pin CSCK byl nastaven jako výstupní, to provedeme pomocí bitu SCKD. Nastavení konkrétních bitů jednotlivých registrů všech použitých modulů je přesně popsáno v literatuře [1].
42
4.4 Deska plošných spojů Zde popíši důležité parametry desky, omezení, která mě nutila minimalizovat počet součástek a vybírat SMD součástky. Dále popíši vlastní návrh desky tištěných spojů. 4.4.1
Rozměry desky
Desku tištěných spojů jsem navrhoval v programu Eagle 4.16r. Bylo nutné dodržet přesné rozměry desky, které jsem získal z dokumentace předchozího projektu. Přesné rozměry desky jsou na obr. 47.
Obr. 47 - rozměry desky tištěných spojů (převzato z [9])
Nejprve jsem si v programu Eagle vytvořil přesný obrys desky podle výkresu, bylo třeba brát na zřetel všechna vykrojení a díry v desce, sloužící k jejímu uchycení. Bylo nutné zakreslit všechny díry pro šrouby, které jsou přesně zakótovány na obr. 48 a obr. 49. Do desky navíc zasahují různé výstupky 43
a jiné mechanické části hračky, bylo tedy třeba zajistit, aby s těmito výstupky žádné součástky nekolidovaly. Mám na mysli zejména rozměrnější součástky, jako jsou elektrolytické kondenzátory a konektory. Přesné umístění děr je na obr. 48 a na obr. 49. Rozměry udávané kótami jsou v milimetrech. Díry jsou dvou velikostí, větší mají průměr 3 mm a menší 2 mm.
Obr. 48 - díry pro uchycení desky v pravém dolním rohu
Obr. 49 - díry pro uchycení desky v levém horním rohu
44
To vše, samozřejmě spolu s malými celkovými rozměry, komplikovalo rozmístění součástek. Proto jsem se již od samého začátku návrhu zapojení snažil o minimalizaci počtu komponent a složitosti zapojení. Kde to bylo možné, vybíral jsem součástky SMD, abych mohl dokonale využít obě plochy desky. Bohužel pro všechny nutné součástky nebylo možné sehnat SMD variantu, buď neexistovala knihovna, nebo součástka nebyla k dostání nebo vůbec ve variantě SMD neexistovala. Nakonec se mi podařilo většinu obvodů v SMD provedení najít, až na obvod L293D (H – můstek), výstupní zesilovač LM386 a napěťové stabilizátory LP2950CZ-3.3. Součástí návrhu desky bylo i doplnění knihoven do programu Eagle a zároveň doplnění těchto knihoven o potřebné součástky. Knihovna představuje sadu schematických symbolů součástek a tvarů pouzdra včetně rozmístění vývodů, reprezentující každou obsahující součástku. Využil jsem především knihovnu philips.lbr, knihovnu použitou v předchozím projektu furby-controller.lbr a několik dalších běžných knihoven se standardními součástkami. Problém byl najít knihovnu pro SMD elektrolytické kondenzátory, které jsem pro projekt zvolil, nakonec jsem musel zjistit jejich rozměry, najít odpovídající součástku v knihovně a provést malou úpravu.
45
4.4.2
Návrh desky plošných spojů
Obr. 50 znázorňuje rozmístění součástek na desce tištěných spojů z pohledu shora, hlavními prvky jsou zde mikrokontrolér, vstupní a výstupní zesilovače, konektory pro připojení motorů, inkrementálního enkodéru a dalších součástí Furbyho. Dále je zde stabilizátor napětí a LED dioda signalizující navázání spojení s modulem BlueTooth. Nakonec podpůrné kondenzátory a odpory. Mikrofon a reproduktor vyčnívající z desky jsou využity pouze pro vytvoření pájecích kontaktů na desce, obojí je součástí Furbyho. konektory motorů
konektor enkodéru stabilizátor napětí
vstupní zesilovač
mikrokontroler
LED dioda výstupní zesilovač
Obr. 50 - rozmístění součástek z jedné strany
46
Na obr. 51 je ukázáno rozmístění součástek z druhé strany desky tištěných spojů. Nachází se zde především BlueTooth modul, audio kodek, H – můstek a krystal pro udávání hodinové frekvence pro mikrokontrolér. Dále je zde programovací konektor, který je využit pouze pro kontakty na desce a několik podpůrných součástek jako odpory a kondenzátory.
krystal
H - můstek
stabilizátor napětí
audio kodek
programovací konektor
BlueTooth modul
Obr. 51 - rozmístění součástek z druhé strany
Při návrhu desky tištěných spojů se nejprve dvouvrstvá deska jevila jako nedostačující a počítal jsem spíše s variantou čtyřvrstvé desky. Dvě vrstvy by tvořily datové a propojovací vodiče a zbylé dvě vrstvy by byly využity pro napájení a zem (GND). Po dlouhé práci, propojování vodičů a přemísťování součástek jsem došel k názoru, že postačí dvouvrstvá deska tištěných spojů. Nakonec se mi podařilo na dvě vrstvy umístit nejen datové a propojovací vodiče, ale i napájení a zemnící plochu. Složitost a nepřehlednost desky sice vzrostly, ale usnadnila se výroba a její náklady.
47
Na obr. 52, obr. 53 a na obr. 54 popíši, jak jsou propojeny jednotlivé obvody na různých vrstvách. Využíval jsem tedy dvě vrstvy, horní vrstva – červená a spodní vrstva – modrá. Snažil jsem se dodržet zásadu, že vodiče jedné vrstvy by měly vést pokud možno horizontálně a vodiče druhé vrstvy vertikálně. V praxi to samozřejmě nelze zcela dodržet, ale v zásadě se mi to podařilo. Zelená barva značí místa, kde kontakt prochází oběma vrstvami, to znamená, že se jedná o součástku, která není SMD, anebo průchodku mezi jednotlivými vrstvami.
Obr. 52 – propojení obvodů a napájení na horní vrstvě
48
Na druhé vrstvě jsem se snažil co nejvíce omezit vodiče, aby zbylo maximum místa pro zemnící plochu.
Obr. 53 – propojení obvodů na spodní vrstvě
49
Na spodní části BlueTooth modulu se nachází anténa pro příjem a vysílání signálů a v těchto místech se nesmí nacházet žádná měď, protože by signál rušila. Bylo tedy třeba ji odstranit ze zemnící plochy. Na obr. 54 je znázorněna zemnící plocha, která propojuje všechny vývody, které mají být připojeny na zem (GND).
anténa BlueTooth Obr. 54 – zemnící plocha
50
5 Testování Jelikož jsem neměl k dispozici finální výrobek, neměl jsem možnost vše otestovat. U většiny zapojení jsem vycházel z předchozích prací nebo zapojení, udávané v katalogových listech a jejich funkčnost byla tedy ověřena již dříve. Jedinou částí, která zatím nebyla ověřena, je dělení hodinové frekvence pro vzorkovací signál kodeku a DCI rozhraní pomocí Output Compare výstupu mikrokontroléru. Jednotku Output Compare popisuji již dříve, v místech, kde se zabývám parametry mikrokontroléru. Podle teoretických předpokladů a informací, získaných z manuálu, vyplývá, že tento postup je správný a generování hodinové frekvence pomocí Output Compare nebude problém. Vycházel jsem z nastavení registrů uvedené v katalogovém listu mikrokontroléru, které zmiňuji v kapitole, zabývající se generováním hodinových signálů pro kodek. Programování mikrokontroléru jsem prováděl v prostředí MPLAB-ICD2, pomocí programu jazyka C. Testovaný mikroprocesor měl připojen krystal, generující frekvenci 12.288 MHz. Pro otestování správnosti mé teorie byl zcela vyhovující. Nastavení jednotky PLL: Jednotku PLL jsem nastavil pomocí registrů CLKDIV a PLLFBD. Vstupní frekvence byla 12.288 MHz, PLLPRE jsem tedy nastavil na poměr 1:2, PLLDIV (násobení) jsem nastavil na poměr 16:1, PLLPOST na poměr 1:2 a nakonec DOZE na poměr 1:1. Jelikož se za jednotkou PLL nachází ještě dělička 1:2, znamená to, že na výstup FCy jsem měl teoreticky přivést frekvenci 24.576 MHz. Zvolil jsem požadovaný zdroj hodinového signálu HS (High Speed) Primary oscilator s PLL, pomocí nabídky v programovacím rozhraní. Bity registru CLKDIV a PLLFBD jsem nastavil, jak je znázorněno v tab. 20.
registr CLKDIV PLLFBD
hodnota 0000h 000Eh
Tab. 20 – nastavení registrů PLL jednotky
Dále jsem nastavil časovač T3CK, pomocí registru T3CON. Pomocí bitů TCS a TGATE jsem zvolil zdroj frekvence Tcy a určil dělící poměr 1:1 nastavením bitů TCKPS. Povolil jsem čítání, za pomocí bitu TON a nastavil periodu čítání na hodnotu 3. Nastavení registrů čítače je v tab. 21.
51
registr T3CON PR3
hodnota 8000h 0003h
Tab. 21 – nastavení registrů čítače
Nakonec jsem musel nastavit jednotku Output Compare. Nastavení této jednotky jsem provedl pomocí registru OCxCON. Pomocí OCM bitů tohoto registru jsem zvolil požadovaný průběh na výstupu, nepřetržité generování výstupních pulsů. Do registru OCxR jsem zapsal čas vzestupné hrany a do registru OCxRS čas sestupné hrany tak, že jsem docílil střídy 50 %. Podle možností testované desky jsem zvolil výstup OC4, nastavení registrů OC je uvedeno v tab. 22.
registr OC4CON OC4R OC4RS
hodnota 000Eh 0001h 0003h
Tab. 22 – nastavení registrů OC
Pomocí osciloskopu jsem změřil výstupní frekvenci na pinu OC4 a zjistil jsem, že je 6.900MHz. Požadovaná frekvence byla 6.144MHz, tak jsem pátral po příčině a zkoušel jsem změnit poměr násobení na jednotce PLL z původních 16 na 14. Tím jsem docílil frekvence 6.140MHz, kterou jsem požadoval. Následně jsem si uvědomil, že je třeba do registru PLLFBD zapsat hodnotu 14 pro požadovaný poměr dělení 16:1. Tímto jsem si prakticky vyzkoušel dělení frekvence pomocí Output Compare mikrokontroléru. Po té jsem k mikrokontroléru připojil desku s kodekem, jejíž funkčnost jsem nejprve otestoval pomocí programovacího modulu dsPIC4013, pro který jsem měl k dispozici program na oživení kodekového modulu. Po připojení sluchátek a mikrofonu bylo patrné, že modul je funkční, do sluchátek se přenášel hlas, zachycený mikrofonem. Nic mi tedy nebránilo připojit kodekový modul k testované desce s mikrokontrolérem dsPIC33FJ256GP506. Program pro původní programovací modul nevyžadoval téměř žádné úpravy, pouze bylo nutné mechanicky propojit pin RD3 (OC4) a pin RD9, abych propojil výstupní signál na OC4 s hodinovým vstupem kodeku SYSCLK. Signál BCK, který bylo třeba dále vygenerovat, vycházel podle tabulky frekvencí 0.512MHz. Této frekvence jsem docílil dělením vstupní frekvence Fosc rozhraní DCI poměrem 1:23. Tuto hodnotu jsem vypočítal podle vzorce (1). FBCG = (FCY/2*FBCK) - 1
(1)
Po nastavení jumperů SYSCLK a BCK tak, aby byly na vstupy kodeku přivedeny frekvence SYSCLK a BCK, generované mikrokontrolérem, jsem změřil frekvenci na těchto dvou pinech.
52
Hodnoty odpovídali požadavkům, tak jsem opět připojil sluchátka a mikrofon. Zjistil jsem, že zapojení funguje, jak má a mikrokontrolér je schopen řídit audio kodek a poskytovat mu hodinovou frekvenci. Nakonec jsem musel nastavit pin CSCK rozhraní DCI tak, aby se choval jako výstupní, provedl jsem to pomocí bitu SCKD. Nastavil jsem BCG kontrolní bity, abych dosáhl správného dělícího poměru. Oboje se provádí v programovacím prostředí, pomocí knihovny dci.h. Vlastní program lze nalézt v příloze a také na přiloženém CD. Původní zapojení kodekového modulu počítalo s generováním hodinových pulsů pomocí vlastního krystalu a D-klopných obvodů, zajišťujících požadovanou frekvenci a poměr mezi SYSCLK a BCK. Abychom využili tento způsob, musí být nastaveny jumpery SYSCLK na 1-2 a BCK na 1-2, 3-4. Jelikož jsem chtěl generovat hodinové signály pomocí mikrokontroléru, bylo nutné nastavit jumpery SYSCLK na 2-3 a BCK na 2-3. Zapojení jumperů kodeku je na obr. 55. Celkové schéma zapojení kodeku je v příloze a také na přiloženém CD. kodek
vlastní krystal a D-klopné obvody
stabilizátor napětí mikrokontrolér
Obr. 55 – nastavení jumperů kodekového modulu (převzato z [10])
53
6 Závěr Účelem mé bakalářské práce bylo vytvoření nové řídící logiky pro hračku Furby, která by přes BlueTooth zajišťovala nejen ovládání, ale i přenos kvalitního audio kanálu. Seznámil jsem se s existujícím řešením ovládání hračky Furby přes BlueTooth a také s řešením bezdrátového mikrofonu. Navrhl jsem nové schéma zapojení, kde jsem využil jiný mikrokontrolér a přidal jsem externí audio kodek. Minimalizoval jsem počet součástek na nezbytné minimum, při zachování funkčnosti, z důvodu nedostatku místa, jak jsem již uvedl. Vybral jsem vhodné součástky, které by vyhovovaly nejen svými parametry, ale i rozměry a typem pouzdra. Dále jsem navrhl layout desky plošných spojů, což byla stěžejní část mého projektu. Zabrala mi mnoho času, vzhledem k velkému množství součástek koncentrovaných na malé ploše. Vzhledem k nedostatku času a rozsahu práce jsem již navrženou desku neosazoval součástkami a ani nenavrhoval nový řídící software, to bude předmětem práce některého navazujícího projektu. Programování mikrokontroléru jsem si vyzkoušel při testování dělení hodinové frekvence pomocí Output compare. Díky tomu jsem se seznámil s programovacím prostředím mikrokontroléru a zjistil jsem, že mé teoretické předpoklady jsou správné, mikrokontrolér je schopen generovat hodinové pulsy pro audio kodek. Výsledný produkt, hračka Furby s nově navrženou elektronikou bude nabízet mnoho možností. Spolu s hlasovým ovládáním a kvalitním audio rozhraním bude možné hračku ovládat interaktivně.
54
7 Seznam literatury [1] dsPIC33F datasheet, Technická literatura firmy Microchip [internet] URL: < http://www.sagitron.es/data_sheet/mc05043.pdf > [2] Free2Move F2M03AC2 datasheet, Technická literatura firmy Free2Move [internet] URL: < http://www.datasoft.se/documents/DatasheetF2M03AC2DSS.pdf> [3] UDA1344TS datasheet, Technická literatura firmy Integrated Circuits [internet] URL: < http://www.datasoft.se/documents/DatasheetF2M03AC2DSS.pdf> [4] TLC271D datasheet, Technická literatura firmy Texas instruments [internet] URL: < http://www.datasheetcatalog.org/datasheet/texasinstruments/tlc271.pdf> [5] LM386 datasheet, Technická literatura firmy National Semiconductor [internet] URL: < http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS006976.PDF> [6] Stránky Microchip, internetové stránky firmy Microchip[online] URL: < http://www.microchip.com/ > [7] Dokument týkající se regulace elektrických motorů [online] URL: < http://www.fm.vslib.cz/~krtsub/fm/par/pohony.pdf> [8] Milan Mikulec, Václav Havlíček: Základy teorie elektrických obvodů 1, Vydavatelství ČVUT, Praha 2004, ISBN 80-01-02519-5 [9] Tomáš Kunc: Ovládání hračky Furby přes BlueTooth, Bakalářská práce. Katedra počítačů, Fakulta elektrotechnická, ČVUT Praha, srpen 2007 [10] Libor Hrbek: Bezdrátový mikrofon, Bakalářská práce. Katedra počítačů, Fakulta elektrotechnická, ČVUT Praha, červen 2006 [11] L293D datasheet, Technická literatura firmy Teexas instruments [internet] URL: < http://www.datasheetcatalog.org/datasheet/texasinstruments/l293d.pdf>
55
A. Příloha – Použité zkratky
Seznam použitých zkratek: EEPROM BT A/D převodník D/A převodník HW I/O FLASH MCU PIN PC SRAM USB USART
- elektricky přepisovatelná paměť - BlueTooth - analogově - digitální převodník - digitálně - analogový převodník - hardware - fyzická část - (input/output) - vstup/výstup - elektricky přepisovatelná paměť - (micro controller unit) mikrokontrolér - vývod součástky - (personal computer) osobní počítač - (static random access memory) statická paměť s náhodným - přístupem - universal seriál bus - univerzální synchronní a asynchronní sériový vysílač a přijímač
56
B. Příloha – Generování hodinového signálu pomocí OC Program v jazyce C, pro nastavení PLL, čítače, Output Compare a jednotky DCI: #include
#include #include <math.h>
DCI_SDO_ZERO & DCI_DJST_OFF & DCI_FSM_I2S,
int audioData[32];
DCI_BUFF_LEN_4 &
int main (void)
DCI_FRAME_LEN_1 &
{
DCI_DATA_WORD_16,
//nastavení jednotky PLL//
//nastavení dělícího poměru//
CLKDIV=0x0; PLLFBD = 0x000e;
23, DCI_EN_SLOT_ALL,
//nastavení Output Compare//
DCI_EN_SLOT_ALL);
OC4CON = 0xd; OC4R = 3;
while (1) {
OC4RS = 1;
if (DataRdyDCI()) {
//nastavení čítače
if (full) {
PR3 = 3;
LATB |= 0b01;
T3CON = 0x0;
} else { T3CONbits.TON = 1;
for(i = 0; i < 4; i++) { buffer[i] = ReadDCI(i);
int i, j;
}
int full = 0;
full = 1;
int buffer[4];
}
TRISB = 0xFFFC;
}
initCodec();
if (BufferEmptyDCI()) { if (full) {
CloseDCI(); /* Configure DCI receive
for(i = 0; i < 4; i++) { */
WriteDCI(buffer[i], i);
ConfigIntDCI(DCI_INT_OFF);
} full = 0;
OpenDCI(
}
DCI_EN &
}
DCI_IDLE_CON &
if (isAdcOverloaded()) {
DCI_DIGI_LPBACK_DIS &
LATB |= 0b10;
//nastevení CSCK jako výstup//
} else { LATB &= ~0b10;
DCI_SCKD_OUP &
} }
DCI_SAMP_CLK_RIS &
return(0);
DCI_FSD_OUP & DCI_TX_ZERO_UNF &
57
}
Program pro nastavení modulu audio kodeku, který jsem dostal k dispozici od vedoucího práce: #include
int i;
/*
for(i = 0; i < 8; i++) { Codec interface:
// clock
PIC Codec
LATB &= ~0b01000000;
PIC I/O direction
if (data & 0x1 == 1) {
RB4 MP1 ADC overload input RB5 MP2 L3Mode
LATB |=
output
RB6 MP3 L3 Clock
output
RB7 MP4 L3 Data
ouptut
RB8 MP5 ADC gain
0b10000000;
} else { LATB &= ~0b10000000; }
output
*/
data >>= 1;
int isAdcOverloaded() {
L3Delay(); LATB |= 0b01000000;
return (PORTB & 0b10000) != 0;
L3Delay();
} }
LATB |= 0b10000000;
void setAdcGainHigh() {
L3Delay();
LATB |= 0x0100; }
}
/* L3Send */ void setAdcGainLow() {
void L3Send(char address, char data) { LATB |= 0b11100000;
LATB &= ~0x0100;
L3Delay();
}
LATB &= ~0b00100000; L3Delay();
static L3Delay() {
L3SendByte(address);
delay1us(10);
LATB |= 0b00100000;
}
L3Delay();
static L3WakeUp() {
L3SendByte(data);
LATB |= 0b00100000;
L3Delay();
L3Delay(); L3Delay();
}
LATB &= ~0b01000000; L3Delay();
void initCodec() { TRISB &= ~0b0000000111100011;
LATB |= 0b01000000; L3Delay(); LATB &= ~0b01000000;
TRISB |=
0b0000000000010000;
LATB
0b1111111110111100; /* L3Clk=0 */
|=
setAdcGainLow();
L3Delay();
L3WakeUp();
LATB |= 0b01000000; L3Delay();
L3Send(0b00010110, 0b00010000);
L3Delay();
L3Send(0b00010100, 0b00000000);
}
L3Send(0b00010100, 0b01000000);
/* L3SendByte
L3Send(0b00010100, 0b10000000);
*/
L3Send(0b00010100, 0b11000011);
static void L3SendByte(char data) {
}
58
C. Příloha – Původní blokové schéma
Obr. 56 - původní hardwarová architektura (převzato z [9])
59
D. Příloha – Obrazová dokumentace
Obr. 57 – celkové schéma zapojení
60
Obr. 58 – výkres obrysu desky
61
Obr. 59 – konečný layout desky
62
Obr. 60 – schéma zapojení kodekového modulu (převzato z [10])
63
E. Příloha – Obsah přiloženého CD
\furby\
tato bakalářská práce
\doc\
dokumentace, text bakalářské práce
\hardware\
hardware
\eagle_project\
projekt pro program Eagle 4.16r; obsahuje schéma zapojení a layout desky
\schematics_img\
obrázky schémat a layoutu desky
\software\
software
\codec\
program v jazyce C, nastavení audio kodeku a dělení hodinové frekvence pomocí OC
\images\
různé obrázky (pževzato z [9])
\readme.txt
obsah CD
64