Skocz do zawartości

Pomocna odpowiedź

Napisano

Witam,

w projekcie swojego robota postanowiłem zastosować zdalne sterowanie poprzez aparaturę RC. Posiadam do niej również odbiornik 5cio kanałowy.

Problem jest jednak sposób, w jaki miałbym połączyć arduino, aparaturę oraz sterownik silników L298n w taki sposób, aby móc sterować ruchem robota.

Dodatkowo, nie bardzo wiem jaki program napisać, by mógł spełniać te funkcję.

Za okazaną pomoc z góry dziękuję i pozdrawiam!

Zacząłbym od wyczytania w dokumentacji odbiornika jaki sygnał wyjściowy on daje, a następnie napisałbym prosty program w Arduino który ten sygnał odbiera i zamienia na jakieś liczby. (Na 90% to będzie sygnał PWM, a informacja będzie w długości impulsu.)

Jednocześnie poczytałbym sobie notę katalogową tego mostka, podłączył wszystko tak jak jest to pokazane tam w przykładowym zastosowaniu, i napisał jakiś prosty program na Arduino który tymi silnikami steruje -- na przykład puszcza oba w jednym kierunku na 5 sekund, zwalnia, zatrzymuje, puszcza w kierunku przeciwnym na 5 sekund, itd.

Na koniec zastanowiłbym się jak te dwa programy połączyć ze sobą.

Już wiem jak sterować tym mostkiem, spróbuję odczytać wartości z odbiornika.

Zastanawiam się również, w jaki sposób za pomocą jednego kanału sterować równocześnie dwoma kołami, by ruch robota był płynny.

To na szczęście nie jest problemem, bo Arduino ma sprzętowe PWM, więc robisz tylko analogWrite i nie musisz się dalej przejmować -- Arduino samo będzie podawać na tej nóżce ustawiony sygnał, dopóki go nie przestawisz. Więc możesz ustawiać te sygnały po kolei.

W sumie, to nawet dałoby się podłączyć PWM z nadajnika bezpośrednio do mostka, z pominięciem Arduino. Tylko co to wtedy za robot 😉

W sumie, to nawet dałoby się podłączyć PWM z nadajnika bezpośrednio do mostka, z pominięciem Arduino.

Na pewno? Jeżeli to standardowy odbiornik RC i na wyjściu jest impuls 1-2ms co 20ms to chyba nie bardzo jest jak sterować bezpośrednio mostkiem za pomocą takiego sygnału.

EDIT: i jak rozumiem chodzi Ci o odbiornik, a nie nadajnik jak napisałeś?

Bezpośrednio to raczej nie zadziała, bo z odbiornika wychodzi sygnał taki jak do typowego serwa: impuls 1..2ms co 20ms więc wypełnienie jest bardzo marne, zakres zmian od 5 do 10% i częstotliwość tylko 50Hz.

Dlaczego tylko jeden kanał? Skoro masz dwa silniki to potrzebujesz dwóch kanałów, bo w jednym nie przeniesiesz informacji o prędkości i skręcaniu.

Wersji "czołgowej" po prostu jeden kanał to jeden silnik a drugi to drugi. To niestety wymaga użycia dwóch drążków w nadajniku, ale jest dość intuicyjne i proste pojęciowo w samym programie. Dwa drążki do przodu: jazda prosto, jeden trochę mniej wychylasz: skręt, jeden do przodu a drugi do tyłu: obrót w miejscu, czyli jak czołg.

W wersji alternatywnej korzystasz tylko z jednego drążka, gdzie wychylanie przód tył (czyli jeden kanał radiowy) jest odpowiedzialne za sumę obu silników - czyli jakby prędkość - im bardziej popchniesz drążek do przodu tym szybciej jedziesz, a przechylanie go na boki (czyli drugi kanał radiowy) mówi o różnicy prędkości silników czyli o promieniu skrętu. Im bardziej przechylisz drążek w bok tym ciaśniejszy zakręt. Wystarczy chwilę się zastanowić jak wyliczać z dwóch kanałów prędkość każdego silnika i gotowe.

"Dodatkowo, nie bardzo wiem jaki program napisać, by mógł spełniać te funkcję"

Coś mi tu nie pasuje. Naprawdę po tych kilku banałach jakie Ci zapodaliśmy już wiesz jak napisać program? Albo mogłeś tego się sam z łatwością domyślić po trzech minutach zastanowienia, albo nadal jesteś w czarnej dziurze.

Z drugiej strony "mądrej głowie dość dwie słowie". Jeśli naprawdę od zera do bohatera przeszedłeś w godzinę, to szacun.

Z drugiej strony "mądrej głowie dość dwie słowie". Jeśli naprawdę od zera do bohatera przeszedłeś w godzinę, to szacun.

Ja wierzę w Autora i liczę, że za kilka dni pochwali się rezultatami. Dodatkowo jakby np. dodał z przodu pojazdu sonar i dodał automatyczne hamowanie przy zbliżaniu się do przeszkody (mimo "wciśniętego gazu") to mógłby założyć osobny temat z opisem konstrukcji 🙂

Chciałem pokazać, że czasem zadajemy pytania nie potrzebując tak naprawdę odpowiedzi. Dziwnie czuję, że to właśnie taki przypadek i intelek10 niedługo pokaże nam całkiem zgrabny programik mierzący długość impulsów w dwóch kanałach RC, przeliczający to na wysterowanie PWM silników (i ich kierunek) plus filmik z pierwszych jazd po dywanie 🙂 Jeśli tak, to niczego od nas nie potrzebował - może oprócz moralnego wsparcia i upewnienia się, że nie brnie w bezsensowne rozwiązania. Do tego co napisaliśmy doszedłby sam po 5 minutach sam na sam z kartką i ołówkiem.

Na początku nie wiedziałem totalnie jak się za to zabrać. Teraz mam mniej więcej plan w głowie jak to ma wyglądać, postaram się krok po kroku go zrealizować. Jednak moje umiejętności programowania są trochę ograniczone więc w razie potrzeby znów poproszę o pomoc w tym poście.

Moim celem jest zbudowanie autonomicznego odkurzacza. Posiadam używaną obudowę, sprawne silniki. Ogólnie wykorzystam istniejącą już konstrukcje.

Pierwszym etapem będzie odkurzacz zdalnie sterowany, następnie hybryda a w finalnej wersji pełna autonomia.

Dodam, że posiadam już jakieś małe doświadczenie w robotyce z wykorzystaniem arduino. Zbudowałem już omijacza przeszkód oraz line followera.

Więc w końcu udało mi się napisać program, który obsługuje 4 silniki mojego odkurzacza.

Wiem, że nie stoi on na jakimś specjalnie wysokim poziomie ale spełnia w pełni swoje zadanie.

odkurzacz.txt

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...