
[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.










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.