Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Konkurs - oświetlenie świąteczne pokoju by Decado.

Decado 28 Dec 2010 18:13 8345 14
Tespol
  • Konkurs - oświetlenie świąteczne pokoju by Decado.
    Witam,
    chciałbym zaprezentować projekt oświetlenia swojego pokoju.
    Projekt jest ciągle w budowie jednak z racji sporej ilości nauki do szkoły i operacji jaką przeszedłem zdecydowałem sie na publikacje już w tym momencie ponieważ nie sądzę bym miał w terminie w jakim można nadsyłać prace coś więcej zrobić.

    W tej chwili całość sterowana jest z atmegi128 która wysyła dane na trzy procesory atmega16 do których podłączone jest 16 kanałów.
    W całym pokoju za meblami w mlecznych peszlach znajdują się komplety lampek choinkowych w trzech kolorach, RGB. W przyszłości gdy dołożę w programie opcję sterowania fazowego ma to pozwolić na uzyskanie efektu zbliżonego do diod RGB. Na choince powieszone są 24 komplety lampek. Żeby uzyskać płynne sekwencje jest to o połowę za mało ale tyle mi jak na razie wystarcza.


    Łącznie w całym pokoju rozwieszone jest 45 kompletów lampek, niestety są to najtańsze lampki choinkowe żarówkowe a nie ledowe przez co pobierają spore ilości prądu.


    Poniżej przedstawiam zdjęcia i filmik ***KAMERA BARDZO KIEPSKO ODDAŁA PRAWDZIWY EFEKT OŚWIETLENIA***

    Konkurs - oświetlenie świąteczne pokoju by Decado. Konkurs - oświetlenie świąteczne pokoju by Decado. Konkurs - oświetlenie świąteczne pokoju by Decado. Konkurs - oświetlenie świąteczne pokoju by Decado. Konkurs - oświetlenie świąteczne pokoju by Decado. Konkurs - oświetlenie świąteczne pokoju by Decado. Konkurs - oświetlenie świąteczne pokoju by Decado.






    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Decado
    Level 21  
    Offline 
    Has specialization in: elektronika, automatyka przemysłowa
    Decado wrote 487 posts with rating 97, helped 18 times. Live in city Gdańsk. Been with us since 2006 year.
  • Tespol
  • #2
    Dragas
    Level 26  
    Bardzo ciekawy efekt. Sam robiłeś płytki?
  • Tespol
  • #3
    norbis15
    Level 14  
    Witam, jestem pod wrażeniem. Ale mam kilka pytań.
    Dlaczego płytki są czerwone?
    Do czego służą te diody na drugim zdjęciu?
    W jakim języku programujesz i jak długo uczyłeś się programować, aby osiągnąć takie możliwości pisania tak zaawansowanych programów? I czy była to raczej nauka z książki na jakiejś płytce testowej, czy po prostu praktyka?
    Jak to wszystko zasilasz?

    PS: Projekt bardzo ciekawy i oryginalny.
  • #4
    Decado
    Level 21  
    Płytki robiłem sam, są czerwone z racji pokrycia lakierem en_solder.
    Dzięki diodom można w łatwy sposób zobaczyć prace układu. Jak widać na zdjeciu jeden z optotriaków nie działał, wymieniłem i jest ok. I właśnie do tego miedzy innymi są te diody.
    Programuje w BASCOMie ucze sie cały czas, obecnie będzie jakies 5 lat. Większość w praktyce na samodzielnie zaprojektowanych układach.

    Zasilanie w starej wersji która jest na zdjęciach bylo podzielone na dwie części:
    -Pierwsza zasilająca diody w optotriakach o wydajności ok 4A.
    -Druga zasilająca mikroprocesory

    Zasilanie obecnie zostało zmienione na zasilacz komputerowy 300W no name :). Zajmuje mniej mniejsca, ładnie obudowane, ma o wiele lepsze parametry itd. pozatym miałem go za darmo od kolegi :).

    Pozdrawiam
  • #5
    Karol966
    Level 30  
    Po co używasz aż 3 dodatkowe procesory? Nie szkoda kasy, czasu na oprogramowanie ich? Bierzesz jedną atmegę128 jako główny procesor i podłączasz do niej 6 rejestrów SIPO np 74164 lub 74595. W sumie możesz ich użyć dowolną ilość. Cena za sztukę to nawet 50gr więc całość by kosztowała zaledwie 3zł co jest pryszczem w porównaniu z 3x14zł za atmegi16. Dodatkowo porty wyjściowe mają wystarczającą wydajność na podłączenie bezpośrednie optotriaków (ew łącznie z diodami LED).
  • #6
    Decado
    Level 21  
    Tak rejestry w momencie gdy zależy nam tylko na włączaniu i wyłączaniu danego kanału były by idealne. Ale jak mówiłem projekt będzie rozwijany, i będzie dołożone sterowanie fazowe. I teraz nie bardzo wyobrażam sobie użycie w prosty sposób rejestrów. Jeśli się mylę to proszę wytłumacz mi jak miało by to wyglądać a z chęcią użyję tego w kolejnym module :) który będzie sterował oświetleniem na domu.
  • #8
    Decado
    Level 21  
    Tak masz rację ale czytając uważnie mój post, dowiedział byś się że programuję w BASCOMie, co bardzo mocno ogranicza prędkości przesyłania danych, tym bardziej aż tak dużej ilości.
    Gdyby było to napisane w ASM to wtedy całkiem inna historia.

    Ach zapomniałem dodac że w momencie gdy użyjemy rejestrów, układ przestaje być rozbudowywalny w takim stopniu jak na prockach które wymagają tylko zasilania i RxD spiętego razem.
    A rejestry wymagają jednej wspólnej linii + od każdego rejestru jedną linię trzeba podłączyć do procesora sterującego.

    Ot i cała impreza przestaje być fajna :)
  • #10
    Decado
    Level 21  
    :) Przykro mi ale schematów nie umieszczę. Chcę opublikować to w EdW gdy tylko dopiszę sterowanie fazowe.
    Ale wystarczy przyjrzeć się zdjęciu płytki gdzie dobrze widać co jest podłączone do procesorów. :)
  • #11
    Przemek Elektro
    Level 16  
    Decado wrote:
    Tak rejestry w momencie gdy zależy nam tylko na włączaniu i wyłączaniu danego kanału były by idealne. Ale jak mówiłem projekt będzie rozwijany, i będzie dołożone sterowanie fazowe. I teraz nie bardzo wyobrażam sobie użycie w prosty sposób rejestrów. Jeśli się mylę to proszę wytłumacz mi jak miało by to wyglądać a z chęcią użyję tego w kolejnym module :) który będzie sterował oświetleniem na domu.


    Nie wiem w czym widzisz problem. Sterowanie fazowe to też włączanie i wyłączanie danego kanału. Jedyna różnica polgega na zsynchronizowaniu całości z częstotliwością sieci. Program nie wykonuje żadnych skomplikowanych operacji matematycznych, tylko odczytuje zawartość pamięci i wysyła ją na wyjścia. Sieć pracuje z częstotliwośćią 50 Hz, procesor z częstotliwością 8000000 Hz, na przeładowanie danych na wyjściach masz jakieś 160000 cykli maszynowych procesora, chyba Ci wystarczy?

    Decado wrote:
    Tak masz rację ale czytając uważnie mój post, dowiedział byś się że programuję w BASCOMie, co bardzo mocno ogranicza prędkości przesyłania danych, tym bardziej aż tak dużej ilości.
    Gdyby było to napisane w ASM to wtedy całkiem inna historia.


    Korzystając ze sprzętowego SPI język programowania wiele nie zmienia, bo większość roboty wykonuje SPRZĘTOWY interfejs, a nie software.
    Z tą "aż tak dużą ilością" to nie przesadzaj. Ludzie programowali w bascomie matryce led, które mogły sterować niezależnie 512, czy też 1024 diodami (matryca 16x32 lub 32x32). Chyba nie do końca zdajesz sobie sprawę jak potężny jest taki, teoretycznie bardzo prosty procesor. Naprawdę można na nim wiele zdziałać.

    Decado wrote:

    Ach zapomniałem dodac że w momencie gdy użyjemy rejestrów, układ przestaje być rozbudowywalny w takim stopniu jak na prockach które wymagają tylko zasilania i RxD spiętego razem.
    A rejestry wymagają jednej wspólnej linii + od każdego rejestru jedną linię trzeba podłączyć do procesora sterującego.


    Nie rozumiem do czego zmierzasz. Sam udowodniłeś, że użycie rejestrów tylko upraszcza konstrukcję.
    Wniskuję, że transmisja danych między prcesorami odbywa się także szeregowo, i mniej więcej wygląda to tak, że te "dodatkowe" procesory odbierają po łączu szeregowym dane i wysyłają je na swoje porty wyjściowe. W tym momencie sam wprowadzasz opóźnienia i ograniczasz ilość danych, które mogą być wysłane na wyjścia. Podłączając rejestry wysyłasz szeregowo dane bezpośrednio na wyjścia. Dodatkowy procesor to tylko dodatkowe opóźnienia. Dodam jeszcze, że łatwiej zsynchronizować do sterowania fazowego rejestry przesuwne, bo masz wejście ST_CP, którym wysyłasz dane z rejestrów na wyjścia. Jak chcesz zsynchronizować pracę kilku procesorów?
  • #12
    Decado
    Level 21  
    Przemek Elektro wrote:

    Nie wiem w czym widzisz problem. Sterowanie fazowe to też włączanie i wyłączanie danego kanału. Jedyna różnica polgega na zsynchronizowaniu całości z częstotliwością sieci. Program nie wykonuje żadnych skomplikowanych operacji matematycznych, tylko odczytuje zawartość pamięci i wysyła ją na wyjścia. Sieć pracuje z częstotliwośćią 50 Hz, procesor z częstotliwością 8000000 Hz, na przeładowanie danych na wyjściach masz jakieś 160000 cykli maszynowych procesora, chyba Ci wystarczy?

    Wszystko wydaje się piękne w teori, jednak to o czym piszę zostało wypróbowane już w praktyce. Kolega już na podobnym układzie próbował przepchać sterowanie fazowe w BASCOMIe i sie mocno zdziwił i porobił większość w ASM bo nawet w czymś takim jak tutaj zaprezentowałem pojawiły sie spore problemy. BASCOM jest genialnie prostym językiem ale bardzo nieoptymalnym. Po przepisaniu z BASCOMa na ASM prędkość wykonywania operacji wzrosła ok 10razy.

    Przemek Elektro wrote:

    Korzystając ze sprzętowego SPI język programowania wiele nie zmienia, bo większość roboty wykonuje SPRZĘTOWY interfejs, a nie software.
    Z tą "aż tak dużą ilością" to nie przesadzaj. Ludzie programowali w bascomie matryce led, które mogły sterować niezależnie 512, czy też 1024 diodami (matryca 16x32 lub 32x32). Chyba nie do końca zdajesz sobie sprawę jak potężny jest taki, teoretycznie bardzo prosty procesor. Naprawdę można na nim wiele zdziałać.

    Zdaję sobie sprawię z tego jak potężny jest taki prosty procesor, jednak moje umiejętności z zakresu programowania nie są aż tak dobre jak bym chciał. Wiem że można w BASCOMie pisac cuda :). Niektóre takie cuda widziałem u kolegi.
    Przemek Elektro wrote:

    Decado wrote:

    Ach zapomniałem dodac że w momencie gdy użyjemy rejestrów, układ przestaje być rozbudowywalny w takim stopniu jak na prockach które wymagają tylko zasilania i RxD spiętego razem.
    A rejestry wymagają jednej wspólnej linii + od każdego rejestru jedną linię trzeba podłączyć do procesora sterującego.


    Nie rozumiem do czego zmierzasz. Sam udowodniłeś, że użycie rejestrów tylko upraszcza konstrukcję.
    Wniskuję, że transmisja danych między prcesorami odbywa się także szeregowo, i mniej więcej wygląda to tak, że te "dodatkowe" procesory odbierają po łączu szeregowym dane i wysyłają je na swoje porty wyjściowe. W tym momencie sam wprowadzasz opóźnienia i ograniczasz ilość danych, które mogą być wysłane na wyjścia. Podłączając rejestry wysyłasz szeregowo dane bezpośrednio na wyjścia. Dodatkowy procesor to tylko dodatkowe opóźnienia. Dodam jeszcze, że łatwiej zsynchronizować do sterowania fazowego rejestry przesuwne, bo masz wejście ST_CP, którym wysyłasz dane z rejestrów na wyjścia. Jak chcesz zsynchronizować pracę kilku procesorów?


    RS232 na ogół jest szeregowy jednak w tym projekcie, wszystkie procesory zostałt wpięte na jedną linię RXD i mają ustawiane adresy, co pozwala na podłączenie bardzo dużej ilości takich modułów.
    A problem synchronizacji został rozwiązany przez podpięcie wyjścia detektora fazy na przerwanie procesorów Atmega16 w modułach. A po lini danych leci to tak: |bajt adresowy o wartości 128-255|16bajtów o wartości 0-127|
  • #13
    katoda
    Level 20  
    Co do sterowania fazowego to wystarczy dać optotriaki MOC3040 ;)

    Projekt ciekawy, dodał bym jakiś mikrofon i synchronizacje pod bit muzyki można by wtedy poszaleć nie tylko na święta ;)
  • #14
    KJ
    Level 31  
    Ciekawa teoria - sterowanie fazowe optotriakiem włączającym tylko w zerze.
  • #15
    Decado
    Level 21  
    katoda wrote:
    Co do sterowania fazowego to wystarczy dać optotriaki MOC3040 ;)

    Projekt ciekawy, dodał bym jakiś mikrofon i synchronizacje pod bit muzyki można by wtedy poszaleć nie tylko na święta ;)


    Odnośnie optotriaka to tak jak pisał kolega wyżej :)
    A co do muzyki to będzie w przyszłości dodana analiza utworów i generowanie efektów świetlnych do nich. Jednak nie prędzej niż za rok albo i później :).
    Bo jest z tym dosyć troszke zabawy a chciałbym to napisać w czymś innym niż BASCOM, ale najpierw muszę się nauczyć pisać w C.