Programátor PIC ze šuplíkových součástek.
Zkuste se nejprve podívat, zda se nevyplatí slušný programátor koupit hotový.

V situaci, kdy v sobotu odpoledne zjistíte, že je potřeba zítra dostat do PIC program a programátor je v práci, nebo žádný nemáte, přátelé co jím disponují jsou mimo město a obchody se součástkami mají zavřeno, je jedinou šancí smontovat programátor z toho, co se doma najde. Právě takovou konstrukci Vám teď představím. Vzhledem k počtu odporů použitých v této konstrukci pro docela jednoduchý účel, není tato konstrukce jistě ideální, protože programátor se dá postavit s podstatně méně vynaložením práce pro pájení. V každém případě pracuje dobře a pokud jste v nouzi, máte chuť si pořádně zapájet, chcete mít trochu něco neobvyklého nebo milujete tranzistory, pak je to konstrukce pro Vás ideální. Zapojení se hodí i pro kroužky, kde se učí pájet, protože tady je co pájet a použité poučástky snesou hodně, jen je tato konstrukce zase ale vhodná spíše pro lidi schopné programovat, protože o tom jsou jednochipy především.

Pokud se budete ptát, proč si v nouzi raději nepostavit nějaký velice jednoduchý programátor napájený ze sériového portu, pak je to jen otázka volby. Já raději budu hodinu pájet součástky, než abych pájel 10 minut a pak se půl dne rozčiloval nad něčím co zlobí jen proto, že to konkrétní port není schopen utáhnout a případně ničil OTP PICy. Další věcí může být i okamžitá nedostupnost zenerky potřebné hodnoty, které se v zapojeních napájených ze sériového portu vyskytují.

Co budeme potřebovat ?

Především je to zásoba odporů. Až na vyjímky není jejich hodnota nijak kritická a tak můžete místo 47k odporů, kterých je v konstrukci spousta, klidně použít 33k, 22k nebo co se najde a totéž platí o odporech 4k7 jichž je v konstrukci také dost. Prostě většinu hodnot je potřeba dodržet jen řádově. Dále budeme potřebovat 3 PNP tranzistory, 6 NPN tranzistorů a jeden dvojitý operační zesilovač LM358, TL062 nebo jiný se stejným zapojením vývodů, který pracuje i při 5V (dvojitý OZ byl použit právě z důvodu, že se alespoň dle mých zkušeností v šuplících vyskytují nejvíce). Pak budete pro napájení potřebovat adaptér do zdi 12V nestabilizovaných, který nezatížený dává podstaně větší napětí, což je vlastně každý běžný a stačí, když bude umět dodat 300mA. Dále budete potřebovat stabilizátor 5V, tedy např. 78L05, nebo 7805. Dva elyty jistě doma najdete stejně jako kondenzátory 100n nebo podobnou hodnotu. Konektor pro paralelní port jistě najde doma každý, kdo už do něj něco zapojoval, nebo lze vzít ze staré karty sériových portů. 2 LED diody jistě také nebudou problém, použil jsem 2mA, ale stačí změnit odpory před nimi a můžete použít třeba 10mA LED. Konektor na napájení by také problémem být neměl. Patice SOKL18 použitá v konstrukci není nutností, ale pokud často programujete např. PIC16F62x nebo PIC16F84 mimo desku plošných spojů, jistě se její osazení vyplatí. Jediný problém snad může být kabel, ale i tam se dá improvizovat a tak lze v nouzi použít konektor jen jeden do paralelu PC a natahat signály šestižilovým kabelem připájeným přímo do desky plošných spojů. Tedy myslím, že co se týče součástek je opravdu konstrukce vyrobitelná z běžného šuplíku bastlíře.

Jak to pracuje ?

Napětí ze stabilizátoru 5V živí OZ. Dále se z 5V odporovým děličem vyrábí 3.15V, které se zesilují operačním zesilovačem za pomoci 2 tranzistorů na 13V. Zapojení dvou tranzistorů za výstup OZ se nemusí zdát příliš šťastné, ale tak jak jsou zapojeny umožňují, aby rozdíl napájecího napětí a 13V mohl být hodně malý a umožňuje využít běžný 12V adaptér do zdi, který normálně dává více než 12V, běžně nezatížený 16V. Pro zapojení stabilizátoru už by ale jeho napětí pro získání 13V nemuselo být vždy dostatečné a tak aby vyhověl téměř každý adaptér, udělal jsem to tak, aby stačilo co nejmenší napětí. V případě nutnosti pak lze vypustit i ochranou diodu 1N4007 (nahradit drátovou propojkou) na vstupu napájení, čímž se zbavíme ztráty napětí na ní, ale zaplatíme za to ztrátou ochrany před přepólováním napájení. Možná se teď ptáte, proč to tak komplikuji a nepoužiji 12V stabilizátor podepřený diodou. Ale uvědomte si, že programátor PIC potřebují především lidé, zabývající se hlavně logikou a jednochipy a lehce se tak může stát, že sice najdou v šuplíku stabilizátory 3V, 3.3V a 5V, ale o jedné 7812 se šuplíku jen kdysi zdálo. OZ se mi zdál k nalezení snažší. Myslím že snad není ani možné, že by vhodný OZ někdo neměl (úplné začátečníky prosím nepočítejte). Jinak u OZ jak je použit bude stačit, když bude pracovat od 1.5V nad zemí a 1.5V pod napájecími 5V, tedy opravdu vyhoví ledacos (zkusil jsem uvedené LM358 a TL062). V bázi tranzistoru NPN za OZ je možné spatřit dělič z odporů 47k a 15k, což není sice u LM358 nutné, protože umí výtup od nuly, ale právě aby šlo použít všelijaké OZ tam ten dělič je a na výstupu OZ je tím pádem něco přes 2V (pro 13V na výstupu oné části zapojení). Co je nepěkné na tomto řešení je snadné rozkmitání, kterému je potřeba zabránit použitím elytu 33u za PNP tranzistor z jehož kolektoru vychází 13V. Hodnotu není potřeba dodržet přesně, ale ten kondenzátor je tam velice vhodný. Pokud máte OZ více typů se stejným zapojením vývodů, můžete na jeho místo osadit patici a zkusit, který je vhodný. Tedy máme +5V a +13V a můžeme je spínat do programovaného chipu, což se zde provádí pomocí NPN a PNP tranzistoru a není na tom nic neobvyklého. Dále je v zapojení tranzistor jako spínač, který stahuje napětí na výstupu Clock k 0 a nahoru se napětí dostává pomocí 4k7 pull-up odporu. No a poslední částí pro výstup Data je totéž a použití pull-up zde umožňuje, aby ve stavu vysoké úrovně na výstupu Data mohl programovaný jednochip onen pull-up stahovat a tak komunikovat po stejném vývodu programátoru, protože ten se využívá jako obousměrný. Abychom pak dostali výstup z jednochipu zpět do PC, je zapojen další tranzistor přes odpor 47k k vývodu Data a jeho výstup pak vede do paraleního portu PC. Odpor 47k před bází zmíněného tranzistoru spolu s pull-up 4k7 na Data signálu sice tvoří dělič napětí a tedy vysoká úroveň na Data nedosahuje až napájecího napětí, ale je s přehledem dostatečná. Tranzistory je možno použít prakticky libovolné univerzální, jen je vhodné, aby tranzistory spínající napětí 5V a 13V, byly stavěny alespoň na 100mA a tranzistor PNP použitý pro získání 13V také vydržel výkonovou ztrátu, která na něm vznikne tím jak reguluje napětí 13V ze vstupního napětí. Co se týče proudového zesilovacího činitele tranzistorů, nemusí být zrovna veliký, ale protože jsem chtel také zkusit, jak to bude reagovat v méně vhodném případě (tedy s tranzistory s velikou betou), zkusil jsem BC547C a všechno pracovalo také dobře. Vhodné by byly např. BC548A a BC558A, ale našel jsem doma jen B a C. V každém případě to bude pracovat i když nebude beta tranzistorů příliš vhodná k odporům v oněch tranzistorových spínačích a nebavíme se tady o nijak vysokých kmitočtech, tedy nemá cenu si s tím moc lámat hlavu. Jinak mají také tranzistory vlastnost VCE(sat). Je to velikost napětí mezi kolektorem a emitorem, když je tranzistor v saturaci. Ale protože pracujeme s pár mA proudu a toto napětí je na proudu IC závislé, není zde ani toto příliš zajímavé. Ve schématu není zakreslena patice, která je zakreslena na osazovacím plánu a taktéž tam není zakreslen odpor na vývodu 10 patice k zemi (4k7). Je tam z důvodu programování PIC16F627 a PIC16F628, které tak mají jasně definovaný mód na pinu PGM. Jinak do patice můžete vkládat PIC se stejným uspořádáním programovacích pinů jako PIC16F84 v DIP18. Ve schématu je zakreslen pouze ICSP konektor, který je v konstrukci jako pinová lišta s pěti kolíky pro připojení programovacího kablíku pro programování PIC v desce plošných spojů.



Deska plošných spojů.

Klikněte ZDE pro obrázek.

Deska je v rozlišení 300dpi a tedy stačí vytisknout na tiskárně pixel na pixel v rozlišení 300dpi a získáte předlohu 1:1. Pokud Vaše tiskárna umí nejméně 600dpi, není nic jednoduššího než si desku zvětšit na dvojnásobek. Vhodným programem pro tisk může být např. program "Imaging" z "Příslušenství" Win98, kde lze v okně pro tisk zadat v možnostech tisk pixel na pixel a také si ve vlastnostech tiskárny nezapomeňte zvolit rozlišení 300dpi nebo jak jsem psal výše. Pokud chcete využít pro výrobu desky fotocestu, doporučuji tisk na pauzák (pokud nepoužíváte fólii) a nastavit co nejčernější tisk. I tak ale některé laserové tiskárny, nebo spíše tonery poskytují velice podprůměrný výsledek ohledně černých ploch, které místy prosvítají (poznáte pohledem proti světlu jako průsvitné fleky). Někdy se Vám povede vytisknout obrázek dvakráte přes sebe, tedy vytisknout jej schválně na jedno místo dvakráte. Ne vždy se ale tiskárna strefí úplně na stejné místo a tak to někdy chce více pokusů (nevím jestli mám takovou smůlu či podavač, ale napoprvé se mi tiskárna netrefí skoro nikdy). Návrh desky je ale docela hrubý, takže i když se tiskárna o nějakou část milimetru utne (tedy hlavně její podavač), není to u této desky problém a černá je hlavně opravdu černá, jen je potřeba si dát pozor na slití plošek, které jsou co největší, aby se dala deska dobře pájet i lidmi, co to ještě úplně neovládají a nemají lepší vybavení - začátky nebývají jednoduché.

Jinak by deska měla mít jistě v rozích značky pro ustřižení. Ale když zvážíte skutečnost, že pod desku můžete použít spodní díl nějaké krabičky dle své volby a vkusu, abyste si nepoškrábali vývody součástek stůl, je jasné, že i díry v rozích a výsledné přesahy desky od spojů ke kraji budou u každého individuální a tak je lépe si desku vyleptat s většími přesahy než by bylo úplně nutné a na rozměr pak ustřihnout a udělat v rozích díry pro šrouby dle potřeby. Já desku do krabičky nedal, tedy jsem desku zmenšil jen na malé přesahy od spojů bez děr v rozích.

Osazení.

Klikněte ZDE pro obrázek.

Při osazování si dejte hlavně pozor na to, kde má který tranzistor jaký vývod. Jsou zakreslena pouzdra TO92 a vývody popsány pro BC546,7 nebo 8 a BC556,7 nebo 8, ale vyrábějí se i tranzistory ve stejném pouzdře s jiným rozložením vývodů (např. BC639). Pokud použijete jiné tranzistory, dejte si tedy na rozložení vývodů pozor. Odpory, jejichž hodnoty je hodno zachovat jsou kresleny v osazení zeleně. Pokud tyto hodnoty právě nemáte, jde jen o odporové děliče, tedy stačí zachovat jejich poměry a v případě potřeby si je přepočítat. Odpory 1k5 před LED diodami jsou určeny pro 2mA LED, pro 10mA LED je vhodné je zaměnit za odpory 330R.

Seznam součástek.
6 ks NPN tranzistory dle textu (např. BC548x)
3 ks PNP tranzistory dle textu (např. BC558x)
1 ks stabilizátor 78L05, nebo jiný 5V
1 ks dioda 1N4007 nebo jiná pro ochranu proti přepólování napájení
1 ks dvojitý operační zesilovač dle textu (např. LM358)
2 ks LED - 2mA 3mm červená a zelená, nebo dle vkusu či šuplíku
1 ks Elyt 100u/25V nebo i větší hodnota
1 ks Elyt 33u/16V nebo i větší hodnota
2 ks C keramický 100n nebo i větší hodnota v keramice
10 ks odpor 47k (stačí hodnoty řádově okolo)
12 ks odpor 4k7 (stačí hodnoty řádově okolo)
1 ks odpor 47k
1 ks odpor 15k
1 ks odpor 5k6
1 ks odpor 4k7
1 ks odpor 3k3
3 ks odpor 1k5
1 ks patice pro DIP18 (SOKL18, nebo precizní dle Vaší volby)
1 ks 5pin pinová lišta pro připojení ICSP kablíku (odlomit z S1Gxx)
1 ks napájecí konektor (např. SCD-16)
1 ks konektor CANON25 MALE (samec) do plošných spojů
1 ks deska plošných spojů

Použijete-li 10mA LED místo 2mA, pak si zaměňte 2ks 1k5 odporů (ze 3 psaných) za 330R.

Dále ještě adaptér do zdi dle textu a prodlužovací kabel na paralelní port, pokud možno raději kratší (zkoušeno 2m, bez problému), což už sice není přímo součástí konstrukce, ale budete to k programování PIC dozajista potřebovat :). Pokud nebudete programovat jen PIC v patici, pak ještě 5-ti žilový kabel s konektory pro zapojení do pinových lišt konektorů pro ICSP (propojení desky s programovaným PIC a programátoru).

Provedení.

Za jedno odpoledne zhotovenou, osazenou a vyzkoušenou desku můžete vidět níže. Jde o úplně amatérsky zhotovenou konstrukci "doma na koleně ze součástek ze šuplíku".


Rozhodně lze jen doporučit před připojením k paralelnímu portu PC proměřit napětí +5V a +13V proti GND na místech označených v osazovacím plánu. Dále můžete pro jistotu ještě vzít ohmmetr a změřit odpor od jednotlivých špiček konektoru k zemi, zda je odpor od špičky k zemi řádově v kiloohmech dle Vámi použitých odporů. Pokud nemáte jistotu, že se Vám při pájení náhodou nepodařilo vytvořit nechtěně spoj mezi piny konektoru, můžete proměřit ohmmetrem sousední piny konektoru vzájemně. Měřením na konektoru ohmmetrem ničemu neublížíte a budete klidnější při prvním připojování k PC.

Software.

Zdálo se mi nošením dříví do lesa psát soft, který se dá stáhnou zdarma na webu a je dobrý. Najdete jej na: IC-PROG. Je to moc hezký program podporující velké množství typů PIC firmy Microchip a také I2C EEPROM jako např. 24Cxxx atp. Pokud si jej stáhnete a vyrobíte si zde uvedený programátor, stačí po spuštění IC-PROG stisknout F3 a nastavit "TAIT Serial Programmer" a nastavit v "Communication" inverze dle obrázku.



Samozřejmě také nezapomeňte nastavit Vámi použitý LPT port. Před programováním vždy nejprve spusťte program IC-PROG a teprve až poté zasouvejte programovací kablík do desky nebo PIC do patice. Spuštěním programu se totiž vypnou všechna napětí na patici a konektoru ICSP. Nelze mít PIC v patici a programovat zároveň jiný po ICSP kablíku, což je sice jasné, ale raději na to upozorňuji. Patice není zapojena pro programování jiných PIC než než DIP18 se sériovým programováním. tedy např. PIC12C508A musíte programovat přes ISCP konektor a případně si udělat patici na kablíku pro programování dalších PIC. Pro programování pamětí 24Cxxx je také nutné si udělat redukci a tedy piny se zapojí jako Vdd = +napájení, Vss = GND, Clock = SCL, Data = SDA, Vpp = nezapojen.

Další info.

Na těchto stránkách můžete najít další podobné články:

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