Witam wszystkich
Jest to mój pierwszy post na forum wiec proszę o odrobinę wyrozumiałości
Zaprojektowałem układ, który w założeniu miał sterować czterema diodami RGB poprzez PWM(rys. 1).
Rysunek 1.
W programie EAGLE stworzyłem sobie płytkę(rys. 2) i wykonałem ją metodą termotransferu.
Rysunek 2.
Układ zmontowałem. Attiny2313 zaprogramowałem na płytce testowej. Wszystko włączyłem i o dziwo zadziałało jak chciałem(do czasu). Ładne i płynne przejście w barwach itd.
Problem pojawił się po dłuższym użytkowaniu tego układu(około 10-15min):
1. Diody nie zachowują dokładnie określonego porządku:
- czasami zapala się kolor biały zamiast ustawionego koloru
- czerwony nie pali się wcale natomiast fioletowy tak jak powinien
2. Przy włączeniu układy po jakimś czasie diody zaczynają migotać, po czym działają „względnie dobrze”(patrz powyższy punkt 1.) i znowu migają.
Teraz układ zaraz po włączeniu głupieje.
Nie załączam kodu, bo chwilowo nie mam do niego dostępu(jak mi się uda to jutro wrzucę), ale myślę ze to nie to, bo całość chwile działała poprawnie. Może popełniłem gdzieś błąd przy projekcie płytki? Jak ktoś ma jakieś pomysły/uwagi to bardzo proszę.
Pozdrawiam
=====================================================
Edit 1
Poniżej załączam kod, jakim zaprogramowałem Attiny2313:
Oba liczniki ustawione w trybie Fast PWM(mode 3) jako Clear on compare match bez prescalera
Załączam też note katalogową tych diod RGB(taka uzyskałem od sprzedawcy).
Rezystory obliczyłem wg niej:
Dla R (5V-1.95V) / 0.02A = 152.5 Ohm (dałem 150R)
Dla G i B (5V-3.3V) / 0.02A = 85 Ohm (dałem 120R bo taki miałem)
Na rysunku był błąd ale już poprawiłem
Jest to mój pierwszy post na forum wiec proszę o odrobinę wyrozumiałości
Zaprojektowałem układ, który w założeniu miał sterować czterema diodami RGB poprzez PWM(rys. 1).
Rysunek 1.
W programie EAGLE stworzyłem sobie płytkę(rys. 2) i wykonałem ją metodą termotransferu.
Rysunek 2.
Układ zmontowałem. Attiny2313 zaprogramowałem na płytce testowej. Wszystko włączyłem i o dziwo zadziałało jak chciałem(do czasu). Ładne i płynne przejście w barwach itd.
Problem pojawił się po dłuższym użytkowaniu tego układu(około 10-15min):
1. Diody nie zachowują dokładnie określonego porządku:
- czasami zapala się kolor biały zamiast ustawionego koloru
- czerwony nie pali się wcale natomiast fioletowy tak jak powinien
2. Przy włączeniu układy po jakimś czasie diody zaczynają migotać, po czym działają „względnie dobrze”(patrz powyższy punkt 1.) i znowu migają.
Teraz układ zaraz po włączeniu głupieje.
Nie załączam kodu, bo chwilowo nie mam do niego dostępu(jak mi się uda to jutro wrzucę), ale myślę ze to nie to, bo całość chwile działała poprawnie. Może popełniłem gdzieś błąd przy projekcie płytki? Jak ktoś ma jakieś pomysły/uwagi to bardzo proszę.
Pozdrawiam
=====================================================
Edit 1
Poniżej załączam kod, jakim zaprogramowałem Attiny2313:
Oba liczniki ustawione w trybie Fast PWM(mode 3) jako Clear on compare match bez prescalera
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
//#include <stdlib.h>
#define wyp_R OCR0A
#define wyp_G OCR1A
#define wyp_B OCR1B
#define czas 50
int main(void)
{
DDRB = 0xFF;
TCCR0A= 0xA3;
TCCR0B= 0x01;;
//TCNT0 = 0x00;
TCCR1A= 0xA3;
TCCR1B= 0x09;
//TCNT1 = 0x00;
_delay_ms(3000);
while(1)
{
wyp_B=255; _delay_ms(1000); //niebieski
for(int i=0;i<=255;i++) // fiolet
{ _delay_ms(czas); wyp_R=i;
} _delay_ms(3000);
for(int i=0;i<=255;i++) //czerwony
{ _delay_ms(czas); wyp_B=255-i;
} _delay_ms(3000);
for(int i=0;i<=255;i++) //zolty
{ _delay_ms(czas); wyp_G=i;
} _delay_ms(3000);
for(int i=0;i<=255;i++) //zielony
{ _delay_ms(czas); wyp_R=255-i;
} _delay_ms(3000);
for(int i=0;i<=255;i++) //blekitny
{ _delay_ms(czas); wyp_B=i;
} _delay_ms(3000);
for(int i=0;i<=255;i++) //niebieski
{ _delay_ms(czas); wyp_G=255-i;
} _delay_ms(3000);
}
}Załączam też note katalogową tych diod RGB(taka uzyskałem od sprzedawcy).
Rezystory obliczyłem wg niej:
Dla R (5V-1.95V) / 0.02A = 152.5 Ohm (dałem 150R)
Dla G i B (5V-3.3V) / 0.02A = 85 Ohm (dałem 120R bo taki miałem)
Na rysunku był błąd ale już poprawiłem
