multiplex 32x32 LED v PICAXE

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
Persink163054
Příspěvky: 29
Registrován: 05 říj 2011, 02:00

multiplex 32x32 LED v PICAXE

#1 Příspěvek od Persink163054 »

Dobrý den,

Potřebuji poradit se softwarovou částí. Stavím obvod na obrázku. Počítač vyšle pomocí portu COM seriovou informaci o tom které diody v matici mají svítit a které nikoliv (zatím řešeno formou stringu '12,24,78' pro diody na pozici 12,24,78 atd. Tzn. skupina uvedených čísel rozsvítí diodu, zbývající jsou vždy zhasnuté).

Tuto informaci přijme PICAXE a převede ji na paralelní (2x 5bitů, řádky a sloupce), pro ušetření ostatních pinů jsem použil dekodéry 74154. Přičemž dva IO 74154 mají na výstupech invertory, protože aktivní výstup je v log. 0, invertorem jej převedu na log.1, předřadím rezistor a svícení LED uzavřu na zbývajících dvou 74154.

Komunikace bych rád řešil způsobem odeslaní číselné sestavy, která zůstane zapsána do příchodu nové. Budu-li tedy chtít rozsvítít 12 diodu, odešlu na COM číslo 12 a pokud nepošlu třeba hodinu žádnou novou, tak tu hodinu bude svítit LED na 12. pozici.

Poradí mi prosím kdokoliv, jak napsat software k PICAXE, který se bude starat o svícení LED v multiplexním zapojení, tedy tu část, která se stará o zobrazení.

Předem děkuji.
Přílohy
multiplex_gif.gif
(98.87 KiB) Staženo 154 x

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#2 Příspěvek od Cowley »

Ahoj, zajímalo by mě, kolik bys rád nechal v jeden okamžik svítit diod?

Teď nemyslím fakt, že vždy bude svítit v tomto zapojení jediná :), než to začne s multiplexováním.

K čemu ten displej chceš používat a co tě nutí použít zrovna 74154 ?

Já používám displej s 74138 s P-Mosfety zapojené přes diody proti 74595

Podobné zapojení je rozebráno na těchto stránkách.

Sériová adresace posuvných registrů by mi přišla i v tvém zadání jednodušší.

Zpracuje se požadavek na všechny svítivé diody, připraví se hodnota uložená do PEEK od adresy 80H (právě po celých osmicích).
Po uložení všech 128H se rozjedou dvě smyčky, které odebírají hodnoty v paměti, vyzvednou číslo rozdělí jej a vyšlou.

Uživatelský avatar
Persink163054
Příspěvky: 29
Registrován: 05 říj 2011, 02:00

#3 Příspěvek od Persink163054 »

Ahoj,

zapojení má být schopno rozsvítit všechny diody najednou( jeví se jako rozsvícené, multiplex jak jsi už napsal, to neumí).

Nejde uplně o displej, ale o místa křížení. Chystám do jedné expozice indikační panel výpravčího, ovšem kvuli místu nemužeme použít všechny původní releové stojany (1,7m šířka, 2m výška, relé většinou NMŠ), takže to co nemůžeme použít musí dohnat počítač. Indikační panel zatím obsahuje 467 žárovek, ale do budoucna se počítá se zvětšením (připojením sousední stanice), takže když už se ten obvod staví, tak rovnou na 1024 (32x32) bodů. Navíc i když jich použiju méně, stále by tam byl dekodér 74154, takže bez vlivu na cenu. V místě křížení (před LED) se vyvede vodič a tím se muže budit tranzistor v jehož kolektoru už bude jedna ze 467 žárovek. Tranzistorů KF 507 mám velikou zásobu.

Použít dekodér 74154 vede k ušetření pinů na mikrokontroléru PICAXE. Použiju jen 10 pinů (2x5 bitů pro řádky a sloupce). Ovšem pokud bys věděl jak vyřešit podobné zapojení pro alespon 1024 diod, netrvám na převodníku 74154. Jen mi přišel jako ideální řešení, jak ušetřit piny. A zbývající volné, ponechat pro pozdější využití. A k tomu dojde.

Seriové adresaci se nebráním, teoreticky tak mohu postavit nekonečně dlouhý displej (podle délky posuvného registru), ale přiznám že požádám o pomoc.

Díky a hezký večer.

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#4 Příspěvek od lesana87 »

Máš představu / zkoušel jsi jak svítí žárovka, když je 1T zapnutá a 1023T vypnutá? Běžně se používá multiplex tak 1:32, aby to ještě nějak svítilo.

Uživatelský avatar
Persink163054
Příspěvky: 29
Registrován: 05 říj 2011, 02:00

#5 Příspěvek od Persink163054 »

žárovku spínám z křížení, z něj vyvedu vodič do báze tranzistoru. Pokud je bázi kmitočet (on to není kmitočet sinus, ale střídání hran obdélníku) větší než 75Hz, tak žárovka již svítí dostatečně, vlivem tepelné setrvačnosti. Nejideálnější je pokud střída dosahuje 1:1.

Ovšem při vysoké obnovovací frekvenci (100Hz a více), kdy diodu na displeji již vidíme jako jasný svit, děje se to samé i na tranzistoru.

Toto zapojení jsem už zkoušel, sestavil jsem si AKO s proměnou frekvencí, nebyl problém se žárovkou s jejím svícením.

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#6 Příspěvek od Cowley »

Myslim, ze misto multiplexu by byly lepsi moduly propojene treba po RS485, kazdy treba s 32 vystupy.
Postupne volane ridicim MCU do "akce" :)

Uživatelský avatar
Persink163054
Příspěvky: 29
Registrován: 05 říj 2011, 02:00

#7 Příspěvek od Persink163054 »

Přiznám se že RS 485 dost dobře nerozumím. Tady už mám vyřešenou část komunikace, kdy po serii COMem posílám data do PIC, akorát mám problém s obvodem a jejím zobrazením. RS 485 si ted hledám nějaké info na googlu.

Kolik by stál takový modul? Jde o to že v GME na Křižíkově v Praze koupím PICAXE 28 za 299kč a PICAXE 40 také za 299kč, kuprextit už mám, diody naletované taky (z dřívějších dob), takže nákup součástek už není tak finančně náročný. Pokud by cena modulů šla výrazně přes současný náklad (350kč), zní to blbě, ale chtěl bych se tomu vyhnout.

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#8 Příspěvek od Cowley »

Tak alespon misto multiplexu mit na tech mistech krizeni klopny obvod. Nejdriv vyresetovat vsechny krizeni a potom jednim vrzem nahazet do aktivace ty o ktere je zajem.

Uživatelský avatar
Persink163054
Příspěvky: 29
Registrován: 05 říj 2011, 02:00

#9 Příspěvek od Persink163054 »

To je pravda, ale to stejně neřeší to ohromné množství. Mě jde o tu softwarovou část, tedy jak by měl vypadat program, který se stará o výstupní piny.

A přestože jsem našel možnost přepínání řádku pomocí posuvného registru, tak bych narazil na problém, že musím posuvný registr dopočítat na začátek. Což je opět program v PICAXE.

Uživatelský avatar
Cowley
Příspěvky: 3087
Registrován: 04 úno 2005, 01:00

#10 Příspěvek od Cowley »

Taky ted, jak jsou proti sobe 74154 neexistuje v jeden okamzik co se tyce aktivace LED v krizeni nikdy "klid".

Uživatelský avatar
lesana87
Příspěvky: 3296
Registrován: 20 zář 2014, 02:00

#11 Příspěvek od lesana87 »

Persink163054 píše:Nejideálnější je pokud střída dosahuje 1:1.
nebyl problém se žárovkou s jejím svícením.
No jo, ale při obsluze 1024 žárovek, kdy v jeden okamžik svítí jen jedna, máš střídu 1:1024 a to má do 1:1 krapet daleko.

Uživatelský avatar
Persink163054
Příspěvky: 29
Registrován: 05 říj 2011, 02:00

#12 Příspěvek od Persink163054 »

Cowley:
Teoreticky ne. Ale pokud by nastala situace že svítím jednou diodou, stačí
mi zapsat řádek a sloupec a ten nechat cyklit. Tím bude svítit jen ta jedna. Problém nastává v okamžiku kdy jich chci rozsvítit více. Buď budu muset udělat dynamické pole, které bude se bude zvětšovat a zmenšovat podle počtu kolik jich má svítit. Nebo projet celou řadu, což ale znamená zdržovat se těma co se nemění stav.

Lesana:
V okamžiku kdy mi na celém displeji svítí jen jedna dioda (ve skutečnosti kmitá, ale natolik rychle že oko ji vidí jako svítící) a z ní si beru signál do popsané báze tranzistoru, tak už tu střídu tolik neřeším, protože tranzistor se otevíráa zavírá natolik rychle, že to stačí k rozsvícení vlákna žárovky. A pokud jich bude svítit třeba 256 najednou (uvidíme rozsvícený obdélník), bude situace stejná. Protože mě zajímá jen to konkrétní křížení. Samozřejmě pokud se na křížení dostane střída 1:10, tak dioda buď sníží jas, nebo při nízké frekvenci bude blikat. A to se projeví i na tranzistoru a následně na žárovce v jeho kolektoru.

V tomhle zapojení spatřuji velkou výhodu přesné adresace řádku a sloupce. Pokud bych použil posuvný registr na řádky, pak když budu svítit na 3. řádku a vzápětí na 2.řádku, tak budu muset projet posuvný registr tolikrát, než dosáhnu 2.řádku, což mi přijde zbytečné (situace kdy mezi nima žádné řádky nesvítí). Zde si napíšu který řádek a který sloupec rozsvítit a mohu tak vynechat ty které nechci změnit. Ovšem to je to co nevím jak napsat do kodu.

masar
Příspěvky: 12295
Registrován: 03 pro 2005, 01:00

#13 Příspěvek od masar »

Máš představu / zkoušel jsi jak svítí žárovka, když je 1T zapnutá a 1023T vypnutá?....
Nejideálnější je pokud střída dosahuje 1:1.
nebyl problém se žárovkou s jejím svícením...
No jo, ale při obsluze 1024 žárovek, kdy v jeden okamžik svítí jen jedna, máš střídu 1:1024 a to má do 1:1 krapet daleko...
V okamžiku kdy mi na celém displeji svítí jen jedna dioda (ve skutečnosti kmitá, ale natolik rychle že oko ji vidí jako svítící)...
..........
Ona mi pořád říká, kdy to hrajou a já … :?
Obrázek
:wink:

Uživatelský avatar
Persink163054
Příspěvky: 29
Registrován: 05 říj 2011, 02:00

#14 Příspěvek od Persink163054 »

masar:
No příspěvek je velice zajímavý, ale nevím na co narážíš. Možná by stálo za to, místo kravin, napsat kde konkrétně dělám chybu.

Takže já to řeknu jinak. Máme menší displej 8x8, na kterém svítí znak . (tečka) a to v podobě jedné diody. Pokud si z ní vezmu signál a přivedu jej do báze tranzistoru zapojení SE a v jeho kolektoru budu mít žárovku, tak ta žárovka bude svítit. Protože ta tečka, i když bude multiplexována, svítí dostatečně dlouho aby tranzistor (který se otevírá a zavírá v multiplexu, protože si bere signál z křížení do báze) rozsvítil žárovku.

Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 02:00
Bydliště: Kadaň
Kontaktovat uživatele:

#15 Příspěvek od Jenda_KL »

Abys dosáhl rozsvícení všeho najednou, tak je potřeba použít nějaké osvědčené zapojení (mux 1:8 ), ne tohle.
Jak již bylo napsáno, vem nějaké posuvné registry (4094) a udělej to z nich. Jsou to 3 dráty z procesoru a při troše šikovnosti by tam ani nemusel být. Vlastní ovládání bude pak spočívat v poslání řádkových dat a výběru sloupce. To se zopakuje pro 8 sloupců a stále dokola.
Edit: nebo můžeš vzít kýbl těch 4094 a rovnou posílat sériákem těch 1024 stavů přímo na žárovky.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“