. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
USB Touchscreen s AVR
13. května 2010 - 8:36 | Pandatron | USB Touchscreen s AVR | Komentářů: 7  

USB Touchscreen s AVR

Na webu SparkFun se objevil pěkný článek, popisující využití dotykového displeje PSP a Nintendo DS v konstrukci USB Touchscreen náhrady klasické myši.

Ryan, jeden z inženýrů ze SparkFun pracoval na AVR USB Stick, který by využil open source zdrojové kódy, dostupné na Objective Development tzv. V-USB, implementující USB 1.1 standard na obvodu AVR. V zásadě je tak možné použít prakticky libovolný 8-bitový obvod z široké řady AVR obvodů s dostatečnou pamětí, jako je kupříkladu ATMega168 a implementovat s její pomocí libovolné USB HID (Human Interface Device) zařízení. Pokud se takový obvod následně připojí k PC, bude pracovat například jako klasická klávesnice nebo myš. Využití takových knihoven ve spojení s dotykovou obrazovkou je poté dokonalé.

Zde jsou základní informace o projektu:

  • ATMega 168 pracující na 16 MHz (beze změny je možné použít i obvod ATMega 328)
  • 28 Pin AVR Development Board
  • 16 MHz krystal
  • AVR STK paralelní programátor
  • Redukce pro Mini USB
  • PSP Touch Screen
  • PSP Touch Screen konektorová deska
  • 2 x 68 ohmů rezistor a 1 x 1,5 k rezistor


Obr. 1: Fotografie sestaveného USB Touchscreen

Touchscreen:
Dotykové displeje ze zařízení PSP využívají 4-drátovou analogovou odporovou dotykovou plochu. To znamená, že dotek perem na jedno místo je jednoduše odečten pomocí změny odporu v X a Y ose. Při pohybu prstem nebo stylusem po obrazovce, dochází k plynulé změně odporů mezi protilehlými stranami obou os. Při zařazení v klasickém odporovém zapojení je výsledkem změna napětí. V tom případě může být poloha prstu na obrazovce velice jednoduše snímána interními ADC libovolného mikrokontroléru. Například na této adrese je k dispozici rozsáhlý dokument, vysvětlující princip a použití dotykových obrazovek.

Po stranách obrazovky jsou k dispozici čtyři piny odporové snímací plochy. Aby bylo možné jejich čtení mikrokontrolérem, je potřeba, musí být vždy dvě protilehlé piny napájeny, přičemž třetí, ortogonální pruh se využívá ke snímání napětí.


Obr. 2: Princip snímání odporové dotykové plochy

Tato konfigurace znamená, že napětí na příslušných pinech musí být neustále dostupné, aby bylo možné rychle číst aktuální souřadnice. V následující tabulce jsou uvedeny jednotlivé piny displeje a jejich spojení s napájením a mikrokontrolérem.

V uvedené aplikaci je tak potřeba rychle přepínat použití interní ADC mezi dvěma piny.

Hardware:
Z pohledu hardware je uvedená aplikace opět velice jednoduše řešená. Jak již bylo zmíněno, dotyková plocha displeje je připojena pouze čtyřmi piny na čtyři I/O piny mikrokontroléru, z toho dva jsou ADC. Napájení odporovým vrstvám zajišťují přímo výstupní GPIO piny obvodu, které jsou schopny dodat i poměrně vysoký proud na 5V.

Základem zapojení je již zmíněný obvod ATMega 168, chovající se jako zařízení HID. Z okolních součástek je poté možné jmenovat pouze minimum rezistorů na datových USB pinech a samozřejmě nezbytné blokovací kondenzátory. Jedinou podmínkou je nutnost připojení signálu USB D+ k pinu INT0 mikrokontroléru.

Na následujícím obrázku je uvedeno schéma aplikace.


Obr. 2: Schéma zapojení

Kód:
První věcí, která byla potřeba udělat, byla obsluha dotykové plochy displeje a spolehlivé získání X a Y souřadnic. Zde jsou uvedeny zdrojové kódy projektu, obsahující pouze samotné čtení ADC hodnot dotykové obrazovky.

V podstatě jsou potřeba dvě čtení, jedno pro X a druhé pro Y. Nicméně, není možné využít více ADC a v praxi je tak potřeba vstupní kanály neustále přepínat.

Dále je uvedena ukázka kódu, využívaného při čtení obrazovky.

void read_x (void) {
DDRC = 0b00010010; // Output on PC4(5V) and PC1(GND), Input on PC4(ADC)
sbi(PORTC, 4); //pull PC4 to 5V
cbi(PORTC, 1); //pull PC1 to GND

_delay_ms(1); //wait for screen to initialize

ADMUX = (1 << MUX1); //ADC2
ADCSRA = (1 << ADEN)|(1 << ADSC)|(1<<

while(ADCSRA & (1 << ADSC));
l = ADCL;
h = ADCH & 0x03;
h = h << 8;
h = h + l;
}

Nyní jen stačí libovolně odeslat globální proměnnou h pro hodnotu ADC.

USB knihovny je možné nalézt na Object Development's download page. Zde jsou dostupné všechny základní věci, které jsou potřeba pro vytvoření vlastní USB implementace pro obvody AVR: USB knihovny, ukázkové zapojení, ukázkové zdrojové kódy a velice dobrá dokumentace.

Přímo mezi dostupnými příklady je uvedena i myš, kterou bylo potřeba implementovat pro tuto aplikaci. Výhodou bylo, že uvedené příklady jsou nakonfigurovány přímo i pro námi použitou architekturu a tak není potřeba ani nic měnit v makefile.

Main.c aplikace používá dx struktury jako report buffer hodnoty rychlosti a směru X (stejně i pro y).

Vlastní kód provádí pouze následující operace:

  • Povolení časovače pro pravidelné čtení ADC
  • Naplnění malého bufferu pro hodnoty ADC
  • Získání rozdílu mezi po době jdoucími hodnotami ADC k určení směru
  • Provedení srovnání a podmínek
  • Výpočet rychlosti vynásobením stupnice
  • Vložení získané hodnoty do dx bufferu pro odeslání do PC

Závěr:
Uvedená aplikace představuje zajímavý a jednoduchý příklad implementace USB HID zařízení s obvodem řady AVR, navíc s využitím dotykové plochy displeje oblíbených PSP. Více informací o projektu, zdrojové kódy a další materiály pro návrh vlastních aplikací je k dispozici na webové stránce
sparkfun.com.

Odkazy & Download:
Domovská stránka SparkFun Electronics
The AVR based USB Touchscreen Mouse







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (7):

Zobrazit starší 30 dnů (7)...

host
7. Dne 12. 07. 2010 v 23:05 zaslal host
PSP TOUCH screen
lidičky nedá mi to a musim řict že PSP NEMÁ dotykovou obrazovku !!!!!!!!! :-P


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
PGEN170 - Generátor 5 MHz až 170 MHz
Moduly PGEN170, jejichž základem je integrovaný obvod LTC6905, jsou lineárně řízené generátory obdélníkového signálu v rozsahu 5 MHz až 170 MHz.
Skladem od 630 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007