Segway - robot balansujący

Masz problem z Arduino? Tutaj możesz szukać pomocy.
ODPOWIEDZ
newArduino
Młodszy majsterkowicz
Posty: 28
Rejestracja: 11 wrz 2014, 14:37

Segway - robot balansujący

Post autor: newArduino » 13 gru 2016, 01:51

Hej,
robił ktoś z Was kiedyś pojazd na dwóch kołach który utrzymuje równowagę?
Ja właśnie jestem w trakcie tworzenia, jak się uda mogę całość opisać na forum, ale póki co mam kilka problemów.
Używam arduino, mpu6050, dwóch silniczków DC.

Sprawy, które pozostały mi do rozwiązania:
Czy mogą być użyte silniczki DC? - większość projektów na YT ma BLDC.
Mój pojazd utrzymuje mniej więcej przez kilka sekund równowagę, ale bardzo niestabilną. Wystarczy że na chwile ja straci albo lekko go dotknę już ja traci. Wygląda to w ten sposób, że jeśli lekko odchyli się od pionu, wystarczy o 5/ 10 stopni to już nie upada, owszem lekko to opóźnia, ale i tak zawsze upada - nie jest w stanie powstać z tak małego wychylenia. Wydaje mi się, że nie jest to problem algorytmu, ponieważ w momencie lekkiego przechyłu silniczki działają już z maksymalna mocą, ale nie dają rady - Jakiś pomysł jak na to zaradzić?

Wiem, że piszę bardzo chaotycznie, ale jakby ktoś miał jakiś pomysł, albo radę to będę bardzo wdzięczny,

Pozdrawiam

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


ElectronicRide
Majsterkowicz
Posty: 58
Rejestracja: 17 cze 2016, 14:50

Re: Segway - robot balansujący

Post autor: ElectronicRide » 14 gru 2016, 11:15

Witam.
Proszę więcej szczegółów typu jakie silniczki? czy z przekładnią? a jak tak to jaką? Czym zasilane? Ile waży całość robota? Jaki mostek H? I sam kod. Jeżeli mówisz, że kod jest w porządku no to silniczki nie wyrabiają, jak już to napisałeś. Należy zastosować mocniejsze, lub bardziej wydajne motory. Lecz może dla świętego spokoju daj kod, czy aby na pewno wszystko jest ok. Nie wiem co by mogło być inną przyczyną, może słabe wypełnienie PWM, trudno jednoznacznie odpowiedzieć, dlatego czekam na więcej szczegółów konstrukcji.
Pozdrawiam.
newArduino
Młodszy majsterkowicz
Posty: 28
Rejestracja: 11 wrz 2014, 14:37

Re: Segway - robot balansujący

Post autor: newArduino » 14 gru 2016, 19:33

Cześć, co do silniczków to zauważyłem że poprzednie były za słabe, teraz zamontowałem lepsze, z przekładnią. Niestety nie wiem jaką, bo wygrzebałem je z pudełka i nie pamiętam już.

Teraz sytuacja jest taka, że robot wpada w mocne oscylacje, nie może się wyprostować. Mam wrażenie, że nie ejst to jednak jak by się mogło wydawać związane z błędnymi nastawami PIDa tylko z tym ze silniczki dla zakresu pwm 0-255 zaczynają się kręcić od 70, natomiast jak już zaczną to od razu bardzo szybko i dlatego robot od razu mocno się wychyla - próbuje to kompensować i wychyla się równie mocno w przeciwną stronę.

Wklejam kod na wszelki wypadek:

Kod: Zaznacz cały

void loop()
{
  Vector acc = mpu.readNormalizeAccel();
  Vector gyr = mpu.readNormalizeGyro();
  accPitch = -(atan2(acc.XAxis, sqrt(acc.YAxis*acc.YAxis + acc.ZAxis*acc.ZAxis))*180.0)/M_PI;
  float A = 0.98;
  
  angle += gyr.YAxis * 0.001; //6.07968E-5
  angle = angle * A + accPitch * (1 - A); 

  float dAngle = 3 * (angle) - 4 * lastAngle + 1 *lastLastAngle; // 3 -4 1
  lastLastAngle = lastAngle;
  lastAngle = angle;  

  float sum = 1  * (angle +1.8) + 10 * dAngle ; //2 3     2 2.1
  
  float Action;
 
  if (sum > 2) {
    Action = scaleValue(sum, 0, 150, 65, 255);
  } else if (sum < -2) {
    Action = scaleValue(-sum, 0, 150, 65, 255);  
    Action *= -1;
  } else {
    Action = 0;
  }

    if (Action > 0) {
      forward(Action);
    }
    else if (Action < 0) {
      backward(Action);
    }
    else {
      nothing();
    }
    }
Awatar użytkownika
Zbycho_GL
Majsterkowicz
Posty: 51
Rejestracja: 11 kwie 2016, 19:54
Lokalizacja: Gliwice

Re: Segway - robot balansujący

Post autor: Zbycho_GL » 15 gru 2016, 21:23

A możesz jeszcze napisać coś nt. Konstrukcji ?
Może jakaś fotka ?
newArduino
Młodszy majsterkowicz
Posty: 28
Rejestracja: 11 wrz 2014, 14:37

Re: Segway - robot balansujący

Post autor: newArduino » 15 gru 2016, 23:12

Jasne, już wrzucam, chociaż nie wiem czy to pomoże :)
Obrazek
newArduino
Młodszy majsterkowicz
Posty: 28
Rejestracja: 11 wrz 2014, 14:37

Re: Segway - robot balansujący

Post autor: newArduino » 15 gru 2016, 23:13

konstrukcja prosta, do sklejki przymocowane silniczki, mpu na osi silników. Póki co wszystko prowizorycznie bo obudowa i pcb się drukują
Awatar użytkownika
Zbycho_GL
Majsterkowicz
Posty: 51
Rejestracja: 11 kwie 2016, 19:54
Lokalizacja: Gliwice

Re: Segway - robot balansujący

Post autor: Zbycho_GL » 18 gru 2016, 19:27

Obrazka niestety nie widać. Spróbuj raz jeszcze
newArduino
Młodszy majsterkowicz
Posty: 28
Rejestracja: 11 wrz 2014, 14:37

Re: Segway - robot balansujący

Post autor: newArduino » 19 gru 2016, 13:11

15608583_1255412091189155_102834071_o.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Zbycho_GL
Majsterkowicz
Posty: 51
Rejestracja: 11 kwie 2016, 19:54
Lokalizacja: Gliwice

Re: Segway - robot balansujący

Post autor: Zbycho_GL » 21 gru 2016, 21:10

Czy próbowałeś umieścić baterie na samym dole ?
Na zdjęciu jej nie widać, a nisko położony środek ciężkości jest bardzo ważny przynajmniej podczas uruchamiania.
Zakładając że program jest ok, problem mogą stanowić silniczki dc: Z napędem bezpośrednim za słabe, z przekładnią za wolne.
Silniki bezszcztotkowe są i szybkie i mocne. Czy masz szansę zabudowa takie ?
Skąd jesteś ?
newArduino
Młodszy majsterkowicz
Posty: 28
Rejestracja: 11 wrz 2014, 14:37

Re: Segway - robot balansujący

Post autor: newArduino » 22 gru 2016, 00:20

Środek ciężkości niewiele zmienia, silniki mają ten fatalny próg od którego startują i wtedy jak już wystartują to kręcą się o wiele za szybko. Na BLDC albo krokowe nie ma szans bo mam 2 tygodnie na oddanie projektu i skończył się budżet ;)

Jedyne co to moge próbować ulepszyć to co mam
Poznań
Awatar użytkownika
Zbycho_GL
Majsterkowicz
Posty: 51
Rejestracja: 11 kwie 2016, 19:54
Lokalizacja: Gliwice

Re: Segway - robot balansujący

Post autor: Zbycho_GL » 23 gru 2016, 21:26

Nigdy nie budowałem takiego robota, jednak uważam, że nisko położony środek ciężkości (poniżej osi kół) będzie miał wpływ na większą bezwładność. Dzięki temu moment obrotowy napędu może być mniejszy. A może należy wyżej umieścić żyroskop ? Będzie szybciej reagował na zmiany położenia.
A czy znasz silniki krokowe z napędów dyskietek 5 1/4 " ?
Gabaryty mają duże, ale może by się sprawdziły ? No i są tanie, a czasem nawet darmowe ...
ODPOWIEDZ

Strony partnerskie: