PiotrPitucha napisał: Witam
Tak małe obroty mierzy się mierząc okres obrotu i przeliczając to na obroty, metoda którą proponujesz nie sprawdza się zupełnie bo jest niedokładna.
Przewrotnie powiem że najlepiej byłoby to mierzyć analogowo jak w starych obrotomierzach, całkować by wyeliminować krótkotrwałe zmiany i wyświetlać przy pomocy ADC z Atmegi.
Piotr
Generalnie kolega ma rację, ale ...
Ale jeśli założyć tę prostą metodę czyli zliczanie impulsów na liczniku wewnętrznym procka i założyć że pomiar będzie dokonywany w "znośnym okresie" to wcale nie jest to złe rozwiązanie bo bardzo upraszcza samo pisanie programu. Znośny okres pojmuję jako zliczanie impulsów np. raz na 0,5 sek. Bardzo dokładne wskazania obrotomierza np. z dokładnością do 1 obrotu będą nie do zniesienia przez ludzką percepcję ponieważ zawsze wahają się one w pewnym zakresie obrotów i na miejscu dziesiątek a nawet setek obr. będzie tam gonitwa cyfr. Zliczanie impulsów na liczniku ma tą cechę że poniekąd uśrednia wynik. Ale może to co najważniejsze to kolega autor nie napisał podstawowej informacji, co to za silnik ? Pytam nie bez powodu ponieważ w większości w miarę nowoczesnych silników nawet tych co mają obecnie po 10-12 lat na wale korbowym jest zamontowany czujnik zwykle używany do pracy zapłonu elektronicznego lub kalkulatora silnika. W takim przypadku przebieg który się tam pojawia wynikiem kształtowania impulsów od zębów na kole zamachowym a tych jest w okolicach 90 albo i więcej. W takim przypadku przebieg na czujniku położenia wału korbowego jest wielokrotnie większy niż wynikałoby to z samych obrotów wału korbowego i z tego powodu pomiar poprzez zliczanie impulsów na liczniku procka będzie jak najbardziej dokładny nawet z okresem np. 0,1 s co moim zdaniem jest aż nadto wystarczający. Z drugiej strony trzeba też przyznać że czujnik położenia wału korbowego wyznacza także GMP a dzieje się to przez inny odstęp na zębach wału korbowego jednak dla liczenia obrotów można to spokojnie olać. Zatem kolego napisz co to za silnik albo lepiej zorientuj się w konstrukcji koła zamachowego i zastanów się skąd będziesz czerpał impulsy do pomiaru prędkości obrotowej. Myślę że ten właśnie czujnik będzie najlepszym źródłem tym bardziej że łatwo go przetworzyć na postać zgodną z TTL. Czujnik na wałku rozrządu będzie już w tym przypadku zdecydowanie gorszy ponieważ na 2 obr wału przypada 1 obr wałka rozrządu czyli trzeba stosować tę drugą nieco bardziej pracochłonną metodę. PZDR
Pójde nawet krot dalej i podpowiem ci algorymt:
1)definiujesz zmienną w której będzie rpm
2)sygnał z czujnika puszczasz na 16 bitowy licznik procka
3)definiujesz przerwanie Timera które w odpowiednik interale czasowym będzie przepisywać zawartość licznika do zmienne i dalej będzie ten licznik zerować.
4)możesz także zdefiniować flagę w tym przerwaniu która będzie informowac program główny o dokonaniu przepisania aktualnej wartości pomiaru
5)program główny nie robi nic innego jak w pętli wyświetla wartość ze zmiennej na czymś tam, np. LCD albo lepiej na LED (można użyć ew. flagi aby robić to tylko wtedy kiedy masz aktulany pomiar). LCD jest stosunkowo wolny a LED zrobi to w mgnieniu oka no i ma duże cyfry.
Dobierając odpowiednio interwał czasowy Timera możesz dokonać swoistego przeliczenia częstotliwości impulsów na wartość obrotów i obędzie się bez czasochłonnego wykonywania operacji matematycznych typu dzielenie lub mnożenie.