• Welcome to LusoRobótica - Robótica em Português.
 

Motores de Passo

Started by fabio.sales, 02 de June de 2011, 13:36

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

fabio.sales

Bom dia pessoal sou novo aq no forum, então me ajudem a resolver essa.
Minha intenção é controlar 2 motores de passo simultaneamente, pois usarei em um robo controlado por controle remoto(TV).
Uso a biblioteca #include <Stepper.h> padrão do arduino, mas o problema é que ela só controla um motor por vez e não os dois ao mesmo tempo. ALGUEM TEM A SOLUÇÂO?!!!


fabio.sales

Muito bom essa biblioteca vlw.
Mais uma duvida. quais funções nessa biblioteca servem para controlar a direção e colocar para rodar os motores? Grato e desculpe minha leiguisse.

xiserre

da uma vista de olhos.. se es demasiado leigo para veres quais as funcoes, nao vejo como consigas fazer alguma coisa com elas..

fabio.sales

as funções eu consigo ver só não saquei ainda onde é que ele da o comando da direção e se é o motor1.run() que da o comando de rodar o motor.
Minha duvida agora é como especificar a direção e o andar.

senso

Avr fanboy

xiserre

ao que parece, basta meter um numero negativo e ele anda noutra direcçao

fabio.sales

O suficiente! Dei uma estuda e estou usando esse codigo exemplo da propria biblioteca.
Mas o motor apenas vibra! >:(


#include <AccelStepper.h>

// Define some steppers and the pins the will use
AccelStepper stepper1; // Defaults to 4 pins on 2, 3, 4, 5
AccelStepper stepper2(4, 6, 7, 8, 9);
AccelStepper stepper3(2, 10, 11);

void setup()
{ 
    stepper1.setMaxSpeed(200.0);
    stepper1.setAcceleration(100.0);
    stepper1.moveTo(24);
   
    stepper2.setMaxSpeed(300.0);
    stepper2.setAcceleration(100.0);
    stepper2.moveTo(1000000);
   
    stepper3.setMaxSpeed(300.0);
    stepper3.setAcceleration(100.0);
    stepper3.moveTo(1000000);
}

void loop()
{
    // Change direction at the limits
    if (stepper1.distanceToGo() == 0)
   stepper1.moveTo(-stepper1.currentPosition());
    stepper1.run();
    stepper2.run();
    stepper3.run();
}

xiserre

e tens os pinos ligados pela ordem certa?
uma vista rapida pelo teu codigo e tens as declaraçoes dos motores mal feitas

senso

Pinos repetidos para diferentes motores e tal, é normal que não funcionem bem..
Estás a ligar os motores directo no Arduino?
Avr fanboy

fabio.sales

ok!Já resolvi o primeiro problema que era rodar o motor. A questão da ordem estava erra mesmo, pois, na biblioteca padrão do arduino a ordem é uma e nessa biblioteca a ordem é outra. responde a questão do amigo que disse que o codigo estava errado na declaração(esse codigo é o codigo exemplo da biblioteca #include <AccelStepper.h>).
Agora o problema esta na aceleração que eu não consigo mudar a velocidade, coloco todos os valores mas continua no mesmo ritimo. :(

senso

Ele pede mesmo floats na aceleração e maxSpeed?
Avr fanboy

fabio.sales

Não! estou usando o CI (ULN 2803) mas não estou repetindo os pinos no codigo não o primeiro valor é para definir quantos fios tem o motor( ou passos).


senso

AccelStepper stepper1; // Defaults to 4 pins on 2, 3, 4, 5
AccelStepper stepper2(4, 6, 7, 8, 9);
AccelStepper stepper3(2, 10, 11);

O motor 1 e 3 partilham o pino 2, o motor 1 e 2 partilham o pino 4, logo tem sobre-posição.
Avr fanboy