Ajattelin mikro-ohjaimeksi jotain PIC16x84 -piiriä. Näitä käsittääkseni
voi ohjelmoida PC:n rinnakaisportin avulla ja ilmainen C-kääntäjäkin
löytyy, right?
Jos piiri sykkii ~12Mhz:n taajuudella, riittääkö potku lukea
sarjaliitännästä 14 kbit/s? (olettaen että näytössä 700 lediä ja
virkistystaajuus 20Hz -> 700*20=14000)
Edulliset led-pistematriisit edelleen hakusessa...
--
Jaakko Holster
yaggo at kaamos.org
Sent via Deja.com
http://www.deja.com/
Ei sarjaportista tiedon luvun pitäisi olla ongelma, ledien ohjaaminen (jos
se on kontrollerin tehtävä) voi olla hankalampi toteuttaa ilman
lisäohjaimia.
Taitaapa noissa isoissa näytöissä olla niin että yksi kontrolleri ohjaa vain
pientä osaa näyttöä ja näitä palasia on sitten kiinni toisissaan. Yhteisesti
kaikki voivat kuunnella jaettua sarjaväylää ja toimia sen ohjeiden
mukaisesti synkronissa.
>Ajattelin väsätä tommosen tietsikkaan liitettävän LED-näytön, josta
>näkee parhaillaan soivan biisin nimen ja mahdollisesti muutakin
>huipputärkeää. Data liikkuu sarjaportin kautta ja näyttöä ohjastaa
>mikro-ohjain. Ideana on kirjoittaa pc:n mp3-soittimeen (xmms) plugin,
>joka lähettää näytölle dataa freimi kerrallaan. Mikro-ohjaimen
>tehtäväksi jää siis vain lukea freimi ja sytyttää LED-pikselit. Koska en
>ole ennen värkännyt näiden mikro-ohjainten kanssa ja olen pelkkä
>amispelle, muutama kysymys on avoin:
Aika lailla liikennettä synnytät tuolla tavalla. Itse laittaisin dataa
siirtymään vaikkapa pystyrivi kerrallaan ja kontrolleri sitten
siirtäisi puskuriaan oikealta vasemmalle tarpeen mukaan.
Puhumattakaan tarvittavan elektroniikan määrästä ledien ohjaamiseen
>Ajattelin mikro-ohjaimeksi jotain PIC16x84 -piiriä. Näitä käsittääkseni
>voi ohjelmoida PC:n rinnakaisportin avulla ja ilmainen C-kääntäjäkin
>löytyy, right?
Ohjelmointi laitteiden kytkentöjä ohjelmineen löytyy netistä.
Jonkinlainen ilmainen c-kääntäjä kyllä. Itse suosin assemblyä.
>Jos piiri sykkii ~12Mhz:n taajuudella, riittääkö potku lukea
>sarjaliitännästä 14 kbit/s? (olettaen että näytössä 700 lediä ja
>virkistystaajuus 20Hz -> 700*20=14000)
Vilkkuisi aika pahasti 20hz virkistys taajuudella.
Ja se riittäkö potku riippuu toteutuksesta ja softasta.
Kuulemma 4 MHz piirillä päästy jopa 36.6 kb/s vastaannotossa.
>Edulliset led-pistematriisit edelleen hakusessa...
Ehkä kannattaisi kuitenkin käyttää vaikkapa lcd-näyttöä? Helpompi
ohjattava, ei tarvitse tehoajureita, yms...
J.M. Vehasmaa
Olen itsekin tehnyt pari vuotta sitten oman ledimatriisin, joten heittelen
tässä omia näkemyksiäni tuollaisen toteuttamisesta.
> Ajattelin mikro-ohjaimeksi jotain PIC16x84 -piiriä. Näitä käsittääkseni
> voi ohjelmoida PC:n rinnakaisportin avulla ja ilmainen C-kääntäjäkin
> löytyy, right?
>
Tuo on hyvin yleinen mikro-ohjain, mutta uskaltaisin väittää sen olevan
liian pieni tällaiseen projektiin. Niin muistin kuin porttienkin kannalta.
Suosittelisin tutustumaan Atmelin AVR-sarjaan.
> Jos piiri sykkii ~12Mhz:n taajuudella, riittääkö potku lukea
> sarjaliitännästä 14 kbit/s? (olettaen että näytössä 700 lediä ja
> virkistystaajuus 20Hz -> 700*20=14000)
Kyllähän tuota dataa saa kulkemaan nopeamminkin, mutta jos samalla pitäisi
päivittää 700 lediä, niin eipä oikein onnistu. Mielestäni tuo esittämäsi
toteutusvaihtoehto on kaikkein vaikein ja kaamein (masokistit tykkää ;)
Paljon fiksummin ja pienemmällä datamäärällä tuollaisen näytön tekee
seuraavasti:
Näytölle tulevat merkit lähetetään sarjaportin kautta ASCII-muodossa (siis
ihan kirjaimina) mikrokontrollerille, joka pistää niitä puskuriin.
Puskurista luetaan merkkejä ja ne esitetään näytöllä. Tämä siis on
toimintaperiaate oikein yksinkertaistettuna.
Elektronisesti homma onkin jo vaikea. Vaikeus johtuu ledien älyttömästä
määrästä. Yleensä yksi merkki koostuu 5x7-matriisista, joita sitten
pistetään jonoon tarvittava määrä. Yksi merkki siis vie 5 pystyriviä. Kun
merkkejä halutaan 20, tarvitaan pystyrivejä 100 kpl! Itse toteutin
pystyrivien ohjauksen käyttämällä Allegron UCN5832-ohjainpiiriä. Yksi
tuollainen piiri kykenee ohjaamaan 32 pystyriviä ja yhden rivin
enimmäiskuorma on 150mA. Tämä on siis varsin mainio piiri ledien
ohjaamiseen - ei tarvita erillisiä transistoreita! Liitäntä
mikrokontrolleriin tapahtuu ainoastaan kolmella datalinjalla (strobe, data
ja clock) ja UCN5832:ia voidaan ketjuttaa yhteen yhdellä datalinjalla (data
out). Käyttämällä neljää UCN5832:a ovat kaikki pystyrivit ohjattavissa.
Vaakarivit ovatkin jo sitten helppo homma - niitähän on vain seitsemän.
Fetit tai transistorit vain mikrokontrollerin datalinjoihin. Ohjelmointi
onkin sitten vaikeampi urakka ja en siihen hirveästi puutu, koska siitä
saisi tarinoida yöhön asti ;)
700 lediä kuulostaa suurelta määrältä, mutta virtaahan tuollainen hässäkkä
ei paljoa vie, koska vain yksi pystyrivi on kerralla päällä. Ledien
virtalähteeksi riittää säädettävä regulaattori (esim. L200 tai LM317), mutta
vaakarivejä ohjaavien transistoreiden kanssa sarjaan pitää laittaa sopiva
etuvastus. Säädettävällä regulla tehdään vain hienosäätö.
Jostain syytä en omassa matriisissani käyttänyt valmiita moduuleita, vaan
juotin ledit käsin verolevylle. Vaikka ledejä olikin vain 140 (neljä
merkkiä), oli niiden juottamisessa kova homma. Toivotan onnea ja
kärsivällisyyttä, koska jo pelkkien johtojen kuoriminen ja juottaminen 700
ledille on tajuton urakka!
EA
Selostukseni oli hiukan puutteellinen: näyttö virkistetään 20 kertaa
sekunnissa, mutta ei ledejä suinkaan sammuteta noiden virkistyksien
välissä - uusi kuva ikäänkuin piirretään vanhan päälle. Tuo 20Hz tulee
ihan siitä että sillä saisi jo esitettyä sulavaa animaatioita.
> Kuulemma 4 MHz piirillä päästy jopa 36.6 kb/s vastaannotossa.
Tämä on kiva tieto.
> Ehkä kannattaisi kuitenkin käyttää vaikkapa lcd-näyttöä? Helpompi
> ohjattava, ei tarvitse tehoajureita, yms...
Näinhän se olisi. LED-näyttö on vaan niin jumalattoman komea
kokonsa/kirkkautensa takia verrattuna piskuiseen ldc-näyttöön.
> > Kuulemma 4 MHz piirillä päästy jopa 36.6 kb/s vastaannotossa.
>
> Tämä on kiva tieto.
Atmelin 2313:lla ja 2051:llä pääsee ottamaan dataa vastaan 115200bps
ongelmitta.
> Suosittelisin tutustumaan Atmelin AVR-sarjaan.
Kattelin netistä infoa, ihan näppäriltä vaikuttavat, samalla tulisi
opeteltua RISC-ohjelmointiakin. Tai no eihän tuolla merkitystä ole jos
C:llä koodailee.
PC-ohjelmointilaitekin näytti löytyvän, monimutkaisen näköinen tosin.
Ajattelin tätä LED-näyttö-projektia amitsun päättötyöksi, mutta varmaan
jo pelkkä tuollainen ohjelmointilaitekin kelpaisi =)
> Mielestäni tuo esittämäsi toteutusvaihtoehto on kaikkein vaikein ja
> kaamein (masokistit tykkää ;)
>
> Paljon fiksummin ja pienemmällä datamäärällä tuollaisen näytön tekee
> seuraavasti:
>
> Näytölle tulevat merkit lähetetään sarjaportin kautta ASCII-muodossa
Mietin itsekin tuota, mutta koska tarkoitus on esittää myös grafiikkaa
(kirjaimet räjähtelee/liukuu esiin ym. coolia), päädyin ratkaisuun jossa
ledejä ohjaa vain "tyhmä" mikro-ohjain valmiin PC:ssä muodostetun
bitmapin mukaan. Eli PC on systeemin aivot, onhan se helpompi
ohjelmoitavakin ja muistia riittää käytännössä rajattomasti.
> Elektronisesti homma onkin jo vaikea. Vaikeus johtuu ledien
> älyttömästä määrästä.
Nyt vasta täysin tajuan ledien määrän.. minä kun luulin aluksi
selviäväni yhdellä mikro-ohjaimella ja erillislogiikalla :D
> Itse toteutin pystyrivien ohjauksen käyttämällä Allegron
> UCN5832-ohjainpiiriä.
Kuulostaa lupaavalta, kiitti vinkistä. Tämä piirien valinta onkin
minulle projektin vaikein osa-alue, täyttä salatiedettä suorastaan.
Oliko muuten kalliitakin nuo piirit ja missä moisia kaupataan?
> Toivotan onnea ja kärsivällisyyttä, koska jo pelkkien johtojen
> kuoriminen ja juottaminen 700 ledille on tajuton urakka!
Taidan kuitenkin pysyä niissä moduuleissa.. =)
http://www.ee.oulu.fi/~ilari/elkerho/ ja sieltä ledinäyttö.
Reba
Idea näyttää olevan sama kuin esitin. Toteutettu vain erilliskamalla eli
siirtorekistereillä ja transistoreilla.
EA
8031 antaa tuossa sarjamuotoisen datan ulos ohjelmallisesti. Datan
nopeus on 41*128*8 eli noin 41 kb/s. Yhden bitin lähetykseen menee pian
kymmenen konekäskyä eli 1 MIPS:n lutikasta 400 KIPS = 40 % menee
sarakedatan lähetykseen. Jos haluaa virittää, mahdollisuuksia
löytyy. 8031:n sarjaportin saa myös synkroniseen tilaan, jolloin dataa
lähtee 12 MHz:n kiteellä 1 Mb/s. Ellei sarjaportista halua luopua, voi
datan lähetystä kiihdyttää laittamalla koko 8 bittiä rinnakkaisena
piiristä ulos vaikka piiriin 74HC165 eli PISO-siirtorekisteri. Sitten vain
softalla kello ylös, kello alas, kello ylös... jos tästäkin haluaa
kiihdyttää, XOR:lla, vastuksella ja konkalla saa aikaan piirin, joka
tuplaa kellotaajuuden. Siis kello ylös, kello alas ja lähti jo kaksi
bittiä.
Ensimmäisen ledimatriisini tein porakoneen kanssa. Polykarbonaattia,
siihen mitoitin reikien paikat, miniporalla millin alkureikä ja sitten
Isolla Koneella 4.8 mm:n reiät, joissa ledit pysyvät kiinni ilman
liimaakin. Sitten langat jalkoihin ja juotos.
Nämä vain huomioina matriisien rakentajalta matriisien rakentajille.
-A
--
Niin tapahtui heidän siellä ollessaan, että Marian synnyttämisen aika
tuli. Ja hän synnytti pojan, esikoisensa, ja kapaloi hänet ja pani hänet
seimeen, koska heille ei ollut sijaa majatalossa.
(Luuk. 2:6-7)
> Kattelin netistä infoa, ihan näppäriltä vaikuttavat, samalla tulisi
> opeteltua RISC-ohjelmointiakin. Tai no eihän tuolla merkitystä ole jos
> C:llä koodailee.
No ei hirveästi ole merkitystä. Assemberilla saa kyllä nopeampaa koodia kuin
ceellä, mutta jos osaa optimoinnin, niin eipä eroa paljoa tule.
>
> PC-ohjelmointilaitekin näytti löytyvän, monimutkaisen näköinen tosin.
> Ajattelin tätä LED-näyttö-projektia amitsun päättötyöksi, mutta varmaan
> jo pelkkä tuollainen ohjelmointilaitekin kelpaisi =)
>
Riittäisi varmaan, mutta pitäähän sitä haastetta vähän olla ;)
> Mietin itsekin tuota, mutta koska tarkoitus on esittää myös grafiikkaa
> (kirjaimet räjähtelee/liukuu esiin ym. coolia), päädyin ratkaisuun jossa
> ledejä ohjaa vain "tyhmä" mikro-ohjain valmiin PC:ssä muodostetun
> bitmapin mukaan. Eli PC on systeemin aivot, onhan se helpompi
> ohjelmoitavakin ja muistia riittää käytännössä rajattomasti.
Ongelmia on luvassa, jos PC:stä tehdään systeemin aivot. PC:n ajoitukset
vaihtelevat Windowsin alla suuresti ja luvassa on taatusti tökkivä matriisi.
Kannattaa siis vielä harkita tuon suoran ohjauksen käyttöä. Skrollauksia saa
näppärästi tehtyä myös mikrokontrollerille ja ne voitaisiin kytkeä päälle
esimerkiksi lähettämällä joku erikoismerkki ohjaimelle. Toinen merkki taas
palauttaisi ohjaimen tavalliseen tilaan.
> Nyt vasta täysin tajuan ledien määrän.. minä kun luulin aluksi
> selviäväni yhdellä mikro-ohjaimella ja erillislogiikalla :D
Kyllähän sitä selviää, mutta tuota erillislogiikkaa on oltava aika paljon.
PIC16F84 kelpaa kyllä nopeutensa ja ehkä porttiensa puolesta, mutta muisti
loppuu auttamattomasti kesken. Esimerkiksi AT90S8515:lla tuollainen projekti
onnistuu varmasti. Yhdellä mikrokontrollerilla selviää siis erittäin hyvin.
> Oliko muuten kalliitakin nuo piirit ja missä moisia kaupataan?
Eivät ole kovin kalliita, muutama kymppi ehkä. Noita piirejä saa hyvistä
komponenttikaupoista, kuten Elfa, YE ja onpa noita Bebekilläkin näkynyt
SMD-kotelossa.
> Taidan kuitenkin pysyä niissä moduuleissa.. =)
Kannattaa ehdottomasti.
>
> Sent via Deja.com
> http://www.deja.com/
EA
Tätä on pakko kommentoida. Windows.. hyhhyh :P Ihan Linux-friikkejä tässä
ollaan :) Minulla ei ole aavistustakaan jostain Linuxin sarjaporttien
ajoituksista(?), mutta luulisi että Pentium tuollaista matriisia pyörittää,
jos ei muuten niin prioriteetta säätämällä.
--
Jaakko Holster
yaggo at kaamos.org
Jaakko Holster <ya...@kaamos.org> wrote in message
news:93c03h$4qc$1...@nnrp1.deja.com...