Mnohabitový paralelní výstup z RS232C s galvanickým oddělením.

Tato konstrukce umožňuje převádět výstup z RS232C (např. ze sériového portu PC) na mnohabitový paralelní výstup. Proč nepíšu rovnou kolikabitový je z důvodu, že celá konstrukce je koncipována tak, že lze počet bitů výstupu vyrobit přesně podle své potřeby. Tak jak je konstrukce navržena, je určena pro spínání např. relé, buzení segmentů mnohasegmentových displayů či spínání malých žárovek atp. Protože výstupy jsou opatřeny obvody ULN2803, je možné každým výstupem sepnout zátěž až 500mA a zátěž může mít indukční charakter, protože ULN2803 obsahuje i ochrané diody pro každý výstup. Spínáním relé je pak možné pomocí těchto relé spínat např. zařízení napájená ze sítě a to v počtu dle potřeby. Zapojení není určeno ke generování rychlých průběhů signálů.

Zapojení.

Zapojení pracuje tak, že výstup TXD z RS232C je pomocí optočlenu přiveden na vstup PIC12C508A. Tento jednochip převede příchozi data na signály pro posuvné registry, které jsou zřetězeny tak, že přetékající bity se přivádějí do následujících, tedy řetězec může být dlouhý dle požadavku od pouhých 8bitů až po délku, která bude akceptovatelná z hlediska elektrických parametrů, tedy je limitována jen velikostí kapacity všech vstupů posuvných registrů a vlastnostmi spoje, který pro mnohonásobný posuvný registr může být i hodně dlouhý. Nezkoušel jsem jaký je maximální možný počet posuvných registrů připojených na onu sběrnici, ale lze předpokládat, že asi málokdo bude potřebovat takové množství bitů na výstupu, že by se mohly tyto věci začít nepříznivě projevovat. Zapojení je provedeno tak, že napájení +5V je stabilizováno z napětí napájecího pomocí 7805, tedy by zařízení mělo být napájeno alespoň z 8V. Spínaná relé či cokoli jiného je spínáno k zemi a tedy pokud použijete 12V relé, je možno je zapojit vinutím přímo na dva příslušné piny, tedy mezi +12V a výstup z ULN2803 a celé zařízení napájet z 12V. (ULN2803 není zakreslen ve schématu). Pokud potřebujete logické signály v CMOS logice, lze ULN2803 vypustit a používat výstupy rovnou z posuvných registrů (jako je to zakresleno ve schématu bez ULN2803). Jako posuvné registry jsou použity 74HC595, které obsahují mimo posuvného registru ještě záchytný registr pro výstup, tedy výstupy se změní všchny najednou v celé řadě posuvných registrů až po nasunutí všech bitů a hodinovém pulsu pro uložení nasunutých bitů do registru pro výstup. O všechny signály řídící posuvné registry včetně převodu dat z ASCII HEXa zápisu ze sériové linky na data pro ně se stará PIC12C508A, který musí být samozřejmě pro chtěnou funkci naprogramován programem, který uvádím níže. Zařízení nemá ochranu proti přepólování napájení.

Schéma.


Deska plošných spojů.

Klikněte ZDE pro obrázek ze strany spojů.

Deska je v rozlišení 300dpi, tedy pro tisk na tiskárně pixel na pixel v rozlišení 300dpi k získání předlohy 1:1. Pozor jen na to, že deska je kreslena jako tři části, odělené červenými čarami. Je to z důvodu, že nemohu vědět, kolik bitů výstupu (nebo jinak řečeno kolik relé) si budete přát spínat a tak je nutné si střední část vložit do desky kolikráte potřebujete. Každá jedna kopie vytváří 8 výstupů, tedy např. pro 32 výstupů si nakopírujete první část, pak 4x druhou část a nakonec třetí část. K tomuto Vám bude stačit prakticky jakýkoli program pro malování, třeba přímo Malování z Windows9x.

Osazení.

Klikněte ZDE pro obrázek ze strany součástek.

Osazení je zřejmé z obrázku a prostřední část desky je vždy stejně osazena ať jich použijete za sebou jakýkoli počet.

Program pro PIC12C508A.

PIC12C508A je jednochipový mikropočítač (mimo jiné velice laciný) a je nutno jej pro tuto funkci vypálit, tedy dostat do něj programátorem pro PIC níže uvedený HEX soubor. Pozor, je to OTP, tedy vypálit se dá jen jednou a nedá se mazat jako typy jednochipů s FLASH pamětí.

Program po resetu nuluje prvních 256 bitů výstupu, tedy pokud by měl být řetězec posuvných registrů delší než 256 bitů, je potřeba si do programu doplnit nulování více bitů, nebo v případě že nulování výstupů po resetu nepožadujete, jej z programu odstranit.

RSPICOUT.HEX

Poznámky v ASM jsou psány dvoujazyčně (jak mi to kdy padlo pod prsty se snahou psát česky), velká malá písmena také jak kde, prostě žádná paráda, ale psáno "stylem plesk to tam, důležitá je funkce a ne vzhled zdrojáku".

RSPICOUT.ASM

Software pro PC.

Můžete napsat sám dle svých potřeb či využít nějaký existující terminál pro sériový port. Zařízení komunikuje 9600bps 8N1. Formát zápisu je velice jednoduchý a obnáší jen zaslání řetězce s hexadecimální hodnotou co chcete na výstupech následovanou znakem #13, tedy CR, nebo chcete-li Enterem. Pošlu-li tedy do sériového portu "FFFF" (bez uvozovek) následované znakem #13, dostane se do prvních 16 bitů výstupů zapsaná hodnota, tedy zde samé jedničky. Jednička poslaná do bitu znamená, že na výstupu 74HC595 se objeví jednička, tedy výstup ULN2803 je stažen k zemi a pokud je mezi + a oním výstupem relé, po poslání jedničky do něj se sepne. PIC jak je naprogramován, posílá přijaté znaky každý jako 4 bity do posuvných registrů okamžitě po příjmu a převede je do výstupu po přijetí znaku #13. Z toho je zřejmé, že i když použijete jen jeden 74HC595, můžete posílat klidně i hodně dlouhý řetězec, ale pak jen poslední 2 cifry se zapíší do výstupu jedné zapojené 74HC595 (8bitů) a zbytek bez užitku přeteče. Pokud je délka poslaných dat kratší než je dlouhý řetězec posuvných registrů, pak se zase stane to, že do vyšších stupňů se přenesou hodnoty z předchozích stupňů. Tedy ideální stav je posílat vždy číslo správně bitů dlouhé následované #13. Znaky se posílají do sériového portu jako ASCII vyjádření v hexadecimálním zápisu a u znaků A až F je jedno, zda se zapisují malými či velkými znaky (možno i kombinovat malá a velká písmena v jednom čísle). Jiné znaky se ignorují, tedy klidně můžete zapisovat do čísel i mezery atp., nic se nestane, jiné znaky než "0" až "9", "A" až "F", "a" až "f" a #13 se ignorují. Jakýkoli reset nemá význam, protože delší nasunuté číslo prostě předchozí vysune ven, tedy i kdyby se před tím než odešlete svoje číslo něco dostalo do posuvných registrů, svým číslem to vytlačíte ven a znakem #13 dostanete na výstup.

ZDE je možné si stáhnout program pro Win32, který ovládá zaškrtáváním 16 checkboxů 16 bitů výstupů. Pokud si vyeditujete COM.CFG, můžete ještě před spuštěním programu na prvním řádku nastavit, který COM port použijete pro připojení zařízení a také si na dalších 16ti řádcích pojmenovat jednotlivé výstupy, tedy text u checkboxů. Program se neinstaluje, stačí rozbalit a spustit z adresáře kam jej umístíte včetně jeho konfigurace COM.CFG.

Licence a záruky.

Materiály jsou Vám pro nekomerční použití k dispozici volně, další publikování a komerční využití jen se souhlasem autora. Autor neručí za jakékoli škody způsobené využitím těchto materiálů.

Autor: Jiří Bezstarosti