Hoofdcategorieën
Topicacties

[HOWTO] LED kubus 5*5*5 met 74HC595

Pagina: 1 2 3 4 5 6 7 8 9 last

Reageer Nieuw Topic
Berichten: 153
Reg. datum: 23 januari 2007

[HOWTO] LED kubus 5*5*5 met 74HC595
http://i4.photobucket.com/albums/y149/skimmerbas/kop-1.jpg

http://i4.photobucket.com/albums/y149/skimmerbas/ledkubus021-1.jpg

http://i4.photobucket.com/albums/y149/skimmerbas/kubustotaal-1.jpg

Hoe werkt de kubus?
Alle 125 leds staan in een matrix. Dat wil zeggen dat in mijn geval 5 leds allemaal een min delen. In deze afbeelding is het nog wat duidelijker te zien:
http://i4.photobucket.com/albums/y149/skimmerbas/multiplexen.jpg
Om een ledje aan te krijgen moet je dus een negatieve spanning op de verticale pin zetten. En een positieve spanning op de verdieping waar het ledje zich bevindt.

Hoe maak je een ledkubus?

http://i4.photobucket.com/albums/y149/skimmerbas/5leds.jpg
Eerst hang je 5 leds aan elkaar met de min. Dit wordt een verticale rij. Zoals je ziet heb ik de plus pootjes van elke led in een hoek van 90 graden gebogen. Dit doe je 5 keer zodat je 5 rijen hebt. Van die 5 rijen hang je alle plus pinnen aan elkaar. Niet allemaal aan elkaar natuurlijk maar per 5. Dan heb je dit:http://i4.photobucket.com/albums/y149/skimmerbas/25leds.jpg

Om nu bijvoorbeeld het middelste ledje aan te zetten moet ik dus plus 2,1 volt op de middelste van de 5 min pinnen. En op de middelste van de 5 plus pinnen. Nu heb ik een verticaal vlak af. Als je 5 van deze vlakken hebt dan verbind je weer alle plus pinnen van dezelfde hoogte met mekaar. Je hebt dan een mooie kubus:http://i4.photobucket.com/albums/y149/skimmerbas/kubustotaal.jpg

Zoals je ziet is die van mij een beetje scheef maar dit is ook maar een tijdelijk plankje waar hij op staat. Nu de aansturing helemaal af is ga ik straks een behuizing maken van plexiglas. Wat je nu bereikt hebt is dat je dus 25 min pinnen hebt(de verticale) en 5 positieve pinnen(de horizontale). Nu kan je werkelijk elk ledje aansturen maakt niet uit welke.

Hoe stuur je de kubus aan?

Om de kubus aan te sturen heb ik gekozen voor een pic. En de wel de 16F628a. Dit is een veelgebruikte pic en daardoor staan er mooi veel voorbeelden van op internet.
Nu het probleem een pic heeft maar 16 uitgangen. En ik heb 30 uitgangen(25+5) die ik aan wil sturen. Daarvoor heb ik een schuifregister gebruikt. En dan wel de 74HC595. Deze is erg makkelijk aan te sturen als je door hebt hoe het eenmaal werkt. Hier heb ik gelukkig wat hulp bij gehad van forumleden van CO.
De 74HC595 stuur je als volgt aan:
Eerst zet je een bitje(0 of 1) klaar op de DATA-pin (14)
Dit bitje klok je in door de CLOCK-pin hoog te maken.
Nu is de eerste bit ingeklokt. Dit verhaaltje doen we 8 keer. De 74HC595 is namelijk een 8 bits schuifregister. Vergeet niet de CLOCK-pin weer laag te maken na elk bitje wat je ingeklokt hebt. In ASM ziet dit er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
;schuifregister1 vullen
    bcf        data1    
    call    klok1
    bsf        data1    
    call    klok1
    bcf        data1    
    call    klok1
    bsf        data1    
    call    klok1
    bcf        data1    
    call    klok1
    bsf        data1    
    call    klok1
    bcf        data1    
    call    klok1
    bsf        data1    
    call    klok1
    call    latch

klok1
    bsf        klokingang1            ;CLOCK pin hoog
    nop
    bcf        klokingang1
    return
latch
    bsf        latch1        ;latch is hoog dus resultaat zou te zien moeten zijn    
    call    delay_300ms        ; hier heb ik een vertraging gebruikt maar een nop
    bcf        latch1        ;werkt ook goed
    return

Dit kan je dan netjes in een subroutine zetten en zie ziet er dan zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
main
movlw    b'00001000'
    call    schuifregister1
;-------------------------------------------------------------
schuifregister1
movwf    Var1        ; zet de waarde vanuit w in Var1. dit is het getal wat geklokt moet worden
        movlw    D'8'        ;zet de waarde 8 in het werkregister
        movwf    bits1        ;sla de waarde 8 uit w op in bits1 dis is het aantal bits wat ingeklokt moet worden
loop1
        rlf        Var1,1        ;rotate left trough carry en sla het resultaat op in Var1. Eerste bit zit nu in de carry 
        btfss    STATUS, C    ; lees de carry uit. Is carry= 1?
        bcf        data1        ;zo nee, zet de datalijn naar 0
        btfsc    STATUS, C    ; is carry 0?
        bsf        data1        ;zo nee data is 1

        bsf        klok1
        nop        
        bcf        klok1        ;bitje is nu ingeklokt

        decfsz    bits1,f        ;verlaag bits1 met één totdat die nul is
        goto    loop1        ; is bits1 0? dan "return" zo nee ga naar loop1
        return

Omdat ik 4 schuifregisters aan wil sturen. Heb ik dus voor elk schuifregister een subroutine gemaakt. Drie schuifregisters voor de 24 “min-pinnen” en één schuifregister voor de 5 verdiepingen. De latch van de eerste drie schuifregisters zitten dan ook op dezelfde pin van de pic(zie schema). De latch van het laatste schuifregister zit op een andere pin dit omdat je dan makkelijker meer effecten in de pic kan programmeren. Iedereen die zich nu afvraagt waarom ik maar 24 min pinnen aanstuur heeft gelijk dat het erg onhandig is. Dat is namelijk een denk foutje van mij. Elk schuifregister heeft maar 8 uitgangen. Ik gebruik er 3 voor de min pinnen dus heb ik 24 “min-pinnen” die ik aan kan sturen. De 25ste heb ik direct op de pic aangesloten als “ledx”. Deze verticale rij moet ik elke keer dus opnieuw aan/uit zetten. Misschien niet erg handig maar dat is een idee voor de volgende versie

Wie overigens het hele programma wil hebben en neit alleen de subroutine mag mij mailen. Mailadres staat in profiel

Dan volgt hier het schema:
http://i4.photobucket.com/albums/y149/skimmerbas/schemaklein.jpg
grotere versie: http://i4.photobucket.com/albums/y149/skimmerbas/schema.jpg
let op in dit schema staat het (nog) niet maar ik gebruik een kristal van 20mhz in plaats van de interne 4mhz
Zoals je ziet niet erg ingewikkeld. Nadeel is wel dat je 25 transistoren en dus ook 25 basisweerstanden en dan 25 weerstanden voor de leds moet solderen. Erg veel werk dus. Voor de volgende keer gebruik ik daar misschien een ic voor waar al 8 transistoren inzitten. Dit bespaard erg veel soldeerwerk. En zo ziet het er dan uit op gaatjesprint:
http://i4.photobucket.com/albums/y149/skimmerbas/gaatjesprint.jpg

Links zie je de 25 draden die naar de onderkant van de ledkubus lopen. Bovenaan zie je de 5 draden die naar de “verdiepingen” van de led kubus lopen. Even voor de lol ook een fototje van de onderkant:
http://i4.photobucket.com/albums/y149/skimmerbas/onderkant-1.jpg
grotere versie: http://i4.photobucket.com...9/skimmerbas/100_1773.jpg
Zoals je ziet erg veel soldeerwerk. Daarom ook een tip: Gebruik voor ieder schuifregister een andere kleur draad! Dit maakt fouten zoeken later een stuk makkelijker

Gebruikte materialen
Pic 16F628a ¤1,75
4 keer de 74HC595 ¤1,-
25 stuks BC547C(npn) ¤1,-
61 weerstanden ¤2,-
5 stuks BC327(pnp) ¤0,50
Een ontstoorcondensator van 100n voor de pic ¤0,05
125 leds ¤2,50
kristal ¤0,50
condensator 22pf 2 keer ¤0,10
verzendkosten webshops totaal ¤4,-

in totaal heeft het mij dus ongeveer 13 euro gekost. Houd er rekening mee dat ik gewone 3mm groene(diffuse) leds heb gebruikt. Als je blauwe leds wil gaan gebruiken wordt het natuurlijk duurder. Verder komt de pic vanuit China. De meesten kennen die SK acties wel.
http://www.samenkopen.net/action_products/187349
IC’s en transistoren komen bij dickbest vandaan
www.dickbest.nl
Hij is erg goedkoop behalve op weerstanden. Maar die had ik toch nog liggen.

ledkeuze
Bij deze ledkubus heb ik gekozen voor standaard 3mm groene leds. Nadeel van deze leds is dat ze bij 5ma al branden. En dit is een groot nadeel. Als je leds hebt die op dat punt kritischer zijn kan je het effect veel mooier krijgen. Stel voor je wil in een verticaal vlak de leds om en om aanzetten. Dan komt het er zo uit te zien:
http://i4.photobucket.com/albums/y149/skimmerbas/knipperen2.jpg
Dit is een beetje overdreven maar is simpel te voorkomen door andere leds te nemen.dit is alweer achterhaald door een kristal van 20mhz te nemen in plaats van de interne 4mhz te gebruiken is dit effect grotendeels verholpen

Foto’s

http://i4.photobucket.com/albums/y149/skimmerbas/ledkubus007.jpg

http://i4.photobucket.com/albums/y149/skimmerbas/ledkubus010.jpg

http://i4.photobucket.com/albums/y149/skimmerbas/ledkubus002.jpg

http://i4.photobucket.com/albums/y149/skimmerbas/ledkubus021-2.jpg

Dit zijn nog maar wat simpele effecten maar in princiepe is elk denkbaar effect mogelijk.

Links
Datasheet van de pic:
http://ww1.microchip.com/downloads/en/DeviceDoc/40044E.pdf
Datasheet 74hc595
http://www.alldatasheet.c...5644/PHILIPS/74HC595.html

Voor en Nadelen van deze schakeling
Zoals ik eerder al zei het is irritant dat je niet alle leds met de 3 schuifregisters aan kan sturen. En die 25 transistoren hadden ook vervangen kunnen worden door bepaalde IC’s. Verder heb ik 3mm leds gebruikt. Op zich geen probleem maar ik heb nu wel een erg kleine kubus. Daarom bouw ik misschien ooit nog wel een keer een grotere. Als je een grotere wil bouwen dan kan je het best een oneven aantal nemen. Denk aan 7*7*7 of 9*9*9. Zodat je bijvoorbeeld ook een mooi rondje kan maken of een effect vanuit het midden kan laten beginnen.

einde
Zo dat was een heel erg lang verhaal. En tevens mijn eerste post op Tweakers.net(klees al wel een hele tijd mee) Als er behoefte aan is schrijf ik mischien ook nog wel een keertje een How to voor een propellorklok :P Wat vinden jullie van deze How to? Te uitgebreid of is dat juist goed? En hoe krijg ik mijn "koppen" groter? Kom maar op met de reacties :D

bazzzzzz wijzigde dit bericht 04-04-2007 15:36 (3%)

 
Berichten: 153
Reg. datum: 23 januari 2007

UPDATES

1. ik gebruik nu een kristal van 20mhz in plaats van de interne oscilator van de pic. Dit verkleint het nabrand effect waardoor je een mooiere afbeelding krijgt.
2. de 74hc595's hangen bij mij nu in serie zodat het inklokken makkelijk wordt.

dit alles zal straks wel verwerkt worden in het schema voor nu besteed ik mijn tijd liever aan het programmeren:P

UPDATE 2

3. Inmiddels heb ik duoleds gekregen voor een 7*7*7 ledskubus. Deze ben ik nu in elkaar aan het solderen. Kheb al 98 van de 343 ledjes gesoldeerd. De aansturen wordt een groter probleem omdat ik dan alles 2 keer uit moet voeren. Namelijk een keer voor groen en een keer voor rood. Hier heb ik bewust voor gekozen omdat op die manier straks mogelijk is om elke led en groen en rood aan te zetten onafhankelijk van waar de led zich bevindt. Zou je alle "rood" en "groen" pinnen van de leds nemen als verdieping dan zit je aan meer beperkingen en gaan er rare dingen gebeuren.

4. foto's volgen. De leds zijn helder maar de top is diffuse. Dus alles is mooi wit/doorzichtig. Alles plaats ik straks dan ook op plexiglas. Wat ik mischien mat ga maken daar ben ik nog niet over uit

bazzzzzz wijzigde dit bericht 06-02-2007 19:59 (135%)

 
Berichten: 401
Reg. datum: 17 april 2003

VET! ;)

ik neem aan dat je die pic aanstuurd met de paralelle poort, en die weer met ASM aanstuurt.
Heb je asm in VM ware draaien, of moet je gewoon je hele pc rebooten voor een test?
 
Berichten: 153
Reg. datum: 23 januari 2007

haha nee hoor. De asm zet ik met mplap om in een hex bestand. Dat hex bestandje stop ik met mijn galvawisp in de pic. ---> pic uit de galvawisp---->pic in de schakeling en klaar :D

als ik dus een ander effect er in wil zetten zal ik de pic dus even uit de schakeling moeten halen
 
Berichten: 401
Reg. datum: 17 april 2003

ik zie het alweer: écht handige dingen vind je op internet, en niet op school :P

Meester_J wijzigde dit bericht 23-01-2007 20:33 (4%)

 
Berichten: 754
Reg. datum: 11 augustus 2004

ASM = Assembler en is gewoon een programmeertaal zoals vele alleen ga je nu rechtstreeks de commando's die de µC kan uitvoeren ingeven.

Je kan misschien je schema klikbaar maken, zo is nogal moeilijk leesbaar. Voor een datasheet van de 74HC595 kun je gewoon op alldatasheet kijken. Hoe heb je trouwens die aangestuurd zonder datasheet. :p

'The only thing 2 engineers will agree upon, is that the 3rd one is an idiot.' - 'shakespear was a mathematic : root(4*b^2) = 2b or -2b'

Berichten: 7.835
Reg. datum: 15 februari 2005

Zeer mooi!
Kan je hem ook zo aansturen zodat die op de muziek knippert ofzo? (Equalizer misschien?)

De topicgenerator is kapot. Doneer nu 5 euro per maand en geef de HK een kans op overleven!

Berichten: 153
Reg. datum: 23 januari 2007

@kluyze de datasheet heb ik ooit een keer uitgeprint:P khad geen idee meer van welke site. En hoe maak ik een plaatje klikbaar?

@saturnus jep dat zou kunnen maar nu werkt de programmeer code en de hardware 100%. Straks ga ik wel bezig met ingewikkelde effecten enzo.
 
Berichten: 20
Reg. datum: 17 oktober 2006

cool, ik wil ook zo'n ding! Erg mooi gemaakt! Vanavond maar even ledjes bestellen. Misschien kan je hem ook aansluiten op een led vu meter (ik heb er nog een ic voor liggen) of bijvoorbeeld rechtstreeks op print (lpt) poort zodat je nog meer kan programmeren.
 
Berichten: 153
Reg. datum: 23 januari 2007

jep kan allemaal. Vu meter lukt vast en zeker dan heb je alleen even een a/d omzetter (+microfoon natuurlijk)erbij nodig. En programmeren lukt je ook allemaal in de pic. Alleen programmeren kost tijd:P dus erg boeiende progjes zitten er nu nog niet in.

Ik wil straks allerlei letters gaan laten scrollen:D

BTW ik heb nu snake erin lopen:P

bazzzzzz wijzigde dit bericht 23-01-2007 21:12 (8%)

 
Berichten: 401
Reg. datum: 17 april 2003

quote:
kluyze schreef op dinsdag 23 januari 2007 @ 20:35:
ASM = Assembler en is gewoon een programmeertaal zoals vele alleen ga je nu rechtstreeks de commando's die de µC kan uitvoeren ingeven.

Je kan misschien je schema klikbaar maken, zo is nogal moeilijk leesbaar. Voor een datasheet van de 74HC595 kun je gewoon op alldatasheet kijken. Hoe heb je trouwens die aangestuurd zonder datasheet. :p
ik zit gewoon ff te slapen: wij stuurde ooit de cpu van een pc aan, maar hier stuur je een microcontroller aan. het enige wat je pc doet, is het je programma erin stoppen :)
 
Berichten: 171
Reg. datum: 22 januari 2004

De idee van een ledkubus is hier al wel es gepasseerd, maar ik vind het super dat je alles hier zo netjes hebt uitgeschreven. Zowel de "hardware" als "software" komt mooi aan bod, zonder ergens te kort te komen aan duidelijkheid.
Hoedje af! _/-\o_

Als eerste post hier kan het op zich al wel gelden! d:)b

mooseman007 wijzigde dit bericht 23-01-2007 21:27 (10%)

veerboot met underscores

Nice, ga ik zeker eens bouwen, al is het maar om de 595 eens te gebruiken ICM een PIC. En dan leuke effectjes er in stoppen en op mijn bureau zetten. Komen mijn 8x bestelde darlington array's ook meteen van pas :)

pc specs: groter, beter, mooier en sneller dan de jouwe :+

prutser 1e klasse
Berichten: 3.511
Reg. datum: 29 november 2000

Echt een super topic start. Zelfs een EL noob zoals ik kan er nu een gooi na doen (ben zowiezo op zoek naar leuke (simpele) projectes om meer van EL te leren)

Als ik uitgeknutselt en geprogrammeerd ben met mijn Asuro, ga ik er zeker een maken :)

The major difference between a thing that might go wrong and a thing that cannot possibly go wrong is that when a thing that cannot possibly go wrong goes wrong it usually turns out to be impossible to get at or repair.

Berichten: 153
Reg. datum: 23 januari 2007

dank voor alle lof:D Trouwens hier heb ik de code enzo wel uitgelegd maar als iemand behoefte heeft aan het hele programma moet diegene mij maar even een mailtje sturen. mail adres staat in profiel
 
IMHO --->
Berichten: 4.686
Reg. datum: 11 juni 2006

Wow _/-\o_ mooi gemaakt.

Ik heb een ideetje om het misschien nog mooier te maken, maar geen idee of het kan/gaat werken?

Als je nou ieder ledje in een plexiglas kubusje zou lijmen?
En dan met wat schuurpapier de zijkanten van dat kubusje diffuus maken?

Alleen is het dan wel zo dat ledjes in het midden feller moeten zijn als aan de randen omdat je die niet meer zo goed ziet anders.

Wel heel mooi gedaan, doet me denken aan die 3D kubussen die ze bij TU toen gemaakt hadden.

Enne:

FILMPJE!!!

They call me Sir Poopsalot because I poop... a lot

Blaat.

Dit kun je in principe ook met de parallelle poort doen, je hebt 4 schuifregisters met 4 LATCH lijnen (de kloklijn hoef je in principe niet 4 keer uit te voeren), dat geeft 4 latch + 4 data per register, en de kloklijnen van elk register hoef je niet apart aan te sluiten (TIP: gebruik hier de STROBE voor, die geeft elke keer als je wat op de poort zet een puls). Leuk idee om mijn oude DOS-laptop met QuickBasic weer voor van stal te halen... al maak ik er dan wel een 5x5x10 matrix van of een platte, daar kun je wel wat moois mee maken... ik ga morgen (euhm, wat zeg ik, vandaag? :?) eens de Wiener of de Display beroven :)

My first programming language was SOLDER! [ Terry Pratchett ]

Berichten: 125
Reg. datum: 23 mei 2005

Na het lezen van dit begint het bij mij ook te kriebelen :P maar dan even een vraag erover: je kan iedere led apart aansturen toch ? kan je er dan ook een soort van 3D snake in spelen en in welke programeertaal moet dit dan geschreven worden ? :)
 
Dit zal dan ook wel een uitdaging voor je zijn:

http://www.jamesclar.com/product/2005/3dcubewhite/index.html

Pong in een 3d kubus ;)

misschien een id om via de serieele poort de pic aan te sturen. Dan hoef je niet steeds je pic opnieuw te programmeren wil je een nieuw 'patroon' in je kubus.
 
Berichten: 36
Reg. datum: 22 januari 2007

Mooi gedaan! Ik heb al die materialen hier nog wel liggen dus misschien ga ik de kubus ergens deze week ook wel maken. Als transistors gebruik ik dan een paar ULN2803's. Is het trouwens niet makkelijker om de PIC via RS232 te laten communiceren met de pc? Dan kun je gelijk de patronen doorsturen naar de 74HC595's.
 
Berichten: 153
Reg. datum: 23 januari 2007

jep is waarschijnlijk makkelijker maar ik heb een hekel aan die RS323 zooi vandaar dus deze oplossing
 
Dit ziet er erg mooi uit. Is dit eigenlijk ook wel te doen voor iemand die alleen maar wat audiostekkers heeft gesoldeerd? * mithras is wel interested, maar compleet elektro n00b namelijk ;)

Heb ik het verder goed dat de 16F628a geprogrammeerd kan worden, en om dus die 125 leds aan te sturen er 4 keer een 74HC595 gebruikt wordt?
quote:
Te uitgebreid of is dat juist goed?
Voor mij juist goed ;)
quote:
En hoe krijg ik mijn "koppen" groter?
Je hebt binnen rml ook h1, h2 en h3 tags: [h2]Hier een kop2[/h2] :)

Portfolio | Your ecological footprint looks even bigger in melting snow

Berichten: 153
Reg. datum: 23 januari 2007

quote:
Heb ik het verder goed dat de 16F628a geprogrammeerd kan worden, en om dus die 125 leds aan te sturen er 4 keer een 74HC595 gebruikt wordt?
helemaal goed!

En ja het soldeerwerk is de doen als je geen losse transistoren zoals ik gebruik maar je een IC gebruikt waar al transistoren inzitten. De ULN2803 is er zown eentje. Maar kijk even na in de datasheet of hij inderdaad bruikbaar is (led op pnp en npn transistoren) in mijn schema staat wel aangegeven welke pnp en welke npn moeten zijn.
 
Berichten: 20
Reg. datum: 17 oktober 2006

Ik vroeg me trouwens af: stel dat je 2 ledjes aan heb staan, dan kan je ze niet tegelijk laten branden, maar om beurten (en dat zeer snel). Knipperen de ledjes dan niet? En geven ze dan iet maar de helft van het licht wat ze normaal moeten geven? want als je er veel meer tegelijk aan heb staan, staan somige zelfs maar 10 procent van de tijd aan.
 
veerboot met underscores

Dat klopt, Daardoor kun je de voorschakelweerstand wat lager houden. Stel dat je normaal 470 ohm nodig hebt, dan kun je nu bijv. 100 ohm nemen. De led licht zo kort op dat een wat hogere stroom (en dus licht output) geen kwaad kan. Knipperen zie je niet, want daarvoor is ons oog te traag, maar goed ook, anders kon je je CRT monitor, beamer, TL buis etc. wel weg gooien :P

_ferry_ wijzigde dit bericht 24-01-2007 18:41 (12%)

pc specs: groter, beter, mooier en sneller dan de jouwe :+

Pagina: 1 2 3 4 5 6 7 8 9 last



VNU Media logo Powered by True

© 1998 - 2008 Tweakers.net - Alle rechten voorbehouden

Uitgever van: