Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Computer ControlsComputer Controls
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Regulator obrotów ESC - jak sterować?

14 Lut 2013 09:34 12303 18
  • Poziom 10  
    Witam,

    trochę poczytałem o regulatorach. Natomiast nie dowiedziałem się jednej kwestii.
    Przykładowo mamy taki regulator:

    http://abc-rc.pl/p/146/600/-esc-h20a-regulato...-silnikow-bezszczotkowych-regulatory-esc.html

    podłączam silnik z jednej strony, z drugiej baterie. Jakoś jeszcze trzeba tym sterować. Są wyprowadzone 3 kable, na 2 żyłach jest zasilanie do odbiornika, 1 żyła odpowiada za sterowanie obrotami z tego co wiem.

    czy "odbiorniki" sterują tymi obrotami za pomocą PWMa? a jeżeli nie to w jaki sposób te obroty są wysterowane? na stronie sklepu w opisie produktu jest pozycja: PWM: brak

    bardzo proszę o pomoc i objaśnienie jak to działa..
  • Computer ControlsComputer Controls
  • Pomocny post
    Moderator Robotyka
    Sterowanie jest sygnałem PWM/PPM - standard w komunikacji podzespołów modelarskich RC.
    Reszta tak jak napisałeś.
  • Poziom 10  
    czyli jak podepnę kabelek odpowiedzialny za sterowanie obrotami pod RaspberryPi na odpowiednio skonfigurowany port GPIO, na którym sterowałem serwomechanizmem za pomocą PWMa to wszystko będzie hulało? :)

    żyła + i - zostanie w tym przypadku wolna. Bo sam regulator jest zasilany z akumulatora. A Raspberry ma własne zasilanie.
  • Poziom 10  
    dziękuje za podpowiedź, bo pewnie bym się męczył, że nie działa

    Czy w szkole zapomnieli wspomnieć, że w języku polskim zdania zaczynamy dużą literą, a kończymy kropką?
    Jeżeli nie zaczniesz zwracać uwagi na pisownię, otrzymasz ostrzeżenie.
  • Computer ControlsComputer Controls
  • Poziom 11  
    Witam:)
    Mamy pytanie ponieważ potrzebuję zakupić regulator do silnika bezszczotkowego, przykładowo regulator Turnigy Plush, parametry nie są tutaj istotne. Przeczytałem tutaj że regulator dwa kable podpina się w zasilanie a trzeci w PWM. I yu jest moje pytanie: Jak podłączyć regulator w PWM jak oprócz zasilania z regulatora wychodzą jeszcze 3 czasem 2 cienkie kable.
  • Moderator Robotyka
    Dwa grube - zasilanie z pakietu głównego, odpowiednie dla silnika.
    Trzy grube - wyjście zasilania silnika.
    trzy cienkie - Sygnał sterujący regulatorem (biały/żółty/pomarańczowy) + zasilanie odbiornika z BEC regulatora (czerwony i czarny/brązowy).
    Czerwony to oczywiście biegun dodatni.
  • Poziom 11  
    Czyli cienki czarny i czerwony pod zasilanie np 5v z Arduino a cienki biały pod PWM?
  • Poziom 23  
    Czerwonego nie podpinaj bo na nim już jest napięcie 5V. Podłącz tylko czarny (masa) i biały (sygnał).
  • Poziom 11  
    Witam! Zakupiłem regulator ESC HobbyKing podłączyłem tak jak wcześniej mowa. Biały od sterowania pod pin z arduino. Żeby nie było poczytałem wcześniej na ten temat, niestety na polskich stornach mało informacji na ten temat. Problem polega na tym że silnik dziwnie pika kilka razy. Wiem ze jeżeli będą trzy szybkie sygnały to silnik gotowy do rozruchu. Wgrywam kilka razy ten sam program i czasem silnik ruszy a czasem nie, miał ktoś styczność z takim problemem? Znalazłem kilka skryptów na ten temat ale żaden nie zadziałał pod Arduino. Szukam dalej ale mam nadzieje ze ktoś mi pomoże:)
    Pozdrawiam
  • Poziom 23  
    Zanim włączysz regulator to musisz dać sygnał na minimum. Inaczej silnik nie ruszy, to takie zabezpieczenie przed niekontrolowanym startem silnika. Poczytaj też o programowaniu regulatora.
  • Poziom 11  
    Tak wiem ustawiam w setup void ze ma być zero a potem powoli wzrasta sygnał. Ciężko znaleźć informacje na temat temat.
  • Poziom 23  
    Niestety nie znam tego programu. Sygnał minimum to impuls o długości 1ms a maksimum 2ms, powtarzany co ok. 20ms. Czy ten program generuje impulsy w takim przedziale?
  • Poziom 11  
    Regulator obrotów ESC - jak sterować?

    Powyżej jest tabelka ze starowaniem PWM. Jak widać można zmienić szerokość, nie wiem tylko jednej rzeczy jak się ma do czasu ta szerokość bo jak wpisze połowę wartości czyli 127 to nie wiem z ilu jest ta połowa, znając to mógłbym wpisać odpowiednią wartość która oznaczała by 1ms zrobić pętle z delay'em co 20ms a potem zwiększyć z 1ms do 2ms, dobrze myśle?

    Dodano po 11 [minuty]:

    Problem polega jeszcze na tym że uruchamiam różne programy a silnik niekoniecznie chce ruszyć oddaje różne odgłosy ale nie wiem o co chodzi. Jak pytałem w innych tematach to oczywiście wszyscy pisali ze trzeba poszukać w google na temat PWM. Lecz poszukałem znalazłem nawet inne kody które działają podobno i nic.

    Dodano po 1 [godziny] 30 [minuty]:

    Napisałem taki program :

    int b=1;
    void setup()
    {
    pinMode(9,OUTPUT);
    pinMode(7,INPUT);
    for (int a=1;a<50;a++)
    {
    digitalWrite(9,0);
    for (int i=1;i<100;i++)
    {
    digitalWrite(9,HIGH);
    delay(1);
    digitalWrite(9,LOW);
    delay(1);
    }
    }
    }


    void loop()
    {

    int pwm=255 ;
    for (int a=1;a<50;a++)
    {
    digitalWrite(9,0);
    for (int i=1;i<100;i++)
    {
    digitalWrite(9,HIGH);
    delay(1);
    digitalWrite(9,LOW);
    delay(1);

    digitalWrite(9,0);
    for (int i=1; i<10000; i++)
    {
    digitalWrite(9, pwm);
    delay(2);
    digitalWrite(9, LOW);
    delay(20);
    }
    }
    }

    }


    Program był napisany metodą prób i błędów, wystarczy zmienić wartość a w void loopie i już nie działa (np. zmienic na 2, czasem działa na 10 a czasem nie). Jak widac jest sterownie przez pwm ale jak jest 10 to kręci się tak samo jak przy 255

    Dodano po 1 [minuty]:

    Bardzo by mi ułatwiło jakbym wiedział co znaczą sygnały dźwiękowe wydawane przez silnik
  • Poziom 22  
    Zamiast regulatora podłącz serwo, a jeszcze lepiej oscyloskop i będziesz wiedział czy program działa.
    Na temat sygnału wejściowego do regulatora (serwa) wszystko napisał miroskop w #13 i #11.
    Nie znam arduino, ale z ciekawości zajrzałem doLink i Twój program to delikatnie mówiąc jakiś niewypał.
    O tutaj masz Servo library.
  • Poziom 11  
    Pod twoim linkiem znajdują się tylko polecenia i funkcje więc nie wiem jak na podstawie tego mogłeś wywnioskować że program jest lipny. Mój program był pisany metodą prób i błędów tak żeby tylko zastartować silnik i jestem świadomy że jest on daleki od ideałów. Jeżeli chodzi o servo to jest wiele programów opartych na bibliotece servo ale żaden nie działa i z żadnego wynika to że najpierw jest podawany sygnał 1ms a potem 2ms.
  • Poziom 22  
    Regulator wymaga takiego samego sygnału sterującego jak serwo modelarskie.Link
    Wątpię aby biblioteka Servo library podana na stronie Arduino nie działała,
    ale kto wie? Tutaj przykładowy program do sterowania serwem za pomocą potencjometrulink.
    Piszesz programy przy pomocy prób i błędów? :D
  • Poziom 23  
    A kto pisał, że na serwo ma być wysłany najpierw sygnał 1ms a potem 2ms? Dla serwa "normalnym" sygnałem jest 1,5ms czyli "Neutrum". Pełny ruch serwa zapewnia zmiana szerokości impulsu od 1ms do 2ms. Impuls wysyłany co 20ms. Z regulatorem jest trochę inna sprawa dlatego miałeś przeczytać jego instrukcję. Jeżeli na starcie podasz sygnał maksymalny (2ms) to regulator przechodzi w tryb programowania, o czym informuje stosowną melodyjką, i jeżeli potem zaczniesz przypadkowo zmieniać wartości impulsu, to możesz niechcący zmienić ustawienia regulatora, np. wyłączyć rotację, włączyć hamulec itd. Z kolei jak impuls będzie miał wartość inną niż minimum lub maximum to regulator wyśle sygnał ostrzegawczy, wtedy trzeba "zjechać" na minimum. Najlepiej kup sobie jakieś tanie serwo i na nim testuj program bo z regulatorem to zły pomysł. Możesz też zrobić sobie "serwotester" na NE555 i na nim zacząć eksperymenty.
  • Poziom 11  
    Mam taki program:
    #include <Servo.h>

    Servo myservo;

    void arm(){
    // arm the speed controller, modify as necessary for your ESC
    setSpeed(0);
    delay(1000); //delay 1 second, some speed controllers may need longer
    }

    void setSpeed(int speed){
    // speed is from 0 to 100 where 0 is off and 100 is maximum speed
    //the following maps speed values of 0-100 to angles from 0-180,
    // some speed controllers may need different values, see the ESC instructions
    int angle = map(speed, 0, 100, 0, 180);
    myservo.write(angle);
    }

    void setup()
    {
    myservo.attach(9);
    arm();
    }


    void loop()
    {
    int speed;

    // sweep up from 0 to to maximum speed in 20 seconds
    for(speed = 0; speed <=50; speed += 5) {
    setSpeed(speed);
    delay(1000);

    }

    // sweep back down to 0 speed.
    for(speed = 95; speed > 0; speed -= 5) {
    setSpeed(speed);
    delay(1000);
    }
    setSpeed(0);
    delay(5000); // stop the motor for 5 seconds
    }


    silnik rozpędza się i hamuje ale nie wiem jak zrobić aby silnik kręcił się za stałą prędkością przez określony czas. Czytałem wiele na temat serwomechanizmów, wiem jak go ustawić w określonej pozycji ale nie mam pojęcia jak to interpretuje regulator ESC.