• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Pomiar czasu za pomocą Arduino
#21
(07-09-2018, 20:26)Mick_SQ6IYV napisał(a): W sprawozdaniach na laboratoriach podaje się wyniki (obliczeń lub pomiarów) z DOKŁADNOŚCIĄ do dwóch cyfr po przecinku i to dokładnie mnie interesuje.
Nie odróżniasz pojęcia rozdzielczość a dokładność. Użyj Google, Wiki itp, poczytaj w książkach. Polecam "Ośla łączkę" z EdW. Był tam odcinek wyjaśniający czym różni się dokładność od rozdzielczości.

Aby uzmysłowić, w prosty sposób czym jest rozdzielczość a czym dokładność (dziwię się, ze nie wiesz), dam przykład
Przypuśćmy, że masz rozdzielczość 1ms a dokładność +/- 50%. Zakładamy, że wykonujesz dwa pomiary, oba czasy są dokładnie takie same, np 10sekund  W jednym pomiarze możesz otrzymać 14,999 a w drugim 5,000. Wynik jest poprawny, 10sekund + 50% to 15,000sekundy. O taką dokładność z pewnością nie chodzi, więc jaką? Ile %, %%, ppm czy bpm?
Przy dokładności 50% nie ma sensu rozdzielczość 1ms dla czasów rzędu sekund. Tu, wystarcza dokładność sekundowa. Czy naprawdę nie potrafisz policzyć wymaganej dokładności dla czasów rzędu sekund przy rozdzielczości 10ms?

Uwzględnij też, ze w Arduino jest (pisałem o tym) problem z rozdzielczością 1 czy 10ms. Wynika to z tego, ze niektóre wartości NIGDY nie pojawiają się. Oglądałem kiedyś funkcję millis i niestety, timer co 125ms (jak pamiętam) jest korygowany. Gdzieś w necie jest nawet tabelka jakie są odchyłki. Odchyłki te sa całkowicie kompensowane po sekundzie. Dlatego millis pozwala uzyskać prawdziwa rozdzielczość 1sekunda, ewentualnie,, z przymrużeniem oka 100ms ale nie 10 czy 1ms. Wynika to z bzdurnego użycia trybu przepełnienia timera a nie CTC. Nie będę się rozpisywał z czego to wynika, w każdym razie aby uzyskać rozdzielczość 10ms musisz zmodyfikować obsługę przerwania od timera0 i ustawić go w tryb CTC, co łatwe nie będzie, albo użyć timera 1 lub 0, który będzie generował przerwania dokładnie co 1 czy 10ms.
 
Odpowiedź
  


Wiadomości w tym wątku
Pomiar czasu za pomocą Arduino - przez Mick_SQ6IYV - 07-09-2018, 13:36
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 13:39
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 15:24
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 17:56
RE: Pomiar czasu za pomocą Arduino - przez kaczakat - 07-09-2018, 17:22
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 19:20
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 19:41
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 19:58
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 20:18
RE: Pomiar czasu za pomocą Arduino - przez es2 - 07-09-2018, 22:01
RE: Pomiar czasu za pomocą Arduino - przez kaczakat - 07-09-2018, 20:42

Skocz do:


Przeglądający: 1 gości