Ik ben bezig met het maken van een 8x8x8 LED Cube, ik had van een tweaker een ontwerp gekregen. Dat ontwerp heb ik helemaal in elkaar gesoldeerd op een experimenteerbordje, maar het geheel werkt voor geen meter, en ik vertrouw het ontwerp ook helemaal niet (heb er al meerdere fouten in ontdekt..). Dus mijn vraag is nu, heeft iemand een ontwerp liggen voor zo'n kubus die werkend is bevonden?
En nog een andere praktische vraag: Bij het solderen van het vorige ontwerp heb ik gemerkt dat er superveel draden naar GND en VCC geschakeld moeten worden, bij mijn eerste probeersel heb ik al die draden op 1 soldeereilandje weten te persen, maar dat werkte niet handig (je smelt er 1 vast, schieten er 3 los.. enz.), weet iemand iets slimmers?
Tot slot: Weet iemand een goed etsbedrijf (dan overweeg ik om het te laten etsen...)?
Schema wat ik nu gebruikt heb:

Wijzigingen hierin:
- Pin 14 van IC 1 ook daadwerkelijk aan Vcc +5V gehangen
- Pin 10 en 15 van IC 2 aan respectievelijk + 5V en GND gehangen
Tests hiermee:
- Heb de PIC geprogd met een Wisp648
- Programma code:
Resultaten:
Niks gaat branden
Ik heb de schakeling even doorgemeten, is allemaal in orde. Dus wat er mis gaat vat ik niet.
En nog een andere praktische vraag: Bij het solderen van het vorige ontwerp heb ik gemerkt dat er superveel draden naar GND en VCC geschakeld moeten worden, bij mijn eerste probeersel heb ik al die draden op 1 soldeereilandje weten te persen, maar dat werkte niet handig (je smelt er 1 vast, schieten er 3 los.. enz.), weet iemand iets slimmers?
Tot slot: Weet iemand een goed etsbedrijf (dan overweeg ik om het te laten etsen...)?
Schema wat ik nu gebruikt heb:

Wijzigingen hierin:
- Pin 14 van IC 1 ook daadwerkelijk aan Vcc +5V gehangen
- Pin 10 en 15 van IC 2 aan respectievelijk + 5V en GND gehangen
Tests hiermee:
- Heb de PIC geprogd met een Wisp648
- Programma code:
LIST P=16F628A include <P16F628A.INC> __CONFIG _CP_OFF & _DATA_CP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC & _LVP_OFF ERRORLEVEL -302 ; free 16F628 RAM starts at 0x20(depends on type microcontroller) CBLOCK 0x20 Var1 bits1 cntr1 cntr2 cntr3 herhalen herhalen2 ENDC #define BANK0 bcf STATUS,RP0 ; RAM PAGE 0 #define BANK1 bsf STATUS,RP0 ; RAM PAGE 1 #define data PORTB,0 ;dit is dus pin 14 van het eerste schuifregister(data pin) #define klok PORTB,2 ;klokingang van eerste schuifregister(pin 11) #define latch PORTB,1 ;dit is de latch van schuifregister 1,2 en 3(pin12) #define vdata PORTB,4 ;schuifregister van de verdiepingen #define vklok PORTB,6 #define vlatch PORTB,5 ;startadres of the controller org 0x0000 ; For using A0-A3 as digital I/O movlw D'7' ; movwf CMCON ; Comparators off, all pins digital I/O ; Reset Port values clrf PORTA clrf PORTB BANK1 ; Switch to bank 1 movlw b'00000000' ; movwf TRISA ; PORTA = all outputs movlw b'00000000' ; movwf TRISB ; PORTB = all outputs BANK0 ; Switch to bank 1 main movlw b'00000000' call LOOPLICHT movlw b'00000000' goto main LOOPLICHT movlw b'00000000' call inklokken call inklokken call inklokken call inklokken call inklokken call inklokken call inklokken call inklokken ;op alle registers staat nu een 0 call v1 call lopen call v2 call lopen call v3 call lopen call v4 call lopen call v5 call lopen call v6 call lopen call v7 call lopen call v8 call lopen lopen movlw d'8' movwf herhalen l1 movlw b'00000001' call inklokken decfsz herhalen,f goto l1 ;8 keer 00000001 inklokken call vertraging movlw d'8' movwf herhalen l2 movlw b'00000010' call inklokken decfsz herhalen,f goto l2 call vertraging movlw d'8' movwf herhalen l3 movlw b'00000100' call inklokken decfsz herhalen,f goto l3 call vertraging movlw d'8' movwf herhalen l4 movlw b'00001000' call inklokken decfsz herhalen,f goto l4 call vertraging movlw d'8' movwf herhalen l5 movlw b'00010000' call inklokken decfsz herhalen,f goto l5 call vertraging movlw d'8' movwf herhalen l6 movlw b'00100000' call inklokken decfsz herhalen,f goto l6 call vertraging movlw d'8' movwf herhalen l7 movlw b'01000000' call inklokken decfsz herhalen,f goto l7 call vertraging movlw d'8' movwf herhalen l8 movlw b'10000000' call inklokken decfsz herhalen,f goto l8 call vertraging return v_all call delay movlw b'00000000' call vinklokken return v8 call delay movlw b'11111110' call vinklokken return v7 call delay movlw b'11111101' call vinklokken return v6 call delay movlw b'11111011' call vinklokken return v5 call delay movlw b'11110111' call vinklokken return v4 call delay movlw b'11101111' call vinklokken return v3 call delay movlw b'11011111' call vinklokken return v2 call delay movlw b'10111111' call vinklokken return v1 ; 12345678 call delay movlw b'01111111' call vinklokken return inklokken movwf Var1 ; zet de waarde vanuit w in Var1. dit is het getal wat geklokt moet worden movlw D'8' ;zet de waarde 24 in het werkregister movwf bits1 ;sla de waarde 24 uit w op in bits1 dit is het aantal bits wat ingeklokt moet worden loop2 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 data ;zo nee, zet de datalijn naar 0 btfsc STATUS, C ; is carry 0? bsf data ;zo nee data is 1 bsf klok nop bcf klok ;bitje is nu ingeklokt decfsz bits1,f ;verlaag bits1 met één totdat die nul is goto loop2 ; is bits1 0? dan "return" zo nee ga naar loop1 bsf latch nop bcf latch ;latch dus resultaat is zichtbaar return vinklokken movwf Var1 ; zet de waarde vanuit w in Var1. dit is het getal wat geklokt moet worden movlw D'8' ;zet de waarde 24 in het werkregister movwf bits1 ;sla de waarde 24 uit w op in bits1 dit is het aantal bits wat ingeklokt moet worden loop3 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 vdata ;zo nee, zet de datalijn naar 0 btfsc STATUS, C ; is carry 0? bsf vdata ;zo nee data is 1 bsf vklok nop bcf vklok ;bitje is nu ingeklokt decfsz bits1,f ;verlaag bits1 met één totdat die nul is goto loop3 ; is bits1 0? dan "return" zo nee ga naar loop1 bsf vlatch nop bcf vlatch ;latch dus resultaat is zichtbaar return delay movlw D'1' ;15 movwf cntr2 delay2 movlw D'250' ;250 movwf cntr1 delay3 decfsz cntr1, f goto delay3 decfsz cntr2, f goto delay2 return vertraging movlw D'255' movwf cntr2 ver1 movlw D'255' movwf cntr1 ver2 decfsz cntr1, f goto ver2 decfsz cntr2, f goto ver1 return END
Resultaten:
Niks gaat branden
Ik heb de schakeling even doorgemeten, is allemaal in orde. Dus wat er mis gaat vat ik niet.
[ Voor 84% gewijzigd door bindsa op 08-07-2010 19:12 ]