Samozřejmě je nutné vzít v úvahu fakt, že takovýto universální modul nemůže pokrýt požadavky všech aplikací, například pro přesné real-time řízení vysokých otáček jistě nevyhoví vestavěné vstupy pro IRC čidla (enkodéry). Cílem této aplikace je pokrýt většinu běžných požadavků na digitální vstupy různých automatických systémů s přihlédnutím k specifickým potřebám vstupů v oblasti stavby robotů.
Základní vlastnosti modulu :
- rozměr 80x100mm
- počet vstupů - 8
- počet výstupů - 2
- proudové zatížení výstupů - -30mA (20mA)
- vstupy a výstupy mohou být elektricky odděleny od řídící části
- měření periody při změně stavu vstupu v rozsahu 10 - 2550 ms.
- možnost zpracovávat údaje až ze dvou IRC čidel (enkodérů), (signály A,B a C)
- možnost zpracovávat údaje až ze dvou IR čidel vzdálenosti GP2D02
- sériová komunikace 9600,8,N,1 (napěťové úrovně 0 a 5V)
- napájecí napětí 5V DC
- odběr 30 - 120mA (dle konfigurace a počtu sepnutých vstupů a výstupů)
Modul komunikuje se svým okolím pomocí vestavěného UARTu a je typu SLAVE. To znamená, že se v komunikaci chová pasivně. Vlastní komunikace probíhá takto:
- nadřízený systém nahodí pin X1-7 modulu do stavu H.
- nadřízený systém odešle 1 byte s povelem pro modul.
- modul odpoví packetem, skládajícím se z 12byte (u verze SW 1.0)
- nadřízený systém shodí pin X1-7 modulu do stavu L.
Pokud je třeba komunikovat pouze s jedním modulem na sériové lince (toto je případ například testovacího programu pro PC), lze prostě nechat pin X1-7 nezapojen.
Pohled na oživený modul.
Význam jednotlivých byte v packetu se mění dle módu činnosti modulu. Tento je dán obsahem povelového byte. Význam jednotlivých bitů je následující:
- výstup 0 - ON/OFF
- výstup 1 - ON/OFF
- IRC 0 - enabled
- IRC 1 - enabled
- IR čidlo 0 - enabled
- IR čidlo 1 - enabled
- signál C pro IRC 0 enabled
- signál C pro IRC 1 enabled
Význam jednotlivých byte vysílaných modulem je v následující
tabulce, jednotlivé sloupce znázorňují jednotlivé možné funkce:
byte číslo: | prosté digitální vstupy: | IRC 0 | IRC 1 | GP2D02 - 0 | GP2D02 - 1 |
1 | ktuální stav všech vstupů (8 bitů = 8 vstupů) například číslo 255 = všechny vstupy v "H. | ||||
2 | poslední zadaný příkaz | ||||
3 | čas (ms*10) od poslední změny na vstupu 1. | počet "ujetých impulsů jedním směrem (od posledního dotazu) | |||
4 | čas (ms*10) od poslední změny na vstupu 2. | počet "ujetých impulsů opačným směrem (od posledního dotazu) | |||
5 | čas (ms*10) od poslední změny na vstupu 3. | 0 = !C 1 = C |
|||
6 | čas (ms*10) od poslední změny na vstupu 4. | počet "ujetých impulsů jedním směrem (od posledního dotazu) | |||
7 | čas (ms*10) od poslední změny na vstupu 5. | počet "ujetých impulsů opačným směrem (od posledního dotazu) | |||
8 | čas (ms*10) od poslední změny na vstupu 6. | 0 = !C 1 = C |
|||
9 | čas (ms*10) od poslední změny na vstupu 7. | data od IR čidla | |||
10 | čas (ms*10) od poslední změny na vstupu 8. | data od IR čidla | |||
11 | prostý 8bitový kontrolní součet byte 1 - 10. | prostý 8bitový kontrolní součet byte 1 - 10. | prostý 8bitový kontrolní součet byte 1 - 10. | prostý 8bitový kontrolní součet byte 1 - 10. | prostý 8bitový kontrolní součet byte 1 - 10. |
Ještě možná několik poznámek k jednotlivým funkcím:
digitální vstupy - modul je vybaven osmi digitálními vstupy. Po každém
dotazu z nadřízené jednotky se odešle jednak aktuální stav vstupů ale také
při změně stavu na nějakém vstupu také čas v desítkách milisekund od poslední
změny. Tento čas je omezen číslem 255 tedy 2550ms. Tato funkce může být užitečná pro detekci
krátkých impulsů mezi jednotlivými dotazy od nadřízeného systému,
které by jinak nebyly detekovány.
digitální výstupy - modul je vybaven dvěma pomocnými digitálními výstupy. Stav těchto výstupů je řízen odpovídajícími bity v povelovém byte. Na svorkovnici výstupů se ve stavu "CLOSED" objeví cca 5V DC. Pokud nejsou použity optočleny (jsou nahrazeny drátovými propojkami), jsou tyto svorky ve stavu "CLOSED" uzemněny. Pro použití s čidly GP2D02, je výhodné tyto optočleny nahradit diodami mezi piny 7 a 2 optočlenu (viz datasheet výrobce).
IRC čidla (enkodéry) - zapnutím této funkce zaměníme 3 vstupy za vstupy pro IRC čidla. Tato funkce je určena pro ty čidla, která mají na svém výstupu dva signály (A, B) vzájemně posunuté o 90st. Pro amatérské podmínky vyhoví například čidla z počítačových myší. Tato funkce má digitální filtraci signálů a násobí počet impulsů 4x. Maximální kmitočet impulsů je dán hlavně výkonem uP a pohybuje se okolo 70-ti impulsů za vteřinu. Tato funkce umožňuje také využít tzv. signál C neboli "index" . Pokud je tento v "H" je počítadlo impulsů nulováno a tato skutečnost je indikována hodnotou 001 byte 5 nebo 8. Tato funkce vyhoví například pro měření ujeté dráhy nebo řízení rychlosti pojezdu robota. Pro tyto aplikace většinou stačí dostávat informace 1 - 10x za vteřinu a to tento modul umožňuje. V případě požadavku na rychlost měření větší než cca 5/sec, není možné použít funkci pro IR čidla, vzhledem k délce načítání dat z těchto čidel!
IR čidla GP2D02 - v nedávné minulosti byly mezi tvůrci robotů hodně oblíbené
IR sensory GP2D02 od firmy SHARP. Poskytovaly informaci o vzdálenosti, měřené na principu triangulace
a výstup informace byl realizován digitálně pomocí dvou vodičů. V současnosti jsou tyto
sensory nahrazovány typem GP2D12, který má již interface řešen analogově (napětí
na výstupu odpovídá funkci vzdálenosti). Jelikož mám stále několik sensorů
GP2D02 a jistě nejsem sám, vybavil jsem modul možností komunikace s těmito moduly. Princip činnosti je
poněkud komplikován zdlouhavou komunikací s GP2D02 (cca 50 – 70ms). Nakonec jsem tento
problém vyřešil tak, že okamžitě po odeslání dat modulem se provede měření s
GP2D02 (pokud je navoleno) a následně pokračuje další činnost modulu. Čili údaj z GP2D02
je zpožděn o interval mezi jednotlivými čteními dat z modulu. Toto řešení má
ovšem tu nevýhodu, že se není možné dotazovat modulu na data častěji, než je proběhne
načtení dat z GP2D02, což může být dle výrobce až 90ms na jedno čidlo. Já jsem naměřil
hodnotu přibližně 55ms na jedno čidlo. Pro funkci komunikace s GP2D02 je využit vždy jeden vstup a jeden
výstup. (viz ovládací program).
Při návrhu jsem chtěl, aby byl modul pokud možno levný a tak jsem ho realizoval na
jednostranné DPS. Tato koncepce si vyžádala použití několika drátových propojek.
Na jejich místě lze také použít nulové odpory. Ačkoli by se zapojení jistě
vešlo na menší desku, zvolil jsem rozměr 80 x 100 mm. Tento rozměr je jednotný pro
převážnou část modulů a není tedy problém je vzájemně montovat do
větších celků. Část DPS v okolí uP je v podstatě universální pro
více modulů a tak je zde například pozice pro EEPROM, která v tomto případě vůbec
není využita. Modul lze postavit s opticky izolovanými vstupy a výstupy. Toto
řešení je výhodné v případě delších přívodních
vedení ke vstupům modulu (například poplašný – řídící
systém). Pokud to není nutné z konstrukčního hlediska, lze vynechat DC/DC měnič (a
propojit obě země a +5V), nebo dokonce vynechat i izolační optočleny a nahradit je drátovými
propojkami. Tím se cena konstrukce dále zlevní a v mnohých zařízeních
(například v robotu) to není na závadu.
Pohled na obrazovku testovacího programu. Poklepem je možno stáhnout testovací program. Ve funkci digitálních vstupů je jejich stav indikován barvou příslušného okna a hodnota v desítkách ms je v okně zobrazena. Vstupy 0-2 mohou být alternativně použity pro enkodér stejně jako ostatní vstupy mají druhé funkce.
Další informace o modulu lze získat na adrese www.volny.cz/jreich.
DOWNLOAD & Odkazy
- Domovská stránka autora - www.volny.cz/jreich/
- Testovací program - digin.exe