
Witam wszystkich,
Tym razem chciałbym zaprezentować unowocześnioną, bezprzewodową wersję prędkościomierza/licznika kilometrów do roweru, który umożliwia również pomiar temperatury otoczenia oraz odczyt czasu bieżącego. Jest to rozwinięcie wersji licznika prezentowanej w tym wątku: https://www.elektroda.pl/rtvforum/viewtopic.php?p=17353837#17353837 Obecna wersja składa się z nadajnika umieszczonego na widełkach przy kole, który reaguje na przemieszczanie się magnesu w pobliżu nadajnika oraz odbiornika z wyświetlaczem, umieszczonego na kierownicy roweru. Nadajnik po ruszeniu roweru samoczynne wybudza odbiornik bez dodatkowej ingerencji ze strony użytkownika. Użytkownik, jeśli sam potrzebuje obudzić odbiornik, może to zrobić poprzez naciśnięcie przycisku.
Obecna wersja nadajnika zbudowana jest z mikrokontrolera ATtiny84 współpracującego z modułem RFM75. Nadajnik zasilany jest z akumulatorka Li-Po, a do ładowania tego akumulatorka służy wbudowana ładowarka USB HW-107 (03962A). Do reagowania na przemieszczający się magnes służy kontaktron. Pojemność wbudowanego akumulatorka wystarcza na ok. 5-6 tygodni spania nadajnika. Podczas pracy nadajnika monitorowany jest ciągle poziom naładowania akumulatorka i gdy jego napięcie obniży się do ok. 3,3V, to nadajnik oprócz wysyłania informacji o prędkości, przejechanym łącznym kilometrażu i temperaturze otoczenia wysyła również informację o rozładowanym akumulatorze. Nadajnik pracuje w taki sposób aż do dalszego obniżenia się napięcia na akumulatorze do poziomu 3V, kiedy to elektronika wbudowana w akumulatorek całkowicie odłącza akumulator od zasilania nadajnika. W praktyce wygląda to tak, że od momentu pojawienia się informacji o rozładowanym akumulatorze do momentu wyłączenia nadajnika mija jeszcze 2-3 godziny. Pełne naładowanie akumulatorka zajmuje jakieś 3 do 4 godzin. Podczas pracy nadajnik pobiera ok 1,3mA prądu, podczas uśpienia pobór prądu jest w granicach 150uA. Nadajnik pracuje tak długo, jak długo rower jedzie. Po zatrzymaniu roweru nadajnik pracuje jeszcze przez ok. 1 minutę, po czym usypia się.
W trakcie prac nad całością powstała pierwsza wersja nadajnika, zasilana z baterii CR2032 i mająca czujnik Halla SL353LT. Czujnik ten okazał się być jednak nieodpowiedni do tego zastosowania (zbyt długi czas reakcji na magnes), dlatego zastąpiłem go czujnikiem SL353HT, który działał dobrze, jednakże miał on bardzo duży pobór prądu, tak o dwa rzędy wielkości w porównaniu z SL353LT. Powodowało to bardzo szybkie zużywanie baterii CR2032, która starczała na ok. 2 tygodnie spania nadajnika. W związku z powyższym zdecydowałem się zaprojektować drugą wersję nadajnika, jednakże na PCB drugiej wersji pozostawiłem miejsce na wlutowanie czujnika Halla SL353HT.
Natomiast odbiornik zbudowany jest na mikrokontrolerze ATtiny4313, który współpracuje z RTC MCP7940M, modułem RFM75 oraz drugim mikrokontrolerem AT89S8253, będącym sterownikiem dla 4-cyfrowego, statycznego LCD według noty aplikacyjnej ze strony Maxim Integrated ( https://www.maximintegrated.com/en/design/technical-documents/app-notes/4/4039.html ). Odbiornik zasilany jest z dwóch równolegle połączonych ogniw 18650 pozyskanych ze starej baterii od laptopa. Do ładowania tych ogniw służy również ładowarka USB HW-107 (03962A), która w tym zastosowaniu pełni rolę odłącznika ogniw od odbiornika podczas ładowania oraz przy spadku napięcia do ok. 2,7V na rozładowanych ogniwach. Odbiornik również monitoruje poziom naładowania ogniw i wyświetla stosowną informację na LCD przy spadku napięcia do ok.3,3V. Podczas postoju roweru, po uśpieniu się nadajnika, odbiornik również w ciągu kilkunastu sekund przechodzi w tryb obniżonego poboru mocy poprzez wyłączenie sterownika LCD i obniżenie taktowania ATtiny4313 do kilkudziesięciu kHz z 1MHz (podział wewnętrznego oscylatora 8MHz przez 256). Taki sposób pracy umożliwia odebranie sygnału wybudzenia z nadajnika i podjęcie normalnej pracy.
Teraz trochę o sposobie wymiany informacji pomiędzy nadajnikiem i odbiornikiem. Nadajnik po wybudzeniu się, wysyła ciągle do odbiornika bajty o wartości 0x55 jako sygnał wybudzenia i oczekuje na odebranie od odbiornika również bajtu 0x55 oraz bajtu z wartością średnicy koła w calach. Wartość ta wykorzystywana jest przez nadajnik do obliczeń prędkości i kilometrażu. Odbiornik po wybudzeniu się wysyła do nadajnika wartość średnicy koła i następnie przechodzi w tryb odbioru informacji z nadajnika, które prezentuje na LCD w sposób: prędkość przez 6 sek/kilometraż przez 2 sek. Po naciśnięciu przycisku wyświetla temperaturę/czas bieżący przez 4/4sek, po czym powraca do wyświetlania prędkości/kilometrażu. Dłuższe naciśnięcie przycisku umożliwia wejście w tryb nastaw średnicy koła oraz czasu bieżącego. Odbiornik po wybudzeniu pobiera z wewnętrznej EEPROM wartość średnicy koła oraz zapamiętany kilometraż przed przejściem w tryb obniżonego poboru prądu. Umożliwia to wyświetlenie kilometrażu po naciśnięciu przycisku bez konieczności wybudzania nadajnika (jazdy rowerem). W przypadku braku wartości średnicy koła w EEPROM, odbiornik wyświetla stosowny komunikat na LCD i tylko oczekuje na wprowadzenie tej wartości w trybie nastaw.
Aby wejść w tryb nastaw, należy odbiornik obudzić poprzez krótkie naciśnięcie przycisku. Kiedy odbiornik przejdzie w tryb pokazywania prędkości i kilometrażu, to wtedy następnie przytrzymać dłużej ten przycisk. Pokaże się napis "dian" naprzemiennie z wartością średnicy koła. Aby nastawić żądaną wartość średnicy, należy znów dłużej przytrzymać przycisk. Wtedy na wyświetlaczu liczba wartości średnicy będzie migać i wtedy krótkimi naciśnięciami przycisku ustawić pożądaną wartość średnicy w zakresie 14...28 cali. Po nastawie znów przytrzymać dłużej przycisk, pokaże się wtedy napis "Stor" i wprowadzona wartość zapamiętana została w EEPROM, a odbiornik powraca do trybu pokazywania prędkości i kilometrażu. Kiedy chce się ustawić czas bieżący, to podobnie wejść do nastaw dłuższym przytrzymaniem przycisku. Pokaże się podobnie, jak poprzednio, napis "dian" naprzemiennie z wartością średnicy koła. Nacisnąć wtedy krótko przycisk. Pokaże się wtedy napis "tine" naprzemiennie z czasem bieżącym. By wejść w nastawę czasu, znów dłużej przytrzymać przycisk. Będzie wyświetlany czas bieżący z migającą pozycją godzin. Krótkimi naciśnięciami przycisku ustawić pożądaną wartość godzin i następnie przytrzymać przycisk, aż pokaże się czas bieżący z migającą pozycją minut. Nastawić wartość minut w podobny sposób, jak uprzednio godzin. Po nastawie przytrzymać dłużej przycisk, pokaże się wtedy napis "Stor" i wprowadzona wartość czasu bieżącego zapamiętana została w RTC, a odbiornik powraca do trybu pokazywania prędkości i kilometrażu. Gdy przez przypadek wejdzie się w nastawy poprzez nieumyślne dłuższe przytrzymanie przycisku, to wystarczy nic nie robić i odbiornik sam powróci do trybu pokazywania prędkości i kilometrażu.
Natomiast krótkie naciśnięcie przycisku w trybie pokazywania prędkości i kilometrażu spowoduje przejście do trybu pokazywania temperatury otoczenia i czasu bieżącego przez odbiornik. Po ok. 10sek. odbiornik znów sam powróci do trybu pokazywania prędkości i kilometrażu.
Montaż nie kryje jakichś niespodzianek, jednakże trzeba pamiętać o kilku sprawach:
1. przycisk w odbiorniku montowany jest po przeciwnej stronie PCB niż pozostałe elementy (przycisk widoczny na zdjęciu tyłu odbiornika),
2. wyświetlacz montowany jest w rozciętej zwykłej podstawce DIP40 (widocznej na zdjęciu wnętrza odbiornika),
3. do ładowania ogniw odbiornika przewidziane jest dodatkowe gniazdo mały jack w obudowie odbiornika (widoczne na zdjęciu tyłu odbiornika). Gniazdo USB jest tutaj niewykorzystane,
4. mikrokontrolery są lutowane, do ich zaprogramowania odpowiednimi wsadami służą złącza kołkowe IDC:
- w nadajniku jest tylko listwa goldpin, pin pierwszy wtyku programatora powinien być skierowany w stronę wkrętu mocującego PCB nadajnika do obudowy
- w odbiorniku jest obudowane gniazdo IDC, tak że wtyk programatora wejdzie tylko w jeden sposób. Ważne jest położenie jumperów JP1...JP3 - zwarte piny 1-2 do programowania AT89S8253; zwarte piny 2-3 przy programowaniu ATtiny 4313,
5. do programowania należy użyć: Ponyprog w wersji 2.08d do zaprogramowania AT89S8253, oraz Kanda AVRISP ver 5.6.0.1 do zaprogramowania mikrokontrolerów ATtiny,
6. wbudowana ładowarka USB odbiornika ma fabryczny rezystor R3 - nie ma potrzeby go zmieniać. Dla fabrycznego rezystora prąd ładowania jest ok. 1A. Natomiast należy pamiętać o połączeniu pinu 7 układu U1 na płytce ładowarki z odpowiednim padem na PCB odbiornika - na zdjęciu wnętrza odbiornika jest widoczne to połączenie zielonym kynarem,
7. natomiast na ładowarce USB nadajnika trzeba koniecznie !! zmienić R3 na rezystor 15kohm - by zmniejszyć prąd ładowania do ok. 80mA,
8. montaż płytek ładowarek trzeba wykonać na pojedynczych goldpinach w celu zachowania dystansu - pod ładowarkami są elementy elektroniczne.
Zdjęcia prezentują wygląd i szczegóły konstrukcyjne nadajnika i odbiornika. Natomiast filmik prezentuje działanie całości. Link do filmiku: https://youtu.be/zJCHxMO5Ny4
Program na AT89S8253 napisałem w asemblerze i skompilowałem do pliku wynikowego przy pomocy DSM51ASS.EXE ver 1.01.
Natomiast programy na ATtiny napisałem w C w środowisku Rowley Crossworks for AVR ver 1.4.
Schematy i płytki zaprojektowałem w Protelu 99 SE.
Koszt wykonania całości:
1. PCB w Satland Prototype 135zł za docelowe PCB plus przesyłka
2. Brakujące części elektroniczne - ok. 50zł plus przesyłka
Resztę części miałem, niektóre kilkunastoletnie leżaki, jak np. AT89S8253 i ATTiny4313
Źródła zakupu części:
Ładowarki Li-ion oraz akumulatorek Li-Pol - botland.pl
Pozostałe części - TME
Pozdrawiam, KT














Cool? Ranking DIY