Politechnika Wrocławska Wydział Elektroniki Instytut Cybernetyki Technicznej Systemy mikroprocesorowe w automatyce Prędkościomierz rowerowy w oparciu o MC68HC05J1A Opracował: Grzegorz Pietkiewicz Elektronika, AiR, ARR IV rok Wrocław 1998
Prędkościomierz rowerowy w oparciu o MC68HC05J1A 1 1 Założenia dotyczace prędkościomierza Urządzenie posiada następujące możliwości: ustawienie rozmiaru koła w zakresie 24-28. ustawienie przejechanego dystansu pomiar prędkości ( max 99 km/h ) pomiar przejechanego dystansu ( z dokładnością do 100 m, max 99999,9 km ) W momencie startu ( po resecie lub włączeniu zasilania ) przechodzimy do trybu ustawień. Pomiar rozpoczyna się dopiero po ustawieniu rozmiaru koła i pokonanej do tej pory odległości. Klawisz SET służy do zwiększania aktualnie zmienianego parametru ( wielkość koła, lub aktywna cyfra ). Klawisz MODE zatwierdza zmiany. W czasie normalnej pracy klawisz MODE służy do wybierania czy wyświetlana jest prędkość, czy przejechane kilometry. Dłuższe przytrzymanie klawisza SET powoduje natomiast powrót do trybu ustawień. 2193.5 MODE SET Rysunek 1: Panel czołowy prędkościomierza 2 Sposób wyznaczenia prędkości Pomiar prędkości odbywa się poprzez zliczanie ilości obrotów koła w zadanym przedziale czasu. Aby uniknąć konieczności dokonywania przeliczeń czas pomiaru dobrany został tak by ilość zliczeń odpowiadała aktualnej prędkości. Długość odcinka czasu pomiaru wyznaczona została według wzoru: t[s] = 3600[s] π średnica[cal] 2,54[cm] 100000[cm] n gdzie n to liczba impulsów przypadających na jeden obrót koła. Czas pomiaru odmierzany jest przy pomocy Real Time Interrupt. Ilość zliczeń dla poszczególnych rozmiarów kół przy czasie między kolejnymi przerwaniami równym 16 ms przedstawia poniższa tabela
Prędkościomierz rowerowy w oparciu o MC68HC05J1A 2 Rozmiar koła 24 25 26 27 28 n=1 Czas pomiaru [s] 6,9 7,2 7,5 7,7 8 n=2 Zliczenia 210 219 228 236 245 Czas pomiaru [s] 3,4 3,6 3,7 3,9 4 Ze względu na czas pomiaru zadecydowałem, że rozsądnie będzie dobrać liczbę impulsów przypadających na jeden obrót równą 2. 3 Sposób wyznaczenia odległości Analogicznie jak w przypadku prędkości, przejechana odległość wyznaczana jest na podstawie ilości obrotów koła, przy czym zawartość licznika odległości zwiększana jest, jeżeli liczba zliczeń obrotów odpowiada odległości 100 m. Odpowiednie ilości zliczeń dla różnych kół wyznaczone zostały z zależności:, gdzie z poprzedniego punktu n = 2. n 10000[cm] średnica[cal] π 2,54[cm] Konkretne wielkości przedstawia poniższa tabela. Błędy wynikają z faktu iż zliczenia muszą być liczbą naturalną. Koło 24 25 26 27 28 Zliczenia 104 100 96 93 90 Błąd dla odległości 100m [cm] -42-26 -42 18 54 Błąd [%] 0,42 0,26 0,42 0,18 0,54 4 Koncepcja programu Koncepcję programu najlepiej wyjaśnią poniższe schematy blokowe przedstawione na następnych stronach. Ze względu na brak dzielenia konieczne stało się zliczanie prędkości i dystansu w kodzie BCD, tak by poszczególne cyfry były bezpośrednio dostępne. Z tego powodu licznik przerwań zewnętrznych jest zdublowany. Jeden pracuje w kodzie BCD i przechowuje prędkość, drugi pracuje normalnie i wykorzystany jest do wykrywania faktu przejechania odległości 100 m.
Prędkościomierz rowerowy w oparciu o MC68HC05J1A 3 Inicjalizacja key = MODE? /.0 key = SET? " mode>1?.1 #&% # $&% licznik = 0?! key=0 key=0 '-(* & tryb = 0? ')(* &,+ Rysunek 2: Schemat blokowy programu
Prędkościomierz rowerowy w oparciu o MC68HC05J1A 4 key = MODE? key = SET? 0-24 1-25 2-26 3-27 4-28!#"%$ key=0 Rysunek 3: Ustawianie wielkości koła key = MODE? pozycja>max? key = SET? "!$#%, -. &!$#'()+* /0,1$23-4 5..,6,"7 98:$# ;3 key=0 Rysunek 4: Ustawienia przejechanego dystansu
Prędkościomierz rowerowy w oparciu o MC68HC05J1A 5 key = 0? key = SET? key = MODE?! " # " 9 &%: kcount=0? key=2 " $ &%')( *+-,. / 0 key=1 tim_counter=0? 1 32& 42567 8 # +-,. " $ 90 Rysunek 5: Schemat blokowy obsługi przerwania RTI
Prędkościomierz rowerowy w oparciu o MC68HC05J1A 6 praca z LCD? 0 32 54PO Q, RS sleep mode=1?! " # $&%(' )*% +-,/. 0 132 54 6 )>'0F)>G E HJI 2 K0D )7'! L@#AM2NJ(E'#A" ( ext_counter=0? )7'! 8 9:1'5) )7' );< %< % ); =')>9?% 0@#AB2CD E'#A" ( Rysunek 6: Schemat blokowy obsługi przerwania EXTERNAL
M K J Prędkościomierz rowerowy w oparciu o MC68HC05J1A 7 5 Schemat ideowy układu prędkościomierza Systemy Mikroprocesorowe w automatyce II - projekt Grzegorz Pietkiewicz, ARR IV 27 8-digit triplexed LCD C3 C2 26 25 C1 x y z x y z x y z x y z x y z x y z x y z x y z 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 10µF 47kΩ 40 V+ 36 GND 2 V DISP 1µF 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 3 4 5 x y z x y z x y z x y z x y z x y z x y z x y z C1 C2 C3 Sterownik LCD, ICM 7231B CS A2 A1 A0 AN DP D3 D2 D1 D0 1 39 38 37 30 31 35 34 33 32 Regulacja kontrastu 100kΩ V DD +5V HD FG E D I LJ L V DD +5V Klawisz MODE Klawisz SET V DD +5V PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 IRQ RESET 11 20 1 10 PB0 PB1 PB2 PB3 PB4 PB5 + 0.1µF V SS V DD OSC2 OSC1 XTAL 27pF Reset, IRQ pull up 27pF N S Reset "! #%$'&)( *'+-,/.0! 13254,0(6./7 8-29! 7 $/:%#'20;)6/#)<0(69&=#%$'> <9! #'69?@<9! #%$)</2/?0+=.%8A$)1 8-&)( B',9( C/&)( 691 V DD +5V NPORQRSUTWVYX[Z]\_^ V@àZcb]dfe@à\hg]i-O3j gatcj Sadlk3Vmdfg-noSUdfgAnpS]q@grgUbRVadlXfS]q]gtsRVtTcj \-dfga\hgas-x%dfgau SUdlk-Stvxwzy@{} ~w @ Y Uƒ_ =j d%tˆ vˆgyxšgadfguu V} ŒP Ž o ka X=\-j Stb]j s3 WbYgadlX=Zt gudfvrk b]j s3 r U @ 0 U z mbygadlx=ẑ \ gus- =j qaz@dfganpv]šwsrv b]j s- œn ŸžŠi-O3j ganps} ] j s- U } Y U y ] U pƒy ] U z bygadlx=z \hgas3 =j quz]dfganpv]š žfva\hg nps žfiaorj V k n Ys]Z k-sus]j SaT XfVas]Zcs]j \-j S@q]gt }b]z@u uh`]g-n sw @nœ hk-sudfganpvasysrg@àbrg-n j S]Ùs]j St ]j X c Z]u u `]g-n stª~s]qaj XfSad] «Rysunek 7: Schemat ideowy układu prędkościomierza
Prędkościomierz rowerowy w oparciu o MC68HC05J1A 8 6 Sterownik LCD - sterowanie wyświetlaczem Sterowanie wyświetlaczem odbywa się przy pomocy sterownika ICM7231B. Sterownik ten umożliwia wyświetlanie znaków 0-9,-,E,H,L,P i spacji. Zlecenie wyświetlenia żądanego znaku podaje się ustawiając na linii adresowej A0-A2 numeru pozycji na wyświetlaczu, na linii danych D0-D3 znaku do wyświetlenia (0 odpowiada cyfrze 0, 14 literze P, 15 spacji). Dodatkowo ustawiając linię DP (Decimal Point) zapalamy kropkę dziesiętną. Rozpoczęcie wyświetlania następuje po ustawieniu linii CS (Chip Select) w stan niski. 7 Wyświetlacz LCD Zastosowany wyświetlacz LCD jest ośmiocyfrowym wyświetlaczem typu triplexed. Zasadę działania tego typu wyświetlacza przedstawia Rys.8. Linie x,y,z wybierają którą grupę segmentów zapalić, linie C1,C2,C3 decydują o tym który segment z grupy zostanie zapalony. Rozwiązanie to zmniejsza znacznie ilość wyprowadzeń potrzebną do sterowania wyświetlaczem. Gdyby pozwolić na sterowanie każdym segmentem osobno było by ich 56 (7 8), podczas gdy w tym rozwiązaniu jest ich 27 (3 8 + 3). Omówiony wyświetlacz posiada jeszcze jedną zaletę. Ponieważ jest powszechnie stosowany we wszelkiego typu kalkulatorach łatwo można zdobyć go za niewielkie pieniądze. C3 C2 C1 x y z Rysunek 8: Wyświetlacz LCD 8 Literatura [1] Driving LCDs with M6805 Microprocessors (Motorola Semiconductor appliation nite AN442/D) [2] MC68HC05J1A Technical Data (Motorola Semiconductor MC68HC05J1A/D)