collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Ontem às 14:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Controlador Motor de Passo  (Lida 20735 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #15 em: 17 de Abril de 2013, 13:48 »
Experimenta um periodo de 5 a 50 ms.

Se calhar não me expliquei bem. Subindo o tempo, isto é, aí para uns 600uS já dá os passos direitos. Se colocar em micro-step 1/16 consigo ir ate uns 300uS.

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: Controlador Motor de Passo
« Responder #16 em: 17 de Abril de 2013, 14:43 »
Então não há nada que saber, simplesmente a "potência" de passo que lhe estás a aplicar não é suficiente. Terias que subir a tensão para manter passos "curtos". Quando começas a "acelerar" um motor de passo para lá dos seus "limites", ele começa a perder passos e depois a ter um comportamento errático como andar uns passos para a frente e depois para trás, até chegar ao ponto em que já nem consegue fazer mexer o rotor, ficando só com uns tremeliques.

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #17 em: 17 de Abril de 2013, 14:57 »
Então não há nada que saber, simplesmente a "potência" de passo que lhe estás a aplicar não é suficiente. Terias que subir a tensão para manter passos "curtos". Quando começas a "acelerar" um motor de passo para lá dos seus "limites", ele começa a perder passos e depois a ter um comportamento errático como andar uns passos para a frente e depois para trás, até chegar ao ponto em que já nem consegue fazer mexer o rotor, ficando só com uns tremeliques.

Mas a minha duvida é que este motor https://www.sparkfun.com/datasheets/Robotics/StepperMotor.pdf com o controlador A4983 eu conseguia andar mais rapido que o mesmo motor com este controlador, por isso é que se calhar terá alguma coisa  aver com o controlador, nao?

StarRider

  • Visitante
Re: Controlador Motor de Passo
« Responder #18 em: 17 de Abril de 2013, 15:08 »
Boas,

Partindo do principio que esse TB6560 é _original_ (coisa que duvido) alem das características do mesmo tens que ter
em conta mais alguns factores para poderes calcular os RPMs máximos:
- Corrente máxima do motor e configurar o TB6560 de acordo.
- Angulo do step do motor.
- Modo de ligação das coils do motor (serie ou paralelo) uma vez que a impedância tem uma grande influencia na
velocidade com que o motor atinge o rendimento máximo.

Geralmente um stepper pode ir até ás 1250 RPMs, o que para um motor com 1.8º por step dá qualquer coisa como
uma frequência de +- 4Khz (multiplicado pelo numero de microsteps caso estejas nesse modo), por isso não esperes
conseguir um período abaixo dos  250uS, e isto claro que estiverem reunidas todas as condições ideais.

Outro factor MUITO importante é o modo como fazes o "ramp-up" do motor até ao maximo de RPMs, e essa curva de
aceleração depende de cada motor e da tensão que estas a usar, quanto maio a tensão de alimentação mais rapido
as RMPs sobem e mais longe podem ir.

Configuração ideal para o maximo de RMPs:
- 24v ou mesmo 46 volts
- Máximo de Amps possíveis para o motor (configuras o TB6560 para isso)
- Coils do motor em paralelo

ADENDUM: Quando enviei este post ainda não tinha visto que já tinhas colocado a datashet do motor, vou
escrever outro post tendo essa nova informação em conta.

Abraços,
PA
« Última modificação: 17 de Abril de 2013, 15:11 por StarRider »

StarRider

  • Visitante
Re: Controlador Motor de Passo
« Responder #19 em: 17 de Abril de 2013, 15:25 »
Boas novamente,

Volto a frisar que o TB6560 pode não ser original.

Dito isso, a primeira ideia que me vem à cabeça depois de olhar para a datasheet do motor é que o TB6560 é OVERKILL
para este motorzito ;)

E quando digo overkill é literalmente, pois no setting mínimo o TB6560 debita 0,5 Amps e esse motor só aguenta
até aos 280mA ... será que ainda não deitou fumo ? ;)

De qualquer forma, devias poder ir até ás 800 RPMs ... mas com uma fase de ramp-up, tenho por experiência que
o TB6560 é capaz de ir até ás 1200 RPMs com motores comuns.

Hum... cá para mim tens ai um TB6560  remarcado ... ou então estás a subir as RMPs muito rapidamente, experimenta
uma fase de aceleração com uma curva mais suave e em formato "S".

Abraços,
PA

« Última modificação: 17 de Abril de 2013, 15:31 por StarRider »

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #20 em: 17 de Abril de 2013, 15:31 »
Boas novamente,

Volto a frisar que o TB6560 pode não ser original.

Dito isso, a primeira ideia que me vem à cabeça depois de olhar para a datasheet do motor é que o TB6560 é OVERKILL
para este motorzito ;)

E quando digo overkill é literalmente, pois no setting mínimo o TB6560 debita 0,5 Amps e esse motor só aguenta
até aos 280mA ... será que ainda não deitou fumo ? ;)

De qualquer forma, devias poder ir até ás 800 RPMs ... mas com uma fase de ramp-up, tenho por experiência que
o TB6560 é capaz de 1000 RPMs.

Hum... cá para mim tens ai um TB6560  remarcado ... ou então estás a subir as RMPs muito rapidamente, experimenta
uma fase de aceleração com uma curva mais suave e em formato "S".

Abraços,
PA

uppss esse motor que foste ver a datasheet foi so para testes mas foi com ele que reparei que com o A4983 conseguia colocar o motor andar mais rapido que com o controlador actual, agora não posso fazer mais testes com o A4983 pois ao tentar colocar o novo motor andar só mesmo para testar se dava uns passinhos ele queimou lool  O motor que estou a usar agora, e a causa de ter comprado o TB6560 é este:

modelo                           rated current (A)   phase resistance (ohm)   phase inductance (mH)
57BYGH56-401A                          2,8                                      0,83                                       2,2

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #21 em: 17 de Abril de 2013, 15:32 »
Vou então tentar com 24V, não é que necessite tambem de muita mais velocidade pois a calha tem só 2metros, vou fazer alguns testes e medir os passos e velocidade com rigor.

StarRider

  • Visitante
Re: Controlador Motor de Passo
« Responder #22 em: 17 de Abril de 2013, 15:59 »
Boas,

Configura o TB6560:
-  2.5 Amps (SW1=on, SW2=on, SW3=off)
-  100 torque (SW4-1=off, SW4-2=off)
-  medium decay (SW4-5=off, SW4-6=onf)

E não te esqueças de ter uma rotina de aceleração ... é muito importante e por vezes basta ajustar o numero de passos
e o delay entre cada passo na aceleração para ser possível atingir os tais > 100 RPMs.

Abraços,
PA

 

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #23 em: 17 de Abril de 2013, 19:58 »
Boas,

Configura o TB6560:
-  2.5 Amps (SW1=on, SW2=on, SW3=off)
-  100 torque (SW4-1=off, SW4-2=off)
-  medium decay (SW4-5=off, SW4-6=onf)

E não te esqueças de ter uma rotina de aceleração ... é muito importante e por vezes basta ajustar o numero de passos
e o delay entre cada passo na aceleração para ser possível atingir os tais > 100 RPMs.

Abraços,
PA

Amanha à noite acho que já tenho hipoteses de testar isso e partilhar os resultados :)

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #24 em: 21 de Abril de 2013, 01:01 »
Testei o que disseste, a alteração do decay não mostrou resultados consistentes mas regra geral consegui ir um pouco mais longe no valor do time usado no código abaixo, isto é, um valor mais baixo.

O que realmente faz muito diferença, é utilizar uma rotina de aceleração. Consegui ir até o valor de 300us por ciclo. Tenho que medir com o logic analyser os reais valores dos passos, pois pelas minhas contas: 300(us/passos)*200(passos)=60000us
60(s)/0.06(s)=1000RPM tenho mesmo que medir que isto deve entre muda estado de pin, erros nos delays etc, o valor de 300us deve subir um bocado!

Código usado nos testes, logo não está o código mais limpo como era supsoto lol):
Código: [Seleccione]
int clk = 3;
int dir = 2;
int ena = 4;

int start=1000;
int limit=150;
int stepV=3;

void setup(){
  pinMode(clk,1);
  pinMode(dir,1);
  pinMode(ena,1);
 
  PORTD |= bit(ena);
  //PORTD |= bit(dir);
  //PORTD &= ~ bit(dir);
 
}

void loop(){
 
  PORTD &= ~ bit(dir);
  int time=start;
  for(int i=0;i<4000;i++){
    PORTD |= bit(clk);
    delayMicroseconds(time);
    PORTD &= ~ (bit(clk));
    delayMicroseconds(time);
    if(time>limit){
      time-=stepV;
    }
  }
  for(int i=0;i<500;i++){
    PORTD |= bit(clk);
    delayMicroseconds(time);
    PORTD &= ~ (bit(clk));
    delayMicroseconds(time);
    time++;
  }
 
  PORTD |= bit(dir);
  time=start;
  for(int i=0;i<4000;i++){
    PORTD |= bit(clk);
    delayMicroseconds(time);
    PORTD &= ~ (bit(clk));
    delayMicroseconds(time);
    if(time>limit){
      time-=stepV;
    }
  }
  for(int i=0;i<500;i++){
    PORTD |= bit(clk);
    delayMicroseconds(time);
    PORTD &= ~ (bit(clk));
    delayMicroseconds(time);
    time++;
  }
 
  /*int time=1000;
  for(int i=0;i<26;i++){
    PORTD |= bit(clk);
    delayMicroseconds(time);
    PORTD &= ~ (bit(clk));
    delayMicroseconds(time);
    time=-25;
  }
 
  for(int i=0;i<374;i++){
    PORTD |= bit(clk);
    delayMicroseconds(350);
    PORTD &= ~ (bit(clk));
    delayMicroseconds(350);
  }*/
 
  //while(1){};
}

StarRider

  • Visitante
Re: Controlador Motor de Passo
« Responder #25 em: 21 de Abril de 2013, 03:15 »
Boas,

A única forma de teres uma rampa de aceleração constante é usando um timer independente,  pois os delays dentro de
um loop acabam por introduzir uma segunda harmónica na aceleração.

A implementação mais comum usa 2 timers,  o primeiro é os "steps-per-second" (SPS) que é usado para gerar um
intervalo certo para a taxa de steps por segundo. O segundo timer  é o da aceleração em si, e é usada para alterar
o valor do primeiro timer a intervalos periódicos, alterando assim  a velocidade angular.

Tenho aqui algo no género para ARM R4 ... vou ver se tenho para AVR.

Abraços,
PA

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #26 em: 21 de Abril de 2013, 09:09 »
Boas,

A única forma de teres uma rampa de aceleração constante é usando um timer independente,  pois os delays dentro de
um loop acabam por introduzir uma segunda harmónica na aceleração.

A implementação mais comum usa 2 timers,  o primeiro é os "steps-per-second" (SPS) que é usado para gerar um
intervalo certo para a taxa de steps por segundo. O segundo timer  é o da aceleração em si, e é usada para alterar
o valor do primeiro timer a intervalos periódicos, alterando assim  a velocidade angular.

Tenho aqui algo no género para ARM R4 ... vou ver se tenho para AVR.

Abraços,
PA

se partilhares o codigo para arm ja percebo a implementacao :) alias vou usar um cortex m3 no final, p arduino era so para testar o motor :) viste a minha pm por causa do quadcopter?

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #27 em: 21 de Abril de 2013, 09:17 »
tu dizes que é criada uma segunda harmonica por estar a usar delays em varios fors? se o meu codigo tivesse so um for isso tb acontecia?

StarRider

  • Visitante
Re: Controlador Motor de Passo
« Responder #28 em: 29 de Abril de 2013, 22:20 »
tu dizes que é criada uma segunda harmonica por estar a usar delays em varios fors? se o meu codigo tivesse so um for isso tb acontecia?

Boas,

Nunca mais me lembrei deste tópico ... sorry :(

Diz-me se ainda necessitas do código.

Abraços,
PA

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re: Controlador Motor de Passo
« Responder #29 em: 29 de Abril de 2013, 22:36 »
tu dizes que é criada uma segunda harmonica por estar a usar delays em varios fors? se o meu codigo tivesse so um for isso tb acontecia?

Boas,

Nunca mais me lembrei deste tópico ... sorry :(

Diz-me se ainda necessitas do código.

Abraços,
PA

sim, ainda não comecei a desenvolver o código utilizando os timers do stm32 por isso dá sempre jeito :)
A minha pergunta faz algum sentido?