Mini Lampka RGB 2


10
Ocena: None Średnia: 10 (13 głosujących)

Urządzenie jest ulepszoną i rozbudowaną wersją układu Mini Lampki RGB. Ma za zadanie podświetlać na różne kolory kryształ lub inny przedmiot dobrze rozpraszający światło. Zastosowanie mikrokontrolera z rodziny AVR powoduje większą szybkość działania i eliminacje niewielkiego migotania powstającego przy małej jasności kolorów w stosunku do poprzedniej wersji urządzenia. Lamka posiada 3 tryby pracy z czego najbardziej efektowną stanowi generowanie płynnych losowych przejść kolorów. W roli obudowy zastosowano imitację skały wykonaną z pasty modelarskiej, co znakomicie ułatwia zastosowanie kryształu o nietypowych i nieregularnych kształtach.

Działanie:


Schemat ideowy lampki przedstawia poniższy rysunek:

Sercem układu jest mikrokontroler U1 (ATTINY2313) wraz z rezonatorem kwarcowym X1 (16MHz) i kondensatorami C1 (22pF) i C2 (22pF). Stabilizator U2 (7805) wraz z kondensatorami C3 (470uF) i C4 (100uF) stanowi prosty zasilacz stabilizowany. Rezystory R2 (180R), R3 (100R) i R4 (180R) oraz R5 (180R), R6 (100R) i R7 (180R) ograniczają prąd diod D2 (Led RGB) i D3 (Led RGB). Dioda D1 (Led) wraz z rezystorem ograniczającym prąd R1 (330R) stanowi kontrolkę szybkości animacji.

Budowa:


Lampkę można zbudować w oparciu o płytkę drukowaną dostępną tutaj. Rysunek w odbiciu lustrzanym dostępny jest tutaj. Montaż układu nie jest skomplikowany lecz należy zwrócić uwagę na kilka istotnych szczegółów. Lutowanie rozpoczynamy od rezystorów, następnie montujemy kondensatory ceramiczne C1 i C2 na leżąco i nad nimi rezonator kwarcowy również leżąco (możemy także zastosować kwarc o mniejszych gabarytach). Stabilizator wraz z współpracującymi kondensatorami montujemy tak jak na zdjęciu u dołu strony. Przyciski klawiatury jak również diody D1 - D3 lutujemy od strony druku. Pod diody RGB można zastosować kawałki podstawki precyzyjnej co umożliwi ich ewentualną wymianę. Mikrokontroler należy obowiązkowy wyposażyć w podstawkę ze wzgledu na brak złącza programującego na płytce. Pomocą w montażu będą zdjęcia modelu a także dostępny tutaj schemat montażowy. Układ można zamknąć w małej obudowie i połączyć np. z krzyształem górskim za pomocą utwardzanej na powietrzu pasty modelarskiej jak to zrobiłem w tym projekcie. Utwardzoną pastę modelarską można pomalować dowolną farbą, najlepiej akrylową (do kupienia w sklepie dla plastyków). Gdy mamy diody RGB ze wspólną katodą należy dołączyć ich wspólne wyprowadzenia (katody) do masy i zaprogramować mikrokontroler wersją programu dla diody ze wspólną katodą.

Druga wersja płytki wraz z odpowiednim schematem montażowym jest dostępna w załącznikach. Wersja ta nie zawiera stabilizatora i jest przystosowana do rozcięcia na dwa fragmenty (klawiaturę i moduł sterujący). Ponadto część płytki z mikrokontrolerem została znacznie zmniejszona i upakowana.

Gdy chcemy podłączyć do układu więcej diod to możemy zastosować tranzystory NPN lub MOSFET N (dla diod ze wspólną anodą) według jednego ze schematów poniżej:

Dla diod ze wspólną katodą należy zastosować tranzystory PNP lub MOSFET P (schemat jest analogiczny tylko wszystko się odwraca). Ze względu na fakt iż tranzystory działają jak inwentery do mikrokontrolera należy wgrać program dla diod o przciwnej polaryzacji niż zastosowane w projekcie. Ilość dołączanych diod jest ograniczona tylko maksymalnym prądem jaki jest dopuszczalny dla zastosowanych tranzystorów.

Wykaz Elementów:


5x uSwitch

2x 100R
4x 180R
1x 330R

2x 22pF
1x 100uF Elektrolit
1x 470uF Elektrolit

1x Rezonator Kwarcowy 16MHz (przy 10MHz może migać)
1x Dioda LED
2x Dioda LED RGB (4 wyprowadzenia, wsp. anoda)
1x 7805
1x ATTINY2313 + Podstawka

Programowanie:


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

'************* Konfiguracja uC *****************
'***********************************************
$regfile = "attiny2313.dat"
$crystal = 16000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B00000000 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
 
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
Rd Alias Portb.0
Gd Alias Portb.1
Bd Alias Portb.2
 
Rd2 Alias Portb.3
Gd2 Alias Portb.4
Bd2 Alias Portb.5
 
Syg_led Alias Portb.7
Sw_port Alias Pind
 
'*************  Nazwy Koniec  ****************
 
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim Rled As Byte , Bled As Byte , Gled As Byte
Dim Rand_r As Byte , Rand_g As Byte , Rand_b As Byte
Dim Pomoc As Byte
Dim Flaga As Bit
Dim Dzielnik As Word
Dim Dzielnik2 As Byte
Dim Dzielnik3 As Byte
Dim Szybkosc As Byte
Dim Licznik_sw As Byte
Dim Stan_portu As Byte
 
Dim Arg As Word
Dim Wartosc As Word
Dim Pozycja As Word
 
Dim Stopbit As Bit
 
Dim Animacja As Byte
 
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
Pozycja = 0
Dzielnik2 = 0
Szybkosc = 10
Stopbit = 1
Animacja = 0
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
 If Flaga = 1 Then                                          'co 32ms
   Flaga = 0
 
   Gosub Przyciski
 
   Incr Dzielnik2
   If Dzielnik2 >= Szybkosc And Stopbit = 1 Then
     Dzielnik2 = 0
 
     Syg_led = Not Syg_led
 
     'pierwszy tryb  - przejscia plynne ustalone
     If Animacja = 0 Then
       Incr Pozycja
       If Pozycja = 900 Then Pozycja = 0
       Gosub Pozycja_do_rgb
     End If
 
     'drugi tryb - losowe przejscia
     If Animacja = 1 Then
       Incr Pozycja
       If Pozycja >= 50 Then
         Pozycja = 0
         Rand_r = Rnd(3)
         Rand_g = Rnd(3)
         Rand_b = Rnd(3)
       End If
 
       If Rand_r = 1 Then If Rled < 100 Then Incr Rled
       If Rand_r = 2 Then If Rled > 0 Then Decr Rled
 
       If Rand_g = 1 Then If Gled < 100 Then Incr Gled
       If Rand_g = 2 Then If Gled > 0 Then Decr Gled
 
       If Rand_b = 1 Then If Bled < 100 Then Incr Bled
       If Rand_b = 2 Then If Bled > 0 Then Decr Bled
     End If
 
     'trzeci tryb - losowy kolor
     If Animacja = 2 Then
       Pozycja = Rnd(900)
       Gosub Pozycja_do_rgb
     End If
 
   End If
 End If
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 
 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 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
  Rled = Wartosc
  Arg = Pozycja + 300
  Gosub Przelicz
  Gled = Wartosc
  Arg = Pozycja + 600
  Gosub Przelicz
  Bled = Wartosc
Return
 
Przyciski:
If Sw_port <> 255 And Stan_portu = Sw_port Then
  Incr Licznik_sw
  If Licznik_sw = 10 Then
    Select Case Stan_portu
      Case 126:                                             'plus
        Licznik_sw = 5
        If Szybkosc > 1 Then Decr Szybkosc
      Case 125:                                             'minus
        Licznik_sw = 5
        If Szybkosc < 40 Then Incr Szybkosc
      Case 124:                                             'plus i minus
        Stopbit = Not Stopbit
        Syg_led = 1
      Case 111:                                             ' R
        Pozycja = 700
        Gosub Pozycja_do_rgb
      Case 119:                                             ' G
        Pozycja = 400
        Gosub Pozycja_do_rgb
      Case 123:                                             ' B
        Pozycja = 100
        Gosub Pozycja_do_rgb
      Case 110:                                             'plus R
        Licznik_sw = 8
        If Rled < 100 Then Incr Rled
      Case 109:                                             'minus R
        Licznik_sw = 8
        If Rled > 0 Then Decr Rled
      Case 118:                                             'plus G
        Licznik_sw = 8
        If Gled < 100 Then Incr Gled
      Case 117:                                             'minus G
        Licznik_sw = 8
        If Gled > 0 Then Decr Gled
      Case 122:                                             'plus B
        Licznik_sw = 8
        If Bled < 100 Then Incr Bled
      Case 121:                                             'minus B
        Licznik_sw = 8
        If Bled > 0 Then Decr Bled
      Case 103:                                             ' R G
        Rled = 100
        Gled = 100
        Bled = 0
      Case 115:                                             ' G B
        Rled = 0
        Gled = 100
        Bled = 100
      Case 107:                                             ' R B
        Rled = 100
        Gled = 0
        Bled = 100
      Case 99:                                              ' R G B
        Rled = 100
        Gled = 100
        Bled = 100
      Case 108:                                             ' plus minus R
        Animacja = 0
      Case 116:                                             ' plus minus G
        Animacja = 1
      Case 120:                                             ' plis minus B
        Animacja = 2
 
    End Select
 
  End If
Else
  Stan_portu = Sw_port
  Licznik_sw = 4
End If
 
Return
'********    Inne Etykiety Koniec  ************

Na rysunku poniżej przedstawiona jest konfiguracja Fuse bitów mikrokontrolera (screen shot z programu BASCOM AVR Demo). Zanaczone na czerwono opcje należy koniecznie ustawić:

Na rysunku poniżej przedstawiono konfigurację Fuse bitów mikrokontrolera na podstawie programu Burn-O-Mat:

Obsługa:


W standardowej wersji oprogramowania układ może pracować w trzech trybach działania:
1. Przejścia Ustalone - kolory zmieniają się w sposób płynny według ustalonej zależności B->G->R->B (900 kolorów)
2. Przejścia Losowe - losowany jest sposób płynnej zmiany natężenia dla każdej barwy niezależnie (1000000 kolorów)
3. Przejścia Skokowe - losowany jest jeden ocień co określony czas, zmiana następuje skokowo (900 kolorów)

W poniższej tabeli zawarta jest instrukcja obsługi lampki:

Zdjęcia Projektu:

ZałącznikWielkość
Schemat44.78 KB
Płytka10.3 KB
Płytka (odbicie lustrzane)10.27 KB
Płytka (3 na stronie)25.92 KB
Montowanie14.72 KB
Opis6.91 KB
Opis (odbicie lustrzane)6.95 KB
Kod Źródłowy6.62 KB
Program po kompilacji (BIN)1.94 KB
Program po kompilacji (HEX)5.48 KB
Kod Źródłowy (Dioda ze wsp. Katodą)6.62 KB
Program po kompilacji (BIN) (Dioda ze wsp. Katodą)1.94 KB
Program po kompilacji (HEX) (Dioda ze wsp. Katodą)5.48 KB
Płytka (Wersja 2)11.1 KB
Płytka (odbicie lustrzane) (Wersja 2)11.14 KB
Płytka (6 na stronie) (Wersja 2)54.54 KB
Montowanie (Wersja 2)15.05 KB



Portret użytkownika mirley

Re: Lampka RGB

Możesz podłączyć ten układ wykonawczy pod jedną z diod. Trzeba wgrać program dla diod ze wspólną katodą

-

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 Szirek

Mam pytanko, czy jak

Mam pytanko, czy jak podmienie 1kOm na 10kOm przy bazie tranzystorow (BC517) to bedzie duzy blad, czy nie bedzie za bardzo zmian w dzialaniu?

Portret użytkownika mirley

Re: Lampka

10k też będzie dobry. Tranzystor ma duże wzmocnienie ~30000 więc nawet pewnie 47k też by 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 lem

Witam, Jakich tranzystorów

Witam,
Jakich tranzystorów NPN powinienem użyć jeśli będę chciał podłączyć 286 diod rgb? Wystarczą tylko 3?

Portret użytkownika mirley

Re: Lampka RGB

Tranzystory NPN będą kiepskim rozwiązaniem w tej sytuacji. Zastosuj mosfety. Mogą być 3 mosfety IRF1405, nic nich nie ruszy :) Jak to zwykłe diody RGB to zakłądając prąd po 10mA na sztukę możesz dać też BUZ11 jest tańszy i łatwiej dostępny.

-

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 Łukaszbakulin

Lampka RGB na pilot

Witam.
Czy jest planowana przeróbka lampki z sterowaniem na pilot ??

Portret użytkownika Artur

AT90S2313 zamiast ATTiny2313

Czy jest mozliwosc uzycia AT90S2313 zamiast ATTiny2313? Jesli tak to czy wymagane sa jakies modyfikacje w kodzie programu??

Portret użytkownika mirley

RE: Lampka RGB

Kiedyś były plany żeby zrobić pilot ale cały czas są ważniejsze rzeczy.... sam możesz to dopisać. W kodach źródłowych jest obsługa pilota z użyciem przerwań.

Może można użyć tego starego procka ale nawet nie wiem co by trzeba zmodyfikować. Na pewno jest wolniejszy od tiny

-

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 Kargul1000

Wsad napisany w C lub w C++ do tej lampki

Witam mam właśnie takie pytanie jak w temacie, czy nie ktoś wsadu napisanego w C/C++ bo pracuje na linuxie i BASCOM-a nie ma na linuxa, a chce właśnie zaprogramować sobie attine przez usbasp i przydałby mi się wsad napisany w C/C++

Portret użytkownika mirley

Re: lampka w C

Sam pracuję na linuxie a bascoma używam w virtual boxie

-

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 gosc1090

Witam, mam do Pana bardzo

Witam, mam do Pana bardzo wielką prośbę:
Otóż jestem laikiem i nie rozumiem wielu rzeczy odnośnie Pańskiego programu MiniLampkaRGB_2 a potrzebuję rozumieć działanie programu.
Czy istnieje możliwość, żeby wyjaśnił mi Pan po krótce działanie programu lub chociaż niektóre kwestie z nim związane?

Mianowicie:

Do czego służą zmienne: Dzielnik, Dzielnik2, flaga (o co chodzi z 'co 32ms'), licznik_sw, pozycja, szybkosc(dlaczego przy plusie jest zmniejszana)

Co robią poszczególne podprogramy ( w poszczególnych linijkach lub ogólnie):
PrzTimer0
Kompletnie nie rozumiem podprogramu Przelicz: i pozycja_do_rgb (np. dlaczego to Pozycja +300, pozycja +600)

Bardzo proszę Pana o pomoc w miarę możliwości.

Przepraszam, że zawracam głowy.

Pozdrawiam:

Portret użytkownika mirley

Re: Lampka RGB

Dzielnik pracuje w timerze dzieląc częstotliwość występowania przerwań przez 250. CO 250 przerwań ustawiona zostanie zmienna Flaga. Nastąpi to co 32ms jak dobrze policzysz. Pętla główna nic nie robi do momentu aż zmienna flaga się nie ustawi. Wtedy Flaga jest resetowana i jednorazowo wykonuje się kod wewnątrz ifa. Drugi Dzielnik odpowiada za dodatkowy podział tym razem ustawiany. Zmianna szybkosc może być tu myląca bo czym wieksza szybkosc tym układ/animacja pracuje wolniej. CO jest logiczne jak zauważysz że czym większa zmianna szybkość tym większy podział częstotliwości.

Prztimer0 to przerwanie timera0 - procedura wykonuje się wtedy gdy timer0 przepełni swój sprzętowy licznik. Dzieje się to z częstotliwością Kwarc/Prescale/256 bo timer jest 8 bitowy. Jakby np na poczatku procedury Prztimer0 dać instrukcję Timer0=6 to sprzetowy licznik liczył by od 6 do 256 czyli 250 impulsów a przerwanie było by z częstotliwością = Kwarc/Prescale/250 itd.

Procedura Przelicz tworzy funkcję zmienności kolorów. Jak popatrzysz np do palety kolorów w paincie i wyświetlisz kolor zaawansowany to pojawi ci się rgb od każdego koloru. Przejedź myszką po kolorach u samej góry z lewej na prawą. Popatrz jak zmienia sie R G i B. W taki sposób działa ta funkcja. Natomiast pozycja do RGB przesuwa argument o 1/3 i 2/3 zakresu dla kolorów G i B. Zeby robić tylko jedną funkcję wspólną dla R, G i B. Musisz narysować sobie na kartce przebieg R G i B w zakresie 0-100 dla argumentów 0-900 żeby to zrozumieć

-

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 Grzegorz

Mam pytanko

Witam.
Mam pytanie zrobiłem tą lampkę, ale czy diody mają zmieniać kolor tak samo czy jedna inaczej a druga inaczej, bo u mnie obie diody zmieniają kolor jednakowo.

Portret użytkownika mirley

RE: Lampka RGB

Mają zmieniać kolor jednakowo.... są podłączone na innych wyjściach żeby nie trzeba było dawać tranzystorów

-

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 Piotr L

Witam, mam problem z

Witam, mam problem z uruchomieniem układu układ zaprogramowany bez zgłaszanych błędów fusy również błędów w obwodach nie widzę. Rgb z wspólna anodą i taki też wsad. Po podłączeniu zasilania nic się nie dzieje po naciśnięciu przycisku też nic. Dopiero po dotknięciu palcem do lutu kwarcu jakoś się wysterowywuje i świecą wszystkie trzy kolory naraz bez jakiejkolwiek zmiany automatycznej ani ręcznej. Może to kwestia wersji uC mój to ATTINY 2313V-10PU

Portret użytkownika mirley

Re: Lampka

Jak najbardziej jest to możliwe bo 10PU może działać max na 10MHz a lampka działa z kwarcem 16MHz. Zmień kwarca na 10MHz i zobacz czy w ogóle to chodzi

-

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 Piotr L

Hmm kwarc najwcześniej jutro

Hmm kwarc najwcześniej jutro dopiero będę miał. Czyli zmienić kwarc i w programie też pasuje zmienić na 8MHz. Czy istnieje jeszcze jakaś inna możliwość bo jakby co to odrazu bym części kupił bo do sklepu mam 30km w jedna str.

Portret użytkownika Piotr L

Dzwoniłem do sklepu 8MHz lub

Dzwoniłem do sklepu 8MHz lub 12MHz wiec może z wylutu gdzieś znajdę

Portret użytkownika Piotr L

Na 8MHz chodzi tylko brak

Na 8MHz chodzi tylko brak płynności a na 12MHz w ogóle

Portret użytkownika mirley

Re: Lampka

To jest normalne że na 12MHz nie działa. Jak masz procka max 10MHz to szybciej nie pójdzie. Żeby dobrze działało to musi być Tiny2313-20PU, który działa na 20MHz.

Zmodyfikuj trochę program. Na początku zmień kwarca z 16 na 8 MHz w deklaracji, i dopisz:

Prztimer0:
 Timer0=128   'linijka do dopisania
 Incr Licznik
.....

Timer powinien przyspieszyć około 2x

-

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 Piotr Ł

Dzięki jak wrócę do domu to

Dzięki jak wrócę do domu to od razu sprawdzę.

Portret użytkownika gosc1090

Switch case w programie

W tym switch case w programie skąd są wzięte te numery portów? Jak można je sprawdzić?

Portret użytkownika mirley

Re: Lampka RGB

To są przeliczone na liczby dziesiętne binarne wartości odpowiadające wciskanym klawiszom. Normalnie na porcie są same 1. Jak któryś klawisz jest wciśnięty to ten bit staje się 0

-

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 gosc1090

PWM

Czy mógłby mi Pan powiedzieć (opisać) w jaki sposób urządzenie przekazuje na zasadzie PWM sygnał od początku do końca? Otóż pewien profesorek zapytał mnie o to jak przebiega ustawienie barwy dla np. red na 70% Poprosił o narysowanie wykresu, ale niestety nie miałem pojęcia jak to się odbywa i jak to się rysuje. Chodzi mi o to jak za pomocą PWM (np dostaje wartość 70%)odbywa się komunikacja z urządzeniem, żeby dioda to wyświetliła. Bardzo proszę o wytłumaczenie w jaki sposób to działa( od wejścia do wyjścia).

Portret użytkownika Piotr L

Hmm a czy jest tu

Hmm a czy jest tu przewidziana opcja włącz/wyłącz? Czy z powodu w/w problemów z kwarcem nie mogę ustawić koloru białego?

Portret użytkownika mirley

Re: PWM

PWM to regulacja szerokością impulsu. W projekcie wygenerowałem PWM programowo. Mamy przerwanie które pojawia się z częstotliwością rzędu 8-10kHz. Licznik wewnątrz przerwania cyklicznie zwiększa swoją wartość od 0 do 99. Teraz gdy np wartość Rled jest równa 70 to z dalszych warunków w programie dioda R świeci przy wartościach licznika 0-69 a od 70 do 99 nie świeci. Daje to przebieg o wypełnieniu 70% i do diody przekazywane jest 70% mocy z zasilania. Nie świeci ona jednak z jasnością 70% bo zależność natężenia światła od współczynnika wypełnienia jest kwadratowa. W takim prostym projekcie jak lampka nie było potrzeby tego linearyzować

---------

Normalnie nie ma włącz wyłącz bo nie było takiej potrzeby. Kwarc nie wpływa na ustalenie bądź nie koloru białego. Zależy to od jasności poszczególnych barw i rozpraszania barw. Trzeba tak dostroić rezystory żeby uzyskać to samo natężenie dla tego samego sterowania, jeśli do czegoś konkretnego jest ci to potrzebne

-

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 arek1996

lampka 2

Witam. Jaki programator zrobić, aby to zaprogramować? Czy będzie to trudne? Czym róznią się te procesory: ATTINY 2313-10PU; ATTINY 2313-20PU; ATTINY 2313-20SU ? Który będzie lepszy do tego projektu? Jak chcę dać 5 diod to oprócz tranzystorów trzeba coś zmieniać? Ile chciałby pan za kupno i zaprogramowanie procesora?

Portret użytkownika mirley

Re: Lampka RGB

Poczytaj artykuł "Jak zaprogramowac pierwszy AVR" tam jest wszystko napisane od podstaw. Procesor -20PU jest w obudowie DIP20 i pracuje do 20MHz, -10PU podobnie tylko pracuje do 10MHz, 20SU jest w obudowie SMD. Do lampki nadaje się 20PU.

-

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 arek1996

Ok dzięki jak co to będę

Ok dzięki jak co to będę pisał. A który programator polecasz? Mam LPT.

Portret użytkownika mirley

Re: Lampka RGB

LPT może być na poczatek

-

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 arek1996

OK. Bo kolega mówił żeby pod

OK. Bo kolega mówił żeby pod USB zrobić. A i tak chciałem zrobić ten na LPT. To ta pana podstawka programująca?

Portret użytkownika arek1996

I jeszcze jedno czy można

I jeszcze jedno czy można podłączyć 5 diod RBG?

Portret użytkownika mirley

Re: Lampka

Programator pod USB trochę kosztuje a za pomocą tego na LPT możesz zrobić sobie ten na USB. I tak i tak musisz czymś zaprogramować

Diod może być dużo popatrz na schematy wyżej

-

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 arek1996

Ok, a podłączyć się pod jeden

Ok, a podłączyć się pod jeden kanał z tymi 5 ledami czy np. 2 ledy do pierwszego, 3 do drugiego? I czytałem że trzeba wgrać program dla diod ze wspólną katoda gdy będą tranzystory, czy tak?, gdzie on jest?

Portret użytkownika mirley

Re: Lampka

Pod jeden kanał wystarczy to i tak są zdublowane stany na dwóch pinach to samo. Program jest w załącznikach razem z resztą plików

-

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 parano

Objętość pliku bin, przed i po zapisie do układu

Witam!
Dlaczego plik po odczycie z Attiny ma inną objętość niż plik do zapisu w nim?

Portret użytkownika Artur

Lampka RGB

Witam! Świetny projekt! uC programowałem po raz pierwszy i za pierwszym razem się udało:)(mały problem pojawił się w montażu,zamiast 22pF dałem 2.2nF i lampka nie działała ale szybko znalazłem błąd i zmieniłem kondensatory na odpowiednie i śmiga)

Portret użytkownika mirley

Re: Plik bin

Szczerze nie mam pojęcia. Może jeszcze dodatkowe dane są odczytywane, które w momencie programowania samego flash są pomijane

-

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 Jerzy

Nie działa jeden przycisk

Witam

Mam dziwny problem: nie dział przycisk "G".

Pozostałe wejścia do mikrokontrolera są prawidłowe, tzn napięcie na nich to ~5V, a po wciśnięciu przycisku to 0V. Natomiast na wyprowadzeniu do przycisku "zielonego" jest 0V. Programowałem ATTinny kilka razy i za każdym razem to samo. Czy to oznacza, że uszkodzony jest procesor? Czy da się to jakoś sprawdzić?

Pozdrawiam

Jerzy

Portret użytkownika mirley

Re: Lampka

Albo uszkodzony port albo masz zwarcie do masy. Wyjmij procesor z podstawki i sprawdź miernikiem czy jest połączenie między nóżką w podstawce gdzie jest przycisk G a masą. Może przycisk jest uszkodzony

-

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 Jerzy

Nie działa przycisk

Po wyjęciu procesora między masą a nóżką "G" w podstawce zwarcia nie ma, a po zwarciu ich kabelkiem świeci zielona dioda. Czyli to mikropocesor? Dałoby się przycisk "G" wyprowadzić z innej nóżki żeby nie wymieniać procesora?

Portret użytkownika mirley

Re: Lampka

Da się tak zrobić.... najprościej tak:

Przyciski:
Sw_port2 = Sw_port
Sw_port2.3 = pind.5
 
If Sw_port2 <> 255 And Stan_portu = Sw_port2 Then
  Incr Licznik_sw
  If Licznik_sw = 10 Then
......

Trzeba tylko zadeklarować nową zmienną na początku:

Dim Sw_port2 as byte

przycisk G zamiast na pd3, będzie na pd5

-

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 Jerzy

Wstawiałem ten kod w różne

Wstawiałem ten kod w różne miejsca i nie udało mi się tego zrobić. Na pinie 9 jest 5V ale nie działa on jak przycisk, a poza tym diody oszalały i wyświetlają różne kolory. Jest szansa na jeszcze jakąś podpowiedź? :)

Portret użytkownika mirley

Re: Lampka

Jak wstawiałeś w różne miejsca, przeciez wyrażnie wkleiłem ci fragment w który masz to wkleić. W procedurze przyciski na początku ma się znaleźć:

Sw_port2 = Sw_port
Sw_port2.3 = pind.5

a pierwsza linijka sprawdzania klawiszy będzie wyglądała:

If Sw_port2 <> 255 And Stan_portu = Sw_port2 Then

zamiast:

If Sw_port <> 255 And Stan_portu = Sw_port Then

Jeszcze deklaracja zmiennej na początku razem z innymi zmiennymi

-

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 gość

Pwm

Prosił bym o napisanie prostego programu na Attiny 2313
sterowanie pwm od 0 do 100% sterowany dwoma przyciskami po naciśnięciu podawany jest stan niski . Tylko sterowanie nie na przerwaniach INT0 i INT1
Bardzo dziękuje.
Manianass

Portret użytkownika mirley

Re: PWM

Pwm sprzętowy czy programowy? gdzie to będziesz chciał wkleić? Patrzyłeś do kodów źródłowych na mojej stronie, tam wrzuciłem prosty PWM programowy?

-

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 gosc111

Pwm

Patrzyłem ale on sie wykonuje cały czas a mi chodzi o regulacje obrotów silnika prądu stałego przez buz 11 12-14v około 100w

Manianass

Portret użytkownika mirley

Re: PWM

Co według ciebie znaczy że wykonuje się cały czas.... PWM przecież ma działać cały czas a regulujesz tylko wypełnienie przebiegu. Wyłączenie silnika można zrobić poprzez ustawienie wypełnienia 0%

$regfile = "attiny2313.dat"
$crystal = 16000000
 
Config Portb = &B11111111 : Portb = &B11111111
Config Portd = &B11111111 : Portd = &B11111111
 
Config Timer0 = Timer , Prescale = 8
Enable Timer0 : On Timer0 Prztimer0
Enable Interrupts
'********** Konfiguracja uC Koniec  ************
 
'******************  Nazwy *******************
'***********************************************
S Alias Portb.0
'*************  Nazwy Koniec  ****************
 
'******************  Zmienne *******************
'***********************************************
Dim Licznik As Byte
Dim X As Byte
'*************  Zmienne Koniec  ****************
 
'************ Warunki Poczatkowe ***************
'***********************************************
X = 50
 
'*******  Warunki Poczatkowe Koniec  ***********
 
'**************  Petla glowna ******************
'***********************************************
Do
 
Loop
End
'************ Petla glowna Koniec **************
 
'************ Przerwanie timer 0 ***************
'***********************************************
Prztimer0:
 Incr Licznik
 If Licznik = 100 Then Licznik = 0
 
 If Licznik < X Then Set S Else Reset S
 
Return

Na poczatek zamiast silnika możesz podłączyć jakąś żarówkę samochodową itp dla testów. Teraz powinno działać z połową mocy. Przyciski dorobi się później jak ogólnie zadziała Ci taki program

-

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 Bartosz

Domyślne ustawienia programu.

Witam,
Chciałbym zapytać o to, jaki tryb zmiany barw jest uruchamiany jako domyślny i ewentualnie jakich poprawek w kodzie należy dokonać, aby uruchamiana domyślnie animacja zmieniała kolory płynniej (szybciej). Dziękuję za odpowiedź. :)
Projekt jest świetny, pytam o te sprawy, ponieważ planuję użyć tego projektu do stałego podświetlenia kawałka plexi, dlatego nie będzie przycisków którymi można by regulować zmiany kolorów/trybów pracy. Pozdrawiam, Bartek :)

Portret użytkownika gosc123

pwm

Padł mi programator wiec nic teraz nie przetestuje ale dzięki narazie za pomoc