Sterownik Taśmy LED RGB


9.73333
Ocena: None Średnia: 9.7 (15 głosujących)

Sam pomysł sterowania trójkolorowymi diodami LED nie jest nowością i był wykorzystywany wielokrotnie: w dwóch opracowaniach Lampki RGB oraz w projekcie Mirlight'a. Tym razem układ współpracuje z taśmą LED RGB, obecnie bardzo popularnym, a zarazem łatwo dostępnym rozwiązaniem do podświetlania sufitów, schodów, luster oraz półek w łazienkach, kuchniach itp. Układ podzielony jest na dwie części: Sterownik pracujący w oparciu o ATtinny2313 (który całości mieści się w wyłączniku podtynkowym), oraz z układu wykonawczego wraz z zasilaczem znajdującego się w większej (ukrytej) puszcze. Obsługa układu jest zrealizowana na jednym impulsatorze z przyciskiem i umożliwia regulację każdego z kolorów niezależnie. Dostępna jest także funkcja płynnej zmiany barw według jednego ustalonego programu z możliwością regulacji szybkości przejść kolorów.

Działanie:


Schemat ideowy sterownika znajduje się na rysunku poniżej:

Schemat sterownika pokazany jest na rysunku wyżej. Sercem układu jest mikrokontroler U1 (ATtiny2313), który pracuje na wewnętrznym oscylatorze 8MHz (bez dzielnika przez 8). Kondensatory C2 (100uF) i C1 (100nF) stanowią filtr napięcia zasilania. Złącze Prog/out stanowi interfejs programujący a jednocześnie w czasie normalnej pracy jest złączem zasilania i złączem wyjściowym. Wszystkie ustawienia dokonywane są za pomocą impulsatora I1 z wbuwowanym przyciskiem. Kondensatory C3 (100nF) i C4 (100nF) filtrują sygnały na wyjściach impulsatora, poprawiając tym samym jego pracę. Jest to szczególnie ważne gdy impulsator nie jest najwyższej klasy. Dioda D1 (LED RGB) stanowi kontrolkę pracy sterownika, a rezystory R1-R3 (3,3k) ograniczają prąd diod do niewielkiej wartości.

Schemat układu wykonawczego/zasilacza znajduje się poniżej:

W skład układu wykonawczego wchodzi zasilacz niestabilizowany zbudowany na mostku Br1(6A-10A) i kondensatorze C1 (10000uF) oraz mały zasilacz stabilizowany z układem U1 (7805) i kondensatorami C2 (47uF) i C3 (100nF) do zasilania sterownika. Złącze TRAFO umożliwia podłączenie transformatora o napięciu rzędu 11V AC. Przy doborze transformatora należy zadbać aby napięcie zasilające taśmy LED nie przekraczało 12V. Diody D1*-D3* (1N5408) umożliwiają obniżenie napięcia o około 2V gdyby zaszła taka potrzeba. Rezystor R7 (470R/2W) pomaga rozładować kondensator C1 do zera. Złącze 12V umożliwia podłączenie wspólnych anod kawałków taśmy diodowej. Elementami wykonawczymi są tranzystory T1 - T3 (BUZ11) o dużej wydajności prądowej. Rezystory R1-R3 (10k) ustalają potencjał masy na bramkach tranzystorów w chwili braku podłączenia sterowania do złącza S. Rezystory R4-R6 (330R) stanowią zabezpieczenie, ograniczają prąd w chwili przypadkowych zwarć na płytce. Złącza R, G i B umożliwiają podłączenie poszczególnych sekcji wielokolorowej taśmy LED. Podłączenie układu wykonawczego ze sterownikiem dokonane jest za pośrednictwem złącz S oraz PWR.

Budowa:


Sterownik z powodzeniem można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż sterownika najlepiej rozpocząć od wlutowania wszystkich elementów SMD (razem z procesorem), gdyż łatwo jest to uczynić gdy na drugiej stronie płytki nie ma jeszcze wlutowanych pozostałych elementów. W drugiej kolejności trzeba wlutować diodę D1, impulsator i kondensator C2 (na leżąco). Złącze przeznaczone do komunikacji z układem wykonawczym oraz do programowania dobrze jest zastąpić bezpośrednim wlutowaniem przewodów w płytkę. Taki zabieg jest konieczny jeśli sterownik ma być umieszczony pod klepką wyłącznika dwusekcyjnego, tak jak w projekcie modelowym. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Dla montażu elementów od strony druku pomocny będzie także rysunek montażowy dostępny tutaj

Układ wykonawczy można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Układ wykonawczy jest banalny w montażu, a kolejność elementów jest dowolna. Mostek prostowniczy należy dać z dużym zapasem prądu aby zminimalizować nagrzewanie. Jednocześnie wymaga on zastosowania radiatora w postaci blaszki aluminiowej. Mimo tego, że zasilacz niestabilizowany jest rozwiązaniem najprostszym to zdecydowanie polecam zamiast mostka i dużego kondensatora zastosować zasilacz impulsowy stabilizowany o dużej wydajności prądowej. Tranzystory T1-T3 nie wymagają radiatorów. Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj.

Wykaz Elementów:

Sterownik:


1x Enkoder obrotowy, Impulsator z przyciskiem
3x 3,3k
3x 100nF
1x 100uF Elektrolit
1x Dioda LED
1x Mikrokontroler ATTINY2313

Układ wykonawczy/zasilacz:


2x Złącze Śrubowe ARK2(podwójne)
5x Złącze Śrubowe ARK3(potrójne)
3x 10k
3x 330R
1x 470R/2W
1x 100nF
1x 47uF Elektrolit
1x 10000uF/16V Elektrolit
3x 1N5408
1x Mostek Prostowniczy 6A
3x BUZ11
1x Stabilizator 7805

Programowanie:


Kod Źródłowy został napisany w BASCOM AVR firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 8000000                                          'internal RC oscilator
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B00001110 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
'******************  Nazwy *******************
'***********************************************
Rd Alias Portb.7
Gd Alias Portb.6
Bd Alias Portb.5
 
Rdt Alias Portd.3
Gdt Alias Portd.1
Bdt Alias Portd.2
 
I1 Alias Pind.4
I2 Alias Pind.5
Isw Alias Pind.0
 
'*************  Nazwy Koniec  ***************
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Rgb(3) As Byte
Dim Rgb2(3) As Byte
Dim Pomoc As Byte
Dim Flaga As Bit
Dim Dzielnik As Word
Dim Dzielnik2 As Byte
Dim Szybkosc As Byte
 
Dim N As Byte
 
Dim Arg As Word
Dim Wartosc As Word
Dim Pozycja As Word
 
Dim Rgb_mode As Bit
Dim Cur_color As Byte
 
Dim Sw_l As Byte , Sw_f As Byte
Dim Tryb As Byte , Rezultat As Integer
 
Dim Autosave As Byte , X As Byte
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Cur_color = 1
Autosave = 250
 
Readeeprom X , 1
If X <= 10 Then Rgb2(1) = X Else Rgb2(1) = 1
Readeeprom X , 2
If X <= 10 Then Rgb2(2) = X Else Rgb2(2) = 1
Readeeprom X , 3
If X <= 10 Then Rgb2(3) = X Else Rgb2(3) = 1
Readeeprom X , 4
If X <= 100 And X >= 1 Then Szybkosc = X Else Szybkosc = 1
'*******  Warunki Poczatkowe Koniec  ***********
'**************  Petla glowna ******************
'***********************************************
Do
 
 Rezultat = 0
 Select Case Tryb
  Case 0:
   If I1 = 1 And I2 = 1 Then Incr Tryb                      'jezeli dwa rozwarte
  Case 1:
   If I1 = 1 And I2 = 0 Then
    Rezultat = 1
    Incr Tryb
   End If
   If I1 = 0 And I2 = 1 Then
    Rezultat = -1
    Incr Tryb
   End If
  Case 2:
   If I1 = 0 And I2 = 0 Then Incr Tryb
  Case 3:
   If I1 = 1 And I2 = 0 Then
    Rezultat = -1
    Tryb = 0
   End If
   If I1 = 0 And I2 = 1 Then
    Rezultat = 1
    Tryb = 0
   End If
 End Select
 
If Rezultat <> 0 Then
  Autosave = 0
 
  If Rezultat = 1 Then
    If Rgb_mode = 1 Then
      Decr Szybkosc
      If Szybkosc <= 1 Then Szybkosc = 1
    Else
      Incr Rgb2(cur_color)
      If Rgb2(cur_color) >= 10 Then Rgb2(cur_color) = 10
    End If
  Else
    If Rgb_mode = 1 Then
      Incr Szybkosc
      If Szybkosc >= 100 Then Szybkosc = 100
    Else
      Decr Rgb2(cur_color)
      If Rgb2(cur_color) >= 250 Then Rgb2(cur_color) = 0
    End If
  End If
 
End If
 
 If Flaga = 1 Then                                          'co 32ms
   Flaga = 0
 
    'autosave
    If Autosave < 250 Then
      Incr Autosave
      If Autosave = 250 Then
        X = Rgb2(1)
        Writeeeprom X , 1
        X = Rgb2(2)
        Writeeeprom X , 2
        X = Rgb2(3)
        Writeeeprom X , 3
        X = Szybkosc
        Writeeeprom X , 4
 
      End If
    End If
 
   'animacja
   If Rgb_mode = 1 Then
     Incr Dzielnik2
     If Dzielnik2 >= Szybkosc Then
       Dzielnik2 = 0
 
       Rdt = 0
       Gdt = 0
       Toggle Bdt
 
       Incr Pozycja
       If Pozycja = 900 Then Pozycja = 0
       Gosub Pozycja_do_rgb
     End If
   Else
     For N = 1 To 3
       Rgb(n) = Rgb2(n) * Rgb2(n)
     Next N
     Select Case Cur_color
       Case 1 :
         Rdt = 1
         Gdt = 0
         Bdt = 0
       Case 2 :
         Rdt = 0
         Gdt = 1
         Bdt = 0
       Case 3 :
         Rdt = 0
         Gdt = 0
         Bdt = 1
     End Select
   End If
 
   'switch w impulsatorze
   If Isw = 0 Then
     If Sw_l < 100 Then
       Incr Sw_l
       If Sw_l = 4 Then Sw_f = 1
       If Sw_l = 50 Then Sw_f = 2
     End If
   Else
     Sw_l = 0
     If Sw_f = 1 Then
       Sw_f = 0
       Incr Cur_color
       If Cur_color = 4 Then Cur_color = 1
     End If
     If Sw_f = 2 Then
       Sw_f = 0
       Toggle Rgb_mode
     End If
   End If
 
 End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 Timer0 = 128
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik >= Rgb(1) Then Reset Rd Else Set Rd
 If Licznik >= Rgb(2) Then Reset Gd Else Set Gd
 If Licznik >= Rgb(3) Then Reset Bd Else Set Bd
 
 Incr Dzielnik
 If Dzielnik = 250 Then
   Dzielnik = 0
   Set Flaga
 End If
 
Return
'******** Przerwanie timer 0 Koniec ************
 
'************   Inne Etykiety    ***************
'***********************************************
Przelicz:                                                   'funkcja \_ _ _ _/^^^
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg > 100 And Arg < 500 Then Wartosc = 0
  If Arg <= 100 Then Wartosc = 100 - Arg
  If Arg >= 500 And Arg <= 600 Then Wartosc = Arg - 500
  If Arg > 600 Then Wartosc = 100
Return
 
Pozycja_do_rgb:
  Arg = Pozycja
  Gosub Przelicz
  Rgb(1) = Wartosc
  Arg = Pozycja + 300
  Gosub Przelicz
  Rgb(2) = Wartosc
  Arg = Pozycja + 600
  Gosub Przelicz
  Rgb(3) = Wartosc
Return

Na samym początku, przed wejściem do pętli głównej, odczytywane są z pamięci EEPROM wartości nasycenia poszczególnych kolorów (tablica Rgb(1...3)) oraz zmienna Szybkość odpowiedzialna za pracę w trybie animacji (dzielnik do zmiany kolorów). W przypadku gdy wartości te nie należą do założonego przedziału przyjmowane są wartości domyślne.

Sterowanie diodami odbywa się na programowym PWM'ie który w całości zrealizowany jest w obsłudze timera0 (procedura Prztimer0). Zmienna Licznik zwiększana jest co przerwanie, cyklicznie od 0 do 99, a następnie porównywana jest z komórkami tablicy Rgb(1..3) odpowiedzialnymi za nasycenie kolorów. W przerwaniu zawarty jest też dzielnik przez 250 ustawiający po przepełnieniu zmienną bitową Flaga.

W pętli głównej bezpośrednio włożona jest obsługa impulsatora oraz akcja która jest wykonywana po przekręceniu pokrętła. Gdy układ pracuje w trybie jednego koloru to pokrętłem zmienia się nasycenie barwy, a w trybie animacji zmieniana jest szybkość zmian kolorów.

Przycisk w impulsatorze obsługiwany jest w pętli głównej ale z częstotliwością zależną od ustawienia zmiennej Flaga (co 250 przerwań). Krótkie naciśnięcie przycisku zmienia aktualnie ustawiany impulsatorem kolor (w rybie jednego koloru) a dłuższe przytrzymanie zmienia tryb działania (animacja czy pojedynczy kolor).

Zmienna Flaga pozwala taktować jednocześnie automatyczny zapis ustawień. Jest on realizowany gdy ustawienia zostaną zmienione i przez kilka sekund nic nie jest zmieniane.

Ustawienia fuseitów mikrokontrolera ATtiny2313:

Zdjęcia Projektu:

ZałącznikWielkość
Sterownik Schemat28.61 KB
Sterownik Płytka6.76 KB
Sterownik Płytka (odbicie lustrzane)6.77 KB
Sterownik Płytka (44 na stronie)150.29 KB
Sterownik Montowanie (strona elementów)5.86 KB
Sterownik Montowanie (strona ścieżek)7.96 KB
Sterownik Opis (strona elementów)55.12 KB
Sterownik Opis (strona ścieżek)41.21 KB
Sterownik Soldermaska (strona ścieżek)82.16 KB
Układ Wykonawczy Schemat21.54 KB
Układ Wykonawczy Płytka25.29 KB
Układ Wykonawczy Płytka (odbicie lustrzane)25.23 KB
Układ Wykonawczy Płytka (9 na stronie)196.48 KB
Układ Wykonawczy Opis (strona elementów)40.79 KB
Układ Wykonawczy Soldermaska (strona ścieżek)28.3 KB
Kod Źródłowy5.39 KB
Program po kompilacji (BIN)1.95 KB
Program po kompilacji (HEX)5.5 KB



Portret użytkownika ShalvaN

Super projekt

Witam,

Mirley Twoje projekty są świetne gratulacje.

korzystając z okazji mam takie pytanko, otóż zastanawiałem się nad zrobieniem podobnego oświetlenia LED do pokoju z tym że chciałem zastosować pojedyńcze diody RGB 1W lub 3W zamiast taśmy RGB w związku z tym jakie elementy układu musiał bym wymienić? Dodam jeszcze że takowych diod było by od 6 do 8 no i oczywiście długość przewodów które to w najdłuższym miejscu miały by ok 8m.
Na marginesie dodam że posiadam niewykorzystane trafo 230v/24v/200VA

Portret użytkownika ShalvaN

jeszcze coś

Czy jest jakaś możliwość żeby zwiększyć dokładność impulsatora ?
Posiadam 24imp/1obr ale od zgaszenia do pełnego rozświetlenia diody potrzeba tylko 6imp dało by radę zrobić z tego np 12 lub więcej?

Portret użytkownika mirley

Re: Sterownik taśmy LED

Diody dużej mocy możesz podłączyć zamiast traśmy, nie widzę z tym problemu. CO do zwiększenia czułości impulsatora to spróbuj zmodyfikować fragment:

....
  Else
      Incr Rgb2(cur_color)
      If Rgb2(cur_color) >= 10 Then Rgb2(cur_color) = 10
    End If
....

Zamiast 10 wstaw 20, oraz dopisz linijkę we fragmencie poniżej:

...
   End If
   Else
     For N = 1 To 3
       Rgb(n) = Rgb2(n) * Rgb2(n)
       Rgb(n) = Rgb(n)/4
     Next N
     Select Case Cur_color
       Case 1 :
...

Jednak prawdopodobnie mało to zmieni.... trzeba by było obliczać na zmiennych double a nie wiem czy sie to wyrobi

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika ShalvaN

Witam, Faktycznie dopisanie

Witam,

Faktycznie dopisanie tych linijek nic nie dało. No nic będę się musiał tym zadowolić.
Korzystając z okazji mam jeszcze kilka pytanek:

1) Które linijki kodu są odpowiedzialne za kolor początkowy? tzn. jeśli chciał bym żeby po włączeniu układu diody zaczęły świecić w taki sposób aby uzyskać barwę białą.

2) Czy jest możliwość dodania do układu potencjometru tak żeby istniała możliwość zmiany natężenia wszystkich barw naraz (taki jak by ściemniacz)?

3) Jaki transformator polecasz do zasilenia tego wszystkiego zakładając że użył bym maksymalnie 10 diod mocy 3x350mA (takich http://allegro.pl/dioda-mocy-power-led-rgb-3x1w-3x350ma-z-mcpcb-star-i1936786099.html) i zakładając że między nimi a sterownikiem było by 10m kabla. Jak już pisałem wcześniej mam transformator 230V / 24V / 200VA ale to chyba nie ma sensu. Może wystarczył by jakiś mniejszy transformator o większej wydolności prądowej np taki którego uzwojenie wtórne daje 5-7 V ?

4) Teraz odnośnie kabla jaki musiał by być jego przekrój przy 10m i wszystkich diodach podpiętych do niego.

Przepraszam za tyle pytań ale już od jakiegoś czasu planuję zrobić coś takiego w pokoju (potem może zaadaptować gdzie indziej) i zawsze pojawiały się jakieś problemy. Mam nadzieję że teraz się uda.

Pozdrawiam i czekam na odpowiedź.

Portret użytkownika ShalvaN

A taki transformator

Witam,

Znalazłem na Allegro taki transformator

http://allegro.pl/transformator-elektroniczny-150w-lena-wyprzedaz-i1938000057.html

nadał by się?

Portret użytkownika mirley

Re: LED

1. Kolor początkowy odczytuje się z eeprom, taki jak był przed wyłączeniem układu.
2. Potencjometru nie, ale można próbować zmieniać program tak aby impulsatorem dało się regulować wszystkie barwy
3. Polecam zasilacz impulsowy stabilizowany a nie transformator. Z trafem miałem już problemy w takim zastosowaniu (diody mrugały i dopiero jak dałem filtrację 10000uF to pomogło). Jesli twoje diody mają 6 wyprowadzeń, każdy led osobno to podłączył bym je w szeregu, podnosząc zasilanie i zmniejszając prąd.
4. Ja bym dał po jednej żyle 1,5mm^2 na każdy kolor i 2,5mm^ na żyłę wspólną

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika Tomek_K

Sterowanie BUZ11

Witam
Czy w twoim projekcie tranzystorem BUZ11 można sterować za pomocą mikrokontrolera z napięciem wyjściowym 3,3V?
Pozdrawiam

Portret użytkownika mirley

Re: Taśma LED

raczej tak. Tranzystory nie włączają napięcia na układzie a zwierają odbiornik od strony masy. Napięcie jakie panuje na drenie tranzystora może być zatem różne

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika kza

brak jednego koloru

Witam, wykonałem ten układ i wszystko działa jak należy jednak brakuje mi jednego koloru z wyjscia 19 procesora. Układ zachowuje się tak jakby wogóle nie sterował tym wyjściem nie zależnie jaki kolor bym tam podłączył. Tranzystor T1 jest sprawny, zamieniałem kolory w innej konfiguracji i za każdym razem brakuje koloru z pinu 19.

Portret użytkownika marekszy

brak jednego koloru

robiłem ten sterownik i działa bez zarzutu, sprawdź napięcie bezpośrednio na wyjściu 19 oraz czy nie masz gdzieś przerwy lub zwarcia.Jeśli ustawiłeś fusebity tak jak kazał Mirlej to musi działać...jak nie to zostało wymienic procesor.

Portret użytkownika kza

Już wszystko działa jak

Już wszystko działa jak należy. jak się okazało była minimalna przerwa na ścieżce w układzie sterownika.

Portret użytkownika marekszy

brak jednego koloru

No i pięknie, wystarczy sprawdzić, a nie od razu "ratunku", brawo,że dałeś radę.

Portret użytkownika mario

Witam, chciałbym się spytać o

Witam, chciałbym się spytać o sterowanie tranzystorem. Złożyłem na szybko układ bez mikrokontrolera do przetestowania jak działa (wszystko podłączyłem tak jak u Ciebie na schemacie, tylko zamiast sterować bramką tranzystora mikrokontrolerem zrobiłem dzielnik napięcia, którym płynnie mogę zmieniać napięcie na bramce tranzystora). Doszedłem do takich wniosków, że prąd, któy płynie przez diody (u mnie w testowym układzie był to opornik) płynnie był regulowany poprzez zmianę napięcia na bramce tranzystora. Wszystko tak jak powinno być, tylko że te płynne przejście następowało dla napięć od 2,76V do 3,86V napięcia bramki. A napięcie jakie podawałem na bramke było od 0 do 5V. Także z obserwacji wynika, że w zakresie 0-2,76V układ jest nieczuły i nie płynie żadne prąd przez diody, a od napięcia 3,86V płynie maksymalny (nieważne jakie napięcie wyższe napięcie od 3,86 podam na bramkę to i tak przez diody płynie maksymalny prąd). Czy Twój układ też tak działa, że reaguje na wąski zakres napięcia bramki? Można go jakoś poszerzyć? Jest gdzieś uwzględnione w twoim programie, żeby napięcie zmieniało się w jakiś granicach? Bo nie mogę sie doczytać. Najbardziej interesuje mnie odpowiedz na te pytanie o zakres pracy tranzystora.

Ogólnie chciałem pogratulować tylu udanych projektów. Oby tak dalej!

Pozdrawiam

Portret użytkownika mirley

Re: Tranzystor

To o czym piszesz to normalne, tranzystor ma różne obszary pracy i poniżej pewnego napięcia jest odcięty, w pewnym zakresie pracuje liniowo a potem się nasyca. Ja nie steruje żadnym napięciem na bramkę podaje 0 lub 5V. Jasność regulowana jest przez PWM, przez regulację wypełnienia przebiegu prostokątnego który podaje na bramkę tranzystora. Mikrokontroler jest układem cyfrowym i na wyjściu może mieć 0 lub 5V i nic poza tym.

Jak chcesz wiedzieć jak działa tranzystor to trzeba zapoznać się z książką do podstaw elektroniki

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika jod

Witam, czy jest możliwe

Witam, czy jest możliwe sterowanie kilkoma listwami RGB podłanczając do tego procka rejestr 74HC595 wraz z UDN2981?

Portret użytkownika mirley

Re: RGB

Pewnie można ale po co... wystarczy wykorzystać więcej pinów procesora albo dać większy i zrobić więcej kanałów. Wyjdzie na to samo a będzie mniej skomplikowane

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika jod

Ja potrzebuję około 50

Ja potrzebuję około 50 kanałów na dużej przestrzeni. Chcę to podzielić na moduły by zaoszczędzić okablowania.
Pytanie tylko jak to dobrze połączyć?

Portret użytkownika mirley

Re; RGB

Osobiście zrobił bym więcej modułów programowalnych i sterował nimi za pomocą R232 albo rs485 z jednego procesora zarządzającego. Możesz też spróbować dać np po dwa układy rejestrów na jednym pinie i próbować oprogramować odpowiednie działanie. Nalezy zacząć od jednego rejestru i zobaczyc czy da rade odpowiednio szybko wypluwac dane z uC. Dla 100Hz odświeżania i 100 progów jasności będzie potrzebne pewnie z 80khz przebiegu na pinie. Może się to uda uzyskać

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika grzesiek

Impulsator

Mam pewien problem

Urządzonko wykonałem na atmega 8 - działa bez problemu ale nie do końca.

Mianowicie przy przekręcaniu impulsatora migają mi diody a sama regulacja nie do końca działa poprawnie. Kręcąc powoli działa to jakby impulsy z jednej strony wpływały na drugą.

Czy to wina impulsatora czy jest potrzebna ingerencja w kod sterujący

Portret użytkownika mirley

Re: Sterownik

A piny skonfigurowałeś poprawnie? sprawdź czy piny impulsatora są wejściami

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc2

mieszanie rgb

witam zrobiłem układ i zastosowałem automatyczne zmienianie barw impulsatorem jak opisane na 1 stronie i jeszcze do tego chciałbym, aby po przytrzymaniu impulsatora przechodziło w kolor biały a po ponownym przytrzymaniu ponownie przechodziło w stan zmianiania barw impulsatorem. Prosiłbym o pomoc ponieważ mam wszystko gotowe i czekam tylko na układzik:)

Portret użytkownika mirley

Re: Led

'animacja
   If Rgb_mode = 1 Then
     Incr Dzielnik2
     If Dzielnik2 >= Szybkosc Then
       Dzielnik2 = 0
 
       Rdt = 0
       Gdt = 0
       Toggle Bdt
 
       Incr Pozycja
       If Pozycja = 900 Then Pozycja = 0
       Gosub Pozycja_do_rgb
     End If
   Else
     Rgb2(1) = 100
     Rgb2(2) = 100
     Rgb2(3) = 100
   End If

Sprawdź tą procedurę w miejsce tej co jest w programie

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc2

rgb

więc tak zmieniłem program tak jak pisałeś ale świeci ciągle na biało niezależnie od tego czy się naciska czy nie powinno być tak obracając impulsatorem przechodzi przez wszystkie kolory (animacja sterowana ręcznie) a po naciśnięciu ma przechodzic w biały i tak na zmiane po naciśnięciu program teraz wygląda tak

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 8000000                                          'internal RC oscilator
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B00001110 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Portb.7
Gd Alias Portb.6
Bd Alias Portb.5
 
Rdt Alias Portd.3
Gdt Alias Portd.1
Bdt Alias Portd.2
 
I1 Alias Pind.4
I2 Alias Pind.5
Isw Alias Pind.0
 
 
'*************  Nazwy Koniec  ****************
 
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Rgb(3) As Byte
Dim Rgb2(3) As Byte
Dim Pomoc As Byte
Dim Flaga As Bit
Dim Dzielnik As Word
Dim Dzielnik2 As Byte
Dim Szybkosc As Byte
 
Dim N As Byte
 
Dim Arg As Word
Dim Wartosc As Word
Dim Pozycja As Word
 
Dim Rgb_mode As Bit
Dim Cur_color As Byte
 
Dim Sw_l As Byte , Sw_f As Byte
Dim Tryb As Byte , Rezultat As Integer
 
Dim Autosave As Byte , X As Byte
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Cur_color = 1
Autosave = 250
 
Readeeprom X , 1
If X <= 10 Then Rgb2(1) = X Else Rgb2(1) = 1
Readeeprom X , 2
If X <= 10 Then Rgb2(2) = X Else Rgb2(2) = 1
Readeeprom X , 3
If X <= 10 Then Rgb2(3) = X Else Rgb2(3) = 1
Readeeprom X , 4
If X <= 100 And X >= 1 Then Szybkosc = X Else Szybkosc = 1
 
 
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
 Rezultat = 0
 Select Case Tryb
  Case 0:
   If I1 = 1 And I2 = 1 Then Incr Tryb                      'jezeli dwa rozwarte
  Case 1:
   If I1 = 1 And I2 = 0 Then
    Rezultat = 1
    Incr Tryb
   End If
   If I1 = 0 And I2 = 1 Then
    Rezultat = -1
    Incr Tryb
   End If
  Case 2:
   If I1 = 0 And I2 = 0 Then Incr Tryb
  Case 3:
   If I1 = 1 And I2 = 0 Then
    Rezultat = -1
    Tryb = 0
   End If
   If I1 = 0 And I2 = 1 Then
    Rezultat = 1
    Tryb = 0
   End If
 End Select
 
If Rezultat <> 0 Then
  Autosave = 0
 
  If Rezultat = 1 Then
    If Rgb_mode = 1 Then
      Decr Szybkosc
      If Szybkosc <= 1 Then Szybkosc = 1
    Else
      incr pozycja
      if pozycja >= 900 then pozycja = 0
    End If
  Else
    If Rgb_mode = 1 Then
      Incr Szybkosc
      If Szybkosc >= 100 Then Szybkosc = 100
    Else
      decr pozycja
      if pozycja > 1000 then pozycja = 899
    End If
  End If
 
 
End If
 
 
 
 
 If Flaga = 1 Then                                          'co 32ms
   Flaga = 0
 
    'autosave
    If Autosave < 250 Then
      Incr Autosave
      If Autosave = 250 Then
        X = Rgb2(1)
        Writeeeprom X , 1
        X = Rgb2(2)
        Writeeeprom X , 2
        X = Rgb2(3)
        Writeeeprom X , 3
        X = Szybkosc
        Writeeeprom X , 4
 
      End If
    End If
 
 
   'animacja
   If Rgb_mode = 1 Then
     Incr Dzielnik2
     If Dzielnik2 >= Szybkosc Then
       Dzielnik2 = 0
 
       Rdt = 0
       Gdt = 0
       Toggle Bdt
 
       Incr Pozycja
       If Pozycja = 900 Then Pozycja = 0
       Gosub Pozycja_do_rgb
     End If
   Else
     Rgb2(1) = 100
     Rgb2(2) = 100
     Rgb2(3) = 100
   End If
 
   'switch w impulsatorze
   If Isw = 0 Then
     If Sw_l < 100 Then
       Incr Sw_l
       If Sw_l = 4 Then Sw_f = 1
       If Sw_l = 50 Then Sw_f = 2
     End If
   Else
     Sw_l = 0
     If Sw_f = 1 Then
       Sw_f = 0
       Incr Cur_color
       If Cur_color = 4 Then Cur_color = 1
     End If
     If Sw_f = 2 Then
       Sw_f = 0
       Toggle Rgb_mode
     End If
   End If
 
 
 
 End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 Timer0 = 128
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik >= Rgb(1) Then Reset Rd Else Set Rd
 If Licznik >= Rgb(2) Then Reset Gd Else Set Gd
 If Licznik >= Rgb(3) Then Reset Bd Else Set Bd
 
 Incr Dzielnik
 If Dzielnik = 250 Then
   Dzielnik = 0
   Set Flaga
 End If
 
Return
'******** Przerwanie timer 0 Koniec ************
 
'************   Inne Etykiety    ***************
'***********************************************
Przelicz:                                                   'funkcja \_ _ _ _/^^^
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg > 100 And Arg < 500 Then Wartosc = 0
  If Arg <= 100 Then Wartosc = 100 - Arg
  If Arg >= 500 And Arg <= 600 Then Wartosc = Arg - 500
  If Arg > 600 Then Wartosc = 100
Return
 
 
Pozycja_do_rgb:
  Arg = Pozycja
  Gosub Przelicz
  Rgb(1) = Wartosc
  Arg = Pozycja + 300
  Gosub Przelicz
  Rgb(2) = Wartosc
  Arg = Pozycja + 600
  Gosub Przelicz
  Rgb(3) = Wartosc
Return

Portret użytkownika mirley

Re: RGB

A próbowałeś przełączyć tryb impulsatorem. Ten program co masz będzie płynnie zmieniał 900 barw po starcie a po zmianie trybu zaswieci na biało. Startuje w trybie Rgb_mode = 0 więc swieci na biało. Ewentualnie napisz przed do loop

Rgb_mode = 1

Jak to zadziała to pomyslimy o zmianach w programie

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc2

rgb

Nie działa ciągle świeci na biało a jak się dopisze to można zmieniać kolory impulsatorem a przycisk w ogóle nie reaguje kod wygląda tak

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 8000000                                          'internal RC oscilator
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B00001110 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Portb.7
Gd Alias Portb.6
Bd Alias Portb.5
 
Rdt Alias Portd.3
Gdt Alias Portd.1
Bdt Alias Portd.2
 
I1 Alias Pind.4
I2 Alias Pind.5
Isw Alias Pind.0
 
 
'*************  Nazwy Koniec  ****************
 
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Rgb(3) As Byte
Dim Rgb2(3) As Byte
Dim Pomoc As Byte
Dim Flaga As Bit
Dim Dzielnik As Word
Dim Dzielnik2 As Byte
Dim Szybkosc As Byte
 
Dim N As Byte
 
Dim Arg As Word
Dim Wartosc As Word
Dim Pozycja As Word
 
Dim Rgb_mode As Bit
Dim Cur_color As Byte
 
Dim Sw_l As Byte , Sw_f As Byte
Dim Tryb As Byte , Rezultat As Integer
 
Dim Autosave As Byte , X As Byte
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Cur_color = 1
Autosave = 250
 
Readeeprom X , 1
If X <= 10 Then Rgb2(1) = X Else Rgb2(1) = 1
Readeeprom X , 2
If X <= 10 Then Rgb2(2) = X Else Rgb2(2) = 1
Readeeprom X , 3
If X <= 10 Then Rgb2(3) = X Else Rgb2(3) = 1
Readeeprom X , 4
If X <= 100 And X >= 1 Then Szybkosc = X Else Szybkosc = 1
 
 
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
 Rezultat = 0
 Select Case Tryb
  Case 0:
   If I1 = 1 And I2 = 1 Then Incr Tryb                      'jezeli dwa rozwarte
  Case 1:
   If I1 = 1 And I2 = 0 Then
    Rezultat = 1
    Incr Tryb
   End If
   If I1 = 0 And I2 = 1 Then
    Rezultat = -1
    Incr Tryb
   End If
  Case 2:
   If I1 = 0 And I2 = 0 Then Incr Tryb
  Case 3:
   If I1 = 1 And I2 = 0 Then
    Rezultat = -1
    Tryb = 0
   End If
   If I1 = 0 And I2 = 1 Then
    Rezultat = 1
    Tryb = 0
   End If
 End Select
 
If Rezultat <> 0 Then
  Autosave = 0
 
  If Rezultat = 1 Then
    If Rgb_mode = 1 Then
      Decr Szybkosc
      If Szybkosc <= 1 Then Szybkosc = 1
    Else
      Incr Pozycja
      If Pozycja >= 900 Then Pozycja = 0
    End If
  Else
    If Rgb_mode = 1 Then
      Incr Szybkosc
      If Szybkosc >= 100 Then Szybkosc = 100
    Else
      Decr Pozycja
      If Pozycja > 1000 Then Pozycja = 899
    End If
  End If
 
 
End If
 
 
 
 
 If Flaga = 1 Then                                          'co 32ms
   Flaga = 0
 
    'autosave
    If Autosave < 250 Then
      Incr Autosave
      If Autosave = 250 Then
        X = Rgb2(1)
        Writeeeprom X , 1
        X = Rgb2(2)
        Writeeeprom X , 2
        X = Rgb2(3)
        Writeeeprom X , 3
        X = Szybkosc
        Writeeeprom X , 4
 
      End If
    End If
 
 
   'animacja
   If Rgb_mode = 1 Then
     Incr Dzielnik2
     If Dzielnik2 >= Szybkosc Then
       Dzielnik2 = 0
 
       Rdt = 0
       Gdt = 0
       Toggle Bdt
 
       Incr Pozycja
       If Pozycja = 900 Then Pozycja = 0
       Gosub Pozycja_do_rgb
     End If
   Else
     Rgb2(1) = 100
     Rgb2(2) = 100
     Rgb2(3) = 100
   End If
 
   'switch w impulsatorze
   If Isw = 0 Then
     If Sw_l < 100 Then
       Incr Sw_l
       If Sw_l = 4 Then Sw_f = 1
       If Sw_l = 50 Then Sw_f = 2
     End If
   Else
     Sw_l = 0
     If Sw_f = 1 Then
       Sw_f = 0
       Incr Cur_color
       If Cur_color = 4 Then Cur_color = 1
     End If
     If Sw_f = 2 Then
       Sw_f = 0
       Toggle Rgb_mode
     End If
   End If
 
 
 End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 Timer0 = 128
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik >= Rgb(1) Then Reset Rd Else Set Rd
 If Licznik >= Rgb(2) Then Reset Gd Else Set Gd
 If Licznik >= Rgb(3) Then Reset Bd Else Set Bd
 
 Incr Dzielnik
 If Dzielnik = 250 Then
   Dzielnik = 0
   Set Flaga
 End If
 
Return
'******** Przerwanie timer 0 Koniec ************
 
'************   Inne Etykiety    ***************
'***********************************************
Przelicz:                                                   'funkcja \_ _ _ _/^^^
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg > 100 And Arg < 500 Then Wartosc = 0
  If Arg <= 100 Then Wartosc = 100 - Arg
  If Arg >= 500 And Arg <= 600 Then Wartosc = Arg - 500
  If Arg > 600 Then Wartosc = 100
Return
 
 
Pozycja_do_rgb:
  Arg = Pozycja
  Gosub Przelicz
  Rgb(1) = Wartosc
  Arg = Pozycja + 300
  Gosub Przelicz
  Rgb(2) = Wartosc
  Arg = Pozycja + 600
  Gosub Przelicz
  Rgb(3) = Wartosc
Return

Portret użytkownika mirley

Re; RGB

Zmodyfikowałem twój kod wyżej..... jak chcesz żeby Ci przyciski działały jak skasowałeś obsługę przycisku. Przytrzymaj przycisk w impulsatorze 3 sekundy i puść, powinien się zmienić tryb

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc2

Po przytrzymaniu nic się nie

Po przytrzymaniu nic się nie dzieje ciągle świeci na biało.

Portret użytkownika mirley

Re: RGB

A jak przed pętlą główną wpiszesz Rgb_mode = 1 to wykonuje się animacja?

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc2

rgb

Nie ciągle biały.

Portret użytkownika mirley

Re: led

W takim razie muszę sam na to popatrzeć.... może wieczorem znajdę trochę czasu.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika marekszy

RGB

Witam,co trzeba zmienić aby animacja odbywała się tylko z kolorami RGB bez mieszania ich ,tylko przechodzenie pomiędzy podstawowymi, tzn z czerwonego na zielony, z zielonego na niebieski i z niebieskiego na czerwony itd

Portret użytkownika mirley

Re; taśma RGB

Najprościej zmień:

Przelicz:                                                   'funkcja \_ _ _ _/^^^
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg > 100 And Arg < 500 Then Wartosc = 0
  If Arg <= 100 Then Wartosc = 100 - Arg
  If Arg >= 500 And Arg <= 600 Then Wartosc = Arg - 500
  If Arg > 600 Then Wartosc = 100
Return

na

Przelicz:                                             
  If Arg > 899 Then Arg = Arg - 900
 
  if Arg < 300 Then Wartosc = 100 else Wartosc = 0
Return

Powinno zadziałać

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika gosc2

RGB

Witam i jak udało się coś wymyślić z programem?

Portret użytkownika mirley

RGB

Nie wziąłem się za to bo mnie czas goni i nie mogę sobie poradzić z bieżącymi zadaniami... sprawdzę to jednak tak jak obiecałem i wrzucę kod taki żeby działał.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika marekszy

taśma RGB

witam,odnośnie zmiany kolorów bez miesznia ich (tylko RGB)to niestety nie o to mi chodziło,chciałem aby płynnie przechodziły pomiędzy RGB (ściemniały i rozjaśniały),a w tej chwili działa to na zasadzie przełączania sie np,z caerwonego świecącego na 100% na niebieski 100% itd.Możesz na to zerknąć gdzie to można zmienić?

Portret użytkownika mirley

Re: RGB

Sprawdź to:

Przelicz:                                                   
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg <= 100 Then Wartosc = Arg
  If Arg > 100 And Arg <= 200 Then Wartosc = 100
  If Arg > 200 And <= 300 Then Wartosc = 300 - Arg
  If Arg > 300 Then Wartosc = 0
Return

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika marekszy

RGB

Dzięki,po dopisaniu jednego Arg działa płynne przechodzenie pomiędzy RGB,wstawiam poprawione

Przelicz:                                                   
  If Arg > 899 Then Arg = Arg - 900
 
  If Arg <= 100 Then Wartosc = Arg
  If Arg > 100 And Arg <= 200 Then Wartosc = 100
  If Arg > 200 And Arg <= 300 Then Wartosc = 300 - Arg
  If Arg > 300 Then Wartosc = 0
Return

Portret użytkownika emilo

Sterowanie z pilota

Witam

Mirku wykonałem ten sterownik i oświetliłem sobie meble w pokoju.Tylko ostatnio mi się nasunął pomysł z sterowaniem nimi za pomocą pilota.Czy jest dużo roboty aby to wykonać.Będę Ci bardzo wdzięczny za odpowiedz i podpowiedz jak coś takiego zrobić.
Pozdrawiam

Portret użytkownika mirley

Re: RGB

Mogę udzielić kilku wskazówek ale niestety nie mam czasu aby przetestować taki kod.

najpierw trzeba zmienić piny od diody testowej D1, zamiast pd2, alias niech wskazuje na pd6. Do pinu pd2 przestawionego w konfiguracji na wejście trzeba podłączyć odbiornik tsop1736 lub podobny. Konfiguracja portu b wygląda teraz tak:

Config Portd = &B01001010 : Portd = &B11111111

Na początku wklejasz kod:
On Int0 Przzew0 Nosave
Config Int0 = Low Level
Enable Int0
 
Config Rc5 = Pind.2

potem na końcu obsługę przerwania:

Przzew0:
  Disable Int0
  Enable Interrupts
  Getrc5(adres , Komenda)
  Komenda = Komenda And &B01111111
  Odebrano = 1
Return

Bezpośrednio wewnątrz pętli głównej:

If Odebrano = 1 Then
    If Adres = 0 Then                                       'pilot o adresie 0
 
      'co się ma dziać w zależności od komendy
      'tutaj uzupełniasz co ma się zmieniać w programie po kliknięciu klawisza, wystarczy dopisać case w zalezności od komendy
 
    End If
    Odebrano = 0
    Enable Int0
  End If

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika progidek

Sterowanie MOSFETa

Mam pytania odnośnie sterowania MOSFETów. Czy rezystory na bramkach tranzystorów wpływając na zwiększenie stałej czasowej nie powodują czasem zwiększenia strat na tranzystorach? Czy przy tej częstotliwości PWMu (~3,9 kHz) jest to pomijalne? I czy w tym wypadku prąd przeładowania pojemności pomiędzy elektrodami tranzystorów nie powoduje nadmiernego obciążenia wyjść mikrokontrolera?

Chciałbym podłączyć BUZ11 do ATTiny13 w celu sterowania ~5m taśmy LED (w całości taśma bierze niecałe 2A). Aktualnie PWM ustawiony mam na 37,5 kHz i jakoś to działa bez większych problemów z bramką podłączoną przez rezystor 1k do jednego z wyjść mikrokontrolera. Ale boję się o jego uszkodzenie, dlatego zmniejszę częstotliwość PWMu do ~4,7 kHz, tylko w dalszym ciągu mam obawy o nadmierne obciążanie wyjścia mikrokontrolera. Z kolei jak zostawię rezystor 1k na bramce, zwiększą mi się straty na tranzystorze, czego bym nie chciał.

Portret użytkownika mirley

Re: Taśma

Uważam że nie ma się co przejmować obciążeniem mikrokontrolera bo średni prąd jak będzie nawet 20mA to i tak się nic nie stanie. W praktyce prąd może być impulsowo większy ale i tak średnia nie będzie duża. Natomiast stała czasowa przy 1k będzie jaka? pewnie pojedyncze us a przy 5kHz masz okres 200us wiec to i tak 1%

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika marekszy

Taśma LED RGB

Możesz na to zerknąć.Mam pytanie odnośnie dołożenia dodatkowych 3 tranz.BUZ11,czy wystarczy dopisać

Rd Alias Portb.7,Portb.2
Gd Alias Portb.6,Portb.1
Bd Alias Portb.5,Portb.0

i na Portb.2/1/0 będę miał te same stany co na Portb.7/6/5 aby dać na dodatkowe tranzystory (będą zasilane z drugiego zasilacza).
I jeszcze jedno,jak dołożyć zapis ,aby pamiętał jaki miał ustawiony tryb animacja/kolor, bo w tej chwili po resecie zaczyna od tego co wpisane na stałe.
Jeżeli zasilam LED-y z 24V DC, to powinienem zwiększyć wartości rezystorów R4/R5/R6 na BUZ11?

Portret użytkownika gosc222

RGB

Siemka myślałeś już nad moim programem, który po naciśnięciu przechodzi w biały??

Portret użytkownika mirley

Re: LED RGB

Do Aliasa przypisujesz jeden pin.... Dodaj po drugim tranzystorze na każdy pin, zewrzyj razem bramki i po problemie. Rezystory R4-R6, mają małe znaczenie, mogą takie zostać.

-----------

Niestety nie myślałem.... dopiero dzisiaj wróciłem po dwutygodniowej przerwie. Przypomnij mi o co chodziło to się tym zajmę.

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika marekszy

LED RGB

czy wartości rezystorów R4-R6 mają wpływ na tranzystory BUZ11,ponieważ przy powolnej zmianie animacji diody przy ściemnianiu (pod koniec) lekko pomrugują, tak jakby to robiły skokowo.Mam pytanko czy można zmniejszyć ich wartość i jak wtedy będzie z obciążeniem na wyjściach ATTINY.

Portret użytkownika mirley

Re: RGB

Rezystory na bramkach tranzystorów mosfet nie mają większego znaczenia, co prawda z pojemnościami bramek tworzą jakiś tam obwód rc ale przy tych częstotliwościach przeładowań nie będzie to miało znaczenia. Pewnie jak dasz 10k zamiast 330R to też za wiele się nie zmieni. Możesz nawet zewrzeć te rezystory bo prąd do bramki i tak nie płynie.

Miganie diod przy niskiej jasności spowodowane jest małym współczynikiem wypełnienia i może też być wynikiem słabej stabilności zasilania. Jaki masz zasilacz do ledów? Ile jest diod? Spróbuj na zasilaczu komputerowym podłączyć czy problem też wystąpi. Można spróbować dodać Kondensatorki równolegle do diod aby trochę uśrednić PWM podawany na diody

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika marekszy

Re: RGB

Witam.w jaki sposób dopisać jeszcze do tego programu zapis aby strownik po wyłączeniu zasilania i ponownym załączeniu wystartował z tego na czym był zostawiony (animacja/kolor).W tej chwili ma przypisany start animacja lub kolor na stałe po włączeniu zasilania.

Portret użytkownika mirley

Re: RGB

W moim programie napewno jest zrobiony zapis.... jeśli kilka sekund nic nie ruszasz i nie przestawiasz to następuje automatyczny zapis

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.

Portret użytkownika marekszy

Re: RGB

W Twoim programie na pewno jest tylko zapis prędkości animacji i ustawionego koloru, jednak to z czego startuje po załączeniu zasilania wpisane jest na "sztywno"

Portret użytkownika mirley

Re: RGB

W takim razie trzeba zapisc jeszcze zmienną Pozycja i RGB_mode:

X = 0
X.0 = RGB_mode
Writeeeprom X , 5
Writeeeprom Pozycja , 6

Na starcie trzeba wczytać z pod tych samych adresów:

Readeeprom X, 5
Rgb_mode = x.0
Readeeprom Pozycja, 6

-

UWAGA! Możliwy jest zakup zaprogramowanych uC i zestawów elementów itp. do niektórych projektów. O dostępność proszę pytać via email. Konkretne oferty pojawiają się w cenniku.