www.leniwiec.org

Co prawda już po walentynkach, jednak dopiero teraz znalazłem odrobinę czasu aby pokazać co zmajstrowałem dla swojej lepszej połówki z tej okazji. Chciałem aby to było coś niebanalnego, coś co będzie pełniło funkcje walentynki a jednocześnie, coś w czym oddam kawałek siebie – swojej pracy. Padło na wyświetlacz widmowy ;-)

Założenia

Przede wszystkim wyświetlacz miał być „kompaktowy”, tzn. łatwy w użyciu przez cywila. Część obracająca się miała być zasilana indukcyjnie, za pośrednictwem transformatora powietrznego. Dodatkowo miała zostać wykonana odpowiednia kompensacja drgań wirnika.

Wyświetlacz widmowy

Wyświetlacz widmowy

Wstęp

Cały układ można by podzielić na dwie części: zasilacz wraz z barierą IR oraz śmigło na którym znajduje się mikro-kontroler.
Schemat blokowy układu wygląda mniej więcej tak: w układzie zasilacza znajduje się modulator pwm na którego wyjściu pracuje wzmacniacz LC podłączony do „cewki nadawczej”, oprócz tego mamy zasilacz napięcia 5VDC który zasila stale świecącą diodę IR oraz stanowi wraz z towarzyszącymi tranzystorami bipolarnymi, źródło prądowe które zasila silnik do którego przymocowane jest śmigiełko. Wydajność prądowa tego źródła jest tak dopasowana aby kompensowała drgania śmigiełka a jednocześnie ograniczała jego prędkość tak aby nie generować zbyt wiele hałasu.
Druga część to śmigiełko, na którym znajduje się mikro-kontroler (AT90S2313) wraz z towarzyszącym rezonatorem kwarcowym, do którego podłączonych jest 8 niebieskich diód led, dalej mamy układ zasilania, składający się z cewki uzwojenia wtórnego transformatora powietrznego, oraz prostownika diodowego w układzie gretza i kondensatorów filtrujących.

Układ zasilacza

Spróbują teraz nieco omówić poszczególne bloki zasilacza. Poniżej znajduje się fragment schematu przedstawiający wzmacniacz który zasilany jest z wyjścia generatora PWM.

Wzmacniacz rezonansowy

Wzmacniacz rezonansowy

Generator dostarcza sygnału o częstotliwości ok. 140Khz oraz wypełnieniu ok. 50%. Generator ten jest zbudowany w oparciu o układ UC3845, jest to typowa aplikacja z noty katalogowej. Sygnał ten jest podawany przez rezystor R2 ograniczający prąd, na bramkę mosfeta T1, który pracuje jako wzmacniacz w klasie E wraz z C3, zasilając cewkę L1 która stanowi uzwojenie pierwotne transformatora powietrznego. Rozpatrzmy teraz krok po kroku jak działa taki układ. W momencie kiedy tranzystor T3 jest załączony, natężenie prądu na L1 rośnie, a napięcie na C3 jest praktycznie równe zeru. Następnie następuje wyłączenie T3, jednak prąd w L1 chce dalej płynąć na skutek pola magnetycznego wytworzonego wokół cewki, i w ten sposób ładuje kondensator C3, gdy prąd płynący przez uzwojenie L1 spadnie już do zera, wówczas C3 zostanie naładowany napięcia maksymalnego które jest o wiele wyższe od napięcia zasilania. W tym momencie, sytuacja się odwraca i teraz prąd płynie z powrotem z C3 do uzwojenia L1, rozładowując kondensator. Gdy kondensator C3 zostanie rozładowany do zera, T3 zaczyna znów przewodzić i cała sytuacja się powtarza. Wartość elementów układu rezonansowego L1C3, można wyliczyć kożystając z wzoru Thomsona:

wzór Thomsona

wzór Thomsona

Kolejnym blokiem w układzie zasilacza jest źródło prądowe które zasila motor. Schemat poniżej.

źródło prądowe

źródło prądowe

Tranzystory T2 i T3 pracują w układzie darlingtona, natomiast dobierając wartość R4 możemy zmieniać wydajność tego źródła, którą można opisać następującym wzorem:

IO=(UB–2×UBE)/R4

W powyższym wzorze UB to napięcie stabilizatora U2, natomiast UBE wynosi ok. 0.7V.

Oprócz wyżej opisanych, w układzie zasilacza znajduje się jeszcze dioda nadawcza IR podłączona przez rezystor ograniczający prąd bezpośrednio do wyjścia stabilizatora U2.

Śmigiełko

W części układu która jest zamontowana na ruchomej części (śmigiełku), znajduje się typowe połączenie mikro-kontrolera AT90S2313 z rezonatorem, oraz połączenie z diodami LED, poprzez rezystory ograniczające prąd. Do wejścia INT0 kontrolera został podłączony fototranzystor, który generuje przerwanie przy każdym przejściu śmigiełka przez godzinę 12. Dodatkowo wejście reset jest podciągnięte przez rezystor 10k ohm, do plusa zasilania i dodatkowo przez niewielki kondensatorek do minusa, tworząc małą stałą czasową która ma po włączeniu układu i po upływie niewielkiej ilości czasu zresetować procesor. W pierwszej wersji nie było tych elementów, jednak okazało się że są one konieczne ponieważ układ nie pracował poprawnie.

Zasilacz znajdujący się na płytce śmigiełka to klasyczny diodowy prostownik w układzie gretza wraz z kondensatorami filtrującymi oraz diodą zenera 5V1 – schemat poniżej.

Dodatkowo na płytce śmigiełka, zostało umieszczone złącze w standardzie CANDA które ułatwia programowanie układu.

złącze CANDA

złącze CANDA

Oprogramowanie

Oprogramowanie zostało napisane w języku C, i skompilowane w avr-gcc. Układ został zaprogramowany przy pomocy avr-dude oraz programatora usbasap.

Program jest oparty na przerwaniach i jego zasada działania jest następująca:

  • 1.Po włączeniu układu uruchamiany jest timer0 oraz timer1. Timer1 zlicza w trybie 16bitowym
  • 2.Po przejściu śmigiełka przez godz. 12Tą, następuje wygenerowanie przerwania INT0
  • 3.W przerwaniu INT0, aktualna wartość timera1 TCNT1 jest dzielona przez ilość kroków na które chcemy podzielić pełne okrążenie (w moim przypadku było to 240), wartość ta jest zapisywana do zmiennej globalnej i określa ilość clicków na 1 krok śmigiełka. Następnie wartość TCNT1 jest zerowana i ustawiana jest wartość początkowa timera0 na 255-ilosc_klików_na_1_krok (zmienna globalna z poprzedniego punktu).
  • 4.8bitowy Timer0 po przepełnieniu generuje przerwanie, w którym przypisywana jest nowa jego wartość (na takiej samej zasadzie jak w poprzednim punkcie), oraz wyświetlana jest odpowiednia sekwencja na diodach led.

Podsumowując korzystając z takiego algorytmu, mamy wygenerowane przerwanie timera w każdym kolejnym kroku, a co obrót śmiegiełka jest aktualizowana liczba clicków dzięki czemu obraz nie pływa. Poniżej fragment kodu odpowiedzialnego za te operacje.

uint8_t	 clicks = 0;		/* number of click's for 1/240 of circle (1,5 degre)	*/
uint16_t currentPosition = 0;	/* current cursor position - value from 0 to 240		*/

/* INT0 interrupt */

SIGNAL (SIG_INTERRUPT0)
{
	clicks = TCNT1 / 240;
	TCNT1 = 0;

	TCNT0 = 255 - clicks;

	currentPosition = 0;
}// end of SIG_INTERRUPT0

/* TIMER0 overflowe interrupt */
SIGNAL (SIG_OVERFLOW0)
{
	TCNT0 = 255 - clicks;

	/* print image here */

	if(currentPosition < 240)
		currentPosition++;
	else
		currentPosition = 0;
} // end of SIG_OVERFLOW0

Podsumowanie

Na koniec nie pozostaje mi nic innego jak wrzucić kilka zdjęć gotowego układu, oraz krótki filmik z jego działania.

4 KOMENTARZY
Kamil
1 marzec 2012
ad

Witam, piszę do pana w sprawie wyświetlacza widmowego, który pan wykonał, a dokładniej w sprawie transformatora powietrznego,który go zasila, mógł by pan zdradzić mi kilka szczegółów dotyczących jego budowy? jaki drut został użyty, ile zwoi na uzwojenie pierwotne, ile na wturne, itd. Z góry za to dziękuję, pozdrawiam.

Kamil
1 marzec 2012
ad

Witam, piszę do pana z proźbą dotyyczącą transformatora powietrznego który zastosował pan w wyświetlaczu widmowym…. mógł by pan zdradzić kilka szczegółów dotyyczącyychh jego budowy, ile zwoi na któte uuzwojenie… z góry bardzo dziekuje, i pozdrawiam.

leniwiec
6 marzec 2012
ad

@KAMIL było to jakiś czas temu i już nie pamiętam, a niestety dokumentacja zagineła w boju :( Generalnie zasada jest taka, żeby uzwojenie pierwotne „rezonansowało” na częstotliwości generatora. Ja znajdę chwile czasu, to postaram się to bardziej dokładnie wytłumaczyć… ;-)

Damian
7 wrzesień 2015
ad

Minęło już trochę czasu, może Pan to wytłumaczyć?

Wyślij