Motherboard 2

Tomáš Svoboda tsvoboda
Středa Březen 17 14:25:16 CET 2004


Zdravim.

Povodny zamer bol poradit p. Kavanovi obvodove riesenie na budenie 20 ks 7-
segmentoviek na 8V, predpokladam, ze so spolocnou anodou, tak sa to pokusim 
zhrnut (prepacte, ze je to dlhe, ale chcem pre pripadnych zaujemcov poukazat 
na co najviac kladov a zaporov roznych rieseni aj s odovodnenim).

Pan Kostomlatsky odporucil na zaklade svojich skusenosti multiplex (aj ked na 
mcu.cz vystavil konstrukciu sedemsegmentovky ktoru potom pouzival v statickom 
rezime). Ak som dobre pochopil, jeho riesenie pre MUX je priamo na nohy 
vacsieho atmela dat budice pre segmenty (ktore su u neho navzajom pospajane, 
t.j. 7ks; pre SA to teda budu spinace do zeme, napr. NPN) a pre jednotlive 
sedemsegmentovky (v zapojeni ako prudove zdroje, aj ked s konstantnou 
zatazou, t.j. stacia odpory v serii); a potom z takejto mensej dosky (ktora 
sa da dat do tieniacej krabicky) rozvadza vodice - ako spomenul, pre uverdeny 
priklad 7+20=27. Bezne '51 maju aj po pouziti nejakych "noh" na I/O k 
dispozicii okolo 30noh, takze to tak viac-menej naknap vyjde (ak sa pouzije 
interna programova aj datova pamat). Ak chceme zachovat stredny prud (ergo 
svietivost), mali by sme zvacsit prud na 7-nasobok (aj ked padli tvrdenia, ze 
to nie je potrebne a ze subjektivna svietivost segmentu je rovnaka, ked sa 
budi 20mA kontinualne alebo 20mA pulzne s plnenim 1:7 - ja mam inu skusenost, 
ale vyskusajte si to u svojho displeja, moze to tak vdaka konstrukcii LEDky 
naozaj byt, aj ked si to nemyslim, najma ak vyrobca explicitne specifikuje 
pulzny prud) - v takom pripade budice segmentov (a aj rozvod k segmentom, 
najma ak su vedene ciastocne cez DPS) by mali byt dimenzovane na 7*20*20mA = 
2.8A (s tymto treba ratat aj pri budeni ak sa pouziju bipolarne budice - je 
vhodne pouzit darlingtony). Na tento prud musi byt dimenzovany aj zdroj (je 
to ten presne ten isty prud, co moze spoterbovat panel v statickom rezime pri 
rozsvietenych vsetkych segmentoch), avsak treba mysliet na to, ze tu je 
spotreba pulzna - pri obnovovacej frekvencii 50Hz (a odporucam viac - aspon 
70Hz) dlzka pulzov je nasobkom 1/(50Hz*7(MUX))=1/350Hz=cca 3ms. Pre spinacie 
ucely je vhodne kvoli mensim stratam mat tranzistory v saturacii, avsak pri 
bipolarnych tranzistoroch treba mysliet na pomalsie zotavenie (co sa 
prejavuje slabym svitom prave nesvietiacich segmentov "susediacich" so 
svietiacimi) bud pouzivanim na hranici saturacie (vhodne zvoleny delic v 
budeni alebo lepsie Schottkyho dioda - avsak treba ratat s vacsimi stratami, 
co sa prejavi vacsim zdrojom a zohrievanim tranzistorov) alebo vhodnou 
casovou "prodlevou" po vypnuti budica pred zmenou stavu budicov segmentoviek; 
ale je daleko vhodnejsie pouzit vykonovy MOSFET (tu typu N; a pri vhodnej 
volbe typu - s tzv. logickym riadenim - je aj ich budenie trivialne - len ich 
priamo pripojite na vystupy atmela).  Pre budenie jednotlivych segmentoviek 
je potrebny prud 7(MUX)*20mA=140mA (v kazdom okamihu svieti len 1 segment 1 
sedemsegmentovky), takze vyhovie aj integrovany budic PNP (niektory "opacny" 
ekvivalent k ULN2803) - a samozrejme vhodne zvolene seriove odpory. Ovladaci 
program je trosku zlozitejsi (treba dodrziavat casovanie). Z dlhsich rozvodov 
treba ocakavat vyzarovanie rusiacich signalov. S vacsim prudom moze byt 
spojena aj zivotnost resp. spolahlivost segmentoviek; cast vyrobcov 
specifikuje len staticky budiaci prud, t.j. nezarucuje nic pre ine pouzitie 
(ako vsak p. Kavan pise, toto nie je jeho pripad).
Taketo riesenie je naozaj proti ruseniu viac-menej bezpecne, kym "nepadne 
uplne" Atmel, na jeho vyvodoch je to, co tam chcete mat; takze p. Kavanovi 
toto riesenie asi bude (s prihliadnutim na uvedene poznamky) vyhovovat.

Ak by sa mal pouzit "staticky" rezim, treba "rozsirit" pocet vyvodov 
procesora, bud shiftregistrami+latch (napr. 74HC595) (a v takomto pripade by 
na riadenie stacil aj napr. AT89C2051 ci hoci aj nejaky "prtaty" 8-nohovy 
PIC) alebo latchmi typu 573/574; pripadne sa moze priamo pouzit kombinacia 
shiftregister-latch-prudovy budic (Toshiba, Allegro). Tieto su nachylne na 
zarusenie (ako cokolvek co ma vstup CLK) a tiez treba mysliet na maximalnu 
zatazitelnost vyvodov atmela (pullup) pre spolocne signaly typu CLK ci LATCH. 
Je to tiez mozne realizovat na "malom" plosaku a zakrabicovat do plechu proti 
ruseniu, potom vsak treba rozvadzat 1anoda(prip. 20anod, na kazdu segmentovku 
zvlast)+20*7=141(resp. 160) vodicov (avsak len ten 1 spolocny na anodu musi 
byt dimenzovany na vacsi prud) a rozvody nemaju viac-menej co vyzarovat. 
Proti zaruseniu je mozne sa branit pravidelnym obnovovanim informacie v 
latchoch, treba to vsak robit rychlo (stovky Hz), cim sa trocha zozlozituje 
ovladaci program (aj ked tu casovanie vobec nie je kriticke; a vacsinou ten 
program aj tak nema co robit...); vyzarovanie by sa vsak zmenit prilis nemalo 
(obnovuje sa v podstate ta ista informacia, cize na vodicoch k zmene 
nedochadza). Zdroj nie je zatazovany pulzne, ale dimenzovany musi byt na 
2.8A. 

Ak sa ma riadit viac segmentoviek, je uz potreba aj u MUX 
riesenia "rozsirovat" pocet noh Atmela (alebo pouzit viac Atmelov, to vsak je 
napr. u bodovych panelov s potrebou scrollu nevhodne), prave napr. 
kombinaciou shift-latch-prudovy zdroj. Ponuka sa tu aj moznost dat tuto 
kombinaciu priamo na dosku segmentoviek (takto to robime my), cim sa 
zjednodusuje rozvod (netereba tahat droty "z krabicky" k jednotlivym anodam, 
len data-clock-latch-napajanie, je to "vyrabatelnejsie" a lacnejsie 
riesenie), ale straca sa vyhoda "krabickovo tieneneho" riesenia a treba 
riesit problem dlhych rozvodov CLK/LATCH a tiez moznost rusenia logickych 
clenov z pulzov v napajani. Inherentna odolnost voci ruseniu sa straca, ale 
stale to vdaka pravidelnemu obnovovaniu nemusi vyraznejsie vadit (najma u 
jednofarebneho displeja). Samozrejme, vsetky ostatne spominane nevyhody MUXu 
(vyzarovanie, pulzy do zdroja, zlozitejsi SW, vykonove budice a rozvody) 
ostavaju.

Existuje este moznost, ktoru som nadhodil (a ktoru p. Kostomlatsky s 
prehladom zmietol zo stola :-), konstruovat panel z modulov, kazdy po 2 
sedemsegmentovky + 1AT89C2051(+XTAL apod) + 2xULN2003 + seriove odpory. Dve 
sedemsegmentovky na modul sa hodia napr. pre hodiny; navyse modul ide urobit 
tak, aby sa dali dat sedemsegmentovky tesne vedla seba, ak je to treba. 
Atmely by staticky drzali vystupy, co znamena inherentnu odolnost voci 
ruseniu, pricom kazdy by mal unikatnu adresu a vhodnym seriovym protokolom by 
sa cely panel dal riadit hoci priamo z PC z akehokolvek terminaloveho 
programu (bez potreby ovladacieho atmela - ale ten tam samozrejme byt moze). 
Ku kazdemu modulu by viedli len GND+VLED+seriove data(+VCC, ale da sa z VLED 
robit 78L05). Je to sice o nieco drahsie riesenie a trocha aj programovo 
narocnejsie (mozno trocha menej ako MUX, aj ked sa moze trosicka 
skomplikovat, ak komunikacny protokol bude obsahovat zlozitejsiu paketizaciu, 
kontrolne sumy, synchronizacne pakety), ale neskryva v sebe ziadnu zaludnost; 
vysledna konstrukcia by mohla byt uhladnejsia, servis by mohol byt trivialny 
(vymenou modulu cvak-cvak) a proti ruseniu by to malo byt odolne rovnako ako 
doska s riadiacim Atmelom. Pripustam, nikdy som to neskusal - ako som uz 
uviedol, u nas je bohuzial prioritou cena.

Samozrejme si vyhradzujem pravo na omyl, ale vzhladom na dlzku threadu ak 
horeuvedene nema zasadne chyby, prosim, komentare na wek@evona.sk.

Moje skusenosti su s konstrukciou panelov (napr. 3*16*2color*7segment 2.3", 
alebo 8*80*2color bodovy, vsetko MUX), ktore sa v nasej firme seriovo 
vyrabaju (v suhrne ide o stovky kusov), takze bolo treba okrem funkcnosti 
mysliet aj na cenu, "vyrabatelnost"  a "servisovatelnost".

Howgh.

Jano Waclawek




Další informace o konferenci Hw-list