Źródłem impulsów potrzebnych do odczytu prędkości obrotowej silnika jest alternator. Na rysunku 1 pokazano schemat typowego alternatora z wyjściem dla obrotomierza oznaczone literą "W". Występuje tam przebieg zbliżony do prostokątnego o częstotliwości zależnej od obrotów. Jeśli mamy alternator bez tego wyjścia, musimy je dorobić we własnym zakresie, co nie powinno sprawić problemów.
Na fotografii 2 pokazano obrotomierz zamontowany w desce rozdzielczej. Urządzenie nie jest zbyt atrakcyjne wizualnie, ponieważ jest w nim zamontowany tylko wyświetlacz LCD. W czasie projektowania miałem zastosować skalę w postaci zaokrąglonej skali z diod LED, lecz podczas prac polowych w słoneczne dni była by ona niewidoczna.
W słonecznym środowisku idealnie sprawuje się monochromatyczny wyświetlacz LCD. Obrotomierz wyświetla aktualne obroty silnika, przepracowane motogodziny oraz aktualną godzinę. Dodatkowo jest wyposażony we wskaźniki, kiedy silnik znajduje się w zakresie maksymalnego momentu obrotowego i przy jakiej prędkości obrotowej silnika wałek WOM ma 540 obr./min.
Budowa i zasada działania
Aby można było zmierzyć prędkość obrotową silnika należy mierzyć częstotliwość impulsów pochodzących z alternatora, więc tak naprawdę nasz obrotomierz jest częstościomierzem. Sygnał jest podawany na zewnętrzne wejście licznika-timera0. Licznik ma rozdzielczość 8 bitów, co pozwala na zliczeniu 256 impulsów.
Impulsy nie są podane bezpośrednio na wejście procesora najpierw są uformowane na przebieg prostokątny za pomocą tranzystora T1. Elementy D3 i R10 ustalają próg, przy jakim tranzystor ma się przełączać. Rezystor R7 podciąga wejście timera do napięcia zasilania. Kondensator C12 wraz z rezystorem R7 stanowią filtr dolnoprzepustowy, który zapobiega przedostawanie się impulsów szpilkowych.
Schemat ideowy obrotomierza pokazano na rysunku 3. Jego "sercem" jest mikrokontroler ATtiny461. Został wybrany ze względu na dość pojemną pamięć programu jak i 14bitowy preskaler sygnału zegarowego oraz dwa niezależnie timery. Procesor jest taktowany zewnętrznym rezonatorem kwarcowym.
Do procesora dołączony został za pośrednictwem magistrali I²C zegar czasu rzeczywistego U2. Aby aktualny czas nie uległ skasowaniu zegar PCF8583 potrzebuje ciągłego zasilania. Odpowiadają za to rezystor R2, dioda D2, kondensatory C5 i C6. Dioda i rezystor odpowiadają za stabilizację napięcia a kondensatory za jego filtrowanie. Zbudowany w ten sposób zasilacz pobiera z akumulatora tylko ok. 250 mA prądu.
Stałe zasilanie jest doprowadzone na złącze CON2. Zasilanie po stacyjce jest doprowadzone na złącze CON3 gdzie jest filtrowane przez C11 i trafia na stabilizator U3 potem po odfiltrowaniu przez kondensatory C7 i C10 trafia na złącze modułu wyświetlacza. Kondensator C3 o dużej pojemności stanowi zasilanie rezerwowe po wyłączeniu zasilania.
Zgromadzona w kondensatorze energia wystarczy na zapisanie danych w pamięci nieulotnej procesora. Dioda D1 jest "zaworem" jednokierunkowym powoduje, że tylko sam procesor jest zasilany z kondensatora C3. Tranzystor T2 stanowi klucz elektroniczny, który jest zamknięty podczas włączonego zasilania obrotomierza. Zwiera on pin 20 procesora do masy.
Pojawienie się stanu wysokiego na tym pinie, co jest równoznaczne z wyłączeniem zasilania, powoduje zapis danych do pamięci nieulotnej procesora. Dzięki takiemu rozwiązaniu pamięć jest zapisywana tylko po wyłączeniu zapłonu. Do złącza CON1 są podłączone przyciski chwilowe ze stykami NO służące do ustawiania aktualnej godziny. Przycisk SW1 służy do skalibrowania wskazań obrotomierza zasada jego działania będzie opisane w dalszej części artykułu.
Program sterujący
Program sterujący został napisany w Bascom AVR-zajął trochę ponad 3 kB pamięci Flash mikrokontrolera. Do pracy zostały wykorzystane obydwa liczniki procesora. Pierwszy z nich - Timer 0 - jest skonfigurowany jako licznik reagujący na zbocze opadające sygnału wejściowego. Licznik zlicza do 255, co jest równoznaczne z 2550 obr./min. silnika.
Zawartość Timer 0 jest bezpośrednio wyświetlana na wyświetlaczu, a za nią jest dopisywana liczba 0, co upraszcza program. Drugi z timerów Timer 1 jest skonfigurowany do pracy jako timer odliczający czas. Stopień podziału ustawiono na 8192. Timer pracuje w konfiguracji 8 bitowej. W podprogramie obsługi przerwania od Timera 1 jest sprawdzany stan przycisku kalibracji, jeśli jest wciśnięty zawartość zmiennej "kalibracja" jest zwiększany od 0 do 151.
Dalej jest przepisywana zawartość zmiennej kalibracja do zawartości licznika Timera 1, co pozwala na regulowanie czasu występowania przerwania w zakresie 215…524 ms. W następnej kolejności zostaje zatrzymany Timer 0 zawartość zostaje przepisana do zmiennej zawartosc_licznika (liczba obrotów silnika), timer zostaje wyzerowany, a na koniec znowu zaczyna zliczać impulsy i zostaje ustawiona flaga_zezw.
W pętli głównej programu jest ciągle sprawdzany stan PINA.0, jeśli jest wyzerowany program przechodzi w stan normalnej pracy. Jeśli na pinie jest stan wysoki zostają zablokowane przerwania od obydwóch timerów oraz zostają zapisane dane do pamięci EEPROM mikrokontrolera.
Podczas normalnej pracy programu jest sprawdzany stan bitu flaga_zezw, gdy jest ustawiony zostaje odczytana aktualna godzina z zegara czasu rzeczywistego. Dalej zostają wykonane obliczenia do licznika motogodzin. Widnieje tam liczba 1585714 jest ona wynikiem obliczeń (3600/0,42)×185, gdzie: 3600 - liczba sekund w godzinie; 0,42 - czas co jaki występuje przerwanie od Timer 1, 185 - liczba obrotów gdyż 1 motogodzina jest równa godzinie pracy silnika przy obrotach równych 1850 w naszym wypadku 185.
Następnie jest czyszczony wyświetlacz i jest wykonywana instrukcja warunkowa wskaźnika maksymalnego momentu obrotowego. Wskaźnikiem jest znak "#" umieszczony w górnej linijce z lewej strony wyświetlacza. Kolejne linijki kodu są związane z wyświetlaniem prędkości obrotowej i liczby przepracowanych motogodzin oraz aktualna godzina.
W ostatniej kolumnie górnej linijki zostaje wyświetlony wskaźnik obrotów wałka WOM. Jeśli wałek ma 540 obr./ min., co przypada przy prędkości obrotowej silnika 1990 obr./min. Zaświeca się "*". Na koniec są sprawdzane stany portów do, których podłączono przyciski ustawiania czasu. Podczas gdy których z przycisków jest wciśnięty zostają zwiększone zmienne czasu i wywoływana procedura zapisu czasu do układa zegara czasu rzeczywistego. Po każdym obiegu pętli flaga_zezw zostaje wyzerowana, a program czeka aż zostanie ustawiona ponownie.
Montaż i uruchamianie
Schemat montażowy pokazano na rysunku 4. Obrotomierz jest zmontowany na okrągłej płytce jednostronnej o średnicy 85 mm. Wszystkie złącza są montowane od spodniej strony płytki (fotografia 5). Kondensator C3 musi być zamontowany w pozycji leżącej, aby zmieścił się pod wyświetlaczem. Mikrokontroler U1 montujemy na końcu po uprzednim zaprogramowaniu go. Podczas programowania należy ustawić fusebity.
Odznaczyć trzeba bit odpowiedzialny za podział zegara przez 8, ustawić bity, aby mikrokontroler pracował z zewnętrznym generatorem 8 MHz z najdłuższym czasem startu po resecie. Można zastosować pod niego podstawkę procesor razem z podstawką powinien zmieścić się pod wyświetlaczem. Wyświetlacz należy wyposażyć w złącze kołkowe 16 pinowe typu goldpin, a na płytce umieścić gniazdo pod złącze.
Po zamontowaniu zaprogramowanego procesora i włożeniu wyświetlacza na swoje miejsce możemy podłączyć zasilanie. W tym momencie powinien pojawić się komunikat powitalny. Jeśli go nie ma, należy ustawić kontrast wyświetlacza za pomocą RN1. Po upływie ok. 2 sekund wyświetlacz powinien wyglądać, jaki na fotografii 6.
Jeśli w miejscu aktualnej godziny pojawią się znaki zapytania oznacza to brak zasilania układu zegara. Po podaniu zasilania na złącze CON2 powinna pojawić się godzina. W celu ustawieniu aktualnego czasu należy użyć przycisków. Jeden ustawia minuty w górę drugi godziny.
Aby zegar chodził dokładnie należy skalibrować go przy pomocy trymera C2. Jeśli w tym monecie wszystko działa poprawnie wyświetlacz należy przylutować do płytki z mikrokontrolerem w sposób przedstawiony na fotografii 7 tworząc tzw. kanapkę. Do połączenia wyświetlacza z płytką procesora należy użyć drutu miedzianego o średnicy ok. 1,5 mm. Nie należy stosować tulejek dystansowych, gdyż potem całość nie zmieści się w obudowie.
Teraz można dokonać kalibracji obrotomierza w ciągniku. W tym celu doprowadzamy zasilanie i sygnał z alternatora. Aby prawidłowo zkalibrować wskazania obrotomierza potrzebny będzie istniejący mechaniczny obrotomierz. Podczas pracy silnika należy trzymać przycisk SW1 tak długo, aż wskazania obrotomierza będą pokrywać się ze wskazaniem obrotomierza mechanicznego.
Jeśli wskazanie prędkości obrotowej są niestabilne trzeba dobrać pojemność kondensatora C12 pamiętając, aby nie przesadzić z pojemnością. Przy prawidłowo dobranym kondensatorze wskazania obrotów powinny być stabilne przy całym zakresie prędkości obrotowej silnika. Po wyłączeniu zasilania ustawienia kalibracji i licznika motogodzin są automatycznie zapamiętane w pamięci procesora. Do złącz należy podłączyć przewody długości ok. 15 cm zakończone po obu stronach odpowiednimi wtyczkami.
Obudowa
Po poprawnym skalibrowaniu pora na umieszczenie urządzenia w obudowie. Aby wykorzystać otwór w desce rozdzielczej po starym obrotomierzu postanowiłem całość umieścić w obudowie po obrotomierzu mechanicznym. Aby to zrobić trzeba rozebrać mechaniczny obrotomierz rozginając ramkę przytrzymującą szkło zegara. Po zdjęciu szkła trzeba wymontować mechanizm poprzez odkręcenie dwóch śrub M4 z tyłu zegara.
W tym momencie mamy pustą obudowę do dyspozycji. Aby zmieścić w niej nasze urządzenie trzeba delikatnie i umiejętnie zeszlifować rogi wyświetlacza LCD, aby wyglądał, tak jak na fotografii 8. Kolejnym krokiem jest montaż urządzenia w obudowie poprzez przylutowanie rogów wyświetlacza do metalowej obudowy obrotomierza.
Podczas tej czynności należy zachować szczególną ostrożność, aby nie przegrzać wyświetlacza co mogłoby doprowadzić do jego uszkodzenia. Do przylutowania należy użyć kolby lutowniczej o mocy min. 150 W lub małego palnika gazowego, ponieważ trzeba dobrze nagrzać metalową obudowę, aby przylutować do niej wyświetlacz. Gdy brzegi ekranu wyświetlacza zaczną robić się niebieskie trzeba natychmiast przerwać lutowanie i dać mu ostygnąć.
Prawidłowo przylutowany wyświetlacz powinien wyglądać jak na fotografii 9. Następnie można wykonać osłonę na wyświetlacz z laminatu pomalowanego na czarno. Na koniec zakładamy szkiełko i zaginamy brzegi metalowej opaski uważając, aby szybka nie pękła. Przewody wyprowadzamy z tyłu obudowy. W tyj chwili pozostał tylko montaż w ciągniku.
Uwagi końcowe i możliwości rozbudowy
Prezentowany obrotomierz został zamontowany w ciągniku krajowej produkcji Ursus C360 3P i dlatego tekst powitalny jest napisany do tego typu maszyny. Jeśli chcemy zamontować go to innego ciągnika można zmienić tekst powitalny w programie źródłowym. Częstotliwość impulsów do obrotomierza w moim przypadku wynosiła 127 Hz przy 600 obr./min. i 500 Hz przy 2400 obr./ min.
Przerwanie od Timera 1 występuje co 420 ms. Podaję tą wartość jako ciekawostkę dla zainteresowanych tym projektem. Ponieważ pamięć programu nie została w pełni wykorzystana, możemy zaimplementować w obrotomierzu np. termometr i woltomierz napięcia w instalacji.
Możemy wyprowadzić magistralę I²C na dodatkowe złącze, do którego dołączymy przetwornik A/C do pomiaru napięcia i temperatury. Trzeba będzie rozbudować program. Za pomocą magistrali można dołączyć dodatkową klawiaturę, za pomocą której będzie możliwe przełączanie pomiędzy funkcjami dodatkowymi.
Rafał Wasiak
fabian_wasiak@interia.pl