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

Atmega ? - PWM - Gwiaździste niebo ( efekt ściemniania, migotania )

nikvir 07 Sty 2013 10:58 7116 47
  • #1 07 Sty 2013 10:58
    nikvir
    Poziom 9  

    Witam serdecznie

    Na początku chciałbym prosić o zapoznaniem się z całym moim postem.

    Ostatnio coś mi się za bardzo nudzi po pracy i wymyśliłem sobie, że zrobię sobie w podwieszanym suficie "gwieździste niebo" na które będzie się składać 300 diod led (jednokolorowe - białe).
    Interesuje mnie stworzyć 10 obwodów po 30 led. Po załączeniu układu chciałbym uzyskać dwa efekty - migotanie oraz powolne ściemnianie i rozjaśnianie. Najlepiej tak żeby można było wybrać poprzez przycisk.

    Wiem że po tym kawałku co napisałem macie ochotę lub wręcz konieczność napisania uwagi pt: użyj wyszukiwarki; to było; jest tego pełno w naszym serwisie; google.pl itd.
    Zwracam się do osób które chcą pomóc, a nie zlinczować.



    Wracając do tematu, "prze bobrowałem" ( bo inaczej nie da się nazwać otwierania kilkudziesięciu jak nie kilkuset stron na elektrodzie i innych serwisach) chyba z 90 % internetu i nie znalazłem odpowiedz na moje pytanie.

    Z tego co wyczytałem to będzie mi potrzebny mikro kontroler (najlepiej) Atmega tylko nasuwa się pytanie który dokładnie model. Niektórzy korzystają z Atmega8 a niektórzy np. z Atmega16. Co do programatora, przesłania kodu na mikro kontroler i podłączenie całości nie powonieniem mieć problemu.

    Tak jak napisałem na wstępie, nudzi mi się :P i chciałbym zrobić coś fajnego dla siebie i potrzebuje kogoś kto chciałby pomóc poprzez stworzenie programu. Większość z Was z tego co zauważyłem nie raz już robiła takie czy inne programy i pisanie programu jak się domyślam jest dla większości samą przyjemnością, a dla mnie jako dla człowieka który nigdy nie miał okazji/przyjemności programowania w C++ czy Bascom jest to istny koszmar.



    Myślę że w miarę prosto opisałem moją zachciewajkę. Jeżeli ktoś chciałby pomóc to będę bardzo szczęśliwy.
    Jeżeli nie macie ochoty pomagać to proszę o nie pisanie głupich niczego nie wnoszących do tematu komentarzy.


    Pozdrawiam

    0 29
  • Sklep HeluKabel
  • Pomocny post
    #2 07 Sty 2013 11:12
    BlueDraco
    Specjalista - Mikrokontrolery

    Będzie Ci potrzebny mikrokontroler o jak największej liczbie sprzętowych kanałów PWM i sporej wydajności obliczeniowej. Raczej nie ATmega, tylko coś szybszego i tańszego. Prawdopodobnie wypadałoby się rozejrzeć w ofercie niewielkich mikrokontrolerów z rdzeniami Cortex M0 - NXP LPC111x (12 kanałów PWM), cena ok. 5 zł. albo STM32F05x.

    0
  • #3 07 Sty 2013 12:16
    Press
    Poziom 22  

    BlueDraco napisał:
    Będzie Ci potrzebny mikrokontroler o jak największej liczbie sprzętowych kanałów PWM i sporej wydajności obliczeniowej. Raczej nie ATmega, tylko coś szybszego i tańszego. Prawdopodobnie wypadałoby się rozejrzeć w ofercie niewielkich mikrokontrolerów z rdzeniami Cortex M0 - NXP LPC111x (12 kanałów PWM), cena ok. 5 zł. albo STM32F05x.


    I tym wysteruje 300 diod? Ktoś kto ma o tym dobre pojęcie pewnie tak. Ale kolega z programowania mówi że nie jest doświadczony.
    Moim zdaniem lepsze będzie zastosowanie driverów LED najlepiej sterowanych po szynie I2C na przykład. i AVR spokojnie sobie z tym poradzi.

    0
  • #4 07 Sty 2013 12:31
    BlueDraco
    Specjalista - Mikrokontrolery

    Ano racja. Tym wysteruje pewnie max 12 * 8, czyli 96 diod. Do większej liczby potrzeba jakiegoś sterownika LED, np. takiego jak MBI503x. ATmega raczej nie nadąży z komunikacją i mutipleksowaniem, bo przy jednym sterowniku na 16 diod, 8 bitach jasności i 8 fazach multipleksowania na 200 Hz mamy strumień danych 200 * 8* 16 * 8, czyli 200 kbit/s, a te dane trzeba nie tylko przesłać, ale jeszcze jakoś uzyskać (policzyć).

    0
  • #5 07 Sty 2013 12:52
    piotrva
    Moderator na urlopie...

    Moim zdaniem wybrałbym jakiś driver LED na SPI, a nie I2C - zasadniczo SPI jest szybsze i także nadawanie sprzętowym SPI jest na AVR szybsze niż przy I2C. 300 diodek to dużo, ale AVR powinien sobie jakoś poradzić. A jeszcze takie pytanie, czy każda dioda ma mieć inną jasność? Bo myślę, że można by je pogrupować i wtedy ilość kanałów PWM spadnie i AVR już wtedy na pewno da rade.
    A co do procesorów innych rodzin - widać, ze autor tematu ma jakieś narzędzia do AVR i prawie zerowe pojęcie o programowaniu - czy na prawdę uważasz, że na takim etapie nasz Kolega poradzi sobie z nauką ARM? Wątpię...

    0
  • Sklep HeluKabel
  • Pomocny post
    #6 07 Sty 2013 12:55
    szulat
    Poziom 23  

    no, jeżeli już PWM byłby sprzętowy to wydajności nie trzeba, bo w końcu sterowanie 10 lampkami to nie jest jakies szczególnie złożone zadanie obliczeniowe :)
    ale żeby zrobić to na atmedze, która nie ma wystarczajacej liczby kanałów PWM to trzebaby wydusić z niej ostatnie poty, i tak jak ostatnio widzieliśmy na forum, na pewno nie w bascomie.

    przykład jak od strony elektrycznej może wyglądać sterownik ledów na atmedze był niedawno na stronie głównej więc chyba widziałeś? https://www.elektroda.pl/rtvforum/topic2463814.html
    on ma 3 kanały a ty chcesz 10, więc patrząc na schemat łatwo wybrazisz sobie które fragmenty musiałbyś zwielokrotnić.

    przy tego rodzaju podejściu od sterownika wychodzi N+1 przewodów zasilających poszczególne gałęzie ledów.
    można też rozważyć bardziej elegancki sposób, taki jak stosowany jest w "inteligentnych" taśmach LED (w których steruje się niezależnie poszczególnymi "pikselami"). oczywiście wtedy nie prowadzi się osobnych linii do każdego z 300 ledów, bo sterowniki umieszczone są na samej taśmie a procesor sterujący wysyła tylko dane cyfrowe jednym lub dwoma przewodami. dodatkowo, sterowniki LED same obsługują PWM więc procesor nie musi "nic robić" czyli może być bardzo prosty.
    właściwie to jednym ze sposobów zrealizowania takiego "gwieździstego nieba" mogłoby być kupienie odcinka takiej taśmy, pocięcie go i "przedłużenie" kawałkami przewodów tak żeby można było w miarę swobodnie rozmieszczać "gwiazdy" na płaszczyźnie. do tego sterownik zrobiony z dowolnego procesorka (nie wymagana duża moc ani specjalne funkcje sprzętowe) i już można mrugać gwiazdkami i to zupełnie dowolnie a nie tylko grupami po 30. wspominałem już że te listwy są RGB, czyli sterujesz też kolorem każdej "gwiazdy" niezależnie? :)

    0
  • #7 07 Sty 2013 13:05
    BlueDraco
    Specjalista - Mikrokontrolery

    Strasznie fajne, tylko ta cena - 0.5 USD za diodę RGB z wbudowanym sterownikiem WS2811. Można takie diody kupić luzem, można też kupić diody nie-smd połączone przewodami, które można dowolnie przecinać.

    0
  • #9 07 Sty 2013 17:39
    nikvir
    Poziom 9  

    Serdecznie dziękuję za zainteresowanie pytaniem :)

    co do postu:

    piotrva napisał:
    Moim zdaniem wybrałbym jakiś driver LED na SPI, a nie I2C - zasadniczo SPI jest szybsze i także nadawanie sprzętowym SPI jest na AVR szybsze niż przy I2C. 300 diodek to dużo, ale AVR powinien sobie jakoś poradzić. A jeszcze takie pytanie, czy każda dioda ma mieć inną jasność? Bo myślę, że można by je pogrupować i wtedy ilość kanałów PWM spadnie i AVR już wtedy na pewno da rade.
    A co do procesorów innych rodzin - widać, ze autor tematu ma jakieś narzędzia do AVR i prawie zerowe pojęcie o programowaniu - czy na prawdę uważasz, że na takim etapie nasz Kolega poradzi sobie z nauką ARM? Wątpię...


    to widzę to w sposób taki żeby 1 obwód świecił cały czas bez migania/mrugania. Tym sposobem pozostaje nam do wysterowania tylko 9 :D
    Chciałbym żeby powiedzmy 3 obwody migotały/mrugały/ściemniały trochę ciemniej.


    Jak zauważył Piotrva - taśmy led do tego rgb są trochę drogie :cry:

    0
  • #10 07 Sty 2013 18:22
    piotrva
    Moderator na urlopie...

    Zaraz, zaraz, to chodzi Ci tylko o to że na raz 30 diod ma mieć i tak tę samą jasność (inaczej mówiąc mamy 10 kanałów i każdy z nich, zawierający po 30 diodek, ma w danej chwili określoną jasność)?
    Jeśli tak to potrzebowałbyś zwykłej ATMega8(8) i 10-ciu odpowiednich elementów wykonawczych (żeby każdy mógł zasilić 30 diod podpiętych równolegle) - np. jakiś tranzystor mocy, czy mosfet.

    0
  • #11 07 Sty 2013 18:43
    BlueDraco
    Specjalista - Mikrokontrolery

    Raczej szeregowo, niż równolegle, albo po parę równoległych szeregów, tak, żeby dało się to zasilać np. z 12 V.

    0
  • #13 07 Sty 2013 23:04
    nikvir
    Poziom 9  

    piotrva napisał:
    Zaraz, zaraz, to chodzi Ci tylko o to że na raz 30 diod ma mieć i tak tę samą jasność (inaczej mówiąc mamy 10 kanałów i każdy z nich, zawierający po 30 diodek, ma w danej chwili określoną jasność)?
    Jeśli tak to potrzebowałbyś zwykłej ATMega8(8) i 10-ciu odpowiednich elementów wykonawczych (żeby każdy mógł zasilić 30 diod podpiętych równolegle) - np. jakiś tranzystor mocy, czy mosfet.



    Mam 10 obwodów po 30 led.
    Z tych 10 obwodów jeden chciałbym żeby świciły światłem ciągłym - na dobrą sprawę mógłbym podpiąć go bezpośrednio przez jakiś rezystor do zasilania.
    Resztę tj. 9 obwodów chciałbym zaprogramować tak aby powiedzmy 3 obwody migotały/mrugały mocą 40% , kolejne 3 obwody po 70 % i pozostałe 3 mocą po 100%.

    Po przyciśnięciu jakiegoś przycisku/mikroswitcha fajnie by było gdyby zamiast mrugania był efekt przygaszania/rozjaśniania.

    Wszystkie te cykle żeby działały asynchronicznie względem siebie



    Układ będę chciał ze względu że mam kilka na stanie zasilić zwykłym zasilaczem atx. 12v lub 5v.

    0
  • #15 07 Sty 2013 23:33
    nikvir
    Poziom 9  

    nie, za dużo plątaniny :D jeden obwód=jeden poziom mocy świecenia. Porozrzucam sobie wszystkie diody z wszystkich obwodów i wyjdzie jak by każda dioda w obwodzie miała inną moc świecenia :)

    0
  • #16 08 Sty 2013 00:49
    miszcz310
    Poziom 19  

    BlueDraco napisał:
    Prawdopodobnie wypadałoby się rozejrzeć w ofercie niewielkich mikrokontrolerów z rdzeniami Cortex M0 - NXP LPC111x (12 kanałów PWM), cena ok. 5 zł. albo STM32F05x.



    BlueDraco napisał:
    Cortex M0 - NXP LPC111x (12 kanałów PWM), cena ok. 5 zł.


    Tym postem zniszczyłeś moje resztki nadzieji, że jednak avr8 ma jakieś szanse współistnienia jeszcze... BTW jakieś książki/tutki/materiały do programowania w tego najlepiej pod linuksem i w C jesteś w stanie polecić?

    Co do tematu to jeszcze można się bawić z FT232RL i trybem BitBang. Zaleta taka, że nie trzeba żadnych programatorów tylko komputer (co moim zdaniem przynajmniej na początku jest zaletą). W sumie 8 kanałów mogłoby być (albo więcej jak się np. rejestry przesuwne zastosuje). Kolega pisze, że nie jest biegły w programowaniu, więc to raczej może być ciężkie do realizacji (w sensie to moje rozwiązanie). Jak kolega chce się w to bardziej bawić i zna angielski to jest super książka darmowa ,,Head First C" moim zdaniem super sprawa w tydzień spokojnie można sobie przerobić (co prawda bez tych C Labs) i po niej można się poczyć jak prawdziwy Chakier... :P

    0
  • #17 08 Sty 2013 01:27
    Raphaw
    Poziom 20  

    Ft 232 i co dalej, sterujący nim komputer? Ja tu widzę lekką nadwyźkę mocy ;)
    Wracając do tematu spróbowałbym podejścia od innej strony-tj.określić najpierw ile kanałów mogę uzyskać na danej platformie (ot zbudować prototyp na płytce stykowej) i tyle obwodów położyć, będzie lepszy efekt wizualny. ponadto jak robić sterowanie to dla wszystkich obwodów - zawsze można program napisać tak, aby jeden był włączany na stałe np. co 5 min. inny. Jak będzie rozwiązana kwestia montaźu diod?
    Pozdrawiam

    0
  • #20 08 Sty 2013 09:04
    nikvir
    Poziom 9  

    Raphaw napisał:
    Jak będzie rozwiązana kwestia montaźu diod?


    Diody będą montowane w płycie mdf bez oprawek, do każdej z diód mam zamiar przylutować rezystor i potem kabelek. Ewentualnie mogę zrobić płytki ( 10 szt bo 10 obwodów lub 1 szt z odseparowanymi od siebie 10 obwodami ) z rezystorami i do niej podciągnąć kabelki z diód.

    0
  • #22 08 Sty 2013 10:33
    nikvir
    Poziom 9  

    Przyznam się szczerze, że nie myślałem o zastosowaniu tranzystorów czy moosfetów, myślałem że wystarczą same rezystory. Dziękuje za wyprowadzenie z błędu :D

    0
  • #23 08 Sty 2013 10:40
    piotrva
    Moderator na urlopie...

    No procesor może dać na wyjściu maksymalnie 20mA/pin (+ ograniczenia na cały port/cały procesor) i maksymalnie możesz sterować napięciami do 5V. Tu byś spalił procesor po pierwszym podłączeniu układu.
    Tranzystory czy inne "klucze/wzmacniacze" muszą w takiej aplikacji być.

    0
  • #26 08 Sty 2013 10:48
    nikvir
    Poziom 9  

    szulat napisał:
    a jeżeli jeszcze nie widziałeś sposobu ze światłowodami, to zerknij, może pomóc ci uprościć twoją konstrukcję (mniej ledów, mniej kabelków)
    http://www.google.com/search?q=gwiezdne+niebo+led


    Światłowody odpadają :)

    Ze względu na samą powierzchnię na jakiej ma być to wszystko rozmieszczone- 1,5m x 6m.

    Za taki komplet światłowodowy bym musiał zapłacić powiedzmy coś w okolicach tysiąca złotych ( dla przykłady pierwsze lepsze ogłoszenie internetowe: Światłowody 450pkt GWIEZDNE NIEBO LEDRGB 1m 2m 3m - 995,00 zł)


    A co do samego montażu to będzie on samą przyjemnością ( przynajmniej dopóki czegoś przez przypadek nie pomylę i na koniec wszystko zadziała )

    0
  • #27 08 Sty 2013 11:11
    szulat
    Poziom 23  

    nikvir napisał:
    Za taki komplet światłowodowy bym musiał zapłacić powiedzmy coś w okolicach tysiąca złotych

    kto mówi o kupowaniu :) miałem na myśli tylko wykorzystanie sposobu działania, czyli zamiast 300 ledów dałbyś przykładowo tylko 50 ale za to od każdego wyprowadzasz ze 20 żyłek i masz 1000 gwiazd - łatwiej w ten sposób zwiększać liczbę punktów świecących niż lutując setki ledów.

    0
  • #28 08 Sty 2013 11:26
    nikvir
    Poziom 9  

    Przyznam się że nie wpadłem na taki pomysł :)
    Ale nawet w tym przypadku różnica pomiędzy zakupem diód a samego światłowodu jest ogromna.
    Za 300 białych diód zapłacę mniej więcej 60 zł brutto ( 48 zł netto)
    do tego dojdą mi rezystorki po 1gr i 10 tranzystorów ( na tą chwilę nie wiem jakich ale zakładam że do 2zł szt.) oraz trochę kabla utp którego mam pod dostatkiem :)

    Jeżeli chciałbym to robić światłowodem to za te 10 diód bym zapłacił 2zł ale za światłowód o średnicy 1,5mm którego bym potrzebował teoretycznie 500m bym musiał zapłacić coś w granicach 700 zł


    Tak więc sprawę światłowodów możemy uznać za zamkniętą
    Ale dzięki za udział w dyskusji :)

    0
  • #29 08 Sty 2013 12:07
    szulat
    Poziom 23  

    nikvir napisał:
    za światłowód o średnicy 1,5mm którego bym potrzebował teoretycznie 500m bym musiał zapłacić coś w granicach 700 zł

    "światłowód" to nie jest pojęcie ścisłe, taki do zrobienia gwiazdek niekoniecznie musi spełniać normy do międzymiastowej transmisji danych ;) i na przykład mam tu "lampkę światłowodową" (8 zł na allegro), wystaje z niej kilkaset "światłowodów" długości ~25 cm, wszystko jest podświetlane 4 standardowymi ledami 5mm i świecące punkty na końcach doskonale widać nawet w słońcu, mimo że na pewno większość światła ginie po drodze, bo przecież przy tej cenie nie mogli tam zastosować niczego innego niż najtańsza żyłka jaką dało się znaleźć.

    na pewno nie ciągnąłbym takiej żyłki na kilka metrów ale powinien to być niezły sposób na zwielokrotnienie liczby gwiazd i pociągnięcie światła z równomiernie rozmieszczonych kilkudziesięciu ledów do pobliskich otworków.

    0