logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[M8] Jak napisać algorytm sterowania czołgiem z dwoma silnikami w BASCOM?

gray77 01 Maj 2012 19:46 1761 8
REKLAMA
  • #1 10850471
    gray77
    Poziom 12  
    Witam,
    Czy ktos z obecnych mialby pomysl na sterowanie platforma na zasadzie czolgu?
    Naped jest zrealizowany poprzez dwa silniki na dwoch kolach (L+P).
    Sterowanie odbywac sie bedzie poprzez tradycyjna aparature rc od samochodu (gaz i wsteczny pod palcem i kolko do sterowania lewo prawo).
    Pytanie jak napisac algorytm sterowania dwoma silnikami poprzez PWM tak aby podczas jazdy np. do przodu i probie skretu kolkiem, jeden silnik troszke zwolnil i pojazd wykonal skret w zadanym kierunku?

    Ma ktos jakis pomysl? Ja glowie sie nad tym od 2 tygodni i nic nie chce wskoczyc mi do glowy. Pewnie bedzie to banalnie proste ale najprostsze rzeczy przynosza najwiecej problemow.

    Z gory dziekuje i pozdrawiam.
  • REKLAMA
  • #2 10850559
    Jacek Rutkowski
    Poziom 28  
    Witam,
    wystarczy od zadanych wartości PWM odejmować wartość dodatkowej zmiennej np SKRET na silniku w którą stronę chcesz skręcić a zwiększać na drugim np. zmniejszając wartość dla LEWEGO silnika o 5 przy prędkości 120 a zwiększając dla Prawego uzyskasz skręt.
    Pytanie dodatkowe:
    Czy przewidujesz jazdę do tyłu? Skręt w miejscu?
  • #3 10850860
    gray77
    Poziom 12  
    Taaak, to moze byc rozwiazanie. Bedzie trzeba zrobic wiele warunkow ale jest to wykonalne.

    Oczywiscie jazda do tylu bedzie tez konieczna. Czy to do skrecania w miejscu czy tez ogolnie do cofania.
    Wykorzystam uklad LMD18200 a wlasciwie dwa - po jednym na silnik.
    Ma te zalete, ze w moim przypadku potrzebuje tylko jednego pinu uC do sterowania silnikiem. PWM z uC na 50% - silnik stop. Mniej niz 50% jazda do tylu. Powyzej 50% jazda do przodu.
  • REKLAMA
  • #4 10853626
    Konto nie istnieje
    Poziom 1  
  • #5 10854345
    gray77
    Poziom 12  
    atom1477 napisał:
    Nie trzeba żadnych warunków:
    PWM1 = Gaz + Kierunek
    PWM2 = Gaz - kierunek
    ...

    Hmm, nie bardzo moge zalapac.
    Teraz mam tak, ze;
    - pozycje neutralne daja mi odczyt 150.
    - gaz na max do przodu daje mi 200 (do tylu jest 100) czyli przedzial 50 jednostek na kierunek
    - kolko skrecania daje mi: lewo 125, poprzez neutralne 150 az do 175 max w prawo

    Nie za bardzo wiem jak to wszystko poprzeliczac. Chyba chodzi o cos takiego jak mixer delta???

    Ciezka sprawa.
  • REKLAMA
  • #6 10855293
    kriss68
    Poziom 20  
    Tak jak kolega wyżej pisał:
    Masz dwie zmienne ze znakiem (w bascomie to chyba integer) kierunek oraz gaz.
    Do pierwszej przypisujesz wartość kierunku a do drugiej przyśpieszenia. Od obu odejmujesz 150. Kierunek mnożysz przez 2. Wartość pwm dla lewego silnika to gaz-kierunek+127 a dla prawego gaz+kierunek+127. Nie wyciągniesz tak maksymalnej prędkości chyba, że jeszcze przeskalujesz wartość wyjściową.
  • #7 10856107
    gray77
    Poziom 12  
    Ok. Dzieki chlopaki za podpowiedz. To mnie naprowadzilo na konkretny cel i pozwolilo na wyrzucenie z programu wszystkich select case, przez co program stal sie bardziej przejrzysty i co najwazniejsze mniejszy. Musze tylko jeszcze poprzeliczac jak uzyskac pelne sterowanie, jako ze teraz PWMy dochodza do 40 i 230 i nie ma pelnej mocy.
    Testy robie na malych silniczkach z CD-ROMu. Ciekaw jestem jak sie zachowaja duze silniki - testy juz niedlugo.

    Pytanie jeszcze jedno. Jesli nadajnik RC jest wlaczony, odczyty sa stabilne, jesli skacza to o max 2-3 jednostki.
    Jak nadajnik jest wylaczony, zaczyna sie wariactwo w pelnej skali. Jak tego uniknac? Jak wykryc, ze nie docieraja prawidlowe sygnaly do odbiornika (nadajnik wylaczony lub utrata zasiegu)? Musze zapobiec ewentualnej wariacji platformy.
  • REKLAMA
  • #8 10856229
    Konto nie istnieje
    Poziom 1  
  • #9 10856321
    kriss68
    Poziom 20  
    Możesz sprawdzać czy różnica (wartość bezwzględna) poprzedniego i aktualnego położenia nie przekracza jakiejś tam wartości i jeśli przekroczy to znaczy, że wyjście odbiornika szaleje ;] Wtedy wyłączasz silniki i cyklicznie sprawdzasz czy już jest ok.
REKLAMA