Hoofdcategorieën
Topicacties

[EiP] 96x48 monochroom LED-display

Pagina: 1 2 3 4 5 last

Reageer Nieuw Topic

Acties: [view][quote]


Door: Sprite_tm
Moderator EL/CM/OC
Backups al geregeld?

Zoals jullie in de kroeg wel konden lezen, heb ik bij Baco tien led-boards gekocht. Het idee is om daarmee een monochroom LED-display van 96x48 pixels te maken wat realtime bestuurd kan worden door de PC.

De borden

De borden van Baco zijn blijkbaar uit een bestaand LED-display-iets; de naam 'comfuture ltd.' staat erop te lezen. Verder is er niet zo heel veel over bekend. Nou, dat word dus reverse-engineeren :)
http://meuk.spritesserver.nl/foto/foto/misc8/tmb-img_3286.jpg
Het lijkt erop dat het board bedoeld is om in serie met z'n maatjes geschakeld te worden: zowel J1 als J2 lijken data te vervoeren. J1 doet dat echter naar de electronica toe, terwijl J2 meer van de electronica af vervoert. Na wat zoeken kwam ik uit op deze pinout:
nc1516GND
LDAT1314GND
nc1112GND
UDAT910GND
A278GND
A156/OE
A034STROBE
CLK12GND

Aansturen

Ok, hoe stuur je nu zo'n bord aan? Het kreng zelf is niet intelligent om zelf z'n beeld te behouden, wat betekent dat we een microcontroller nodig hebben om het beeld er tientallen of zelfs honderden keren per seconde heen te sturen. Hoe gebeurt dat? Ten eerste moet je weten dat het bord is onderverdeeld in een bovenste en een onderste helft. Deze twee helften hebben twee aparte data-ingangen, namelijk LDAT en UDAT. Het idee is dat daar ism CLK de regel die je wil weergeven ingeklokt word. In pseudo-code, geoptimaliseerd voor leesbaarheid, maak je zo een compleet beeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
while(1) {
 for y=0 to 8 {
  for x=0 to 32 {
   maak LDAT hoog als je op (x,y+8) een pixel wilt weergeven
   maak UDAT hoog als je op (x,y) een pixel wilt weergeven
   maak CLK laag
   maak CLK hoog
  }
  maak OE hoog (dit zet alle LEDs tijdelijk uit)
  maak STROBE laag
  maak STROBE hoog
  zet [A2..0] naar y
  maak OE hoog
  wacht een tijd, afhankelijk van de gewenste refreshrate
 }
}

Grijstinten

of eigenlijk roodtinten... Da's allemaal leuk als je wat tekst wil weergeven, maar wat nou als je verschillende intensiteiten wilt weergeven? Als je naar de hardware kijkt, zou je zeggen dat dat onmogelijk is: we kunnen alleen maar een led aan- of uitzetten. Door een smerig truukje is het toch mogelijk: als we het display niet honderd, maar bijvoorbeeld tienduizend keer per seconde verversen, kunnen we de LEDs gaan PWMmen. Het nadeel is wel dat dit redelijk opvalt: als een compleet bord met 50Hz naar je staat te knipperen, valt dat wel op. Daar is echter omheen te werken: als we ervoor zorgen dat elke pixel 90 graden uit fase knippert met z'n dichtbijzijnde buurman, valt het ineens een heel stuk minder op dat alles aan het knipperen is. Voor implementatiedetails, zie de sourcecode later in deze post.

Hardware

Theorie is leuk natuurlijk, maar hoe gaat dat nou in de praktijk werken? Ten eerste is er een microcontroller nodig. Omdat we een redelijke snelheid willen halen ivm het grijstintenverhaal, is enkele tientallen mips aan processing-power toch wel gewenst. Ook zou meer dan een halve K aan RAM practisch zijn: op die manier kunnen we het huidige beeld gewoon in een array zetten waar de display-routine weer uit kan lezen. Al met al ben ik uitgekomen op een ATMega88: met z'n 1K aan SRAM is er genoeg geheugen voor een displaybuffer en met 20MHz (a ongeveer 1 mips per MHz) moet 'ie toch redelijk rap pixels uit kunnen spugen.

Uiteindelijk heb ik een leuk klein printje gemaakt. Een schema ga ik hier niet posten, de belangrijkste connecties staan in de code. Een pic kan je wel van me krijgen:
http://meuk.spritesserver.nl/foto/foto/misc8/tmb-img_3285.jpg
Het ding is zo gemaakt dat het direct op de header past. De kabel die je ziet is voor het programmeren van de AVR.
http://meuk.spritesserver.nl/foto/foto/misc8/tmb-img_3284.jpg

Resultaat

De theorie die hierboven staat is omgezet in een net C-programmaatje en met avr-gcc geprogrammeerd. Naast de display-routine zit er een plaatje in en een plasma-functie die geleend is uit mijn demo voor het HD44780-microcontest.


De code ervan is downloadbaar en gelicenseerd onder de GPLv3.

ToDo

• Intensiteit exponentieel maken. Door een eigenschap van het menselijk oog lijkt er veel verschil tussen de lagere intensiteiten te zitten en veel minder verschil tussen de hogere.
• Connectie met de PC maken. Voor 1 board kan dat nog wel een standaard serieele verbinding zijn, maar 96px*48px*8bit*25fps=~1mbit aan data.
• Meerdere uCboards maken voor de andere 8 led-boards
• Spul fysiek aan elkaar vastmaken
• Plugin voor MPlayer of een andere video-afspeel-unit maken

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Onzin --->
Berichten: 5.008
Reg. datum: 11 juni 2006

Zou je geen PWM signaal naar de leds kunnen sturen als toch de display continu moet refreshen? Op die manier kun je misschien wel 2 of 3 'kleuren' implementeren :+

Doh, dat had je zelf al verzonnen, najah het is laat zullen we maar zeggen ;)

TRRoads wijzigde dit bericht 18-04-2008 01:47 (19%)

Prof. Dr. Brian Cox is mijn held!
Boeiend dat ik een loser ben


Acties: [view][quote]


Door: Sprite_tm
Moderator EL/CM/OC
Backups al geregeld?

Heb je het filmpje bekeken? Het is me al gelukt om iig 5-bit grijstinten goed werkend te krijgen :)

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Onzin --->
Berichten: 5.008
Reg. datum: 11 juni 2006

Filmpje werkt hier niet helaas, zit op een console met beperkte beveiligingsinstellingen (en gelukkig kan ik via via wel op GoT :P)

Prof. Dr. Brian Cox is mijn held!
Boeiend dat ik een loser ben

Chocoladeloempia
Berichten: 11.368
Reg. datum: 15 juni 2003

Ik hoop die van mij morgen te mogen ontvangen, dan kan ik ook aan de slag. :)

Leuk projectje ook om op hackaday te submitten. :)

hmm, spekkies Laptop Soms een beetje een taalpurist.
Wil een herverdeling van Nederland op de Patat-/Frietgrens


Acties: [view][quote]


Door: Sprite_tm
Moderator EL/CM/OC
Backups al geregeld?

Ik ben nou toch aan het twijfelen... Het oorspronkelijke plan om de 9 LED-displays die in het geheel zitten aan te sturen, was om elk board te voorzien van een eigen ATMega88 om dan de display-data via een serieele lijn aan alle ATMega's door te sturen. Leuk en extendible, maar het betekent 9 keer een printje inelkaarsolderen, toch een paar tientjes aan AVRs e.d, plus het schrijven of aanpassen van een bootloader om te voorkomen dat alle AVRs apart via ISP geprogrammeerd moeten worden.

Het alternatief is om met zwaar geschut te komen. Een LPC2103 draait op 70MHz ipv 20MHz, het is een 32-bitter (waar misbruik van gemaakt kan worden door bijvoorbeeld vier pixels tegelijkertijd te processen) en heeft ook RAM genoeg om het hele display in op te slaan. Het nadeel is dat het een tqfp-dingetje is, wat betekent dat het ontwerp lastig na te bouwen is, en dat het niet extendible is: het idee met de AVRs is uitbreidbaar door stomweg nog een AVR aan het geheel te knopen.

Waar zouden jullie voor gaan? 1 brute ARM, of 9 kleine AVRretjes?

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Chocoladeloempia
Berichten: 11.368
Reg. datum: 15 juni 2003

Voor die tqfp is wel een adapter te krijgen natuurlijk.
http://www.futurlec.com/SMD_Adapters.shtml

Misschien kun je uiteindelijk wel wat met niels regelen en een inkoopactie organiseren. :)

Ik ben zelf eerder geneigd om met meerdere AVR's te werken want dan is het gewoon modulair, zodat de persoon met 1 schermpje en de persoon met 10 gewoon de hardware erop kan aanpassen.

Is een FPGA geen optie overigens?

mace wijzigde dit bericht 18-04-2008 16:15 (36%)

hmm, spekkies Laptop Soms een beetje een taalpurist.
Wil een herverdeling van Nederland op de Patat-/Frietgrens


Acties: [view][quote]


Door: Sprite_tm
Moderator EL/CM/OC
Backups al geregeld?

Het nadeel van een fpga is dat het vaak nog slechter te solderen en te verkrijgen is dan een uC. In principe zou een fpga zelfs iets beter zijn voor dit doel, maar in de praktijk houd ik het dus op een uC.

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Chocoladeloempia
Berichten: 11.368
Reg. datum: 15 juni 2003

Spartans kan je nog krijgen in PLCC geloof ik. Een simpele spartan moet toch genoeg zijn?
Of ben je meer van de Altera's ?

En is een 68HC11 een optie? Zijn die snel genoeg?
Je kan ze makkelijk krijgen en in een hele rits packages.

mace wijzigde dit bericht 18-04-2008 17:45 (31%)

hmm, spekkies Laptop Soms een beetje een taalpurist.
Wil een herverdeling van Nederland op de Patat-/Frietgrens


Acties: [view][quote]


Door: Sprite_tm
Moderator EL/CM/OC
Backups al geregeld?

68hc11 is afaik niet zo snel; iirc haalt een AVR ze zo in. Spartans in PLCC, is daar ook een beetje aan te komen dan?

Ik ben nog ff mplayer wezen hacken en de non-lineaire led-uitsturing wezen implementeren. Meteen maar eens een leuk testfilmpje gepakt en dit is het resultaat:


Niet slecht voor hardware die slechts 0,1% van de originele video-info kan weergeven :Y)

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Ik blijf versteld staan van die dingen die jij bouwt Sprite, keep op the good work

Amd 3700+, MSI Geforce 8800gts, 1024mb DDR, 2x 19" widescreen

Praetor

Heb je nou een dode pixel (10e regel, 6e kolom?)

offtopic:
tiete!!!!oneone

Zoekt nieuwe uitdaging als Sr. Software Engineer (C#, Delphi, Oracle, SQL Server) in Rotterdam e.o. - mail voor CV


Acties: [view][quote]


Door: Sprite_tm
Moderator EL/CM/OC
Backups al geregeld?

Yep; da's 1 van de redenen dat ik 10 boards voor een display van 9 boards gehaald heb.

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Backups al geregeld?

Woei, in de afgelopen uren heb ik de datarate weten te verhogen naar een halve MBit en nog 3 led-modules opgebouwd. Het resultaat van het vele prutsen:

In andere woorden: ik ga toch voor ATMega88'en; de boards zijn redelijk simpel op te bouwen en de bitrate houden ze zelfs icm het processor-intensieve PWMmen best goed bij.

Puntje 3: De 5 andere boards opbouwen... daar zal ik eerst onderdelen voor moeten halen; 5 ATMega88s heb ik niet meer en ik heb nu al wat printen moeten slopen om de IC-voetjes te halen...

Wat trouwens niet te zien is is dat ik een bootloader die ik al een tijd terug geschreven heb, aangepast heb voor deze situatie. Werkt prima: je reset het display en je hebt 3 seconden om een nieuwe firmware-upload te starten. Een paar seconden later draait je nieuwe programma. Allemaal via dezelfde lijn als waardoor de beeld-data ook komt.

Wat verder opvalt is dat ik naast een board met een falende pixel, ook een board heb waar het een of ander op ingebrand is. (In de video het board rechtsonder.) Ik hoop maar dat dat de enige is; het stoort best wel...

ToDo: de 5 andere borden fixen, hopen dat de halve MBit snel genoeg is om 9 boards te voorzien van data.

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Berichten: 2.195
Reg. datum: 11 december 2002

Vet! Het beeld word in een keer veel duidelijker wanneer je meerdere displays naast elkaar plakt. Zal wel komen door de grote vervoudiging van het aantal "pixels". Erg cool!
 
Today is not your day

Erg cool inderdaad. :)
Wat ik trouwens niet zo snel kon achterhalen; waar zijn J3 en J4 voor bedoeld? Ze zijn zo te zien verbonden met de voeding en de 74HC244's op de print, om precies te zijn naar een van de data inputs.

Kaj. wijzigde dit bericht 19-04-2008 08:01 (4%)

Anime-FAQ | Blog
De rotatie van de aarde wordt tegenwoordig in stand gehouden door docenten Nederlands die zich omdraaien in hun graf.

Chocoladeloempia
Berichten: 11.368
Reg. datum: 15 juni 2003

quote:
Die verticale strepen komen door de grijswaardensimulatie i.c.m. de camera?

hmm, spekkies Laptop Soms een beetje een taalpurist.
Wil een herverdeling van Nederland op de Patat-/Frietgrens

Backups al geregeld?

Kaj: Geen idee. Ik zal es kijken of ik het na kan zoeken. Atm vermoed ik dat er een fan opgehangen kan worden ofzo.

mace: Da's moiré.

Relaxen und watchen das blinkenlichten. | Laatste project: RF-RGB-ledlamp met gloeilampfitting

Today is not your day

Een ventilator is niet logisch. :P Ansluitingen komen wel overeen, maar ik zou het niet logisch vinden.

Anime-FAQ | Blog
De rotatie van de aarde wordt tegenwoordig in stand gehouden door docenten Nederlands die zich omdraaien in hun graf.

Hail the scriptsausage!

spi/i2c aansluiting?

Body - lens - lens - lens - lens - lens - lens - flitser - filter - tas - behoorlijk duur kaartje.

quote:
Op een bord waar alleen maar wat cmos logic rommel zit?

Anyway, heb er ook 2 binnen :) Geen kapotte pixels, wel gigantisch ingebrand, vooral als je er met een zonnebril naar kijkt :P
Zag op ebay een zaak die die 8x8 dingen verkocht, 10 voor 9 dollar.

PauperTronics.nl Goedkoper kunnen we het niet maken, wel brakker

Chocoladeloempia
Berichten: 11.368
Reg. datum: 15 juni 2003

Ik heb ze nu ook binnen, 4 stuks, maar ik kan ze ff niet testen want ik heb alleen PICjes.

Ik denk dat ik een soort testroutine ga schrijven waarmee die dingen te controleren zijn, voor als ik er nog meer ga kopen. :P

Misschien kan ik er wel een muur mee behangen, net zoals terw_dan met zijn mobo's maar dan een hele videowall. 8)

mace wijzigde dit bericht 19-04-2008 18:59 (4%)

hmm, spekkies Laptop Soms een beetje een taalpurist.
Wil een herverdeling van Nederland op de Patat-/Frietgrens

Solar Powerrrd
Berichten: 453
Reg. datum: 06 oktober 2006

The Simpsons;) nice nice!
Mooi verzorgd werk :) dit volg ik nog even :p
 
Berichten: 520
Reg. datum: 29 november 2004

Die van mij zijn inmiddels ook binnen! Ben benieuwd wat ik er vanavond nog van aan de praat kan krijgen, eerst maar eens iets bouwen wat een ledje laat knipperen, daarna kijk ik wel verder. Ik hoop niet dat die van mij rot zijn btw!

Edit: Sprite_tm, over je voorbeeld code, ik vraag me af wat er precies wordt bedoeld met A0..A2 naar Y zetten. Ik neem aan dat dat betekend dat je daarmee de actieve regels kan selecteren (LDAT&UDAT) dus, als daar binar 111 op gezet wordt gaat de 8e van boven en de onderste regel branden.

Edit2 : Ja dus :)

Zjosh wijzigde dit bericht 20-04-2008 15:38 (39%)

www.hanzesolarteam.nl

Chocoladeloempia
Berichten: 11.368
Reg. datum: 15 juni 2003

quote:
Sprite_tm schreef op zaterdag 19 april 2008 @ 09:37:
Kaj: Geen idee. Ik zal es kijken of ik het na kan zoeken. Atm vermoed ik dat er een fan opgehangen kan worden ofzo.
De middelste pin van j4 hangt aan de GND, en de linker hangt aan pin 11 van de 244 die boven j1 zit, dus dat lijkt me niet voor een fan? Overigens zie ik niet waar pin 9 (2A3) aan hangt, de corresponderende uitgang van 11 (2Y3).

mace wijzigde dit bericht 19-04-2008 19:32 (14%)

hmm, spekkies Laptop Soms een beetje een taalpurist.
Wil een herverdeling van Nederland op de Patat-/Frietgrens

Pagina: 1 2 3 4 5 last



VNU Media logo Powered by True

© 1998 - 2009 Tweakers.net - Alle rechten voorbehouden - Uw Privacy - Algemene Voorwaarden

Uitgever van: