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łącznik | Rozmiar |
|---|---|
| Schemat | 41.85 KB |
| Schemat Zasilacza | 18.06 KB |
| Płytka | 7.98 KB |
| Płytka (odbicie lustrzane) | 7.89 KB |
| Płytka (6 na stronie) | 35.38 KB |
| Montowanie | 10.51 KB |
| Kod źródłowy | 3.15 KB |
| Program po kompilacji (BIN) | 1.12 KB |
| Program po kompilacji (HEX) | 3.18 KB |


Na jakiej zasadzie sygnał z wyprowadzeń ?
Hej gratuluje projektu , ale mam jedno pytanie . Czy nogi diód nie powinny być zwarte z wyprowadzeniami odpowiedzialnymi za sygnał PWM ? nurtuje mnie to dość długo a jakoś sam nie potrafię sobie tego wytłumaczyć.
Mini Lampka
Wyprowadzenia diod są dobrze podłączone a opisywana lampka działa poprawnie juz długi czas. Układ działa na programowej implementacji prostego PWM. Jest to poprostu licznik zliczający impulsy do pewnej wartosci ustalonej (w tym przypadku 100) i jedna instrukcja warunkowa sprawdzająca czy jest on mniejszy od zmiennej określającej wypełnienie przebiegu podawanego na diodę. Fragment programu za to odpowiedzialny przedstawiam poniżej:
Dzięki temu że sterowanie portami odbywa się w klasyczny sposob nie jest istotne do jakich wyprowadzeń zostały podłączone diody