chmurka.net

[2006-04-07] Mój pierwszy układ na AVR :)

Założenie: Wyświetlanie aktualnej prędkości i jakichś fajnych napisów na kole rowerowym podczas jazdy.

Parę średnio udanych, zrobionych na poczekaniu fotek, gdy wymachuję ustrojstwem w powietrzu.

0.jpg

1.jpg

2.jpg

3.jpg

4.jpg

5.jpg

6.jpg

7.jpg

8.jpg

9.jpg

Czemu akurat taki tekst jest wyświetlany? Chciałem przetestować czcionkę :)

Dane techniczne:

Użyty mikrokontroler: ATmega8 z rodziny AVR firmy Atmel.

Czas projektowania i pisania oprogramowania (firmware): 2 godziny.

Czas projektowania i robienia części elektronicznej (hardware): 3 godziny.

Całkowity koszt podzespołów: Ok. 35 zł (nie chce mi się szukać paragonu).

Zalety: Mój pierwszy (no drugi) projekt na AVR i do tego działa :) Częstotliwość generowania linii jest obliczana po każdym pełnym obrocie koła, do tego przejście koła przez punkt kontrolny powoduje synchronizację, więc generowany obraz powinien być podczas jazdy stabilny. Czy będzie - okaże się jak wyzdrowieję (przeziębienie) i się wyśpię. Oprogramowanie jest zaprojektowane tak, żeby tekst o dowolnej długości zawsze przy stałej prędkości (przynajmniej stabilnej przez dwa pełne obroty koła) był równomiernie rozłożony na drugim pełnym obrocie koła.

Wady: Podczas przyspieszania tekst będzie się lekko ściskał, podczas zwalniania będzie się lekko rozciągał i obcinał, ale to nie powinno być mocno zauważalne. Inaczej nie da się tego zrobić - firmware mierzy czas między przejściami przez punkty synchronizujące (czyli te, w których umieszczony jest magnes, którego pole zwiera styki kontaktronu generując przerwanie sprzętowe mikrosterownika) i na tej podstawie planuje rozmieszczenie obrazu tekstu na powierzchni koła w ciągu kolejnego obrotu. Oprócz tego jest jakiś bug w sofcie i literki są odwrócone (nawet podejrzewam gdzie), ale jestem za bardzo zmęczony żeby teraz go poprawiać. Do tego - gdyby ktoś chciał dopisać do tego możliwość programowania tekstów bez przeprogramowywania pamięci flash mikrokontrolera, przydatne byłoby podłączenie CLK do wejścia przerwania INT1, ale możliwość programowania tekstów w ten sposób (i odpowiednie narzędzie) pewnie niedługo się tu znajdzie, bo w ramach robienia odtwarzacza dzwonków z komórek (mój pierwszy AVRowy projekt służący tylko i wyłącznie poznaniu wnętrza tego mikrosterownika) zrobiłem sobie bibliotekę do synchronicznej szeregowej komunikacji AVRa z PC, więc no fear.

Kompletny kod źródłowy (GPL) firmware razem ze schematem, sposobem podłączenia do komputera i paroma małymi programami narzędziowymi dla PC (grabber (nasm) czcionki z trybu graficznego 13h w Win98 - bo jest 8x8 i ma polskie znaki, program (C) do konwersji czcionki do postaci prostszej do przetrawienia przez mikrosterownik i czcionka zrzucona z mojego systemu): bikero-0.1.tar.gz (8 kB). Firmware można kompilować w trybie ciągłego wyświetlania (tak była skompilowana wersja z fotek) lub wyświetlania jednorazowego w interwale określonym przez odległość czasową punktów synchronizujących - w tym drugim trybie podczas zwalniania na rowerze tekst nie będzie się zawijał, tylko po prostu się skróci, ale trudniej zrobić fotki bez synchronizacji mikrosterownika z obrotami koła (czyli wymachując układem w powietrzu).

Podziękowania dla SosnY za podsunięcie pomysłu i dla Wojtka Kaniewskiego za jego przyspieszony wstęp do AVRów pod Linuksem (click), po przeczytaniu którego parę dni temu poczułem się na siłach do zaczęcia zabawy z tymi kontrolerami.

Skargi i wnioski: Adam Wysocki, gophi (małpa) linux.net.net

Powrót do www.chmurka.net.