multiTID - wielofunkcyjny, samochodowy komputer pokładowy (2)

multiTID - wielofunkcyjny, samochodowy komputer pokładowy (2)
Pobierz PDF Download icon
Po lekturze pierwszej części artykułu wiemy już wszystko w zakresie obsługi wyświetlacza pokładowego oraz emulowania jego funkcjonalności, więc pora na zaprezentowanie szczegółów budowy komputera samochodowego multiTID.

Schemat ideowy komputera samochodowego multiTID pokazano na rysunku 7. Został on zbudowany z zastosowaniem mikrokontrolera Atmega644-PA, zegara czasu rzeczywistego z podtrzymaniem zasilania MCP7940N-I/SN oraz wyświetlacza TFT pełniącego rolę graficznego interfejsu użytkownika.

Mikrokontroler, jak to zwykle bywa, stanowi „serce”. Jest taktowany za pomocą rezonatora kwarcowego 12,288 MHz dla zapewnienia dużej dokładności pomiaru czasu oraz prędkości ładowania obrazków stanowiących elementy graficznego interfejsu użytkownika. Oczywiście, lepiej byłoby zastosować maksymalną, dostępną częstotliwość taktowania mikrokontrolera tj. 20 MHz, jednak przy napięciu zasilania 3,3 V jest to wartość progowa, dla której deklarowana jest poprawna praca mikrokontrolera.

W celu realizacji założonej funkcjonalności urządzenia, w programie obsługi niniejszego sterownika, wykorzystano dwa sprzętowe układy czasowo-licznikowe znajdujące się „na pokładzie” mikrokontrolera oraz jedno przerwanie zewnętrzne. Sposób konfiguracji wspomnianych peryferiów oraz realizowaną przez nie funkcjonalność pokazano w tabeli 6. W aplikacji użyto także ostatniego dostępnego układu czasowo-licznikowego Timer2. Skonfigurowano go do pracy w trybie CTC, w którym generuje cykliczne przerwania (co 10 ms) wywołując obsługę klawiatury (przyciski MENU/<, OK/>). Dzięki zastosowaniu tego typu rozwiązania, program obsługi aplikacji urządzenia nie używa opóźnień, co zapewnia jego bezproblemową pracę oraz możliwość detekcji czasu naciśnięcia przycisku (krótki/długi/przytrzymanie itd.), dzięki czemu udało się poprawić ergonomię.

Jak opisano w tab. 6, multiTID dokonuje w czasie każdej sekundy pomiaru sumarycznej liczby impulsów doprowadzanych na wejście T0 mikrokontrolera z przetwornika drogi pojazdu oraz pomiaru sumarycznego czasu wtrysków, których to sygnał jest doprowadzony na wejście ICP1 licznika Timer1. W celu realizacji drugiej z funkcjonalności zaprojektowano dwa kompletne, bezpieczne układy wejściowe formujące sygnały wtryskiwaczy paliwa (oddzielnie dla Pb i LPG) dla potrzeb wejściowych obwodów mikrokontrolera. Wybór wtryskiwacza paliwa, z którego impulsy podawane są na wejście ICP mikrokontrolera, jest realizowany poprzez scalony przełącznik NC7SB3157 (U5), dla którego sygnałem sterującym jest poziom logiczny na wyjściu PD7 mikrokontrolera. Jest on zmieniany w procedurze obsługi przerwania PCINT1, które jest wywoływane zmianą poziomu na wyprowadzeniu PB6 na skutek załączenia zaworu na reduktorze instalacji LPG (czyli zmiany paliwa zasilającego silnik na LPG, w tym „start” wtryskiwaczy gazu). To rozwiązanie pozwala na efektywną realizację funkcji automatycznej detekcji rodzaju paliwa i reakcję po stronie programu obsługi.

Na listingu 8 pokazano wzory zaczerpnięte bezpośrednio z programu obsługi aplikacji służące do obliczenia wszystkich parametrów rzeczywistych komputera pokładowego.

Kilka słów komentarza wymaga mechanizm akumulowania przejechanej drogi i zużytego paliwa. Komputer multiTID oblicza i wyświetla średnie wartości zużycia paliwa i prędkości, objętość paliwa pozostającego w baku pojazdu oraz pokonany dystans. Jak łatwo się domyślić, w celu wyznaczenia wspomnianych wartości jest niezbędna znajomość całkowitego zużycia paliwa i dystansu od momentu wyzerowania liczników, a co za tym idzie – niezbędny staje się mechanizm akumulowania mierzonych wartości, niezależnie dla każdego rodzaju paliwa.

Mikrokontroler Atmega644-PA ma nieulotną pamięć EEPROM, jednak zapewnia ona ograniczoną liczbę gwarantowanych cyklów zapisu. Dlatego posłużono się pamięcią RAM dostępną w układzie zegara czasu rzeczywistego MCP7940N, której zawartość jest podtrzymywana nawet po wyłączeniu zapłonu za pomocą baterii BAT. Dla wygody wszystkie dane obliczeniowe uformowano w strukturę zaopatrzoną w sumę kontrolną CRC8.

Kolejne słowo komentarza należy się układowi odpowiedzialnemu za pomiar temperatury zewnętrznej. Samochody marki Opel mają rezystancyjny czujnik temperatury zewnętrznej montowany w okolicach przedniego zderzaka. Jest to termistor o ujemnym współczynniku temperaturowym (NTC), którego zaciski dostępne są w złączu wyświetlacza TID. Skoro tak, to sposób pomiaru temperatury nasuwa się sam. Dysponując przetwornikiem A/C wystarczy zastosować dzielnik rezystancyjny, którego jednym z elementów jest termistor w pojeździe, a drugim dokładny rezystor o odpowiedniej rezystancji. Dzielnik rezystancyjny, o którym mowa zbudowano z termistora dostępnego na zaciskach NTC/NTC wyświetlacza TID oraz rezystora R2.

Wszystkie wejścia PORTA mikrokontrolera, do których w wewnętrznej strukturze układu są dołączone wejścia przetwornika A/C użyto do sterowania pracą wyświetlacza TFT. Jak w takiej sytuacji zmierzyć napięcie występujące na termistorze? Zastosowano tu pewną „sztuczkę”. Napięciem wejściowym (mierzonym) przetwornika A/C jest specjalne, wysokostabilne, wewnętrzne źródło napięcia odniesienia VBG (bandgap), a napięcie z dzielnika NTC/R2 jest napięciem referencyjnym przetwornika A/C. W ten sposób odwrócimy „normalny” sposób pomiaru napięcia przez przetwornik A/C. Nie mając de facto do dyspozycji żadnego z wejściowych portów mikrokontrolera, do których dołączono wejścia przetwornika A/C, możemy dokonywać pomiaru napięcia korzystając głównie z faktu, iż przetwornik może mierzyć napięcie VBG.

Napięcie wyjściowe dzielnika NTC/R2 będące zarazem napięciem referencyjnym (odniesienia) przetwornika A/C wyraża się wzorem U_WY=U_REF=R_NTC/(R_NTC+R_2)×3,3 V. Z kolei, wartość zmierzona przez przetwornik A/C wyraża się wzorem ADC=(U_IN×1024)/U_REF, gdzie U_IN=VBG=1,1 V. Za pomocą obu wzorów otrzymujemy wyrażenie pozwalające wyznaczyć wartość mierzoną przez przetwornik A/C – ADC=(1,1×1024×(R_NTC+R_2))/(3,3×R_NTC). Tego sposobu możemy użyć prawie zawsze, gdy brakuje wejść, aby skorzystać z wbudowanego przetwornika A/C. By obliczyć wartość temperatury zewnętrznej, program obsługi aplikacji korzysta z predefiniowanej i zapisanej w pamięci Flash tablicy stałych odwzorowujących charakterystykę zastosowanego termistora NTC. Już zupełnie na koniec dodam, iż zdecydowaną większość pamięci programu aplikacji zajęły wzorce obrazków wyświetlanych w ramach graficznego interfejsu użytkownika (niektóre z nich, mimo kompresji, zajmują po 5 kB) oraz wzorce czcionek.

Robert Wołgajew, EP

Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2017
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik wrzesień 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień 2020

Świat Radio

Magazyn użytkowników eteru

Automatyka Podzespoły Aplikacje wrzesień 2020

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna wrzesień 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich sierpień 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów