Skocz do zawartości

Jak dobrze zliczyć ilość stanów niskich?


Dzonzi

Pomocna odpowiedź

A może opaska gumowa którą nałożę na wał i nakleję na nią odblask? Etui od telefonu mam gumowe i nie odbija IR nawet z 1 milimetera, więc chyba by się sprawdziło idealnie. 

Link do komentarza
Share on other sites

21 godzin temu, atMegaTona napisał:

zliczanie do zmiennej w przerwaniu wystarczy w zupełności.

Dlaczego nie wykorzystać sprzętu jesli jest? Arduinowe biblioteki uwielbiają wyłączać przerwania i programowy pomiar częstotliwości może być obarczony błędem. Gdy zliczanie jest sprzętowe szansa na błąd spowodowana blokowaniem przerwań jest ograniczona lub nawet wyeliminowana.

Link do komentarza
Share on other sites

@RFM Jak w takim razie najlepiej policzyć impulsy? Albo jak pozbyć się bezwładności? Teraz mi pokazuje 1176 lub 1200 RPM i nic pomiędzy. 24 rpm błędy przy takim pomiarze to chyba sporo. To jest ok. 24 obrotów na sekundę czyli przerwanie wychodzi co jakieś 41 milisekund. Z jaką dokładnością arduino potrafi zmierzyć czas między dwoma kolejnymi wywołaniami przerwania? 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

A skąd masz pewność, że ten wentylator kręci się z perfekcyjnie niezmienną prędkością? Policz sobie jak długo trwa takie przerwanie (plik lss) i zastanów jak to się ma do długości impulsów zliczanych i częstotliwości ich pojawiania się.

8 godzin temu, RFM napisał:

Dlaczego nie wykorzystać sprzętu jesli jest?

@RFM masz rację, ale w tym konkretnym przypadku równie dobrze sprawdzi się zmienna jak rejestr sprzętowy choć faktycznie w zgodzie ze sztuką powinno się wykorzystać rejestr do tego celu.

Link do komentarza
Share on other sites

@atMegaTona No to może mierzyć czas 1 obrotu, następnie liczyć do ilości obrotów na minutę, wyświetlić tą wartość na sekundę i znów zmierzyć jeden obrót? Wtedy mierzylibyśmy np. tylko 1 z obrotów występujących w sekundzie. 

Link do komentarza
Share on other sites

14 godzin temu, Dzonzi napisał:

Jak w takim razie najlepiej policzyć impulsy?

Timerem w trybie licznika.

Aktualizacja:

13 godzin temu, Dzonzi napisał:

No to może mierzyć czas 1 obrotu

Metoda dobra gdy impulsy sa długie a w tym przypadku są. Szczęśliwie aby obliczyć RPM trzeba mierzyć okres wiec bez problemu zrobisz to sprzętowo timerem.

Link do komentarza
Share on other sites

Można, tylko jaki sens tego jest? Jeśli faktycznie potrzebujesz super perfekcyjnego odczytu wartości chwilowych to nie powinny być one podawane w RPM ale jeśli Ci wystarczy RPM to tak jak już pisałem lepiej uśrednić wyniki: pobierać dane co 100ms i uśredniać  każdy z poprzednią średnią a co 1s wyświetlać wtedy będzie stabilniej. Zauważ też jedną rzecz -  płyta główna nie zasila wentylatorów w sposób idealnie stały dlatego fizycznie kręcą się raz szybciej raz wolniej.

Link do komentarza
Share on other sites

@atMegaTona Oczywiście, masz rację, ale docelowo to urządzenia ma badać silniki elektryczne, którą potrafią utrzymać równe obroty. Będzie głupio wyglądać, jeżeli będę mierzył prędkość obrotową silnika synchronicznego i pomiary mi będą wychodzić np. 1480-1500-1520

Link do komentarza
Share on other sites

Więc chcesz sobie skalibrować urządzenie pomiarowe dedykowane dla silników o stałych obrotach na podstawie silnika o niepewnej stałości obrotów? Wg. mnie, jeśli silnik utrzyma stałą prędkość to metoda jaką Ci opisałem będzie prezentować stałe wyniki

Link do komentarza
Share on other sites

29 minut temu, Dzonzi napisał:

Będzie głupio wyglądać, jeżeli będę mierzył prędkość obrotową silnika synchronicznego i pomiary mi będą wychodzić np. 1480-1500-1520

Będzie wyglądać jak każde inne urządzenie pomiarowe o rozdzielczości wyższej niż dokładność czyli w praktyce każde xD

1 godzinę temu, Dzonzi napisał:

24 rpm błędy przy takim pomiarze to chyba sporo.

2% to jest spoko wynik dla "zabawkowego" urządzenia.

 

Ja bym to zrobił tak że mierzyłbym w przerwaniu czas pojedynczego obrotu (lub nawet części), uśredniał kolejne kilka(dziesiąt/set), przeliczał i wyświetlał.

Edytowano przez Chumanista
  • Lubię! 1
Link do komentarza
Share on other sites

14 godzin temu, atMegaTona napisał:

Można, tylko jaki sens tego jest? Jeśli faktycznie potrzebujesz super perfekcyjnego odczytu wartości chwilowych to nie powinny być one podawane w RPM ale jeśli Ci wystarczy RPM to tak jak już pisałem lepiej uśrednić wyniki: pobierać dane co 100ms i uśredniać  każdy z poprzednią średnią a co 1s

Chyba nie używałeś częstościomierz, który wyświetla wyniki co sekundę. Sekunda to "wieczność". Nawet multimetr, który wyświetla wyniki 3 razy na sekundę potrafi denerwować. Sensowne odczyty wartości, które mogą ulegać częstym zmianom to 10 na sekundę, min 5. Jeśli robisz pomiar co 100ms, to ile wartości uśrednisz?

Pisząc oprogramowanie dla licznika częstotliwości i czau, dla F < 1kHz mierzę nie częstotliwość ale czas. Dzięki temu wynik pojawia się (z punktu postrzegania człowieka) natychmiastowo. Dla F>= 1kHz mierzę częstotliwość bramkując sygnał przez 100ms (64ms).

 

14 godzin temu, Dzonzi napisał:

Będzie głupio wyglądać, jeżeli będę mierzył prędkość obrotową silnika synchronicznego i pomiary mi będą wychodzić np. 1480-1500-1520

Powinieneś sprawdzić częstościomierzem, czy obroty są stabilne czy nie. Wyeliminujesz jedną niewiadomą. Polecam tez zmierzyć okres sygnału (faktyczny okres a nie wyliczany przez miernik częstotliwości), porównanie F a 1/t może Cię zdziwić.

 

14 godzin temu, atMegaTona napisał:

Więc chcesz sobie skalibrować urządzenie pomiarowe dedykowane dla silników o stałych obrotach na podstawie silnika o niepewnej stałości obrotów?

Podłączył bym generator.

 

13 godzin temu, Dzonzi napisał:

nie wiem jak to napisać w programie, bo dosyć średnio ogarniam programowanie.

Na to jest jedna rada - naucz się pisać programy.

Pomyśl, jaką radę dałbyś gdy ktoś napisał "Tylko kurczę jak mam wyciąć wyrostek? Słabo ogarniam medycynę".

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.