ATNEL tech-forum
https://forum.atnel.pl/

Czas obrotu
https://forum.atnel.pl/topic23463.html
Strona 1 z 1

Autor:  SK97 [ 30 lis 2020, o 15:44 ]
Tytuł:  Czas obrotu

Cześć.

Robię sobie taki mały projekcik, w którym muszę obliczyć prędkość obrotową. Pomiar musi być wykonany za pomocą liczenia czasu pomiędzy przerwaniami. Coś tam napisałem ale cały czas wyświetla mi "0 rps". Do wejścia INT1 w Atmedze32 podłączyłem sobie inny uC, który mi zmienia sygnał co 200ms.

Dzięki za pomoc :)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  JarekB [ 30 lis 2020, o 16:19 ]
Tytuł:  Re: Czas obrotu

Zobacz na BB. W części poświęconej IR DEKODE masz pomiar czasu zrealizowany za pomocą ICP. A dokładny czas to prędkość.

Autor:  SK97 [ 30 lis 2020, o 19:52 ]
Tytuł:  Re: Czas obrotu

Tak, tak. Tylko niestety jestem zmuszony korzystać z mierzenia czasu pomiędzy występowaniem przerwań na INT1 a nie na ICP

Autor:  JarekB [ 30 lis 2020, o 20:42 ]
Tytuł:  Re: Czas obrotu

No dobrze
Tak na pierwszy rzut oka na kod to w zmiennych które używasz w przerwaniu i w kodzie programu powinieneś używać volatile.
Zobacz do BB
Czyli na przykład jak się będzie zachowywała zmienna
volatile uint16_t pomiar_A;
a jak
uint16_t pomiar_A;

Autor:  karlowic [ 2 gru 2020, o 13:10 ]
Tytuł:  Re: Czas obrotu

Próbowałem rozgryźć ten kod ale dla mnie jest zbyt zakręcony. :shock:
SK97 napisał(a):
muszę obliczyć prędkość obrotową. Pomiar musi być wykonany za pomocą liczenia czasu pomiędzy przerwaniami.
Zastanawiam się czy te wymagania są konieczne, bo i tak na końcu program wyświetla częstotliwość obrotów (zmienna "obroty_sek"). Wydaje mi się, że nie trzeba robić skomplikowanego liczenia czasu pomiędzy przerwaniami. Prościej byłoby zliczyć ilość przerwań zewnętrznych (INT1) w określonym czasie ustalonym przez TIMER1. Zamiast dziewięciu wystarczą dwie, trzy zmienne (np.Licznik_przerwań, Liczba_ms, Wynik, ewentualnie Liczba_szczelin).

Autor:  SylwekK [ 2 gru 2020, o 14:30 ]
Tytuł:  Re: Czas obrotu

Właściwie to o co dokładnie chodzi? O algorytm pomiaru mając czas między impulsami czy może sam pomiar tego czasu impulsu? Jakiego rzędu czasu (lub prędkości
obrotowej) orientacyjnie się spodziewasz przy pomiarze? Pytam, bo zrobiłem parę miesięcy temu prędkościomierz dla chomika i tam właśnie mierze czas między impulsami przy każdym obrocie. Wszystko znakomicie działa tyle, że pomiar jest do około 10-12km/h (odczyt z jakiegoś dowolnego pinu)

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/