Głównym powodem wykonania takiego licznika była chęć rezygnacji z mechanicznego napędu klasyczną linką starego prędkościomierza/drogomierza.
Linka ta niestety była dosyć zawodna - zrywała się, pękała osłona, poza tym była opornie prowadzona wzdłuż amortyzatora - naprężenia jakie powodowała urywały z czasem plastykowe obejmy.
Postanowiłem wyeliminować uprzykrzające życie elementy; teraz obroty koła zbiera czujnik Hall'a i przekazuje do elektronicznego licznika, który tutaj opiszę.
Zaprojektowałem i zrobiłem urządzenie, które ma funkcje starego licznika oraz dodatkowe:
- prędkość chwilowa
- dystans całkowity (niekasowalny)
- dystans dzienny
- zegar czasu rzeczywistego
- zegar czasu jazdy
- prędkość średnia
- prędkość maksymalna
- temperatura otoczenia
- napięcia akumulatora
- temperatura oleju
Zapewne niektórzy z Was powiedzą, że prawie wszystkie te funkcje ma prawie każdy rowerowy licznik z marketu.
Fakt - część motocyklistów tak robi upychając takie wynalazki na kierownicy, ale wg mnie nie wygląda to za dobrze. Już nie wspominam, że takie liczniki przeważanie nie mają podświetlenia, a gdy je posiadają to żywot bateryjki zasilającej jest wtedy bardzo krótki.
Mój projekt zakłada, że elektronika znajdzie się w oryginalnej obudowie starego licznika po usunięciu mechanicznego środka.
Zasilanie +12V "po stacyjce", zegar czasu rzeczywistego ma swoją baterię i nie gubi ustawionego czasu po odłączeniu 12V.
Zastosowałem dwa mikrokontrolery Atmega 328p-au (wersja SMD w obudowie TQFP-32), programowanie w Arduino IDE 1.6.5
PCB główne jednostronne, wymiary 66x66 mm z przycięciami rogów pod istniejącą oryginalną obudowę.
Drugie PCB jest pod linijkę 10xLED i dwa przyciski do zmiany ustawień. Ta płytka kontaktuje się z główną poprzez precyzyjne złącze gold-pin i skręcana jest po bokach dwiema śrubami M2.
Tak wyglądała dopiero co wytrawiona PCB:
Drugi kontroler był konieczny ponieważ na jednym zabrakło wyjść aby wysterować linijkę 10xLED.
Na nim działa czujnik temperatury oleju w silniku. Tutaj celowo zrezygnowałem ze wskazywania cyfrowego bo taka prezentacja jest mniej istotna; ważne jest aby łatwo było zauważyć przegrzewanie się silnika.
Linijka LED jest czterokolorowa, dwie ostatnie diody są czerwone i zapalą się gdy temperatura oleju przekroczy 130 i 150 st. C.
Z braku miejsca na powierzchni jednej płytki musiałem zastosować konstrukcję "piętrową". I tak w tym celu użyłem dwóch gotowych modułów:
- zegara RTC na dokładnym układzie DS3231 z małą bateryjką litową "na pokładzie"
- przetwornicy DC/DC step-down na układzie MP1584
Wyświetlacz LCD 12x4 negatywowy z podświetlaniem RGB i tak też jest wykorzystany.
Osadzony jest na płytkę główną poprzez złącze gold-pin i skręcony w narożnikach czterema śrubami M2,5.
Ponieważ prędkość chwilowa jest bardzo ważnym parametrem jazdy, postanowiłem że bedzie ona pokazywana większą czcionką.
Ma ona wysokość dwóch wierszy i cyfry składają się z segmentów.
Pogląd na mierzone parametry podzielony jest na cztery ekrany:
1.
- prędkość chwilowa: zakres do 999 km/h, pomiar co 1 sekundę
- dystans całkowity, zakres do 99 999 km, po przekroczeniu zeruje się. Po odłączeniu 12V dana zapisywana jest do pamięci EEPROM mikrokontrolera. Skasować można tylko przez programator.
- zegar czasu rzeczywistego, dokładność +/- 1 minuta na rok. Korekcję godzin i minut dokonuje się dwoma przyciskami.
2.
- temperatura otoczenia, a ściślej biorąc - wnętrza licznika, bo mierzy ją układ zegara RTC. Tu dałem także dużą czcionkę chociaż to parametr mało ważny; po prostu taka estetyka.
- napięcie akumulatora z tzw. bar-grafem, który reaguje od 12 do 15 V (na foto widać jeszcze niedostosowany).
Maksymalne mierzone napięcie to +20 V. Po jego przekroczeniu zadziała transil i ma to palić bezpiecznik w instalacji zasilającej (1A)
Gdy napięcie spadnie poniżej 11V to pojawi się komunikat o niskim poziomie napięcia akumulatora.
3.
- drogomierz dzienny (odometr), zakres do 999,9 km, po przekroczeniu zeruje się. Dana ta jest kasowalna przyciskiem głównym (o jego funkcjach
napiszę dalej). Podobnie jak dystans całkowity, odometr jest zapamiętywany w EEPROM do odłączeniu 12V.
- czas jazdy, zakres do 99 godzin 59 minut po czym zeruje się. Zaczyna odliczać czas gdy prędkość jest większa od zera.
Na foto widać dokładność do sekund, ale ostatecznie zmienię to do minut bo tak raczej wystarczy. Kasowalność i zapamiętywanie - jak wyżej.
4.
- prędkość średnia, zakres do 99,9 km/h. Program zaczyna ją obliczać gdy czas jazdy będzie większy od 1 minuty. Kasowalność i zapamiętywanie - jak wyżej.
- prędkość maksymalna, zakres oczywiście tak jak chwilowej do 999 km/h
Kasowalność i zapamiętywanie - jak wyżej.
Wyborem ekranu dokonuje się za pomocą przycisku głównego, który mam zamiar umieścić blisko manetki.
Przycisk ten jest 3-funkcyjny:
- jedno krótkie naciśniecie - przewija ekrany danych
- długie przyciśnięcie (powyżej 2 sekund) - kasuje dane: odometr, czas jazdy oraz prędkości średnią i maksymalną.
- dwa szybkie naciśnięcia - zmienia kolor podświetlenia LCD w sekwencji: zielony -> czerwony -> niebieski...
Dwa przyciski obok linijki LED służą do korekcji czasu oraz do zmiany średnicy koła. Założyłem, że licznik w miarę możliwości musi mieć uniwersalny charakter. Np. po zmianie opony, przestawiam przyciskiem parametr w menu i dane będą liczone prawidłowo.
Naciśnięcie któregokolwiek przycisku sygnalizowane jest piknięciem buzera.
Zmiany zegara, średnicy koła oraz kasowanie statystyk możliwe są tylko gdy motocykl nie jedzie (to dla bezpieczeństwa)
Obecnie tego jeszcze nie ma, ale pracuję nad funkcją, która włączy automatycznie podświetlenia LCD gdy się ściemni.
W każdym razie, miejsce pod fotorezystor jest już na PCB przewidziane.
Kody mają objętość 16,5 KB i 1,7 KB.
Szacunkowy koszt części to około 130 zł
Linka ta niestety była dosyć zawodna - zrywała się, pękała osłona, poza tym była opornie prowadzona wzdłuż amortyzatora - naprężenia jakie powodowała urywały z czasem plastykowe obejmy.
Postanowiłem wyeliminować uprzykrzające życie elementy; teraz obroty koła zbiera czujnik Hall'a i przekazuje do elektronicznego licznika, który tutaj opiszę.
Zaprojektowałem i zrobiłem urządzenie, które ma funkcje starego licznika oraz dodatkowe:
- prędkość chwilowa
- dystans całkowity (niekasowalny)
- dystans dzienny
- zegar czasu rzeczywistego
- zegar czasu jazdy
- prędkość średnia
- prędkość maksymalna
- temperatura otoczenia
- napięcia akumulatora
- temperatura oleju
Zapewne niektórzy z Was powiedzą, że prawie wszystkie te funkcje ma prawie każdy rowerowy licznik z marketu.
Fakt - część motocyklistów tak robi upychając takie wynalazki na kierownicy, ale wg mnie nie wygląda to za dobrze. Już nie wspominam, że takie liczniki przeważanie nie mają podświetlenia, a gdy je posiadają to żywot bateryjki zasilającej jest wtedy bardzo krótki.
Mój projekt zakłada, że elektronika znajdzie się w oryginalnej obudowie starego licznika po usunięciu mechanicznego środka.
Zasilanie +12V "po stacyjce", zegar czasu rzeczywistego ma swoją baterię i nie gubi ustawionego czasu po odłączeniu 12V.
Zastosowałem dwa mikrokontrolery Atmega 328p-au (wersja SMD w obudowie TQFP-32), programowanie w Arduino IDE 1.6.5
PCB główne jednostronne, wymiary 66x66 mm z przycięciami rogów pod istniejącą oryginalną obudowę.
Drugie PCB jest pod linijkę 10xLED i dwa przyciski do zmiany ustawień. Ta płytka kontaktuje się z główną poprzez precyzyjne złącze gold-pin i skręcana jest po bokach dwiema śrubami M2.
Tak wyglądała dopiero co wytrawiona PCB:

Drugi kontroler był konieczny ponieważ na jednym zabrakło wyjść aby wysterować linijkę 10xLED.
Na nim działa czujnik temperatury oleju w silniku. Tutaj celowo zrezygnowałem ze wskazywania cyfrowego bo taka prezentacja jest mniej istotna; ważne jest aby łatwo było zauważyć przegrzewanie się silnika.
Linijka LED jest czterokolorowa, dwie ostatnie diody są czerwone i zapalą się gdy temperatura oleju przekroczy 130 i 150 st. C.


Z braku miejsca na powierzchni jednej płytki musiałem zastosować konstrukcję "piętrową". I tak w tym celu użyłem dwóch gotowych modułów:
- zegara RTC na dokładnym układzie DS3231 z małą bateryjką litową "na pokładzie"
- przetwornicy DC/DC step-down na układzie MP1584

Wyświetlacz LCD 12x4 negatywowy z podświetlaniem RGB i tak też jest wykorzystany.
Osadzony jest na płytkę główną poprzez złącze gold-pin i skręcony w narożnikach czterema śrubami M2,5.

Ponieważ prędkość chwilowa jest bardzo ważnym parametrem jazdy, postanowiłem że bedzie ona pokazywana większą czcionką.
Ma ona wysokość dwóch wierszy i cyfry składają się z segmentów.
Pogląd na mierzone parametry podzielony jest na cztery ekrany:

1.
- prędkość chwilowa: zakres do 999 km/h, pomiar co 1 sekundę
- dystans całkowity, zakres do 99 999 km, po przekroczeniu zeruje się. Po odłączeniu 12V dana zapisywana jest do pamięci EEPROM mikrokontrolera. Skasować można tylko przez programator.
- zegar czasu rzeczywistego, dokładność +/- 1 minuta na rok. Korekcję godzin i minut dokonuje się dwoma przyciskami.
2.
- temperatura otoczenia, a ściślej biorąc - wnętrza licznika, bo mierzy ją układ zegara RTC. Tu dałem także dużą czcionkę chociaż to parametr mało ważny; po prostu taka estetyka.
- napięcie akumulatora z tzw. bar-grafem, który reaguje od 12 do 15 V (na foto widać jeszcze niedostosowany).
Maksymalne mierzone napięcie to +20 V. Po jego przekroczeniu zadziała transil i ma to palić bezpiecznik w instalacji zasilającej (1A)
Gdy napięcie spadnie poniżej 11V to pojawi się komunikat o niskim poziomie napięcia akumulatora.
3.
- drogomierz dzienny (odometr), zakres do 999,9 km, po przekroczeniu zeruje się. Dana ta jest kasowalna przyciskiem głównym (o jego funkcjach
napiszę dalej). Podobnie jak dystans całkowity, odometr jest zapamiętywany w EEPROM do odłączeniu 12V.
- czas jazdy, zakres do 99 godzin 59 minut po czym zeruje się. Zaczyna odliczać czas gdy prędkość jest większa od zera.
Na foto widać dokładność do sekund, ale ostatecznie zmienię to do minut bo tak raczej wystarczy. Kasowalność i zapamiętywanie - jak wyżej.
4.
- prędkość średnia, zakres do 99,9 km/h. Program zaczyna ją obliczać gdy czas jazdy będzie większy od 1 minuty. Kasowalność i zapamiętywanie - jak wyżej.
- prędkość maksymalna, zakres oczywiście tak jak chwilowej do 999 km/h
Kasowalność i zapamiętywanie - jak wyżej.
Wyborem ekranu dokonuje się za pomocą przycisku głównego, który mam zamiar umieścić blisko manetki.
Przycisk ten jest 3-funkcyjny:
- jedno krótkie naciśniecie - przewija ekrany danych
- długie przyciśnięcie (powyżej 2 sekund) - kasuje dane: odometr, czas jazdy oraz prędkości średnią i maksymalną.
- dwa szybkie naciśnięcia - zmienia kolor podświetlenia LCD w sekwencji: zielony -> czerwony -> niebieski...
Dwa przyciski obok linijki LED służą do korekcji czasu oraz do zmiany średnicy koła. Założyłem, że licznik w miarę możliwości musi mieć uniwersalny charakter. Np. po zmianie opony, przestawiam przyciskiem parametr w menu i dane będą liczone prawidłowo.


Naciśnięcie któregokolwiek przycisku sygnalizowane jest piknięciem buzera.
Zmiany zegara, średnicy koła oraz kasowanie statystyk możliwe są tylko gdy motocykl nie jedzie (to dla bezpieczeństwa)
Obecnie tego jeszcze nie ma, ale pracuję nad funkcją, która włączy automatycznie podświetlenia LCD gdy się ściemni.
W każdym razie, miejsce pod fotorezystor jest już na PCB przewidziane.


Kody mają objętość 16,5 KB i 1,7 KB.
Szacunkowy koszt części to około 130 zł
Cool? Ranking DIY