Mini Lampka RGB


8.66667
Ocena: None Średnia: 8.7 (3 głosujących)

Urządzenie jest prostym sterownikiem trójkolorowych diod led. Ma za zadanie podświetlać różnokolorowym światłem kryształ, imitację kamienia lub inny podobny przedmiot. Zastosowanie mikrokontrolera zapewnia małe wymiary układu, prostotę wykonania i bardzo dobry efekt wizualny dzięki generowaniu całej palety barw. W układzie pracuje mikrokontroler AT89C2051 oraz kilka elementów pomocniczych. Lampka składa się z dwóch części. Płytka z procesorem i diodami umieszczona jest w podstawie kryształu, natomiast w obudowie zasilacza wtyczkowego zawarty jest stabilizator i klawiatura dwuprzyciskowa umożliwiająca regulację szybkości animacji.

Działanie:


Na rysunku poniżej przedstawiony jest schemat ideowy sterownika:

Głównym elementem układu jest procesor U1 (AT89C4051) współpracujący z rezonatorem kwarcowym X (12MHz) i kondensatorami C1 (33pF) i C2 (33pF). Dioda D1 zabespiecza przed odwrotną polaryzacją napięcia zasilania. Kondensator C4 (100uF) filtruje napięcie zasilające a C3 (4,7uF) pracuje w obwodzie resetu mikrokontrolera i ma umożliwić mu poprawne rozpoczęcie pracy po włączeniu zasilania. Złącze GP1 (goldpin) zapewnia kontakt z zasilaczem i przyciskami. Rezystory R5 (180R), R6 (180R) i R7 (100R) ograniczają prąd diody D2 (LED RGB) natomiast R8 (180R), R9 (180R) i R10 (100R) diody D3 (LED RGB). Elementy R7 i R10 mają mniejsze wartości ze względu na gorszą sprawność czerwonych diod led i konieczność zasilania ich większym prądem. D2 i D3 podłączone są do innych wyprowadzeń mikrokontrolera poniważ wydajność prądowa portów procesora jest mała a w ten sposób nie są konieczne dodatkowe tranzystory.

Schemat ideowy zasilacza przedstawia poniższy rysunek:

Układ U1 (7805) wraz z kondensatorami C1 (1000uF) i C2 (47uF) zapewnia stabilizowane napięcie 5V dla mikrokontrolera i współpracujących elementów. Przyciski S1 (N.C.) i S2 (N.C.) służą do ustawiania szybkości zmiany kolorów. Dioda D1 sygnalizuje stan pracy urządzenia a rezystor R1 (510R) ogranicza jej prąd. Złącze GP1 zapewnia kontakt z płytką sterownika.

Budowa:


Sterownik można zbudować korzystając z płytki dostępnej tutaj. Gdyby konieczny był rysunek w odbiciu lustrzanym to można skorzystać z rysunku dostępnego tutaj. Montaż urządzenia jest bardzo prosty. Należy zwrócić uwagę na prawidłowe przylutowanie diod led RGB. Pod mikrokontroler U1 podstawka jest bezwzględnie konieczna, gdyż w przeciwnym razie nimożliwe będzie jego zaprogramowanie. Płytkę sterownika należy umieścić w przezroczystej matowej obudowie żeby zapewnić optymalne warunki miesznia się barw (najlepszy jest jakiś kryształ). Pomocą w konstrukcji może okazać się schemat montażowy dostępny tutaj. Zasilacz i przyciski zostały zlutowane w "pająku", bez płytki drukowanej i zamontowane w obudowie transformatora zasilającego. Przyciski użyte w układzie są typu N.C. (normalnie zwarte) ze względu na fakt że akurat takie miałem w czarnym kolorze. Można zastosować zwykłe uSwitch'e ale wtedy konieczna będzie zmiana dwóch linijek programu.

Wykaz Elementów:

Sterownik:


1x GOLDPIN 1x5

2x 100R
4x 180R

2x 33pF
1x 4,7uF Elektrolit
1x 100uF Elektrolit

1x Rezonator Kwarcowy 12MHz
1x 1N4007
2x Dioda LED RGB
1x AT89C4051 +Podstawka

Zasilacz:


2x Przycisk dowolny (N.C.)

1x 510R

1x 47uF Elektrolit
1x 1000uF Elektrolit

1x 7805
1x Dioda LED
1x Mostek Prostowniczy 1A

Programowanie:


Mikrokontroler do sterownika został zaprogramowany w wersji demo programu BASCOM 8051 firmy MCS Electronics (http://www.mcselec.com/). Program przedstawiony jest poniżej:

Dim Rled As Byte , Gled As Byte , Bled As Byte
Dim Licznik As Byte
Dim Flaga As Bit , Ctrled As Bit
Dim N As Byte , Pomoc As Byte , Prz1 As Byte , Prz2 As Byte
Dim Dziel As Word , Dziel2 As Word , Szybkosc As Word
 
Enable Interrupts
Config Timer0 = Timer , Gate = Internal , Mode = 2
On Timer0 Przerwanie
Load Timer0 , 1
Enable Timer0
Start Timer0
 
P1 = 255
P3 = 255
Rled = 100
Gled = 0
Bled = 0
Szybkosc = 6000
N = 1
Pomoc = 0
 
'Nazwy pinow
'****************************
Rd Alias P1.4
Gd Alias P1.3
Bd Alias P1.2
Rd2 Alias P1.7
Gd2 Alias P1.6
Bd2 Alias P1.5
Plsw Alias P3.0
Misw Alias P3.1
Contled Alias P3.2
'****************************
 
Do
 If Flaga = 1 Then
    Flaga = 0
 
    Ctrled = Not Ctrled
    Contled = Ctrled
 
    Select Case N
    Case 1:
     Incr Gled
     If Gled = 100 Then N = 2
    Case 2:
     Decr Rled
     If Rled = 0 Then N = 3
    Case 3:
     Incr Pomoc
     If Pomoc = 100 Then
      N = 4
      Pomoc = 0
     End If
    Case 4:
     Incr Bled
     If Bled = 100 Then N = 5
    Case 5:
     Decr Gled
     If Gled = 0 Then N = 6
    Case 6:
     Incr Pomoc
     If Pomoc = 100 Then
      N = 7
      Pomoc = 0
     End If
    Case 7:
     Incr Rled
     If Rled = 100 Then N = 8
    Case 8:
     Decr Bled
     If Bled = 0 Then N = 9
    Case 9:
     Incr Pomoc
     If Pomoc = 100 Then
      N = 10
      Pomoc = 0
     End If
    Case 10:
     Incr Gled
     If Gled = 10 Then N = 11
    Case 11:
     Incr Bled
     If Bled = 100 Then N = 12
    Case 12:
     Decr Rled
     If Rled = 10 Then N = 13
    Case 13:
     Incr Gled
     If Gled = 100 Then N = 14
    Case 14:
     Decr Bled
     If Bled = 10 Then N = 15
    Case 15:
     Incr Rled
     If Rled = 100 Then N = 16
    Case 16:
     Incr Bled
     If Bled = 100 Then N = 17
    Case 17:
     Incr Pomoc
     If Pomoc = 80 Then
      N = 18
      Pomoc = 0
     End If
    Case 18:
     Decr Bled
     If Bled = 0 Then N = 19
    Case 19:
     Decr Gled
     If Gled = 0 Then N = 20
    Case 20:
     Incr Pomoc
     If Pomoc = 100 Then
      N = 1
      Pomoc = 0
     End If
   End Select
 
 End If
Loop
End
 
Przerwanie:
 
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < Rled Then
  Reset Rd
  Reset Rd2
 Else
  Set Rd
  Set Rd2
 End If
 
 If Licznik < Gled Then
  Reset Gd
  Reset Gd2
 Else
  Set Gd
  Set Gd2
 End If
 
 If Licznik < Bled Then
  Reset Bd
  Reset Bd2
 Else
  Set Bd
  Set Bd2
 End If
 
 Incr Dziel
 If Dziel >= Szybkosc Then
   Dziel = 0
   Set Flaga
 End If
 
 Incr Dziel2
 If Dziel2 = 200 Then
  Dziel2 = 0
  Gosub Przyciski
 End If
 
Return
 
Przyciski:
 
 If Plsw = 1 Then                                             '+
  Incr Prz1
  If Prz1 = 2 Then
   Prz1 = 0
   Szybkosc = Szybkosc - 200
   If Szybkosc < 200 Then Szybkosc = 200
  End If
 Else
  Prz1 = 0
 End If
 
 If Misw = 1 Then                                             '-
  Incr Prz2
  If Prz2 = 2 Then
    Prz2 = 0
    Szybkosc = Szybkosc + 200
    If Szybkosc > 12000 Then Szybkosc = 12000
  End If
 Else
  Prz2 = 0
 End If
 
Return

Zdjęcia Projektu:

ZałącznikWielkość
Schemat41.85 KB
Schemat Zasilacza18.06 KB
Płytka7.98 KB
Płytka (odbicie lustrzane)7.89 KB
Płytka (6 na stronie)35.38 KB
Montowanie10.51 KB
Kod źródłowy3.15 KB
Program po kompilacji (BIN)1.12 KB
Program po kompilacji (HEX)3.18 KB



Portret użytkownika mirley

Re: Lampka RGB

Tak powinno działać, zrób jednak projekt mini lampka RGB 2, nowszą wersję. napewno będzie trzeba dac tranzystory sterujące

-

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 masta

zrobiłem już projekt mini

zrobiłem już projekt mini lampka RGB 2 tylko ze jak odłączę i podłącze z powrotem zasilanie to muszę ustawić jak się mają zmieniać kolory. Założony mam czujnik ruchu na schodach i to by było kłopotliwe ciągłe ustawiania zmian kolorów