Komputer samochodowy.pdf

(1645 KB) Pobierz
Komputer samochodowy
PROJEKT CZYTELNIKA
Dział „Projekty Czytelników” zawiera opisy projektów nadesłanych do redakcji EP przez Czytelników. Redakcja nie bierze odpowiedzialności za prawidłowe
działanie opisywanych układów, gdyż nie testujemy ich laboratoryjnie, chociaż sprawdzamy poprawność konstrukcji.
Prosimy o  nadsyłanie własnych projektów z  modelami (do zwrotu). Do artykułu należy dołączyć podpisane oświadczenie, że artykuł jest własnym
opracowaniem autora i  nie był dotychczas nigdzie publikowany. Honorarium za publikację w  tym dziale wynosi 250,– zł (brutto) za 1 stronę w  EP.
Przysyłanych tekstów nie zwracamy. Redakcja zastrzega sobie prawo do dokonywania skrótów.
Komputer samochodowy
Obrotomierz, prędkościomierz, miernik dystansu,
akcelerometr, kontroler napięcia i sondy
Projekt
lambda, tester układu regulacji składu
199
mieszanki paliwowej
Elektronika zrewolucjonizowała
technikę samochodową.
Początkowo elementy
mechaniczne zastępowano
elektronicznymi, aby
poszczególne układy uczynić
bardziej niezawodnymi.
Na przykład usunięto styki
przerywacza w  układzie
zapłonowym. Stopniowo
w  samochodach przybywało
coraz więcej nowych układów,
które nie mogłyby działać bez
elektroniki. Motorem rozwoju
były rosnące wymagania
odnośnie do czystości spalin
silnika benzynowego oraz
komfortu i  bezpieczeństwa.
Współczesne samochody
są wypełnione układami
elektronicznymi. Przedstawiony
projekt jest propozycją
uzupełnienia tego zestawu
o  kolejną pozycję.
Użytkownik obsługuje urządzenia za
pomocą panelu czołowego składającego się
z  wyświetlaczy cyfrowych, linijek diodo-
wych LED, trzech klawiszy oraz sygnaliza-
tora elektromagnetycznego. Sygnalizator
generuje sygnały ostrzegawcze oraz dźwięki
towarzyszące przewijaniu komunikatów na
wyświetlaczu cyfrowym. Czteroznakowe ko-
munikaty informują o  rodzaju prezentowa-
nych wartości.
W podstawowym trybie pracy, za pomo-
cą wyświetlacza cyfrowego i  linijek diodo-
wych, jest wyświetlana aktualna prędkość
pojazdu oraz prędkość obrotowa silnika. Na
lewej skali diodowej jest pokazywane przy-
śpieszenie. Dolna jej połowa (kolor czerwo-
ELEKTRONIKA PRAKTYCZNA 5/2012
ny) odwzorowuje wartość przyspieszenia
podczas hamowania, natomiast górna (kolor
zielony) podczas wciskania pedału gazu.
Trzy diody LED umieszczone poniżej górnej
linijki obrotów wskazują na zakres obrotowy
pracy silnika. Świecenie środkowej, zielonej
diody LED oznacza pracę w  optymalnym
zakresie obrotów (pomiędzy maksymalnym
momentem obrotowym a maksymalną mocą
efektywną silnika). Świecenie diody czerwo-
nej lub żółtej świadczy o pracy silnika poza
zakresem optymalnym. Wyjście z  zakresu
optymalnego sygnalizowane jest krótkim
sygnałem akustycznym o tonie opadającym.
Wejście w ten zakres – sygnałem o tonie na-
rastającym. Sygnały te wytwarzane są przez
mikrokontroler za pomocą funkcji łączącej
kolejno dźwięki o  trzech różnych częstotli-
wościach. Wartości progów zakresu optymal-
nego ustawiane są w menu programowania.
Z  trybu podstawowego możemy przejść
do trybu podglądu wartości napięcia aku-
mulatora, napięcia na sondzie lambda lub
do trybu obrazowania przyspieszeń w trzech
osiach pojazdu. Aby dostać się do tego trybu,
wciskamy przycisk S3 i  po zmianie koloru
jego podświetlenia z zielonego na czerwony
– wciskamy S1 lub S2. Podgląd wartości na-
pięć dokonywany jest na wyświetlaczu oraz
na lewej linijce diodowej. W razie spadku po-
ziomu napięcia akumulatora poniżej jednego
z  dwóch progów definiowanych w  menu
programowania, jest generowany komunikat
oraz sygnał ostrzegawczy. Z pierwszym, niż-
szym progiem porównywane jest napięcie na
akumulatorze po włączeniu stacyjki - przed
uruchomieniem silnika. Pojawiający się wte-
dy komunikat (z  podaną wartością napię-
cia) i  sygnał dźwiękowy, wskazują na słabą
kondycję akumulatora. Z  drugim progiem
porównywane jest napięcie na akumulatorze
w  trakcie pracy silnika. Zapewnia to kon-
trolę ładowania akumulatora. Jeśli napięcie
będzie zbyt niskie lub zbyt wysokie, wyge-
nerowany zostanie stosowny komunikat oraz
sygnał dźwiękowy.
W trybie podglądu napięcia sondy lamb-
da (po kolejnym wciśnięciu S1 lub S2) ist-
nieje możliwość odczytu wartości średniej
z jednoczesnym podglądem wartości chwilo-
wej. Uśrednianie pozwala na dokładniejsze
oszacowanie stanu wyregulowania składu
49
PROJEKT CZYTELNIKA
mieszanki paliwowej. Aby uzyskać wgląd
w  tę wartość należy dwukrotnie wcisnąć
przycisk S3. Czas w  trakcie którego uśred-
niana jest wartość napięcia ustawiany jest
w  menu programowania. Na wyświetlaczu
cyfrowym widzimy wartość średnią, na li-
nijce diodowej – chwilową. Urządzenie rów-
nież ma sygnalizację stanów wskazujących
na uszkodzenie sondy, takich jak przekrocze-
nie wartości 1,0 V oraz zbyt długie (powy-
żej 4 sekund) pozostawanie napięcia sondy
w  przedziale 0,4...0,6 V przy wyższych ob-
rotach.
W  trybie obrazowania przyspieszeń na
wyświetlaczach cyfrowych widzimy wartość
prędkości obrotowej silnika oraz prędkości
pojazdu – podobnie jak to ma miejsce w try-
bie podstawowym. Linijki diodowe obrazują
jednak inne wielkości. Górna linijka diodo-
wa pokazuje tym razem wartość przyspie-
szenia w osi poziomej wzdłuż pojazdu. Wy-
chylenie wskazania w  prawo obrazuje war-
tość przyspieszania pojazdu, w  lewo – jego
hamowania. Linijka dolna pokazuje wartość
przyspieszenia w  osi poziomej w  poprzek
pojazdu. Wychylenia wskazań w  prawo lub
w lewo mają miejsce w czasie skręcania lub
podczas przechyłów pojazdu na boki. Linij-
ka boczna pokazuje wartość przyspieszenia
w  osi pionowej pojazdu. Wychylenia wska-
zań następują na niej podczas jazdy po nie-
równościach.
W  każdym trybie pracy przyciskami S1
lub S2 (gdy S3 podświetlony jest na zielono)
dokonujemy wglądu w  wartości czterech
liczników dystansu. Każdy licznik możemy
kasować przy użyciu przycisku S3. Licznik
trzeci to licznik drogi przebytej na paliwie
LPG. Licznik zlicza, gdy na cewce zawo-
ru LPG pojawia się napięcie. O  tym jakiego
rodzaju paliwo jest spalane wnioskujemy
spoglądając na podświetlenie przycisku S3.
Świecenie ciągłe w  kolorze zielonym ozna-
cza, że spalany jest LPG. Krótkotrwałe, czer-
wone błyski na tle zieleni świadczą o  tym,
że spalana jest benzyna. Stan licznika dy-
stansu przebytego na LPG jest monitorowa-
ny. W  menu programowania wprowadzamy
kilometrowy limit po przekroczeniu którego
generowany będzie stosowny komunikat
wraz z sygnałem dźwiękowym. Ostrzeżenie,
funkcjonalne w  sytuacji gdy nie posiada-
my wskaźnika poziomu paliwa w zbiorniku
LPG, pojawiać się będzie co określony czas,
przypominając nam o  tym, że jeździmy na
„rezerwie”. Podgląd liczników dystansu
kończy się samoczynnie po upływie paru
sekund. Następuje wtedy powrót do trybu
podstawowego.
oraz przeprowadzenia testu układu regulacji
składu mieszanki paliwowej.
Kalibracja prędkościomierza/drogomie-
rza
jest niezbędna, aby procesor dokonywał
dokładnych przeliczeń, dostosowawszy je
do danego pojazdu (układ impulsatora drogi,
średnica kół). Po wejściu w jej menu, potwier-
dzamy chęć wykonania procedury lub tylko
przeglądamy wprowadzone wcześniej wartości.
Gdy uaktywnimy procedurę, procesor w  trak-
cie jazdy będzie zliczał impulsy przychodzące
z impulsatora. Z menu możemy wyjść w każdej
chwili. Możemy też wyłączyć stacyjkę (zarazem
urządzenie) i opuścić samochód. Procedura ka-
libracji w  dalszym ciągu będzie aktywna, gdy
powrócimy do pojazdu i  włączymy stacyjkę.
Ważne jest to byśmy pamiętali o odcinku prze-
jechanej trasy, aby akceptując koniec procedury,
wprowadzić do pamięci wartość pokonanego
podczas niej dystansu. Procesor wykorzysta ją
do przeliczeń. Wartości ustalone po kalibracji
warto sobie gdzieś zanotować na wypadek ich
przypadkowego wyzerowania. Gdyby tak się
stało, nie musimy powtarzać całej procedury.
Wchodząc do niej, możemy ustawić wartość
naliczonych impulsów korzystając z wewnętrz-
nego TIMER’a procesora. Klawiszem „góra” za-
czynamy/przyspieszamy zliczanie, klawiszem
„dół” – zwalniamy/zatrzymujemy. Następnie
wpisujemy wartość dystansu odpowiadającą
zliczonym impulsom i  po potwierdzeniu koń-
czymy procedurę.
Kalibracja pomiaru napięcia akumula-
tora
polega na wprowadzeniu wartości napię-
cia (zmierzonego multimetrem na zaciskach
akumulatora) i  potwierdzeniu inicjacji kali-
bracji przyciskiem S3. Kalibrację wykonujemy
w  momencie, gdy na zaciskach akumulatora
występuje napięcie wysokie – ponad 14 V, czy-
li w  momencie gdy akumulator jest ładowany
z alternatora.
Kalibracja
Początek programu głównego z  deklara-
cjami zmiennych i ich wartościami domyśl-
nymi pokazano na
listingu 1.
Pomimo nada-
nia zmiennym pewnych typowych wartości,
aby komputer działał prawidłowo należy
wykonać kalibrację.
Do trybu programowania wchodzimy po-
przez dłuższe przytrzymanie przycisku S3.
Wyboru grupy menu dokonujemy przy po-
mocy S1 i S2. Za pomocą S3 – poprzez krót-
kie przytrzymanie - zatwierdzamy wejście
do niej. Teraz przy użyciu S1 i  S2 dokonu-
jemy wyboru parametru w wybranej grupie.
Przycisk S3 służy do uaktywnienia edycji, jej
zatwierdzenia lub do wychodzenia z  menu
o  poziom wyżej (dłuższe przytrzymanie).
W trybie programowania oprócz ustawienia
wspomnianych już parametrów możemy do-
konywać kalibracji prędkościo/drogomierza,
kalibracji pomiaru napięć na akumulatorze
i sondzie, kalibracji pomiaru przyspieszenia
Listing 1. Przykładowe nastawy wprowadzane do EEPROM-u (zarazem – deklaracje zmiennych)
/* prędkość maksymalna oraz obroty maksymalne odpowiadające świeceniu się całej skali LED */
uint16_t velMax = 280 ; //km/h
uint16_t rpmMax = 8000 ; //obr/min
/* progi alarmowe dla zbyt niskich wartości napięć na akumulatorze przed i po uruchomieniu silnika */
u08 BattAlarmInitLowVal = 115 ; //11,5 Volt
u08 BattAlarmLowVal = 130 ;
//13 Volt
/* wartości wprowadzone podczas wykonywania procedury kalibracji drogomierza; na dystans 100 km przypada 702980
impulsów zliczonych z nadajnika drogi lub z TIMER’a procesora */
u08 distanceKmRange = 100 ; //km
uint16_t distanceImpulsRangeWordLow = 0xBA04;
uint16_t distanceImpulsRangeWordHigh = 0x000A;
/*po przejechaniu 350 km na LPG usłyszymy sygnał i zobaczymy ostrzeżenie (rezerwa LPG) */
uint16_t LpgLimit = 350 ;
//wartości zapamiętane po kalibracji akcelerometru :
u08 Xcal_L ;
u08 Xcal_H ;
u08 Ycal_L ;
u08 Ycal_H ;
u08 Zcal_L ;
u08 Zcal_H ;
/* wartości zapamiętane po kalibracji modułów pomiarowych napięć lambdy i akumulatora (wartości [upValLambda]
wprowadzonej z panela (np.1,1Volt) - odpowiada wartość [upInValLambda] wygenerowana przez ADC procesora, po podaniu
napięcia wzorcowego 1,1V) */
u08 upValLambda;
uint16_t upInValLambda;
//podobnie dla akumulatora:
u08
upValBatt ;
uint16_t upInValBatt ;
/* progi optymalnego zakresu obrotów silnika (nastawy indywidualne dla każdego silnika, wg jego charakterystyki) (obr/
min) */
uint16_t minRev = 2800; // maksymalny moment obrotowy
uint16_t maxRev = 5000; // maksymalna moc efektywna silnika
//czas uśredniania pomiaru napięcia sondy lambda
u08 lambdaAverageCounterMem = 10 ; //sekundy
50
ELEKTRONIKA PRAKTYCZNA 5/2012
Komputer samochodowy
W podobny sposób jest wykonywana
ka-
libracja pomiaru napięcia sondy lambda.
Teraz jednak zachodzi potrzeba odłączenia
sondy, a w jej miejsce podłączenia źródła na-
pięcia wzorcowego. Dobrym wzorcem okaże
się bateryjka podłączona do precyzyjnego
potencjometru. Z  jego suwaka podamy na
układ pomiarowy np. 1,1  V i  taką wartość
wprowadzimy jako górną, graniczną wartość
sondy lambda. W  obu procedurach kalibra-
cji zapamiętane wartości wprowadzanych
napięć wraz z  wartościami otrzymanymi
Rysunek 1. Schemat modułu sterującego
ELEKTRONIKA PRAKTYCZNA 5/2012
51
PROJEKT CZYTELNIKA
z przetwornika ADC procesora, zostaną póź-
niej wykorzystane do obliczenia wartości
rzeczywistych. Zapis nowych wartości na-
stępuje dopiero po ich zaakceptowaniu, któ-
re jest poprzedzone na wyświetlaczu zapyta-
niem. Inicjację kalibracji możemy pominąć,
przeglądając tylko parametry zapamiętane
podczas poprzedniej kalibracji a  następnie
z procedury po prostu wyjść.
Kalibracja modułu akcelerometru
jest
konieczna, aby przy zerowym przyspie-
szeniu czujnik generował zerową wartość
wyjściową (offset 0  g). Kalibracja offsetu
polegać będzie na obliczeniu stałych, które
zapisywane będą w przeznaczonych do tego
rejestrach czujnika, wykorzystywanych na-
stępnie przez niego do korygowania wartości
wyjściowych. W  czasie kalibracji procesor
pobiera z czujnika jego wartości wyjściowe,
dodaje do obliczonych poprzednio wartości
offsetów, wysyła wynik do rejestrów czuj-
nika i  powtarza operację do momentu, gdy
uzyska z  czujnika zerowe wartości wyjścio-
we. Operacje są wykonywane równolegle
dla osi X,Y,Z. Na koniec ostatnie wyniki
wartości offsetów zapisane zostają do pamię-
ci EEPROM procesora. Ponieważ po zaniku
Listing 2. Procedura obsługi skali diodowej
napięcia zerują się rejestry offsetu czujnika,
po powrocie napięcia zasilającego muszą być
one ponownie załadowane wartościami ob-
liczonymi w  czasie kalibracji. Pobierane są
one właśnie po starcie procesora – z EEPRO-
M-u. Podczas wykonywania kalibracji może
być pomocna nota aplikacyjna Freescale Se-
miconductor AN3745.
szeniem było podanie napięcia symulujące-
go mieszankę bogatą, powinien ją zubożyć,
jeśli zaś ubogą – wzbogacić. Odpowiedź
jednostki sterującej na symulację widoczna
będzie zarówno na wyświetlaczu cyfrowym,
jak i  na lewej linijce diodowej. Zobaczymy
tam chwilowe napięcie generowane przez
sondę lambda.
Test układu regulacji składu
mieszanki paliwowej
Ten test to badanie odpowiedzi jednost-
ki sterującej na symulację mieszanki bogatej
lub ubogiej. Za prawidłowo wyregulowaną
mieszankę przyjmuje się stan, w którym war-
tość napięcia na sondzie lambda zmienia się
w przedziale od 0,1...0,2 V (mieszanka ubo-
ga) do 0,8...0,9  V (mieszanka bogata) z  czę-
stotliwością ok. 0,5...1  Hz. Na czym polega
test? Polega na odcięciu sondy lambda od
sterownika silnika spalinowego, a  podaniu
na jego wejście wartości napięć odpowiada-
jących mieszance bogatej lub ubogiej. Wy-
muszenia dokonujemy za pomocą przycisku
S1 – UBOGA lub S2 – BOGATA. Sterownik
silnika (zakładamy, że sprawny) będzie starał
się przeciwdziałać tym stanom. Jeśli wymu-
Budowa i działanie
Moduł sterujący.
Schemat modułu steru-
jącego pokazano na
rysunku 1.
Urządzeniem
steruje mikrokontroler Atmega32, zasilany
poprzez filtr, w  którego skład wchodzi dła-
wik L2. Filtr redukuje zakłócenia generowa-
ne przez mikrokontroler w  wyniku przełą-
czania jego wyjść, mogące wpływać na pracę
pozostałych układów.
Rdzeń mikrokontrolera jest taktowany
wewnętrznym sygnałem zegarowym o  czę-
stotliwości 8 MHz. Przetwornik A/D wyko-
rzystuje napięcie odniesienia równe AVCC
(5 V). Kondensator C13 podłączony do pinu
AREF dodatkowo je filtruje. Aby zapobiec
przedostawaniu się zakłóceń z części cyfro-
wej, przetwornik wyposażyłem od strony
zasilania w filtr (C12, L1). Dla uniknięcia fał-
void Display_accl_Bargraf_long(s16 value, s16 downLimit, s16 upLimit, u08 position)
{
u08 word1 = 0 ;
u08 word2 = 0 ;
u08 word3 = 0 ;
u32 Word = 0 ;
s16 shift = 0 ;
//przygotowanie danych do przesyłu
Word | = 0x00001000 ;
//zapalenie diody – punktu zerowego
if(value < 0) //left
//zapalanie lewej połowy linijki, jeśli przyspieszenie ujemne
{
/* pominięta jedna z diod : punkt zerowy (12 – 1 = 11) dolną wartość graniczną dzielimy przez ilość diod z lewej strony
*/
shift = downLimit / 11 ;
shift = value / shift ;
for(u08 a = 0 ; a < shift ; a++){
Word = Word << 1 ;
// zapalamy proporcjonalną do wartości [value] //liczbę diod
Word | = 0x00001000 ;
}
}
else
if(value > 0) //right
zapalanie prawej połowy linijki, jeśli przyspieszenie dodatnie
{
//górną wartość graniczną dzielimy przez liczbę diod z prawej strony
shift = upLimit / 12 ;
shift = value / shift ;
for(u08 a = 0 ; a < shift ; a ++)
{
Word = Word >> 1 ;
// zapalamy proporcjonalną do wartości liczbę //diod
Word | = 0 x 00001000 ;
}
}
Word = ~ Word ;
//rozdzielamy dane na trzy części
word1 = (Word & 0x00FF0000)>>16 ;
word1 = ~ word1 ;
word2 = (Word & 0x0000FF00)>>8 ;
word2 = ~ word2 ;
word3 = ( Word & 0x000000FF ) ;
word3 = ~ word3 ;
/* pierwszą część danych wysyłamy wraz z adresem rejestru danych do MAX7219 */
spiTransferWord((position << 8) | word1) ;
/* np. position = 0x03 – dolna //linijka
słowo trafia do IC4 (sekcja wyświetlaczy cyfrowych) – trzeba przesunąć je dalej, do IC5 ( sekcji linijek diod), w tym
celu :
do IC4 wysyłamy rozkaz : „wyświetlaj 8 cyfr” - pierwsza część danych wraz z adresem rejestru danych MAX7219 przesuwa
się do IC5
SCAN_LIMIT_DISPL(7)
// rozkaz : „wyświetlaj 8 cyfr ” !
MAKE_LOAD_O
//zatrzaśnięcie rozkazu i danych w IC4 oraz IC5
// drugą część danych przesyłamy na adres o 1 większy, itd.
spiTransferWord((++position << 8) | word2) ;
SCAN_LIMIT_DISPL(7)
MAKE_LOAD_O
spiTransferWord((++position << 8) | word3) ;
SCAN_LIMIT_DISPL(7)
MAKE_LOAD_O
}
52
ELEKTRONIKA PRAKTYCZNA 5/2012
Komputer samochodowy
szowania pomiarów masa części analogowej
jest połączona z  masą cyfrową tylko w  jed-
nym punkcie – w pobliżu punktu dołączenia
napięcia zasilającego (złącze zasilające SV1).
Bateria G1 zasila procesor, gdy ten wej-
dzie w  tryb oszczędzania energii
Power
Down.
„Usypia” go zbocze opadające, które
dostaje się na wejście INT2 z  układu IC6.
Układ ten (MC33164) służy do detekcji
spadku napięcia 5 V dostarczanego z zasila-
cza. Gdy spadnie ono poniżej 4,33  V, układ
wygeneruje sygnał zmuszający procesor do
wejścia w  podprogram obsługi przerwania,
w którym „ugrzęźnie” on aż do czasu powro-
tu zasilania. W  międzyczasie z  baterii po-
bierać będzie prąd o wartości około 0,5 mA.
W  podprogramie zauważamy ważną rzecz:
przed wprowadzeniem w  stan uśpienia
wyłączone zostają wszystkie bloki funkcjo-
nalne mikrokontrolera. Poza tym, następuje
zmiana sposobu reagowania wejścia INT2.
Kolejne przerwanie nastąpi po pojawieniu
się zbocza narastającego. Pojawi się ono po
powrocie napięcia zasilania, powodując
„wybudzenie się” mikrokontrolera z  trybu
Power Down.
Nastąpi teraz wejście w  pętlę,
a następnie restart programu na skutek prze-
rwania od
watchodg’a.
Trybu
Power Down
użyłem po to, aby mikrokontroler zapamięty-
wał stan liczników dystansu oraz informację
o tym, czy jest aktywna procedura kalibracji
drogomierza.
Co 8  ms następuje wejście w  podpro-
gram przerwania od przepełnienia Timera 0,
w  którym następuje: zainicjowanie kon-
wersji dla kolejnego kanału A/D, obliczenie
wartości napięcia na akumulatorze, sondzie
lambda oraz czujniku optycznym pane-
lu czołowego, obliczenie wartości średniej
dla sondy lambda, wysterowanie diod LED
wskaźnika zakresu prędkości obrotowej. Ti-
mer  2 pracuje w  trybie PWM, sterując wyj-
ściem OC2, o  czym będzie mowa w  dalszej
części artykułu.
Zwróćmy teraz uwagę na układ steru-
jący intensywnością świecenia panelu czo-
łowego LED oparty na wzmacniaczu opera-
cyjnym CA3140. Układ IC1 to wzmacniacz
z  wejściami typu MOSFET oraz z  bipolar-
nym wyjściem. Charakteryzuje się wysoką
impedancją i  niskim prądem wejściowym.
Pracuje tu jako wzmacniacz odwracający.
Stanowi konwerter przetwarzający prąd
kolektora fototranzystora OT1 (sekcja pa-
nelu czołowego) na napięcie (U  = Ic*R5)
doprowadzane do ADC (kanał 4). Potencjo-
metr R2 służy do ustawienia dolnego progu
napięcia na wyjściu tego wzmacniacza (dla
minimalnego oświetlenia fototranzystora).
Kondensator C7 spowalnia zmiany napięcia
na jego wyjściu, zapobiegając irytującemu
migotaniu panelu LED. Sygnał wyjściowy
wzmacniacza przetworzony przez ADC na
wartość liczbową posłuży do wysterowania
(z pomocą TIMER’a(2)) wyjścia OC2. Wyjście
ELEKTRONIKA PRAKTYCZNA 5/2012
to dostarcza sygnału PWM sterującego tran-
zystorem Q1. Zmieniając potencjał masy, Q1
wpływać będzie na intensywność świecenia
części diod LED panelu czołowego. Wartość
liczbowa uzyskiwana za pośrednictwem ka-
nału 4 (OPTO) wpływać też będzie, ale inną
drogą, na intensywność świecenia wyświe-
tlaczy 7-segmentowych oraz linijek diodo-
wych LED.
Zarówno wyświetlacze jak i  linijki są
sterowane za pomocą układów MAX7219
(IC4, IC5). Do poprawnej pracy wymagają
one tylko zewnętrznego rezystora ustalają-
cego maksymalny prąd obciążenia. Każdy
z układów ma 16–bitowy rejestr przesuwny,
do którego ładowane są wartości rozkazów
i  danych. Podczas narastającego zbocza na
wejściu LOAD w  dekoderze adresu zostaje
zatrzaśnięty adres rejestru, do którego nastę-
puje odwołanie. Układ MAX7219 ma wbu-
dowane rejestry, za pomocą których można
sterować pracą wyświetlacza lub poszcze-
gólnych diod LED. Możliwa jest programo-
wa (obok sprzętowej – za pomocą wspo-
mnianego rezystora) regulacja intensywno-
ści świecenia elementów LED (w  16 kro-
kach). Taką regulację wykorzystałem biorąc
do przeliczeń wartość zwracaną przez kanał
4 (OPTO) przetwornika A/D. Komunikacja
między mikrokontrolerem a  połączonymi
szeregowo układami MAX7219 odbywa się
przez interfejs SPI. Z punktu widzenia pro-
cesora układy te są 32-bitowym rejestrem
szeregowym, do którego dane występujące
na linii DIN są wpisywane w  takt sygnału
zegarowego CLK. Pierwsze słowo, zatrzaski-
wane (sygnałem LOAD) w układzie IC4, ste-
ruje 8 wyświetlaczami cyfrowymi. Drugie,
zatrzaskiwane w  IC5, steruje 64 diodami
LED tworzącymi na panelu trzy półkoliste
linijki świecące.
Na
listingu  2
zamieszczono funkcję ob-
sługi skali diodowej zbudowanej z  użyciem
układu IC5 (MAX7219) sterującego linijkami
LED. W projekcie założono, że:
• linijka LED (górna lub dolna) składa się
z 24 diod,
• jedna dioda wskazuje nam w sposób cią-
gły punkt zerowy, od którego są liczone
wartości dodatnie i  ujemne przyspie-
szeń,
value
– oznacza wartość przyspieszenia
(dodatnią lub ujemną),
upLimit
– oznacza żądaną, górną grani-
cę przyspieszenia (maksymalna wartość
wyjściowa czujnika MMA7455 = +127,
rozdzielczość 8-bitowa),
downLimit
– dolna granicę przyspiesze-
nia to –127,
position –
adres rejestru danych
MAX7219 (0x03 – dolna linijka lub 0x06
– górna).
Kilka na temat wejść impulsowych. Na
tranzystor Q2 a  następnie na wejście INT1
procesora, poprzez rezystor R12, trafia sy-
gnał z impulsatora zamontowanego w pojeź-
dzie. Impulsator ma za zadanie zamieniać
ruch obrotowy wałka zdawczego skrzyni
biegów na impulsy elektryczne potrzebne,
w  naszym wypadku, do pomiaru prędkości
pojazdu oraz dystansu. W  moim aucie do-
starczane jest z niego napięcie 0 V lub 9,3 V.
Częstotliwość tego sygnału wynosi 30  Hz
dla prędkości 20  km/godz. oraz 290  Hz dla
prędkości 150  km/godz. Opadające zbocze
pojawiające się na kolektorze tranzystora
wywołuje przerwanie zwiększające stan licz-
ników. Ich wartości posłużą w podprogramie
obsługi przerwania Timer’a 1 do wyliczenia
dystansu oraz prędkości. Podprogram wy-
woływany jest co 1 s. Wyliczana jest w nim
również liczba obrotów na minutę według
następującego wzoru:
Wzór powstał na skutek przekształcenia
uniwersalnego wyrażenia, odnoszącego się
do wszystkich typów silników samochodo-
wych:
Ogólnie, dla silników 4-cylindrowych,
4-suwowych z  jedną cewką zapłonową czę-
stotliwość impulsów zawiera się w  grani-
cach 16,666…266,666  Hz, co odpowiada
zakresowi prędkości obrotowych 500…8000
obr/min. Impulsy te pobieramy z  cewki za-
płonowej z użyciem diod zabezpieczających
D3, D4 do separatora (transoptora) OK1. Jego
wyjście wyzwala przerzutnik monostabilny
IC3A. Stała czasowa tego przerzutnika nie
może być zbyt duża, gdyż ograniczy pomiar
maksymalnych wartości obrotów. Dlatego
wynosi ona około 3 ms, co umożliwia pomiar
prędkości do 9000 [obr/min]. W  układzie
zapłonowym już nie stosuje się mechanicz-
nych przerywaczy, co obowiązkowo wyma-
gałoby filtracji sygnału z  powodu drgań ich
styków. Mimo to zastosowałem przerzutnik,
aby zapobiec ewentualnym zakłóceniom,
które mogłyby fałszować pomiary prędko-
ści obrotowej. Z  wyjścia (!Q) odfiltrowany
impuls podawany jest na wejście INT0, po-
wodując przerwanie, w  obsłudze którego
zwiększany jest licznik, brany pod uwagę co
1 sekundę do obliczenia ilość obrotów.
Moduł panelu czołowego.
Na katody diod
LED 1, 2, 19, 20, 45 oraz diody podświetlenia
przycisków podawany jest z  tranzystora Q1
modułu sterującego większy lub mniejszy po-
tencjał masy, decydując o jasności ich świece-
nia. Diody LED20, LED 45 świecące w sposób
ciągły, stanowią wskaźniki początków górnej
53
Zgłoś jeśli naruszono regulamin