Skocz do zawartości

Pierwszy robot jeżdzący - jakie zasilanie silników DC


cezarg1410

Pomocna odpowiedź

Zrobiłem jeszcze test w którym ręcznie zmieniam stan na pinach kierunku poprzez `digitalWrite` a potem wywolanie `move()`.

 

Jest lepiej bo robot potrafi zareagować odpowiednio na kierunek ale zdarza się, że jakby `move` zaczyna się zanim zmieni się stan na pinie i robot jedzie w kosmos.

Link do komentarza
Share on other sites

A tak z ciekawości: jak wywalisz bt i zrobisz prostą pętlę (sekunda do przodu, sekunda do tylu i tak dalej) będzie działać? Mój ostatni projekt bazuje na tej bibliotece i silniki chodzą jak w zegarku...

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Wiesz co te drivery specjalnie nie mają znaczenia.

Obecnie wyjąłem ESP całkowicie na stół i mierze napięcie bezpośrednio na goldpinach odpowiedzialnych za kierunek.

I konfiguracja dla jednego silnika ładnie skacze między 0 a 3.3v.

Dla drugiego nie - niezależnie od wyboru pinu.

Link do komentarza
Share on other sites

(edytowany)

Konfiguracja początkowa: lewe motory na pin 14 a prawe na 27. Prawe działają poprawnie, a lewe nie.

Zmiana: prawe motory na pin 14, a lewe na 27. Tym razem lewe działają poprawnie, a prawe nie.

 

Można by więc pomyśleć że coś jest nie tak z pinem 14. Tak więc wyrzucam część kodu operującą na pinie 27. Wtedy 14 działa poprawnie 🙂Mózg rozwalony. Nie wiem co tu się odbywa.

Edytowano przez cezarg1410
Link do komentarza
Share on other sites

Myślę, że jest błąd w kodzie, ale nie w moim. Taki test właśnie wykonałem.

  if (leftStepper && rightStepper) {
    leftStepper->setDirectionPin(14);
    leftStepper->setEnablePin(ENABLE_PIN);
    leftStepper->setAutoEnable(true);
    leftStepper->setSpeedInHz(1000);       // 500 steps/s
    leftStepper->setAcceleration(500);    // 100 steps/s²

    rightStepper->setDirectionPin(27);
    rightStepper->setEnablePin(ENABLE_PIN);
    rightStepper->setAutoEnable(true);
    rightStepper->setSpeedInHz(1000);       // 500 steps/s
    rightStepper->setAcceleration(500);    // 100 steps/s²

    Serial.println("Direction pins: ");
    Serial.println(leftStepper->getDirectionPin());
    Serial.println(rightStepper->getDirectionPin());
  }

 

Czyli inicjalizacja silników. Prawy otrzymuje jako directionPin 27 a lewy 14. A na końcu wypisuję to co się ustawiło do portu szeregowego. A tutaj wynik:

Direction pins: 
27
27

😮 😮 😮 😮

Link do komentarza
Share on other sites

15 minut temu, cezarg1410 napisał:

Czyli inicjalizacja silników. Prawy otrzymuje jako directionPin 27 a lewy 14. A na końcu wypisuję to co się ustawiło do portu szeregowego. A tutaj wynik:

Sprawdź adres leftStepper i rightStepper czy są identyczne, bo obstawiam, że tak...

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

W taki sposób?

    Serial.println("Direction pins: ");
    Serial.println((long)&leftStepper);
    Serial.println((long)&rightStepper);
    Serial.println(leftStepper->getDirectionPin());
    Serial.println(rightStepper->getDirectionPin());

Bo wynik jest:
 

Direction pins: 
1073490016
1073489952
27
27

 

Link do komentarza
Share on other sites

mam TO!!!!

Problemem był sposób inicjalizacji silników. Nie znalazłem na ten temat nic w dokumentacji, ale powyższy kod

FastAccelStepperEngine leftEngine = FastAccelStepperEngine();
FastAccelStepper *leftStepper = NULL;

FastAccelStepperEngine rightEngine = FastAccelStepperEngine();
FastAccelStepper *rightStepper = NULL;

był błędny.

Należy stworzyć jeden Engine i dwa Steppery do niego.

Np. w taki sposób:

FastAccelStepperEngine engine = FastAccelStepperEngine();
FastAccelStepper *leftStepper = NULL;
FastAccelStepper *rightStepper = NULL;

void setup() {
  SerialBT.begin("ESP32test"); //Bluetooth device name

  engine.init();
  leftStepper = engine.stepperConnectToPin(STEP_LEFT_PIN);
  rightStepper = engine.stepperConnectToPin(STEP_RIGHT_PIN);

  if (leftStepper && rightStepper) {
    leftStepper->setEnablePin(ENABLE_PIN);
    leftStepper->setAutoEnable(true);
    leftStepper->setSpeedInHz(1000);
    leftStepper->setAcceleration(500);
    leftStepper->setDirectionPin(DIR_LEFT_PIN);

    rightStepper->setEnablePin(ENABLE_PIN);
    rightStepper->setAutoEnable(true);
    rightStepper->setSpeedInHz(1000);
    rightStepper->setAcceleration(500);
    rightStepper->setDirectionPin(DIR_RIGHT_PIN);
  }
}

Teraz wszystko ładnie działa.

Dziękuję wszystkim za pomoc.

Link do komentarza
Share on other sites

Jeszcze pytanko co do zasilania.

Początkowo planowałem zasilić to pakietem 4x18650. Mam już koszyk zamontowany tylko nie kupiłem baterii. Powinno to dać jakieś 14v j sensowną pracę silników.

Ale tak sobie myślę. Co gdyby kupić baterie do wkrętarki Yato 18v (bo mam do niej ładowarkę)? Nie wiem tylko czy po zdjęciu z niej obudowy będzie się dało to sensownie ładować ale zawsze to nieco więcej napięcia. 

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.