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