Ev3 - Specyficzne sterowanie serwomotorem

Mindstorms, WeDo, Lego Digital Desinger, Stud.io

Moderatorzy: Mod Team, Mod Team

Autor
Wiadomość
Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

Ev3 - Specyficzne sterowanie serwomotorem

#1 Post autor: OmenGda »

Hej,
nie wiem jak to zrozumiale napisać, ale chodzi mi o to, żeby silnik po zakończeniu wykonywania programu nie zatrzymał się od razu, tyko sam 'wytracił' prędkość. Da się to jakoś zrobić w ogóle? Ktoś próbował? Z góry dzięki za pomoc.

Pozdr.
Michu
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

Awatar użytkownika
Neo
Posty: 293
Rejestracja: 2011-04-29, 21:24
Lokalizacja: Kraków/Rzeszów/Starachowice

#2 Post autor: Neo »

Masz na myśli, że zatrzymuje się do momentu ustania siły bezwładności, czy degresywnie zmniejszał moc, aż do zera ?

Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#3 Post autor: OmenGda »

W sumie obie opcje są ciekawe :-)
Ale raczej o bezwładność mi chodziło :-)

A ważne, u mnie z Java raczej ciężko. Więc szukam rozwiązania raczej na bloczkach :-(
Ostatnio zmieniony 2017-03-18, 11:45 przez OmenGda, łącznie zmieniany 1 raz.
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

Awatar użytkownika
Neo
Posty: 293
Rejestracja: 2011-04-29, 21:24
Lokalizacja: Kraków/Rzeszów/Starachowice

#4 Post autor: Neo »

Na bloczkch to prosto. W bloczkach motor jest opcja jak dany ruch ma się kończyć. Z hamowaniem, czy bez.

Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#5 Post autor: OmenGda »

Czyli nie brake tylko coast? I to wszystko? :-)
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

Awatar użytkownika
Neo
Posty: 293
Rejestracja: 2011-04-29, 21:24
Lokalizacja: Kraków/Rzeszów/Starachowice

#6 Post autor: Neo »

No ... tak :-)

Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#7 Post autor: OmenGda »

Dzięki :-) a opcja numer dwa pewnie wymaga zrobienia własnego bloczka, składającego się ze sporej ilości bloków silnika z kolejno zmniejszającymi się prędkościami? Czy jest mniej monotonne rozwiązanie?
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

Tranzystor
Posty: 572
Rejestracja: 2016-08-29, 17:27
Lokalizacja: Rybnik okolice
brickshelf: Tranzystor

 

#8 Post autor: Tranzystor »

Tak, pętla zmniejszająca prędkość.

Awatar użytkownika
Neo
Posty: 293
Rejestracja: 2011-04-29, 21:24
Lokalizacja: Kraków/Rzeszów/Starachowice

#9 Post autor: Neo »

Jest :) Można zrobić podprogram (bloczek), który w pętli będzie zmniejszał o jakąś wartość moc silnika, aż do zera. Jak będę miał chwilkę to wrzucę przykład :)

Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#10 Post autor: OmenGda »

Dzięki Panowie :-) za przykład będę wdzięczny. W międzyczasie w nocy sam pokombinuję.

Pozdr.
Michu
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

Awatar użytkownika
Neo
Posty: 293
Rejestracja: 2011-04-29, 21:24
Lokalizacja: Kraków/Rzeszów/Starachowice

#11 Post autor: Neo »

Przykładowy pomysł na płynne zatrzymanie silnika przy pomocy pętli zmniejszającej moc:

Obrazek

Pierwszy bloczek przed pętlą zapisuje wartość do zmiennej numerycznej (w tym przypadku maksymalna 100, ale może być oczywiście inna). Pętla zaczyna się odczytem wartości zmiennej i przekazaniem jej do łącza serwomotoru odpowiedzialnego za moc. Następnie ze zmiennej zostaje wczytana łączem wartość do bloczka obliczeń matematycznych, który odejmuje 1 (oczywiście interwał może być większy) od wartości zmiennej i nową wartość zapisuje do naszej zmiennej sterującej mocą silnika. Kolejnym bloczkiem jest porównujący wartości (wczytaną ostatnio do zmiennej i "zero" - znaczy sprawdza, czy po ostatnim odjęciu nie jest już przypadkiem równa zero). Jeżeli jest zero łącze podłączone do wyjścia przekazuje wartość logiczną "prawda" do łącza sterującego pętlą i kończy jej zapętlenie, jeżeli nie wraca na początek pętli. Przed końcem pętli znajduje się jeszcze bloczek wait, który zatrzymuje na 0,1 sekundy przejście dalej w programie (oczywiście opóźnienie płynnego zmniejszenia mocy może być jeszcze wolniejsze).
To tyle :)
Ostatnio zmieniony 2017-03-18, 19:32 przez Neo, łącznie zmieniany 1 raz.

Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#12 Post autor: OmenGda »

Muszę to koniecznie przetestować :-)
Dziękuję bardzo za pomoc!

Pozdr.
Michu
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

ODPOWIEDZ