Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Ozdoba świąteczna - sople / spadające gwiazdy by Gibol

Gibol 25 Gru 2012 22:13 17721 12
  • Ozdoba świąteczna - sople / spadające gwiazdy by Gibol

    Witam wszystkich świątecznie!

    Ponieważ jakiś czas temu otrzymałem z konkursu makietkę stm32f0 discovery i chciałem ją wypróbować uruchamiając na niej coś więcej niż miganie diodą, oraz z racji tego, że spodobała mi się ozdoba, która wisi na choince przy Pasażu Grunwaldzkim we Wrocławiu, postanowiłem zamigać większą ilością diod i od słowa do słowa powstał ten cieszący oko świąteczny projekt.

    Do rzeczy...

    Konstrukcja jest całkiem prosta, żeby nie powiedzieć prostacka.
    Wykonanych jest 5 podłużnych płytek, na których znajduje się 16 białych diod w obudowie SMD 0805 OVS-0801 oraz driver TLC5925.

    Ozdoba świąteczna - sople / spadające gwiazdy by Gibol Ozdoba świąteczna - sople / spadające gwiazdy by Gibol Ozdoba świąteczna - sople / spadające gwiazdy by Gibol

    Moduły LED są połączone z Discovery przewodami o długości około 1m. Jest to prawie maksymalna długość, ponieważ układy są zasilane z 5V, a procesor z 3V (więc stan wysoki na porcie także będzie odpowiadał wartości 3V) oraz czas trwania impulsów sterujących jest stosunkowo krótki, i częstotliwość jak na taki przewód spora).

    Ozdoba świąteczna - sople / spadające gwiazdy by Gibol

    Diody sterowane są PWMem, z tym, że tak naprawdę realizowany jest on na driverach a nie na uC, który tylko wysyła informację, którą diodę wygasić, a którą zapalić w danym momencie. ;)

    Ozdoba świąteczna - sople / spadające gwiazdy by Gibol

    Na razie zaprogramowany jest tylko wspomniany efekt spadających gwiazdek, bo święta mnie z tym zastały i nie miałem czasu dopisać niczego więcej, ale nic nie stoi na przeszkodzie, aby zrealizować inne efekty.


    Link


    Projekt płytki wykonany w Eaglu, a kod pisany pod Keilem.
    Jako, że przyoszczędziłem na jednym przewodzie, drivery są sterowane równolegle, nie szeregowo, co wymusiło ręczne machanie portami, a nie na przykład użycie sprzętowego SPI.
    Załączniki:

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Gibol
    Poziom 17  
    Offline 
    Specjalizuje się w: pwr - eit - p.i.w.o.
    Gibol napisał 311 postów o ocenie 83, pomógł 1 razy. Mieszka w mieście Wrocław. Jest z nami od 2005 roku.
  • #2
    r06ert
    Poziom 25  
    Też chciałem w tym roku zrobić sople ale ostatecznie postawiłem na coś innego. ;) Efekt fajny, nie powiem. Czy nie myślał kolega żeby wsadzić elektronikę do rur z pleksi?

    Pozdrawiam.
  • #3
    wilczasty
    Poziom 19  
    Witam,

    Bardzo ciekawy projekt, starałbym się jeszcze jakoś zwężyć PCB, aby faktycznie wyglądała jak sopel lodu. I ewentualnie po przylutowaniu układów, zakrył pady diod LED i pomalował całość na kolor zielony, myślę, ze wtedy aż tak by się nie wyróżniał.

    Zastanawiam się w jaki sposób można by zrealizować coś takiego na AVR, przy małym koszcie.

    Przypuszczam, że byłby problem z zakupem TLC5925 w Polsce.

    Pozdrawiam i życzę wesołych świąt!
  • #4
    slawek55
    Poziom 23  
    Czy można mieć prośbę do autora o opis algorytmu pracy układu? Łatwiej przenieść całość np na AVRa.
    A można zrealizować podobny efekt bez uC?
  • #5
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #6
    slawek55
    Poziom 23  
    Ale w takim układzie nie będzie wygaszania "schodzących" diod tylko coś ala "Night Rider"
  • #7
    Demmo
    Poziom 16  
    slawek55 napisał:
    Ale w takim układzie nie będzie wygaszania "schodzących" diod tylko coś ala "Night Rider"

    Chyba żeby równolegle dać kondensator z rezystorem, który wyładowywałby się jeszcze chwilę po zaniku zasilania na danym pinie dekodera.
    Po podaniu zasilania dioda zaczyna świecić i ładuje się kondensator, po zaniku zaświeca się kolejna dioda, a bieżąca wygasa rozładowując kondensator..
  • #8
    oj
    Poziom 42  
    slawek55 napisał:
    A można zrealizować podobny efekt bez uC?

    https://www.elektroda.pl/rtvforum/viewtopic.php?p=8860298#8860298
    Efekt jest zbliżony do oryginału.


    Ten projekt niestety potrzebuje użycia płytki uruchomieniowej STM32F0 DISCOVERY (nie jest droga) oraz trochę egzotycznych TLC5925, za to można dowolnie sterować - synchronizować "soplami".

    Oryginalne Snowfall nie są ze sobą zsynchronizowane - każdy ma własny sterownik.
  • #9
    Gibol
    Poziom 17  
    TLC były jak dla mnie najtańszymi dostępnymi driverami na farnellu stad ten wybór, jest dużo prawie identycznych dostępnych w polsce z serii MBI albo SCT wystarczy poszukać :) Jak ktoś chce taki efekt niezależnie to nawet jakieś attiny przy odpowiednim napisaniu softu powinno dać radę (można wtedy wykorzystać hardwareowe SPI do sterowania drivera.

    Co do algorytmu... można przestudiować załączony kod, ale mogę po krótce opisać.
    Chcemy uzyskać PWM na każdej z diod których jest podłączonych do 1 drivera 16.
    Sterowanie PWM softwareowo jest realizowane w ten sposób (przynajmniej u mnie) w ten sposób, że mamy timer który pracuje z określoną częstotliwością liczy sobie do 255 i w momencie gdy wartość wypełnienia dla danej diody osiągnie wartość licznika jest ona wyłączana, po czym gdy licznik się przekręci na wartość 0 są załączane diody których wypełnienie jest większe od 0.

    Przy diodach podłączonych bezpośrednio lub przez jakiś tranzystor sprawa jest prosta, ponieważ kwestią jest tylko machanie portem odpowiadającym konkretnej diodzie. Sprawa komplikuje się przy zastosowaniu drivera gdyż jest on rejestrem przesównym, którego wartości sterują wbudowanymi źródłami prądowymi (0/1) podczas gdy prąd jest ustawiany dla wszystkich jednocześnie rezystorem.

    Cała sztuka polega na tym aby mieć w pamięci zadane wartości wypełnienia dla każdej z diod i gdy nastąpi moment włączenia (przy wartości licznika - 0) bądź też wyłączenia jakiejkolwiek z diod (wartość licznika osiągnęła wartość wypełnienia diody) należy wysłać dane z aktualnym stanem (włączony/wyłączony) dla wszystkich diod. (ustawiam wartości pierwszej diody każdego sopla na port odpowiadający linii danych drivera danego sopla, następnie zatwierdzam daną impulsem zegarowym, analogicznie wysyłam kolejne 15 bitów, a następnie zatrzaskuję ję (ustawiam do rejestru odpowiadającego za aktualnie włączone źródła, poprzez impuls na pin LATCH drivera). Sztuka polega na tym aby robić to dostatecznie szybko aby nie było widać migania diod, ale też trzeba uważać aby procek wyrabiał się z wysyłaniem danych w trakcie przerwania). Ładnie jest to rozrysowane (jeżeli chodzi o całą komunikację i ustawianie danych w Datasheecie od drivera.
  • #10
    karbon
    Poziom 21  
    Na schemacie diody LED powinny być połączone odwrotnie.
  • #11
    Gibol
    Poziom 17  
    Faktycznie, już poprawione, ale uwaga w paczce jest stara wersja (bo nie chce mi się płytki poprawiać kiedy to tylko kwestia wlutowania w 2 stronę :)
  • #12
    dondu
    Moderator Mikrokontrolery Projektowanie
    Gibol napisał:
    Faktycznie, już poprawione, ale uwaga w paczce jest stara wersja (bo nie chce mi się płytki poprawiać kiedy to tylko kwestia wlutowania w 2 stronę :)

    Skoro żądasz aż 4pkt za pobranie pliku, to przyzwoitość wymaga, by jednak podmienić zawartość na prawidłową. Nie każdy początkujący przeczyta Twój post.
  • #13
    vp32
    Poziom 11  
    Odgrzeję trochę temat bo nie do końca rozumiem.

    JEst tam taka funkcja
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Czemu ma służyć ten fragment
    TempValues[i][j] = TempValues[i][j];

    oraz co robi to porównanie
    if(TempValues[i][j] == PWMCounter && PWMCounter!=0)


    Myślę, myślę i wymyślić nie mogę
    może ktoś podpowiedzieć?

    A druga sprawa, jaki jest ogólny algorytm uzyskiwania takiego efektu sopli?