mylms

... web o elektronice


I/O karta na COM port

V dobách dávno minulých, když země byla ještě mladá měli počítače LTP a COM (RS232) porty, takže s ovládáním elektroniky víceméně nebyl problém. Dnes najdete na počítačích spíš USB porty, HDMI apod.

Ale co když potřebujete opravdu něco ovládat a nechcete kupovat drahé I/O karty, nebo externí PLC? Pokud si vystačíte se třemi výstupy a čtyřmi vstupy, stačí sériový port, s tím není problém ani dnes – existují převodníky USB-RS232 (u nich je většinou problém s dodržením napěťových hladin). Existují i převodníky USB-LTP (s těmi je však větší problém).

Rozhodl jsem se tedy postavit si vstupně výstupní kartu s 8 digitálními vstupy a 8 digitálními výstupy, kterou lze připojit na COM port (resp. převodník USB-RS232).

iocard-1



Celý obvod se dělí na 4 části – zdrojCOM port s galvanickým oddělenímvýstupní část s budičivstupní část.

 

iocard-4

Blokové schéma obvodu

 
iocard-schema-1s

Schéma celého obvodu

 

1. část – Zdroj

Jde o zcela jednoduchý zdroj. Za vstupní svorkou je dioda (ochrana proti přepólování), 5V stabilizátor s blokovacími kondenzátory 100n a LED signalizující napájecí napětí.

iocard-schema-6

Schéma zdroje

 

2. část – Galvanické oddělení

Jeden z nejduležitějších parametrů obvodu je absolutní (včetně napájení) galvanické oddělení COM portu a ostatní elektroniky. To je provedeno jedním čtyřnásobným optočlenem KP1040.

iocard-schema-7

Schéma galvanického oddělení

 

Výstupní signály (TXD, DTR a RTS) rozsvěcí proti pinu GND příslušnou diodu optočlenu – tím se sepne tranzistor, který je napájen 5V. Log. 0 na výstupech tranzistorů je zajištěna pull down rezistory 10KΩ, které jsou připojeny na emitor. Výstup z třetího optočlenu (signál RTS) je potřeba negovat. Log. 1 je tedy zajištěna rezistorem 660Ω a log. 0 sepnutím tranzistoru.

Pokud je potřeba data přijímat musí být na výstupu RTS log. 1. Tím se na kolektoru čtvrtého tranzistoru objeví log. 1, kterou spíná tranzistor přímo na vstupní pin CD. Log. 0 na vstupu CD je zajištěna pull down rezistorem 10KΩ.

Na pull up a pull down rezistory nezapomínejte! Pak to posílá/přijímá do/z počítače kraviny.

 

iocard-schema-2

Vnitřní zapojení opočlenu

 

Rezistory mezi COM portem a diodami v optočlenu je potřeba spočítat podle konkrétního COM portu. Ten můj má napěťové hodnoty ±7V. Odpor se vypočítá podle vzorce

 

  • R=(Un – Ud – Usd)/Id [Ω; V, V, A]
  • R – Odpor předřadného rezistoru
  • Un – Napětí COM potru
  • Ud – Úbytek napětí na diodě v optočlenu
  • Usd – Úbytek napětí na sériové diodě
  • Id – Doporučený proud diodou v optočlenu

 

  • V mém případě tedy
  • R=(7 – 1,2 – 1)/0,02 = 240Ω

 

Testování galvanického oddělení

Tuto část obvodu lze otestovat pomocí aplikace COM Port. Pomocí této aplikace lze spínat jednotlivé výstupy a čist vstupy. Multimetrem, nebo LEDkou lze zjistit, jestli se tranzistory v optočlenu spínají jak mají. Zapnutím signálu RTS a připojením kladného napájecího napětí na čtvrtou diodu v optočlenu lze otestovat vstup.

 

3. část – Výstupní obvod

Výstupní část je založena na SIPO posuvném registru CMOS 4094. Stejný princip byl použit u LED Displeje (obvod (výstupní část) by měl jít tímto programem ovládat, ovládací signály jsou kompatibilní. Ovšem netestoval jsem to).

iocard-schema-8

Schéma výstupního obvodu

 

Vstup Output Enable je trvale připojen na napájení, stejně jako vstup StrobeStrobe slouží k odeslání stavu posuvného registru na výstupy až po uplném naplnění. Při pomalém odesílání dat by byl patrný posuv hodnot v registru což není uplně žádoucí. Časem ho možná přepojím.

Q1 až Q8 jsou paralelní výstupy posuvného registru.

Vstupy DATA a CLOCK slouží k naplnění posuvného registru log. hodnotami. Nejprve se na vstup data přivede požadovaný log. stav a ten se zapíše náběžnou hranou signálu CLOCK. Tento postup se 8× opakuje, až se posuvný registr celý naplní. Pokud tedy chcem na výstupu mít log stavy 11001100 bude signál vypadat takto (jednotlivé bity jsou odděleny prázdným řádkem):

 

  • DATA (TXD): log.1 (první bit (Q1) informace – log. 1)
  • CLOCK (DTR): log. 1 (zapsání prvního bitu)
  • CLOCK (DTR): log. 0 (sestupná hrana)
  • DATA (TXD): log.1 (druhý bit (Q2) informace – log. 1)
  • CLOCK (DTR): log. 1 (zapsání druhého bitu)
  • CLOCK (DTR): log. 0 (sestupná hrana)
  • DATA (TXD): log.0 (třetí bit (Q3) informace – log. 0)
  • CLOCK (DTR): log. 1 (zapsání třetího bitu)
  • CLOCK (DTR): log. 0 (sestupná hrana)
  • DATA (TXD): log.0
  • CLOCK (DTR): log. 1
  • CLOCK (DTR): log. 0
  • DATA (TXD): log.1
  • CLOCK (DTR): log. 1
  • CLOCK (DTR): log. 0
  • DATA (TXD): log.1
  • CLOCK (DTR): log. 1
  • CLOCK (DTR): log. 0
  • DATA (TXD): log.0
  • CLOCK (DTR): log. 1
  • CLOCK (DTR): log. 0
  • DATA (TXD): log.0 (osmý bit (Q8) informace – log. 0)
  • CLOCK (DTR): log. 1 (zapsání osmého bitu)
  • CLOCK (DTR): log. 0 (sestupná hrana)
 
iocard-schema-3

Rozložení pinů na CMOS 4094

 

Výstupy obvodu 4094 jsou přivedeny do budiče CMOS 4010 a poté přímo na svorkovici výstupů. Budič slouží k zvětšení výstupního proudu.

iocard-schema-4

Rozložení pinů a vnitřní zapojení CMOS 4010

 

 

Testování výstupní části

Pro testování výstupní části jsem napsal jednoduchej testovací program.

iocard-2

Testovací program výstupů

 

Po spuštění programu je potřeba ho připojit s určitému COM portu. To se provede stisknutím tlačítka Obnovit, výběrem portu a kliknutím na tlačítko Připojit.

Tlačítko Vymazat slouží k nastavení všech výstupů na log. 0. Tlačítko vše log. 1 slouží k nastavení všech výstupů na log. 1. Check box reverz slouží k reverzování odesílaných dat (místo 1 se bude posílat 0).

Do textového pole se zapíše hodnota, která se má odeslat. Znak „1“ odešle log. 1. vše ostatní log. 0 (v případě reverzace se to bude chovat opačně). Tlačítkem Odeslat se odešlou požadovaná data na výstupy.

 

4. část – Vstupní obvod

Tento obvod je asi nejsložitější část. Ale zas tak hrozný to není. Na vstupy PISO posuvného registru CMOS 4021 se přivedou paralelní data, ty se poté zaznamenají signálem PL a hodinovým signálem CP se posunují na sériový výstup O7.

iocard-schema-9

Schéma vstupního obvodu

 
iocard-schema-5

Rozložení pinů a vnitřní zapojení CMOS 4021

 

Data je potřeba nejprve zaznamenat do posuvného registru. To se provede při sestupné hraně na vstutu PL. Jenže je potřeba mít signál RTS v log. 1, aby byl napájen tranzistor v optočlenu. Proto je signál negovaný – při RTS=1 je na vstupu PL log. 0. Na vstupech posuvného registru je zajištěna log. 0 pull down rezistory 10KΩ

Dál už je funkce jednoduchá. Na hodinový vstup CP se posílá střídavý signál a po každé náběžné hraně se čte signál CD. To se provede celkem osmkrát. Uložená data poté reprezentují napětí na vstupních svorkách.

 

Čtení tedy vypadá takto:

  • RTS: 1 (náběžná hrana)
  • RTS: 0 (sestupná hrana – uložení paralelních vstupů do posuvného regisru)
  • RTS: 1 (napájení tranzistoru v optočlenu)
  • DTR: 1 (1. náběžná hrana – posuv prvního bitu na sériový výstup)
  • CD: ? (čtení prvního bitu)
  • DTR:0 (sestupná hrana)
  • DTR: 1 (2. náběžná hrana – posuv druhého bitu na sériový výstup)
  • CD: ? (čtení druhého bitu)
  • DTR:0 (sestupná hrana)
  • DTR: 1
  • CD: ?
  • DTR:0
  • DTR: 1
  • CD: ?
  • DTR:0
  • DTR: 1
  • CD: ?
  • DTR:0
  • DTR: 1
  • CD: ?
  • DTR:0
  • DTR: 1
  • CD: ?
  • DTR:0
  • DTR: 1 (8. náběžná hrana – posuv osmého bitu na sériový výstup)
  • CD: ? (čtení osmého bitu)
  • DTR:0 (sestupná hrana)

 

Testování vstupní části

Pro testování vstupní části jsem napsal jednoduchej testovací program.

iocard-3

Testovací program vstupů

 

Po spuštění programu je potřeba ho připojit s určitému COM portu. To se provede stisknutím tlačítka Obnovit, výběrem portu a kliknutím na tlačítko Připojit.

V programu jsou dále tlačítka RTS 0DTS 1DTR 0 a DTR 1. Těmito tlačítky lze manuálně ovládat dva výstupy COM portu. Při každém stisknutí DTR 1 se navíc čte vstup CD. Stav tohoto vstupu se zapisuje na CheckBox „Výstup“ a do textového pole ve tvaru čísla 0 (v případě log. 0) a 1 (v případě log. 1). Dvoukliknutím do tohoto pole ho vymažete.

Asi nejzajimavější je tlačítko Číst data. Tím se uloží data ze vstupů do posuvného registru a všech 8 bitů se postupně přečte. Data se zapíší do textového pole a na osm CheckBoxů. Čtení tedy lze jak odkrokovat (při ladění obvodu) tak automaticky vyčíst.

 

Ovládací program

Obvod je tedy funkční a otestován. K obvodu je dispozici knihovna LMSIOCard.dll, kterou lze importovat do jiné aplikace a přes ní tento obvod ovládat. Více se o této knihovně dočtete zde.

iocard-4

Jednoduchý program na ovládání karty

 

Fotky I/O karty

iocard-5

Testování oddělovače pomocí obvodu s LED a tlačítkem

 
iocard-6

Galvanické oddělení

 
iocard-7

Kompletní, funkční obvod

 
iocard-8

Pokusně zapojené pull down rezistory na CMOS 4094



Napsal Petan před pěti roky v kategorii Elektronika. Připojeno 1 komentář.
Přečteno 7693x.

Na programy zde poskytované není žádná záruka na funkčnost (viz licence). Jednotlivé články, stejně jako celý obsah stránek není návodem a slouží pouze k studijním účelům. Zapojení výše mají pouze informativní charakter! Vždy se řiďte originálním návodem k použití! Na elektrickém (vyhrazeném) zařízení smí pracovat pouze osoba s příslušnou kvalifikací dle vyhlášky 50/78 Sb! Vše tedy děláte na vlastní nebezpečí! Autor stránek nebere žádnou zodpovědnost za případné újmy na zdraví, životě, majetku a jiné!

Některé části textů mohou obsahovat texty, případně obrázky ze stránek Wikipedia a Wikimedia Commons. Tyto části jsou dostupné pod původní licencí Creative Commons.



1 | Diego | před pěti roky | elektronika2011.ic.cz

To sem zvědavej kdy ukážeš ňáký zapojení s tou kartou ;-)

  • Peťan: No, zatím nic konkrétního neplánuju… V létě není čas. Do zimy možná něco vymyslím. A co ty, už se něco rýsuje?

reagovat

Připojte váš komentář!

* Hvězdičkou jsou označena povinná pole. Autor stránek odpovídá vždy do komentáře.