Witam
Chciałbym zaprezentować wszystkim moją skromną konstrukcje o nazwie "Rowerowy komputer pokładowy".Kiedyś pomyślałem, że fanjnie byłoby mieć rejestrator prędkości na rowerze i po wycieczce obejżeć sobie zapis. Ostateczna konstrukcja okazała się bardziej skomplikowana niż początkowo zakładałem
Zacznę od możliwości:
- Procesor ATMEGA128
- Wyświetlacz LCD graficzny 128x64 z podświetlaniem
- Pomiar prędkosci, prędkości średniej, dystansu, dystansu całkowitego (jak standardowy licznik)
- Pomiar temperatury z 4 niezależbych czujnikiów (czujniki na magistrali 1-Wire). Czujniki są automatucznie wykrywane, można wybrać 4 z wielu. Jeden czujnik jest na stałe wbudowany w układ.
- Zegar z kalendarzem oraz podtrzymaniem bateryjnym.
- Funkcja stopera
- 4 wejścia analogowe (wbudowany przetwornik A/C procesora).
- Sterowanie oświetleniem roweru (jeszcze nie działa
- Czujnik światła (fototranzystor) i automatyczne włączanie podświetlania LCD oraz oświetlenia.
- Wyświetlanie wykresu dwóch dowolnie wybranych parametrów w zależności od czasu (próbka co 1s, pamięc 60s).
- Czujnik napięcia zasilania oraz napięcia baterii podtrzymującej zegar.
- Magistrala szeregowa do podłączania dodatkowych urządzeń zewnętrzyncyh (lampy albo cokolwiek innego co mi jeszcze kiedyś przyjdzie do głowy). Standard RS-485
- Złącze na kartę pamięci CompactFlash.
- Obsługa systemu plików FAT16/FAT32
- Przeglądarka plików i katalogów (jeszcze nie doskoanała).
- Interfejs USB (układ PDIUSBD12, urządzenie jest wykrywane jako klasa Mass Storage)
- Możliwość rejestracji parametrów na karcie pamięci (w plikach)
- Odtwarzacz MP3 opary na VS1001K (jeszcze nie działa bo narazie nie mam scalaka)
- Zasilanie: 8-12V (6 paluszków lub 8 akumulatorków), pobór prądu: w stanie spoczynku ok 60mA, maksymalnie ok 100mA.
Sercem urządzenia jest procesor ATMEGA128 z dołączoną pamięcią 32kB (układ 62256). Częstotliwość zegara to 18.432Mhz (akurat taka, ponieważ pozwala na uzyskanie standardowych prędkośći transmisji szeregowej co narazie nie jest wykożystywane). Do magistrali równoległej łączącej procek z pamięcią dołączone są także: wyświetlacz LCD, układ interfejsu USB, karta CompactFlash, bufor wejściowy klawiatury. Dekodery adresowe zrealizowałem za pomocą jednego 74138 oraz kilku pojedynczych bramek NAND.
Zasilanie 5v zapewnia stabilizator impulsowy na MC34064A. Przed stabilizatorem znajduje się układ wyłącznika umożliwiający wyłączanie zasilania przez mikrokontroler oraz włączanie przyciskiem (przerzutnik RS na układzie 4001 zasilanym bez stabilizacji). Takie rozwiązanie okazało się konieczne, ponieważ procesor musi wykonać pare czynności przed wyłączeniem zasilania zatem sam musi zadecydować kiedy się wyłączyć.
Napięcie ujemne, potrzebne do zasilania wyświetlacza LCD generują 2 układy ICL7660, kontrast regulowany jest za pomocą prostego przetwornika C/A opartego o PWM (sterowanie poprzez Timer1).
W podobny sposób regulowana jest jasność podświetlania.
Interfejs klawiatury pozwala na dołączenie 8 przycisków z czego wykożystywane jest 7 (6 do obsługi + 1 do wyłączania zasilania). Naciśnięcie dowolnego przycisku może wygenerować przerwanie.
Zegar RTC - PCF8583 sterowany jest poprzez I2C, gdy urządzenie jest włączone zasilany jest z 5v, w przeciwnym przypadku z baterii 3.3v .Układ generuje impulsy co 1s które są używane jako wzorzec czasu dla mikrokontrolera.
Czujniki napięc oraz światła podłączone są do wejść przetworników A/C przez odpowiednie dzielniki.
W przypadku gdy napięcie zasilania spadnie poniżej minimalnego, układ sam się wyłączy.
Urządzenie wyposażone jest w złącze do którego można podłączyć, poza czujnikiem obrotów koła, dodatkowe czujniki temperatury lub inne urządzenia 1-Wire, dodatkowe diody/żarówki sterowane tym samym kanałem PWM co podświetlanie LCD. Dostępne są również 4 wejścia przetwornika A/C oraz wyjście napięcia referencyjnego 2.56v buforowane przez LM258. Napięcie +5v oraz masa też są obecne.
Dekoder MP3 to układ VS1001K, bufor 74LVC245 zasilane z 3.3v .Sterowanie dekoderem poprzez interfjes SPI. Schemat prawie identyczny z yampp'em.
Protokół klasy USB Mass Storage zrealizowany jest w całości programowo, układ PDIUSBD12 oferuje jedynie kolejki FIFO. Podczas transmisji USB wszystkie inne funkcje urządzenia są zawieszone.
Projekt oraz płytkę zrobiłem w EAGLE, płytka jest wykonana własnoręcznie metodą naświetlania, dwustronna na jednym kawałku laminatu. Przelotki to kawałki drutu wlutowane z obydwu stron i przycięte.
Oczywiście sam układ to tylko część projektu, najbardziej skomplikowaną rzeczą okazał się program. Program piszę (jescze nie jest i długo nie będzie skończony) w AVR-GCC, testy czytania i zapisywania do plików prowadziłem na PC-cie, później skopiowałem i dostosowałem kod do uC. Z obsługą USB był o wiele większy problem, ale bazując się na przykładach z sieci po wielu próbach w końcu zadziałało
Jest kilka rzeczy, które należało by poprawić między innymi brak możliwości zasilania przez USB. Montując transciever RS-485 chyba trochę przesadziłem, można by zastosować coś prostszego.
Urządzenie sprawuje się dobrze podczas jazdy, umieszczone jest centralnie na kierownicy (mocowane na rzepy). Baterie są w pojemniku pod siodełkiem. Jest to druga taka konstrukcja, pierwsza oparta była o AT90S8515 + 512kB ramu, wyświetlacz 2x16. Dane transportowane były przez RS-232 do PC-ta.
To tyle jesli chodzi o opis, poniżej garstka zdjęć. Czekam na komentarze co sądzicie o mojej konstrukcji.
Fajne? Ranking DIY