Sterowanie silnikiem-kilka funkcji - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino) +--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica) +--- Wątek: Sterowanie silnikiem-kilka funkcji (/watek-sterowanie-silnikiem-kilka-funkcji) |
Sterowanie silnikiem-kilka funkcji - Modelarz_daniel - 16-01-2016 Witam wszystkich. Mam na imię Daniel, i Arduino zajmuję się od niedawna. Przyszedł mi do głowy pomysł projektu, w którym wykorzystał bym moduł zdalnego sterowania oraz Arduino. Moduł RC to prosty układzik wyciągnięty z zabawkowego samochodu, który działał na zasadzie O/I. Zamysł był taki, by układ RC podłączyć do wejść cyfrowych w Arduino, Który miał by zliczać impulsy i konwertować je na stopnie wychylenia serwa, w moim przypadku prędkość silnika. Silnik sterowany jest regulatorem modelarskim, który działa na takiej samej zasadzie jak serwo. Po podłączeniu układu, napisaniu i wgraniu kodu wszystko działa jak należy. Arduino w zależności od sygnału (pin 0 jazda do przodu, pin 1, stopniowe zatrzymanie) odejmuje lub dodaje impulsy, przelicza na stopnie i steruje silnikiem. Problem tkwi w tym, że aby cały układ zareagował na przyciśnięcie przycisku na pilocie, przycisk trzeba trzymać wciśnięty około 3-4 sekundy. To tylko silnik, do tego dojdzie jeszcze kierunek (taka sama zasada działania) i czujnik odległości, (po dojechaniu do przeszkody, auto ma się zatrzymać i zawrócić). Jaka jest możliwość zmniejszenia czasu czekania na efekt? dziękuję za wszelkie porady. mój kod: Kod: #include <Servo.h> //Biblioteka odpowiedzialna za serwa Ps.: Linijki poruszające silnikiem w funkcji setup, służą do zalogowania się regulatora. RE: Sterowanie silnikiem-kilka funkcji - wojtekizk - 20-01-2016 Witam Tak sobie przeglądam stare posty i zatrzymałem się przy Twoim. Rozumiem, że jak moduł był podłączony wcześniej tylko do zabawki to wszystko reagowało od razu (nie po 4 sek.) TAK? Więc według mojej opinii są trzy problemy: 1) po co dodajesz/odejmujesz 10? dodawaj/odejmuj 1 2) musisz sprawdzać jakieś zakresy (MIN,MAX) dla tych dodawanek, po to aby ich nie przekroczyć. 3) błąd w funkcji map - ta funkcja konwertuje wartości z jednego zakresu (parametr 2 i 3) na inny zakres(parametr 4 i 5). Czyli jakaś wartość (tutaj twój licznik) ma zmieniać się od 0-5 a w wyniku masz mieć 90-180. Zdajesz sobie sprawę, że serwo przy takiej konwersji będzie mocno skakało? Niech licznik zlicza impulsy w szerszym zakresie (np 0-50). Ten dziwny czas 4 sek. być może bierze sie stąd właśnie, że zakres do konwersji masz 0-5 a tylko w jednym kroku (za jednym przyciśnięciem pilota) zmieniasz wartość o 10 jednostek. Bez sensu. Jak program ma trafić w ten zakres 0-5 skoro skok jest co 10. trafi co najwyżej w 0. :-) Pozdrawiam |