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



Teraz jest 28 mar 2024, o 17:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 1 sty 2017, o 09:25 
Offline
Użytkownik

Dołączył(a): 27 sty 2016
Posty: 192
Pomógł: 2

Witam Was,
Przede wszystkim Szczęśliwego Nowego Roku!!!
A po drugie, to czeka mnie skonstruowanie urządzenia, które równolegle będzie musiało obsługiwać tensometr (odczyt i zapis na SD co ok. 0,05 sekundy oraz pomiar szybkości ruchu i kąta wychylenia (poprzez jakiś optyczny impulsator chyba - fototranzystor np) z zapisem na SD też co ok. 0,05 sekundy. I teraz proszę o ogólne info jak to zrealizować aby zachować równoległość. Jak zrealizować jeden z tych pomiarów - raczej wiem. Nie wiem, jak dokonywać pomiarów co 0,05 sekundy z przesunięciem o 0,025s. Może się też zdażyć, że tensometr może podawać sygnał co 1 sekundę - ustalenie parametrów - wtedy będę miał większy problem. Ale pytanie na dzisiaj: jak dokonać dwóch niezależnych pomiarów równolegle.
m.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2017, o 11:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

cześć
Ustaw sobie jakiś timer cykający co 50ms i w przerwaniu dokonuj pomiaru.
Jeżeli chcesz mieć przesunięcie w pomiarach o 25ms to powołaj do życia dwa timery programowe i napędzaj je timerem sprzętowym ustawionym powiedzmy na 1ms.
Teraz od ciebie zależy jak ustawisz timery programowe.
Jak pierwszy osiągnie założoną wartość dokonujesz pierwszego pomiaru i zerujesz timer - w tym czasie drugi sobie liczy dalej i jak dojdzie do wartości o którą chcesz opóźnić drugi pomiar dokonujesz pomiaru.
I tak w kółko

_________________
Pomóżcie mi stanąć na nogi



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2017, o 12:26 
Offline
Użytkownik

Dołączył(a): 27 sty 2016
Posty: 192
Pomógł: 2

No OK. To zrozumiałem. Ale z Twojej wypowiedzi wnoszę, że wcale nie muszę mieć tego przesunięcia pomiędzy pomiarami, tak? Dla mnie byłoby korzystniej dokonywać pomiarów równocześnie ale nie przypuszczałem, że jest to możliwe. Jak uC zrealizuje dwa równe, ciągłe pomiary w tym samym czasie? W tym samym czasie mam na myśli cykl po cyklu. Chodzi o to, że mierząc położenie, aby je określić muszę ciągle dokonywać pomiarów a co 50ms odczyt zapisać. Z drugim pomiarem jest prościej, bo co 50ms odczyt i zapis. Ale jak to ogarnąć? Czy tak, ze jeden timer odmierza czas i co 1us daje przerwanie. W tym momencie sprawdzam czy impuls jest na enkoderze a info o tym zapisuję do zmiennej. Drugi timer co 50ms powoduje zapis sumy aktualnej wartości ze zmiennej na SD. Chodzi mi o to, że aby określić dokładny kąt wychylenia i prędkość ruchu to muszę "wiedzieć" ile impulsów odebrałem w ciągu tych 50ms. W tym samym 50ms przerwaniu od drugiego timera dokonuję pomiaru z tensometru i też zapisuję na SD?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2017, o 13:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

witam w nowym roku 2017. :)
tungu napisał(a):
Nie wiem, jak dokonywać pomiarów co 0,05 sekundy z przesunięciem o 0,025s.
...............
Ale pytanie na dzisiaj: jak dokonać dwóch niezależnych pomiarów równolegle.
m.

zaprzęgając timer i wykorzystując resztę z dzielenia "MIODULO" :) %.
polecam zapoznać się z tym : :D ==> http://mirekk36.blogspot.com/2016/10/miodulo-wielozadaniowosc-dla.html
Co do równoległego wykonania pomiarów, to tak dosłownie to się nie da . :( (dosłownie w tym samym czasie ).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2017, o 17:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 cze 2014
Posty: 855
Lokalizacja: pod Warszawą
Pomógł: 58

Piszesz o położeniu więc wnioskuję, że musisz reagować na każdy impuls z enkodera zarówno dodatni jak i ujemny więc polecam Ci https://www.youtube.com/watch?v=IP5t_XzfRRM ilość impulsów zapisujesz do zmiennej i masz gotową wartość do zapisu na kartę. Oczywiście w tzw. międzyczasie pewnie trzeba będzie wartość zmiennej przeliczyć na jakieś stopnie ale to nie problem.

Teraz co do zapisu w tym samym czasie to dosłownie się nie uda ale:
w przerwaniu timera wywołujesz funkcję zapisu na kartę do której przekazujesz dwie zmienne
- pierwsza położenie
- druga prędkość
praktycznie ilość cykli zegara pomiędzy zapisaniem dwóch zmiennych jest tak mała, że możemy uznać, że nastąpi to w tym "samym czasie"

Co do samego odczytu enkoderów to z filmików dowiesz się wszystkiego. Czas 50ms to dla procka ślimacze tempo więc zrealizujesz to bez problemów


Autor postu otrzymał pochwałę

_________________
Pomóżcie mi stanąć na nogi



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: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 4 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