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



Teraz jest 22 lip 2019, o 08:58


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 13 maja 2019, o 17:34 
Offline
Użytkownik

Dołączył(a): 25 sie 2017
Posty: 56
Pomógł: 0

Witam, mam pewien problem, chciałem napisać program do obsługi silnika krok bipolar, wzorowałem na bluebooku, i chce aby przesuwając enkoder w lewo poruszał mi się w lewo o jeden krok jeden jeden ruch, i tak samo w prawo. Więc zacząłem pisać program jednakże trochę wychodzi mi nie tak jak powinno a mianowicie dzieje sie ze jak obórce impulsator to robi mi jeden krok ale juz nic więcej nie wazne ile zrobie ruchów (nie patrzcie się na komentarze:) są z poprzedniej wersji ). Przysyłam kod programu
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  
PostNapisane: 13 maja 2019, o 19:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 679
Pomógł: 38

Najwidoczniej masz jakiś problem z funkcją obsługi enkodera. A czy edir nie przyjmuje wartości 16 i 32?(zależnie od kierunku kręcenia)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2019, o 20:13 
Offline
Użytkownik

Dołączył(a): 25 sie 2017
Posty: 56
Pomógł: 0

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
obsługa enkodera jest za pomocą biblioteki z sklepy atnel



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2019, o 20:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 679
Pomógł: 38

No właśnie dlatego pytam bo biblioteka chyba udostępnia dwie zmienne
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

chyba że coś się zmieniło

------------------------ [ Dodano po: 1 minucie ]

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  
PostNapisane: 13 maja 2019, o 20:44 
Offline
Użytkownik

Dołączył(a): 25 sie 2017
Posty: 56
Pomógł: 0

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


dokładnie tak dwie zmienne :) ale co z związku tym, soryy za może i głupie pytania ale ja już w głowie mam sieczkę
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  
PostNapisane: 13 maja 2019, o 20:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 679
Pomógł: 38

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  
PostNapisane: 13 maja 2019, o 20:59 
Offline
Użytkownik

Dołączył(a): 25 sie 2017
Posty: 56
Pomógł: 0

dalej nie chce ruszyć silnik ;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2019, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 sty 2016
Posty: 679
Pomógł: 38

A nie wywala Ci funkcja enkoderek żadnych błędów przy rejestracji? Zmienne enco_dir i enco_cnt są globalne i nie potrzeba ich przekazywać do funkcji jako parametry.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2019, o 21:12 
Offline
Użytkownik

Dołączył(a): 25 sie 2017
Posty: 56
Pomógł: 0

Dalej nie działa mimo ze zadnych błędów mi nie wywala, wszystko dobrze się kompiluje

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  
PostNapisane: 14 maja 2019, o 05:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 wrz 2015
Posty: 259
Lokalizacja: Zamość
Pomógł: 5

@Eposas: spróbuj dać clean projektu, skompiluj i wtedy wgraj

Wysłane z mojego moto g(6) przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2019, o 08:21 
Offline
Użytkownik
Avatar użytkownika

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

Ajajaj... tego się tak nie robi. Oczywiście da się, podobnie jak i widelcem zupę jeść też się da tylko jakim kosztem.
Przede wszystkim musisz mieć sprecyzowane założenia, bo podejście do problemu może się wtedy nieco zmienić. Jeśli chcesz kręcić enkoderem to czy ten ruch będzie odbywał się w obie strony z podobną ilością impulsów? Ma to znaczenie dla algorytmu.
Jak więc się to robi? Na licznikach i ich porównywaniu. Enkoder zalicza swoje impulsy i silnik krokowy też ma zliczać swoje. Ważne aby zliczanie odbywało się w dwóch kierunkach (czyli licznik odejmuje przy przeciwnym kierunku ruchu). Teraz wystarczy porównywać oba liczniki i w zależności od tego, który więcej zliczył obracać silnikiem w lewo lub w prawo. Jeśli, np. enkoder wykonał 10 imp. a krokowy 4 to już wiadomo, że kierunek musi być taki aby silnik "dokręcił" te 6 impulsów. Proste prawda :) Jest haczyk, o którym trzeba pamiętać! Dla ruchu silnika należy wprowadzić opóźnienie dobrane doświadczalnie. Chodzi o to , że przy bardzo szybkim ruchu enkoderem silnik chciałby szybciutko nadrobić straty i też się szybciutko obrócić - niestety ten numer nie przejdzie z racji swojej bezwładności (nie dotyczy silników DC z enkoderem). Dlatego po dodaniu opóźnienia on spokojnie nadgoni w swoim tempie licznik do wymaganej wartości.
Myślę, że opisałem to dość jasno.
A czy to w ogóle działa w taki sposób?? Ależ tak! ;) Film poniżej to potwierdza z nieco bardziej rozbudowanym algorytmem wzbogaconym o rampę, a enkoder daje 1600 impulsów na obrót. Silnik co prawda DC, ale za to z enkoderem i działa to dokładnie na tej samej zasadzie z liczeniem impulsów co z krokowym.


------------------------ [ Dodano po: 9 minutach ]

Ooo! Znalazłem jeszcze stary film gdzie tą zasadę pierwszy raz zastosowałem jeszcze kiedy w bascomie programowałem :)



Tu jest sterowanie potencjometrem (odczyt ADC) w zakresie 0-255 impulsów o ile pamiętam. To jest właśnie ta istota licznika - z ADC otrzymuje gotową wartość, a przy enkoderze trzeba ją sobie zliczać... ale to chyba nie jest trudne ;) Podczas ruchu w niektórych momentach gdy szybko kręcę gałką da się zauważyć, że silnik jedzie ze swoją maksymalną stałą prędkością. To jest właśnie to o czym pisałem wcześniej - ogranicznik prędkości żeby nie zgubił kroków.


Autor postu otrzymał pochwałę

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2019, o 10:21 
Offline
Użytkownik

Dołączył(a): 25 sie 2017
Posty: 56
Pomógł: 0

Dzięki jak wrócę do domu będę rozkminiał z tymi licznikami, jak będę miał problem to napisze do cb na pw Sylwekk



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2019, o 11:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 wrz 2015
Posty: 259
Lokalizacja: Zamość
Pomógł: 5

Eposas napisał(a):
Dzięki jak wrócę do domu będę rozkminiał z tymi licznikami, jak będę miał problem to napisze do cb na pw Sylwekk
Lepiej pytaj tutaj, będzie dla potomnych gdy spotkają taki problem

Wysłane z mojego moto g(6) przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 maja 2019, o 11:25 
Offline
Użytkownik

Dołączył(a): 25 sie 2017
Posty: 56
Pomógł: 0

Silnik jakimś cudem ruszył cel zamierzony osiągnięty kiedy kręce w lewo to obraca się w lewo i na odwrót.
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  
PostNapisane: 20 maja 2019, o 14:04 
Offline
Użytkownik
Avatar użytkownika

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

Może i ruszył co nie zmienia faktu, że jest praktycznie to samo co było tylko masz dodatkowo zaliczane kroki silnika. Ruch powinien odbywać się w oparciu o różnice liczników, a u Ciebie po prostu na podstawie kierunku enkodera to działa. Takim sposobem nawet się nie zbliżysz do efektu jaki pokazałem na filmach. Szkoda.

_________________
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: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO