Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 29 mar 2024, o 05:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
 Tytuł: Czas obrotu
PostNapisane: 30 lis 2020, o 15:44 
Offline
Nowy

Dołączył(a): 30 lis 2019
Posty: 9
Pomógł: 0

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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Czas obrotu
PostNapisane: 30 lis 2020, o 16:19 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

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ść.

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Czas obrotu
PostNapisane: 30 lis 2020, o 19:52 
Offline
Nowy

Dołączył(a): 30 lis 2019
Posty: 9
Pomógł: 0

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Czas obrotu
PostNapisane: 30 lis 2020, o 20:42 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 230
Pomógł: 26

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;

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Czas obrotu
PostNapisane: 2 gru 2020, o 13:10 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 28 kwi 2015
Posty: 20
Lokalizacja: Bydgoszcz
Pomógł: 0

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).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
 Tytuł: Re: Czas obrotu
PostNapisane: 2 gru 2020, o 14:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1960
Lokalizacja: Lipsko
Pomógł: 125

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)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO