Home › FORUM › Stel je eigen schakeling voor › Fading XMAX Tree ( Kerstboom met dansende...

FORUM

Log in om antwoord te posten of de notificatie-service te gebruiken.

vorige    1   2  

Onderwerp: Fading XMAX Tree ( Kerstboom met dansende LEDs )

Author Post

tymenyel

197 berichten

Stamgast
Stamgast

Read post 23-01-2010 18:42

Hallo Anne,

Ik heb een geschakelde voeding gebruikt (L4978 zie schema) en een normale adapter (12V 400mA). De grootste stroom stoten wordt door de condensatoren aan de in en uitgang van de geschakeldevoeding opgevangen, en de L4978 regeld de rest bij. Dit schema draait nu al een maand of negen zonder problemen of gekke haperingen. C11 is een SMD 100n condensator, en die tussen de pootjes (voeding) van de microcontroller is geplaatst (zie layout en board). Vanwege vermogensverlies heb ik de microcontroller en de LED's op 4,5volt draaien. Ik heb ook nog (staat niet op het schema) een 100n SMD condensator tussen de pootjes van elco C10 geplaatst.

Toen ik het programma in een AT90S1200 geprogrammeerd had, toen was het een probleem om het programma te miniaturiseren. Nu het in een ATtiny26 staat heb ik meer als genoeg ruimte. Ik heb nog een deel van het programma weg gehaald, omdat het programma voor de AT90S1200 15 LED's aanstuurde, en dit programma stuurt maar 6 LED's aan. Er zullen nog wel restanten van de 15 LED versie te vinden zijn, maar dat is ook redelijk gemakkelijk weer terug te plaatsen.

Ik heb ook technieken gebruikt om de klokpulsen gelijk te houden. Bij conditionele sprongen moet je die invloed soms gelijk trekken.

Ik heb ook een stukje pseudocode geschreven, en die heb ik bijgevoegd.

Ik zie dat er niet bij staat dat iedere transistor een BD139 is.

Groeten, Martijn.

AttachmentPseudocode_Random5.txt

Schueler

1422 berichten

Expert¹
Expert¹

Read post 23-01-2010 19:00

tymenyelIk heb ook technieken gebruikt om de klokpulsen gelijk te houden. Bij conditionele sprongen moet je die invloed soms gelijk trekken.


Dit zou je dus eenvoudig kunnen oplossen met een timer en een kleine interrupt routine.


Ben

tymenyel

197 berichten

Stamgast
Stamgast

Read post 23-01-2010 22:20

Ben, je hebt gelijk dat klokpulsen gelijk getrokken kunnen worden met timers, maar soms heb je programma's waar je de tijd niet hebt om een interrupt af te handelen.
Ik heb voor de ATtiny45 een programma geschreven waarbij elke 24 klokpulsen een PWM geupdate werdt, elke 192 klokpulsen werdt een tweede PWM geupdate, er werdt een DDS bijgehouden en de amplitude is instelbaar door de seriele data die via een differentiële Manchester-code binnenkwam (de tiny heeft geen vermenigvuldiging dus amplitude moet met shift en add). De HF PWM gaf het signaal af van de DDS en de LF PWM kreeg de data serieel. En ik had ook nog een soort CRC ingebouwd in de seriele data.
De sinus voor de DDS heb ik uit een lookup table gehaald. Om dat te berekenen had ik geen tijd genoeg

PWM (Pulse Width Modulation)
DDS (Direct Digital Synthesizer) sinus generator met instelbare frequentie
CRC (Cyclic Redundancy Check) fout detectie.

Maar waarom ik geen timer gebruikt heb is dat ik een zo hoog mogelijke verversingsgraad wilde berijken. Op mijn filmpje lijkt de lamp te knipperen, maar dat is niet zo (asynchoon met opname apparaat, zie ook oude video opnames computermonitoren) met een hogere verversing heb je daar geen last van. Is ook rustiger voor de ogen.

Groeten, Martijn

Schueler

1422 berichten

Expert¹
Expert¹

Read post 23-01-2010 22:47

Ok... snap het.
Intern draai ik met 8MHz...

Jou lampje heeft me wel op ideeën gezet.
Ik denk dat ik hem eens na bouw voor mijn ouders.

Doe doen stenen slijpen als hobby en die hebben vast wel wat kwarts over


Ben

Anneo

1350 berichten

Expert¹
Expert¹

Read post 23-01-2010 22:59

Je heb dus wel de nodige voorzorgen genomen om de controller een rustige maaltijd te bezorgen.Als ik een machinetaal prog.zie kan ik het niet laten,was vroeger noodzakelijk,om te proberen het in te korten.Dat het verloop langs verschillende wegen even lang moet duren is duidelijk,mijn alternatief doet dat ook.Niet dat het niet goed was maar misschien geeft een andere oplossing nieuwe ideeen,dus liet ik je mijn brouwsel zien.t'Was (oef) voor een keer geen C en andere Flowdinges!
Anne

tymenyel

197 berichten

Stamgast
Stamgast

Read post 24-01-2010 12:56

Hallo Anne, ik moet tot mijn schaamte bekennen dat ik je assembly verbetering niet gelezen had, tot daarstraks. ik heb nog wel een opmerking op jou opmerking

EDIT: hier heb ik de code weggehaald en er een afbeelding van gemaakt

Dat onderstreepte snap ik niet.

Dat stukje wat je geschreven hebt voor de pulsbreedte is inderdaad een stuk korter, en sneller. Ik dacht toen ik het schreef dat ik het onderste uit de kan gehaald had, niet dus. Bedankt voor het openen van mijn ogen

Ik voel me ook beter thuis in assembly dan in C. Als je in C een opdracht schrijft, dan weet je niet wat er gebeurd, en vooral als je de klokpulsen gelijk wilt trekken. Mijn idee hier achter is "de controller moet doen wat ik wil, en niet wat de compiler wil" met een andere C-compiler maak je een ander programma. Assembly blijft altijd het zelfde.
Als ik wat grotere programma's schrijf gebruik ik soms pseudocode(basic/mensentaal achtig), dat vertaal ik beetje bij beetje door assembly. (zoiets als ik eerder geplaatst heb)

Groeten, Martijn.

edit: code werdt niet goed weergegeven

Bericht bewerkt door tymenyel op 24-01-2010 13:02

Bericht bewerkt door tymenyel op 24-01-2010 14:08

Anneo

1350 berichten

Expert¹
Expert¹

Read post 24-01-2010 23:39

Hallo Martijn,dat met die poort komt omdat het een instruktie lang duurt voordat de data erop staat.Dus als je de gegevens van die poort dadelijk weer nodig hebt, een nop ertussen anders klopt het niet.(wordt, ergens diep verscholen in de data,voor gewaarschuwd)
Anne

Anneo

1350 berichten

Expert¹
Expert¹

Read post 28-01-2010 22:56

Omdat ik het niet laten kan,erfenis van vroeger toen het zo kort en kompakt mogelijk moest zijn,heb ik nog wat aan het ass.prg. van Martijn gesleuteld.Ook door de opmerking van Ben dat het beter met een timer te doen is gaf te denken.Dus hier nog twee brouwsels,voor wie van puzzelen houdt.
Anne

opnieuw opgezet,interrupt enable vergeten!
nog wat toegevoegd
nu versie twee

AttachmentRandom8_v2.txt

AttachmentRandom8t_v2.txt


Bericht bewerkt door Anneo op 29-01-2010 10:52

Bericht bewerkt door Anneo op 29-01-2010 10:54

Bericht bewerkt door Anneo op 29-01-2010 12:19

Bericht bewerkt door Anneo op 31-01-2010 16:20

Bericht bewerkt door Anneo op 31-01-2010 16:22

tymenyel

197 berichten

Stamgast
Stamgast

Read post 30-01-2010 16:05

Hallo Anne,
ik ben de programma's waar je mee bezig geweest bent aan het door kijken.
Ik heb gekeken naar random8.txt. Geniale vondst om na de vergelijking de carry in een register te schuiven. Het programma werkte meteen. Er is wel een aantekeningetje. Wat ik doe, is ik laat de LED logaritmisch beginnen (om het plotseling aan flitsen tegen te gaan) maar na een tijdje schakel ik om naar lineair. Dat heeft als voordeel dat als de LED eindelijk zijn volle sterkte bereikt, hij niet plotseling in elkaar zakt. Het ziet er vloeiender uit. (staat ook zo in mijn pseudocode) Het lijkt er ook op dat de code die ik gebruik de LED's meer random laten oplichten. De pauze's er tussen zijn meer willekeurig.

Random8t.txt
Er zit een foutje in:
SBIC SREG,1 ;Z-vlag {Operand 1 out of range: 0x3f}
vervangen door "BRNE PC+1 ;Z-vlag"

De uitgangen staan een beetje zenuwachtig te knipperen. Erg mooi als kaars simulatie, maar niet als kleuren ornament in de hoek van de kamer, ben er nog niet achter wat er fout aan is.

Ik vind het wel leuk dat ik stukjes code en labels van mezelf terug zie Die (pseudo)random generator bijvoorbeeld heb ik al een heleboel plezier van gehad, en jullie nu ook Ik heb hem toendertijd eens in elkaar geprutst, ik had er nog wat statistiek op los gelaten en zo de optelling van de constante wat aangepast, en zo kwam ik op $87.

Ik heb ook wat verbeteringetjes doorgevoerd (dankzij Anne), en ik heb een foto genomen van mijn LED-lamp met een batterij voor referentie.

Groeten, Martijn

AttachmentRandom5.asm

AttachmentRandom5.hex

Anneo

1350 berichten

Expert¹
Expert¹

Read post 31-01-2010 17:00

Na meerdere keren vergeefs ingetikt overgegaan
op telegramstijl(proximus:bah,mobistar nog erger)
Nu van tevoren gemaakt en ingeplakt,mis?opnieuw!
Mooi printje gemaakt!Geprobeerd van dichter te bekijken
maar ruim 2MB wil niet lukken (ook geprobeerd studio4
te krijgen,na bijna 1,5uur binnen maar fout)
Zie dat solderen aan groot kopervlak tegenvalt,smalle
stroken zonder koper tussen leds helpt wel.
Met je toelichting betreffende de timing heb ik wat
aanpassingen gemaakt en hogerop de progs vervangen.
De snellere LUS geeft problemen:minimumtijd te kort.
Heb gezien dat je de tijd van 32 naar 42 max verlengt,
helpt de min tijd niet omhoog.Zie retour-epistel.
De laatste versie heeft 6leds zie ik en niet op een rij.
Kwam beter uit op de print?
Die fout ken ik,dacht het verbeterd te hebben,niet dus.
De ass, wavrass,doet het verkeerd met relatief adres.
Bijv.over een instructie springen is PC+1,maar om het
goed te krijgen moet ik PC+2 zetten.Dus,ook te lui om
een label te zetten,gebruik ik skip ook als het niet
gaat,
Omdat bleef jeuken prog nog wat ingekort,
nu in nog geen 80 lijnen.Ter lering ende vermaak...wie weet?
Anne

AttachmentRandom6.txt

AttachmentRandom8_v3.txt


Bericht bewerkt door Anneo op 31-01-2010 23:57

Bericht bewerkt door Anneo op 01-02-2010 21:28

Bericht bewerkt door Anneo op 01-02-2010 22:31

Bericht bewerkt door Anneo op 01-02-2010 23:29

Log in om antwoord te posten of de notificatie-service te gebruiken.

vorige    1   2  

Lid worden

Payoff

Gratis Elektor@POST

Elektor wekelijks lezen:

Met Elektor@POST steeds het laatste nieuws uit de elektronicawereld.

Direct aanmelden >>>

Volg ons ook op:

      

Elektor Events

Speciale producten

Direct doen

Nu in prijs verlaagd

Elektor OSPV1

Tijdelijk € 210,- korting!

Dit zelfbalancerende indoor voertuig is ideaal voor bijvoorbeeld fabriekshal, magazijn of school.