Schuifregister en 3d kubus

Ik heb je cube virtueel "plat" kunnen slaan, en mijn inzicht is nu "loud & clear".

En ik heb iets moois voor je gemaakt; een compleet schema met alle flanken en alle verdiepingen..:-)

De software draait er ook al op, maar die wil ik nog dusdanig aanpassen dat de situatie ook voor jou "loud & clear" wordt.

Morgen- of overmorgen kom ik hier nog wat dumpen.:-)

Edit: Ik gebruik Proteus voor schematekenen en simulatie, maar dat kost een vreselijke smak geld...

Edit2 : Heb je een datasheet van je leds? Ik wil de serieweerstanden nog aanpassen voor max. power.

In the beginning there was nothing.... and even that exploded...

En ik heb iets moois voor je gemaakt; een compleet schema met alle flanken en alle verdiepingen..

De software draait er ook al op, maar die wil ik nog dusdanig aanpassen dat de situatie ook voor jou "loud & clear" wordt.

Wauw:o Super:D Dank je wel.

Ik heb mijn leds bij leds-buy vandaan. Dit is de site waar ik de blauwe leds gekocht heb. Ik heb er ook nog een paar rode(12 stuks) en groene(6 stuks) leds tussen.

Er staan op die site wel specs. bij, maar geen datasheet.
De rode en groene heb ik een keer in een grote zak gekocht, dus het merk en specs weet ik daar niet van. Ze zijn wel allemaal doorzichtig dus ik denk dat ze hiermee te vergelijken zijn:
Rode leds
Groene leds

Murphy's Law: Anything you try to fix will take longer and cost more than you think.

Op 19 januari 2008 17:01:38 schreef ~Galaxy:
Hier is het schema van flank #1.

Als je het zo doet ben je wel erg inefficient bezig:

Je maakt zes van die vlakken. Elk vlak heeft 2 schuif registers nodig.

Dus intotaal 2*6 = 12 (dit kan nog een beetje aangepast worden omdat je niet alle acht de uitgangen per schuifregister gebruikt maar toch....)

Als je het nu anders doet. Je stuurt het per verdieping aan. Dan heb je per verdieping 6*6 ledjes die je direct aan kunt sturen (geen multiplexen) je gebruikt nu (weer ff er van uitgaan dat je 1 schuifreg/6 pootjes gebruikt) 6 schuifregisters

Omdat je natuurlijk ook van vlak wilt wisselen moet je ook nog een schuifregister gebruiken om het aantal vlakken te wisselen (je gebruikt daar 1 schuifreg voor want 6 vlakken)

6+1 = 7 dit zijn dus bijna de helft minder schuifregisters dan in jouw oplossing (en de helft minder torren weerstanden, etc...)

In theorie kan je 36 leds tegelijk aanzetten.
Als elke led 15 mA trekt, dan krijg je dus 36 x 15 = 540 mA.
Daarom heb ik stevige torren voor de source genomen.

Ehh ik kan mij vergissen maar dat schuifregister krijgt per pin ook 6*15 = 90mA te verwerken en dat is buiten de specs (die zijn max 25mA per poort)

Je vergist je. De boel wordt geMPXed.
Elke sink krijgt slechts 1 led te verwerken.

In the beginning there was nothing.... and even that exploded...

Op 20 januari 2008 22:51:55 schreef ~Galaxy:
Je vergist je. De boel wordt geMPXed.
Elke sink krijgt slechts 1 led te verwerken.

Oh maar dan krijg je slects 1/6 van de stroom die ingesteld is door de weerstand door je ledje.

Dus als die is ingesteld voor 15mA dan gaat er in jou geval maar 15/6 mA door heen (niet dat dit erg is... het zal nog wel branden) maar als je denkt dat je de weerstand gewoon 6 keer zo klein pakt dan strookt dat weer niet met dat je dat schuifregister kan pakken (want dan loopt daar gewoon nominaal die 6*15mA door heen (als alle leds aan staan)

Dat is ook de reden waarom ik aan TS gevraagd heb :

- Nominal current.
- Max current.
- Max peak current. (gedurende xxxx mS)

Edit: Ik snap nu wat je bedoeld. Ik push 1 van beiden to the limits, ofwel shift-reg, ofwel leds.

Edit2 : Maybe both...

In the beginning there was nothing.... and even that exploded...

@~Galaxy: Waren de specificaties goed?
Ik geloof dat je die bedoelde toch?

Murphy's Law: Anything you try to fix will take longer and cost more than you think.

Het schema.

Het is een download van 6 MB, dus ik zal hem hier niet als IMG neerzetten.:-)

http://home.casema.nl/galaxy/ledcube3.bmp

Elke matrix is een flnk van je cube.
Als er nog vragen zijn over het schema, dan hoor ik het wel.

Het prog:

code:

Device=16F628A

Config hs_osc, CP_OFF, WDT_OFF, PWRTE_ON, LVP_OFF,BODEN_OFF
XTAL=20

DelayMS 50
ALL_DIGITAL=true

Dim floor0[6] As Byte
Dim floor1[6] As Byte
Dim floor2[6] As Byte
Dim floor3[6] As Byte
Dim floor4[6] As Byte
Dim floor5[6] As Byte
Dim q As Byte
Dim mpx As Byte

Symbol OE=PORTB.4                       ; Out Enable
Symbol clockpin=PORTB.5
Symbol datapin=PORTB.6
Symbol latch=PORTB.7

TRISA=0
TRISB=0

Clear

main:

;Het bitpatroon komt precies overeen met de matrixen in het schema.
;Daar waar een led moet branden, vul je een 0 in.
;De eerste 2 bits doen niet mee, omdat het een 6x6 cube is.

; 1e flank ----------------------------------

floor5[0]=%11111111
floor4[0]=%11100111
floor3[0]=%11100111
floor2[0]=%11111111
floor1[0]=%11111111
floor0[0]=%11111111

; 2e flank ----------------------------------

floor5[1]=%11111111
floor4[1]=%11111111
floor3[1]=%11111111
floor2[1]=%11111111
floor1[1]=%11111111
floor0[1]=%11111111

; 3e flank ----------------------------------

floor5[2]=%11111111
floor4[2]=%11111111
floor3[2]=%11111111
floor2[2]=%11111111
floor1[2]=%11111111
floor0[2]=%11111111

; 4e flank ----------------------------------

floor5[3]=%11111111
floor4[3]=%11111111
floor3[3]=%11111111
floor2[3]=%11111111
floor1[3]=%11111111
floor0[3]=%11111111

; 5e flank ----------------------------------

floor5[4]=%11111111
floor4[4]=%11111111
floor3[4]=%11111111
floor2[4]=%11111111
floor1[4]=%11111111
floor0[4]=%11111111

; 6e flank ----------------------------------

floor5[5]=%00000011
floor4[5]=%11111111
floor3[5]=%11111111
floor2[5]=%11111111
floor1[5]=%11111100
floor0[5]=%11101111

High OE
PORTA=0
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor0[q]]
Next
PulsOut latch, 10, High
Low OE
DelayUS 500
High OE
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor1[q]]
Next
PulsOut latch, 10, High
PORTA=1
Low OE
DelayUS 500
High OE
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor2[q]]
Next
PulsOut latch, 10, High
PORTA=2
Low OE
DelayUS 500
High OE
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor3[q]]
Next
PulsOut latch, 10, High
PORTA=3
Low OE
DelayUS 500
High OE
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor4[q]]
Next
PulsOut latch, 10, High
PORTA=4
Low OE
DelayUS 500
High OE
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor5[q]]
Next
PulsOut latch, 10, High
PORTA=5
Low OE
DelayUS 500
High OE

GoTo main

Het hele zaakje draait zo op 80 Hz, en ik wil zeker niet lager gaan.
Als je dus binnen het prog bitpatronen wil wijzigen, dan dien je dat binnen de tijdlus te doen. (delayus 500).

Dus als je code hebt die 100 uS duurt, dan zet je die op de plaats van de delayus 500, en je wijzigd delayus 500 in delayus 400.

Ook voor het prog; bij vragen roep je maar.

Ik kom komend weekend wel even af met een prog die de ledjes willekeurig laat oplichten. (soort sterrenhemel).

In the beginning there was nothing.... and even that exploded...

:o Heel erg bedankt:D Ik ga het gelijk proberen. Dank je.

Murphy's Law: Anything you try to fix will take longer and cost more than you think.

Ik heb het projectje van de 3d ledkubus weer opgepakt(na het afmaken van mijn regelbare voeding die hier onder het stof lag weg te kwijnen).

Ik ben aan het proberen om de leds om de beurt op te laten lichten.

Is het dan de bedoeling dat ik de leds per stuk in clock?

zoiets als dit:

code:

For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor0[%11111101]]
Next
PulsOut latch, 10, High
Low OE
DelayUS 500
High OE
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor1[%11111110]]
DelayMS 250
PulsOut latch, 10, High
Low OE
DelayUS 500
High OE
For q = 0 To 5
    SHOut datapin, clockpin,msbfirst, [floor1[%11111101]]
Next
DelayMS250
;etc

Of moet er dan een hele nieuwe code worden geschreven?(dus dat ik niet verder kan borduren op de bovenstaande code)
Zo ja waar moet ik dan op letten bij het schrijven van die code?

Sorry als ik nu de regels overtreed om oude topics te kicken.

Murphy's Law: Anything you try to fix will take longer and cost more than you think.

Heeft er iemand een idee?

Ik ben er achter gekomen dat het stukje code uit mijn laatste post niet werkt. Dus ik neem aan dat het toch een (deels) nieuwe code schrijven wordt.
Heeft iemand er tips voor waar ik op moet letten?

Alvast bedankt voor de hulp:)

Murphy's Law: Anything you try to fix will take longer and cost more than you think.

beetje offtopic maar kan er moeilijk een ander topic voor aanmaken: met welk programma maak jij die schematjes ~galaxy? (very nice ^-^)

Murphy's Law: Anything you try to fix will take longer and cost more than you think.
Henry S.

Moderator

Dan heb je nooit Ultiboard gezien wat een layoutprogramma is, het is Proteus.

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.
Murphy's Law: Anything you try to fix will take longer and cost more than you think.

Thx Henry, kwist dat ik het al ergens had gelezen ... zat wrs in verkeer topic te zien :)

EDIT: ik ben dom dom dom 't stond bovenaan deze pagina :D

Weet iemand hoe ik dat kan doen?
Alvast bedankt voor de hulp.

Murphy's Law: Anything you try to fix will take longer and cost more than you think.
Sine

Moderator

Ik heb de post van Zom-b verplaatst naar Show your projects! Part 7.

Die leek me daar wat beter op zijn plaats ;)

Murphy's Law: Anything you try to fix will take longer and cost more than you think.

Op 11 maart 2008 22:19:45 schreef jorim23:
Ik ben aan het proberen om de leds om de beurt op te laten lichten.

Is het dan de bedoeling dat ik de leds per stuk in clock?

...

Of moet er dan een hele nieuwe code worden geschreven?(dus dat ik niet verder kan borduren op de bovenstaande code)
Zo ja waar moet ik dan op letten bij het schrijven van die code?

Als je als test 1 led tegelijk wilt laten oplichten is een nieuwe versimpelde routine aan te raden. Als je later wilt uitbreiden naar meerdere leds tegelijkertijd, dan is je bestaande programma de beste methode.

[Bericht gewijzigd door Zom-B op dinsdag 18 maart 2008 13:12:43 (38%)

Maar moet ik dan elke keer opnieuw zo'n register invullen?
Dus zoiets als dit:

code:

floor5[0]=%11111111
floor4[0]=%11100111
floor3[0]=%11100111
floor2[0]=%11111111
floor1[0]=%11111111
floor0[0]=%11111111

Want als ik het op deze manier doe:
SHOut datapin, clockpin,msbfirst, [floor1[%11111110]]
Dan krijg ik een foutmelding.

Murphy's Law: Anything you try to fix will take longer and cost more than you think.