czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje (/watek-czujnik-odbiciowy-tcrt5000-miernik-obrot%C3%B3w-sie-nie-zeruje) |
czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - jack1987 - 23-07-2018 Witam Chciałbym zrobić miernik obrotów na podstawie czujnika odbiciowego TCRT5000. Działam na podstawie przykładu: Kod: const int dataIN = 7; //IR sensor INPUT Jak zrobić żeby po upływie np 1s bez obracania się przedmiotu, wyświetlało 0 RPM? RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - kaczakat - 23-07-2018 Najprościej zeruj rpm po ostatnim wydruku. Jak już ogarniesz kurs Arduino z Forbota to sobie zmień warunek kiedy wchodzi do obliczania RPM, a właściwie to powinieneś mierzyć czas od ostatniego pomiaru i jeśli przekroczy jakąś wartość, to zeruj RPM. RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - jack1987 - 23-07-2018 próbowałem, jak dodam na sam koniec rpm = 0; to odczyt np dla 200 obrotów, jest taki: 200 200 200 0 0 200 200 to zero wcina się w pomiar jak nie powinno RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - kaczakat - 23-07-2018 No to zrób sobie jakąś zmienną, zeruj ją po wyliczeniu rpm i zwiększaj po wydruku, jak będzie większa niż 2 (lub ile tam sekund powinno być by uznać, że jest już zerem) to przypisuj do rpm 0. RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - Robson Kerman - 24-07-2018 Założenie tego programu jest takie, że w pętli Kod: if( prevstate != currentstate) // If there is change in input liczony jest czas pomiędzy aktualnym i ostatnim impulsem, a następnie na podstawie obliczeń aktualizowana jest zmienna RPM. Jeśli zatrzymać obroty, to program nie doczeka się warunku ( prevstate != currentstate) i nie zmieni RPM. Rozwiązanie jest bardzo proste. Wywalić ten program i napisać taki, który w przerwaniu liczy impulsy w określonej jednostce czasu, na przykład w ciągu sekundy. Program był by o wiele dokładniejszy i o wiele prościej jest go napisać i optymalizować. Po co jest zmienna refresh, skoro jest równa zero? I w ogóle, po co ta pętla Kod: if( ( millis()-refresh ) >= 1000 ) RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - Robson Kerman - 25-07-2018 Jak zwykle, ja i kaczakat, jesteśmy bardziej zainteresowani rozwiązaniem niż autor tematu. Napisałem taki kawałek kodu, który oblicza częstotliwość(obroty na sekundę) w przerwaniu i zachowuje się tak, jak tego oczekuje autor: Kod: #include "LiquidCrystal_I2C.h" RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - kaczakat - 26-07-2018 Wszystko zależy co to ma mierzyć, jak szybkie rzeczy to ilość w stałym czasie i ten kod w przerwaniach jest super, jak wolne to ja wolę mierzyć czas między "pikami" , kiedyś Elektromaras pokazywał swój kod do wiatromierza i miał pomiar typu V=pik x 2,4 km/h: https://www.youtube.com/watch?v=slzOhgBeQjc . RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - Robson Kerman - 26-07-2018 Założenie jest takie, że ten obrotomierz liczy pełne obroty (RPM jest typu int) w określonej jednostce czasu. Mój kod liczy w sekundzie, autor chce liczyć w minucie. Jeśli chcieli byśmy liczyć realne obroty na minutę, to faktycznie może się zdarzyć, że będzie na przykład jeden obrót na minutę i powinniśmy liczyć czas pomiędzy impulsami, oraz odświeżać ekran co minutę. No i czekać minutę na wynik, jeśli nie ma impulsu, to dać zero. Mój kod czeka sekundę na wynik i odświeża LCD, można wpisać aby czekał minutę, albo i rok. Można czekać sekundę i mnożyć wynik przez 60, wtedy będzie wynik w obrotach na minutę, ale aktualizowany co sekundę. To się nazywa interpolacja, prędkość chwilowa. Na tej zasadzie działają na przykład obrotomierze w samochodach. Można dodać kilka warunków do pętli z mojego kodu, w ten sposób aby na przykład jeśli zdarzy się jakiś impuls w ciągu minuty, to prędkość chwilowa będzie zero, ale faktyczna będzie jeden na minute i to można spokojnie zrealizować lekko przerabiając mój kod. No i nie obciążamy procesora. Ufff.... ale chaotycznie piszę, muszę napić się kawy. RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - kaczakat - 26-07-2018 Może miałoby to sens po zastosowaniu krążka encodera z naciętymi np. 20 szczelinami. Dałoby to 20(40)x więcej impulsów /s. Inaczej odczyty byłyby typu 0/60/120 obrotów/min. RE: czujnik odbiciowy TCRT5000 miernik obrotów sie nie zeruje - Robson Kerman - 27-07-2018 Ja cały czas mam na myśli obrotomierz do śmigieł samolotów RC, a tam są obroty powyżej 10000/min. Ja taki mam i jest bardzo dokładny. |