Ev3 - Specyficzne sterowanie serwomotorem
Moderatorzy: Mod Team, Mod Team
Ev3 - Specyficzne sterowanie serwomotorem
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 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ą!
Sztuką jest, zrobić to boczną!
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 :-(
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ą!
Sztuką jest, zrobić to boczną!
-
- Posty: 572
- Rejestracja: 2016-08-29, 17:27
- Lokalizacja: Rybnik okolice
- brickshelf: Tranzystor
-
Przykładowy pomysł na płynne zatrzymanie silnika przy pomocy pętli zmniejszającej moc:
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 :)
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.