Skocz do zawartości

DRV8835 - sterowanie silnikami


matxt411

Pomocna odpowiedź

Witam,
pracuję nad stworzeniem autonomicznego pojazdu, bazującego na Raspberry Pi i Pythonie. Do sterowania silnikami wykorzystuję układ DRV8835 od Pololu (dedykowany układ do RPi), ma on nawet stworzoną własną bibliotekę do obsługi. Testowałem jego działanie na przykładowym programie dostarczonym wraz z biblioteką i działa, tylko nie mogę znaleźć nigdzie jakiegoś projektu, informacji jak przełożyć to na jakieś konkretne zastosowanie. Poniżej wstawiam kod który był dostarczony z biblioteką.

from __future__ import print_function
import time
from pololu_drv8835_rpi import motors, MAX_SPEED
# Set up sequences of motor speeds.
test_forward_speeds = list(range(0, MAX_SPEED, 1)) + \ 
[MAX_SPEED] * 200 + list(range(MAX_SPEED, 0, -1)) + [0]  
test_reverse_speeds = list(range(0, -MAX_SPEED, -1)) + \
  [-MAX_SPEED] * 200 + list(range(-MAX_SPEED, 0, 1)) + [0]  
try:
    motors.setSpeeds(0, 0)
    print("Motor 1 forward")
    for s in test_forward_speeds:
        motors.motor1.setSpeed(s)
        time.sleep(0.005)
    print("Motor 1 reverse")
    for s in test_reverse_speeds:
        motors.motor1.setSpeed(s)
        time.sleep(0.005)
    print("Motor 2 forward")
    for s in test_forward_speeds:
        motors.motor2.setSpeed(s)
        time.sleep(0.005)
    print("Motor 2 reverse")
    for s in test_reverse_speeds:
        motors.motor2.setSpeed(s)
        time.sleep(0.005)
finally:
  # Stop the motors, even if there is an exception
  # or the user presses Ctrl+C to kill the process.
  motors.setSpeeds(0, 0)

W moim przypadku mam do pobrania z drugiego pliku wartości "angle" i "distance", muszę wprowadzić dodatkowo dwie stałe "dis=.75" oraz "ang=1" .

Z tego wszystkiego muszę wyprowadzić sterowanie silników aby działały według równania które jest zamieszczone poniżej. Mógłby mi ktoś pomóc, poradzić, powiedzieć, naprowadzić mnie jak to zdefiniować na mim konkretnym przykładzie?

from plik1 import angle, distance
  dis=.75
  ang=1
  rownanie=((distance*dis)+(angle*ang))

 

Link do komentarza
Share on other sites

@matxt411 witam na forum 🙂 A na czym dokładnie utknąłeś? To problem natury programistycznej, czyli nie wiesz jak to zrobić w Pythonie, czy po prostu ogólnie nie wiesz jak się za to zabrać?

Link do komentarza
Share on other sites

Mam problem natury programistycznej, jest to mój pierwszy taki projekt, na zdjęciu widać jak to aktualnie wygląda. Jest to LF z kamerą, obsługiwanie obrazu w Pythonie mam opracowane, utknąłem właśnie na połączeniu tych dwóch części, przetwarzania obrazu i sterowaniu silnikami. Próbowałem znaleźć rozwiązanie na podstawie tego przykładowego programu, który na moim robocie działa bo silniki się obracają, mniej więcej strukturę tego programu rozumiem ale nie wiem jak go zmienić, żebym mógł wykorzystać moje dane. Stąd też próbuję znaleźć pomoc tutaj, może  już ktoś się zajmował czymś takim lub przynajmniej się orientuje jak to mniej więcej powinno wyglądać i mógłby mnie nakierować na jakieś rozwiązanie.

143649770_231370555257070_8141688649626932192_n.thumb.jpg.ec79b7e7cd850520c5bf8338ce2f4b84.jpg

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.