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



Teraz jest 30 mar 2026, o 12:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 1 lut 2014, o 17:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2013
Posty: 67
Pomógł: 1

Który rzuci na to świeżym okiem bo mnie już się z deczka musk lasuje.

Ma to wyglądać tak zmienna pozycja jest zmienna (rośnie, maleje itp)

Kombinuje nad tym od dłuższego czasu i wnioskuje takie coś :
pozycja -docelowa pozycja silnika
krok_w - kroki wykonane
krok_d - do wykonania
k - pomocnicza

Jeśli pozycja jest mniejsza od krok_w obliczmy krok_d (krok_w-pozycja) i przekazujemy do funkcji Stepp_l
i odwrotnie czyli pozycja większa od krok_w to znów obliczmy krok_d (pozycja-krok_w) i wsadzamy do Stepp_r

W funkcjach Stepp_x dodajemy lub ujmujemy zmienna krok_w.



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



Dobrze to rozumuje ?


Dodatkowo kombinuje jak z funkcji odpowiedzialnych za kroki usunąć delaye na rzecz timera

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

_________________
Zdravim



Ostatnio edytowano 1 lut 2014, o 23:06 przez maras52, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 lut 2014, o 18:19 
Offline
Użytkownik
Avatar użytkownika

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

Po mojemu to mieszasz jak betoniarka... czy nie wystarczy Ci dwie zmienne ze znakiem czyli aktualna pozycja silnika i docelowa pozycja silnika??? Przecież z tego już można pociągnąć w każdą stronę i robić co się tylko chce. Nawaliłeś tyle tych zmiennych, że się w nich poplątasz wcześniej czy później. A najlepiej to napisz co to za urządzenie ma być wtedy łatwiej się myśli.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 14:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Potraktuj to jako pewna koncepcję, a nie gotowy kod ;)

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


Ot taka moja mała koncepcja ;) Co prawda dawno się nie bawiłem C, ale z grubsza po odpowiednim dopasowaniu powinna działać :)

Edit: Trochę poprawiłem kod bo mi się nie podobał ;) Oczywiście należy ustawić porty , przerwania i takie tam żeby działało ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 17:18 
Offline
Użytkownik
Avatar użytkownika

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

Powyższy kod mógłby nawet działać, ale deklaracja zmiennych "pozycja" i "krok" jako uint8_t zamiast zmiennej ze znakiem (i to raczej powinno być coś większego niż 8 bitów) to jednak błąd. Przecież silnik może akurat wystartować w drugą stronę kiedy zmienna krok jest wyzerowana i kiedy zacznie ją odliczać od zera to program oszaleje ;) Sama koncepcja jest ok tylko jeszcze "timer" bym okrasił jakąś zmienną żeby łatwej zmieniać prędkość. Silniki krokowe nie lubią ostrych startów, bo wtedy najczęściej gubią kroki (chyba, że na wolnych obrotach cały czas jedziemy...) i w docelowym programie proponuję zrobić płynne rozpędzanie i spowalnianie silnika (przeważnie wystarczy ułamek sekundy) - ale to później, najpierw rusz silnikiem :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 20:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Przyjacielu :) z miłą chęcią popatrzę na twoją propozycję kodu, może i ja się czegoś nauczę :D .
I jak możesz doczytaj co napisałem na początku, że jest to pewna koncepcja postępowania która miała na celu pokazać koledze @maras52 podobny ale zarazem inny sposób podejścia do tematu. Prosił także aby pokazać jak się pozbyć _delay_ms , co też uczyniłem.

Co do tego że silniki krokowe nie lubią ostrych startów - to zgadzam się w 100 % , ale autor wątku nie prosił o pomoc w rozwiązaniu takiego problemu, więc go nie otrzymał. Zresztą jak sam wiesz gotowy kod to można dostać w Rybnym ;). A tutaj pokazujemy tylko drogę którą pytający musi przejść ;)

I poważnie piszę jak masz jakiś fajny kodzik który w "sprytny" sposób obsługuje silniki krokowe i możesz go zamieścić, to umieść go.
Ja osobiście z ogromną przyjemnością przeanalizuje go sobie i być może nauczę się czegoś nowego :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 20:22 
Offline
Użytkownik
Avatar użytkownika

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

@Malutki_27 - wszystko doczytałem i potwierdziłem, że koncepcja jest ok ;) tylko chodziło mi o te nieszczęsne zmienne - naprawdę wskazane jest aby były to jakieś ze znakiem i takie nawyki powinny wchodzić w krew od samego początku i już na pewno nie miałem na celu ganienie Cię za błędny kod ;) Przy okazji dodałem trzy grosze na temat prawidłowego rozruchu takiego silnika :)
Swoje rozwiązania sterowania silnikiem krokowym oczywiście mam tyle, że jeszcze w bascomie: http://sylwekkuna.com/slider.html. Obecnie przygotowuję się powoli do stworzenia w "C" nowej wersji sterownika, ale opartego już na silnikach DC.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 22:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

kolego @Malutki_27 nie chciałbym abyś mnie źle zrozumiał
bo nie chcę Ci niczego zarzucać ale mam pytanie do twojego
kodu z postu powyżej
czy w drugi if-ie nie powinno być
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jeśli coś źle rozumiem to sory za zamieszanie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 22:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2013
Posty: 67
Pomógł: 1

Dziękuje za zainteresowanie i sugestie.

"Coś z tego będzie g... już jest" czyli niby chodzi prawo lewo wg zmiany zmiennej pozycja z tym że czasem dostaje do łba i świruje.

Pliki na moim DB >> Licznik_v2 (laurka własnej produkcji) do dogrania libsy Mirkowe od lcd.

_________________
Zdravim



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 23:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

@Zaba nie powinno być ponieważ ta zmienna nigdy nie przyjmie wartości poniżej 0, a wynika to z deklaracji zmiennej. Zwróć uwagę ze w zależności od wywołania funkcji zmienna jest inkrementowana od 0 do 7 lub na odwrót. W przypadku dekrementacji zmienna nie osiągnie wartości ujemnych tylko 255 ( przekreci się ;) ) , a jak się przekręci to będzie większa od 7 stąd taki warunek.

@ SylwekK I widzisz jak podałeś linka do strony to teraz wiem że jeszcze bardziej chce obejrzeć twój kod do sterowania silnikami :) Swoja drogą fajne zabawki, jest co podziwiać :) Co do zmiennych owszem można użyć zmiennych ze znakiem , ale tak prawdę mówiąc po co, ten sam efekt można osiągnąć poprzez przesuniecie "środka" zmiennej . Bo to ze zainicjowałem je 0-mi nie ma właściwie znaczenia , mogłem ustawić je na np. 127 i miałbym umownie znak :) . No chyba że sam znak można do czegoś fajnego wykorzystać , o czym nie mam bladego pojęcia. A jeżeli tak jest , to gdybyś był tak miły :) i wyjaśnił to byłbym bardzo wdzięczny :) . Co do długości zmiennej to nie ma co dyskutować , jak to powiadają wielkość zmiennej powinna być taka jaka będzie dla nas przydatna ;) .

A skoro juz tak roztrzaskujemy tą moją koncepcje , to ja bym się jeszcze zwrócił uwagę na sposób załączania pinow dla silniczka ;)


Sent from my Lumia 800 using Tapatalk



Ostatnio edytowano 3 lut 2014, o 23:55 przez Malutki_27, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 23:46 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Aaaaa - to taki myk super znowu coś wiem więcej
dzięki ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2014, o 10:00 
Offline
Użytkownik
Avatar użytkownika

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

Malutki_27 napisał(a):
Co do zmiennych owszem można użyć zmiennych ze znakiem , ale tak prawdę mówiąc po co, ten sam efekt można osiągnąć poprzez przesuniecie "środka" zmiennej . Bo to ze zainicjowałem je 0-mi nie ma właściwie znaczenia , mogłem ustawić je na np. 127 i miałbym umownie znak . No chyba że sam znak można do czegoś fajnego wykorzystać , o czym nie mam bladego pojęcia.

Zgadza się, można przesunąć środek, ale chyba sam przyznasz, że inicjacja przez wpisanie "0" jest bardziej intuicyjna i nawet przy uruchamianiu programu podczas jego pisania łatwiej określić co się dzieje z parametrami. Np. w moim sterowniku slidera przez zwykłe wpisanie zera ustawiam punkt końcowy skąd łatwo już wyliczyć bez dodatkowych przeliczeń typu "x=end_track-127" przykładową drogę, którą ma wyświetlić LCD. Generalnie z doświadczenia mogę powiedzieć, że działanie na zmiennych ze znakiem w takim przypadku naprawdę upraszcza kod i czyni go bardziej intuicyjnym, a zero to zero i przyznasz, że nawet w warunkach IF łatwiej się go bada ;)

Malutki_27 napisał(a):
Co do długości zmiennej to nie ma co dyskutować , jak to powiadają wielkość zmiennej powinna być taka jaka będzie dla nas przydatna

Tu nawet nie dyskutuję - 100% racji, chociaż przyznasz, że dla pracy półkrokowej dla popularnych silników to nawet jednego obrotu nie zaliczysz... ;)

Odnośnie tego fragmentu kodu:

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


...to chyba jednak w drugiej części przy warunku wkradł się mały error ;) Kiedy "kierunek=1" to "step" nigdy nie osiągnie "0"
nawet po tej zmianie:

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


Należałoby nieco przebudować kolejność, albo dodatkową zmienną "step" zrobić ze znakiem.

Malutki_27 napisał(a):
I widzisz jak podałeś linka do strony to teraz wiem że jeszcze bardziej chce obejrzeć twój kod do sterowania silnikami

Hehe, szału w kodzie nie ma - to najzwyklejsza tablica i przypisywanie jej wartości do pinów portu :D Coś podobnego jak Twoja koncepcja (w tej materii się wiele nowego nie wymyśli ;) ) tyle, że wszystko ubrane już w pętli głównej w algorytm zarządzający np. rozpędzaniem, itd.:

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


To kompletny fragment robiący jeden krok w dowolną stronę.

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

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