Jste zde

Modul digitálních vstupů

Stavba jakéhokoli řídícího

systému se neobejde bez digitálních nebo analogových vstupů. Na této stránce je popsán systém, který jsem se rozhodl

používat pro své konstrukce a kde vyhoví jeho parametry. Měl by vyhovět pro většinu běžných aplikací, dokonce i tam,

kde je potřeba mít vstupy opticky oddělené.

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:

  1. nadřízený systém nahodí pin X1-7 modulu do stavu H.
  2. nadřízený systém odešle 1 byte s povelem pro modul.
  3. modul odpoví packetem, skládajícím se z 12byte (u verze SW 1.0)
  4. 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í:

  1. výstup 0 - ON/OFF
  2. výstup 1 - ON/OFF
  3. IRC 0 - enabled
  4. IRC 1 - enabled
  5. IR čidlo 0 - enabled
  6. IR čidlo 1 - enabled
  7. signál C pro IRC 0 enabled
  8. 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.


Zde je možno stáhnout schéma ve formátu pdf.


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

Hodnocení článku: