Teste com Arduino + Stepper Driver A4988 e Motor de passo bipolar

O driver A4988 é baseado no chipcontrolador Allegro A4983 stepper utilizado também no Big Easy Drive disponível no Laboratório de Garagem:

http://www.labdegaragem.org/loja/index.php/36-motores-afins/big-eas...

Foram utilizados dois motores que variam entre 10Kg e 15Kg (estimados).

Meu interesse é conseguir o máximo de velocidade sem perda de passos.

A dificuldade que encontrei foi definir com precisão a corrente nas bobinas dos motores pelo ajuste da tensão de referência Vref no trimpot do A4988.

Peço aos experts que contribuam com sugestões para aperfeiçoar o código.

Vídeos:

https://www.youtube.com/watch?v=9_TnTTetDIY

https://www.youtube.com/watch?v=EnZBznBq18w

Segue abaixo o código utilizado nos testes e respectiva autoria:

/********************************************************
** More info about the project at: **
** http://lusorobotica.com/viewtopic.php?t=103&f=106 **
** by TigPT at [url=http://www.LusoRobotica.com]www.LusoRobotica.com[/url] **
** Adaptado para driver stepper motor Pololu A4899 com 20V e
** Motor 5.1V; 1.7A; 1.8deg/step e Motor 84V; 2.4A; 1.8deg/step por Milton Vilela
*********************************************************/


int dirPin = 5;
int stepperPin = 4;

void setup() {
pinMode(dirPin, OUTPUT);
pinMode(stepperPin, OUTPUT);
}

void step(boolean dir,int steps){
digitalWrite(dirPin,dir);
delay(10);
for(int i=0;i<steps;i++){
digitalWrite(stepperPin, HIGH);
delayMicroseconds(50);
digitalWrite(stepperPin, LOW);
delayMicroseconds(50);
}
}

void loop(){
step(true,13000);
delay(200);
step(false,13000);
delay(200);
}

Exibições: 10214

Responder esta

Respostas a este tópico

Boa noite Milton.

A princípio alguns detalhes:

1 - Controle exatamente os delay entre os passos (quanto menos, melhor para aumentar a velocidade.) aqueles 50 microsegundos estão sendo multiplicados por 13000 independente de quanto demore os passos (isso pode ser melhorado).

2 - Quanto maior a tensão de alimentação do drive (eles permitem uma faixa bastante ampla de alimentação normalmente) maior a velocidade com que cada passo é dado (precisa ver aqui o limite do circuito), se os motores aguentarem o regime da tensão máxima do drive, eu aconselho a adotar esta tensão para operação.

3 - No início e no final de cada mudança de direção, e se for o caso de uso extenso, pense em adotar uma rampa de aceleração.

4 - Dê uma procurada na LIB Accel (se estiver usando Arduino para controlar estes drives) e faça alguns testes para domina-la e ver se ela pode ser aplicada a sua necessidade.

5 - Procure, ache, leia, teste, procure, ache, leia, teste, procure, ache, leia, teste, procure, ache, leia, teste, procure, ache, leia, teste, procure, ache, leia, teste, procure, ache, leia, teste...

6 - Boa sorte.

Boa noite Euclides,

No vídeo do link abaixo, fiz algumas experiências com o firmware Grbl que acrescenta as rampas que você citou.

No caso, utilizei microstep 1/16, então teoricamente posso ter a velocidade que aparece no vídeo multiplicada por 16.

link:

http://www.youtube.com/watch?v=n7AOxF9TCZ4

Abç,

Olá Milton.

Não conheço a GRBL (vou achar e analisa-la, obrigado).

O passo 1/16 é o contrário, precisa dar 16 passos para ele "andar" 1 passo original do motor. Isso é usado para que se aumente a precisão dos eixos que o motor vai acionar. E veja: Se você precisa dar 16 passos, e estiver com todos aqueles delays dentro da função quer dizer que onde bastaria "gastar" 50 milisegundos, com um único passo, você esta "gastando" 16 x 50 milisegundos para dar o mesmo passo (Se estiver usando aquela função sem alteração).

Faça testes diminuindo e aumentando o valor de delay e compare.

Até a próxima.

Boa madrugada Euclides,

A biblioteca Grbl você pode encontrar no link https://github.com/grbl/grbl

Você pode utilizar diretamente a biblioteca compilada que está em hexadecimal.

Eu estou utilizando a versão grbl_06b.hex e a versão mais recente é a grbl_v0_8c_atmega328p_16mhz_9600.hex , sendo que já está em desenvolvimento a versão 9a.

Para utilizar a biblioteca é necessário gravar o arquivo hexadecimal na memória flash do Arduino.

Para essa tarefa eu utilizo o avrdude que você pode baixar em http://sourceforge.net/projects/avrdude-gui/

Para executar os Gcode's eu utilizo o software gcodesender.exe que você pode baixar em https://github.com/OttoHermansson/GcodeSender/downloads

A parte boa desse software é que com ele podemos mandar executar uma sequência de Gcodes à partir de um arquivo texto através da USB.

No teste do vídeo http://www.youtube.com/watch?v=n7AOxF9TCZ4 utilizei os códigos contidos num arquivo texto e a biblioteca.

Até +

Bom dia Milton. Obrigado pelas indicações.

Vou com calma, esta semana estou recebendo um gravador (mas é para PIC...) justamente por causa da Linistepper, depois vou dar uma olhada nisso tudo.

As perguntas são:

1 - Seria possível converter o fonte que está em C puro para Atmel, para rodar dentro do Arduino (após o Bootloader)???

2 - Gravando um Atmel pelo AVRDude, e colocando-o na placa do Arduino, ele usaria as pinagens da placa Arduino normalmente como as de um CI padrão (lógico que respeitando-se a pinagem por você definida para cada entrada/saída)?

Seria mais fácil fazer os testes usando um Arduino.

Quero ver como ficaria a Linistepper com o PIC e depois estudar o fonte para implementar os mesmos recursos usando o Arduino...deve ser possível...prós...contras...

...este ano promete...

Até a próxima.

Boa noite Euclides,

O software do Arduino faz a conversão da linguagem própria que é muito parecida com o C puro gerando um arquivo hexadecimal que é transferido pelo próprio software para a memória flash do Arduino.

1 - Pode ser utilizado um compilador também como por exemplo o "Maria Mole" que fiquei sabendo através de um tópico aqui do LG que é similar ao software do Arduino. Veja o link do Maria Mole http://dalpix.com/mariamole

2 - Normalmente os arquivos hexadecimais que são gravados pelo Avrdude no Arduino são bibliotecas específicas que foram desenvolvidas e já estão compiladas. Assim que eu tiver algum tempo, posso fazer uma sequência das telas e passos que utilizei para gravar o firmware Grbl no Arduino, ok?

A minha experiência que está funcionando na freza CNC que tenho é uma placa CNC3AX que montei num PCB que comprado do Josh Dayan do guiacnc no link http://www.shopcnc.com.br/loja/shopcnc

Recentemente comprei uma placa montada para motor bipolar que utiliza um L297 e dois L6203 para té 5Amp, não gostei do resultado.

Essa placa Linistepper deve funcionar a contento mas eu só compraria montada e testada com o tipo de motor que eu fosse utilizar.

Sobre utilizar o Arduino pra controlar a Linistepper, aconselho a utilização do firmware Grbl ou o firmware que o LG vai disponibilizar na freza CNC que está nos finalmente.

Estou esperando esse firmware já faz mais de um ano, espero que seja disponibilizado em breve, imagino que o funcionamento com o Big Easydrive seja perfeito.

Para controlar através do microcomputador, estou estudando utilizar uma placa controladora da Nevex http://www.nevex.com.br que utiliza a porta USB do micro.

Até +

 

Boa noite Milton.

Estamos na mesma estrada...

1 - O "Maria Mole" foi desenvolvido e está sendo mantido pelo meu amigo Alex, que participa do nosso Hackerspace (http://www.freelab.net.br/) aqui em São José dos Campos. Quando for voltar a me dedicar ao Arduino espero utilizar esta IDE (O Maria Mole é uma IDE), enquanto isso...deixa ela se aprimorar e ficar bem estável.

2 - Excelente idéia.

3 - Eu tenho uma placa CNC3AX tambem, está no cobre vivo, não montei os componentes. Gostaria de conhecer outras opções antes de investir mais.

4 - Esta placa (L297/2x L6203); Qual foram os problemas com ela? De quem você as comprou? Pagou quanto? Eu montei uma dessas de um projeto que encontrei, mas não funcionou, preciso fazer um passo-a-passo para descobrir porque (Se quiser ver a minha:http://labdegaragem.com/photo/drive-sm-semi-montado-ii?context=albu...http://labdegaragem.com/photo/drive-sm-5a-2?context=album&album...).

5 - A Linistepper, foi a única placa que achei com capacidade de ser reconfigurada para qualquer tipo de relação de micropasso, com o fonte aberto pra gente aprender como se faz. O problema é que ela não faz retorno de sense para o tradutor para controle de corrente, acredito que seja possível. Com isso podemos aumentar a tensão de acionamento e portanto a velocidade dos motores.

6 - Existe um outro Interpretador de G-Code que trabalha sobre Arduino, que pretendo testar tambem (contraptor), mas vou analisar a sua dica.

7 - Quem espera sempre "cansa"...não acredito que ela será disponibilizada, pois tudo que foi gerado dentro do LdG até agora como produto entrou pra "lojinha" e nunca mais saiu. Eles estão certos, é a única forma de manter este espaço livre e sem cobranças. Todos podem trocar idéias e informações e alguns podem fazer a sua tambem se não puder pagar por uma pronta (o que acho muito mais legal).

8 - Sim, controle não dá mais para ser feito com os "olhos" na fumaça saindo de uma paralela...uma das minhas esperas foi porque a CNC3AX só funcionaria ligada a uma paralela e em todos os lugares se falava a mesma coisa: Paralela é complicado de não dar problema, enfim: É melhor usar algo atual e difundido. Quer melhor que as USBs?

Vamos trocando idéias. Até a próxima.

Só esclarecendo que a linguagem do Arduino é o C/C++ do GCC for AVR, o mesmo compilador do AVRStudio/AtmelAtudio. O que deixa a linguagem "mais amigável" é uma biblioteca gigante, ou seja a biblioteca de núcleo e a biblioteca de instruções/funções (libcore.a e arduino.h).

No tuto pra configuração do AVRdude no AtmelStudio (passo 5) isso fica bem visível.

Milton. Eu novamente...

Estava procurando informações sobre aquela placa L297 + 2 x L6203...e achei você em uma thread falando sobre os cálculos do comparador. aí me lembrei que vc. não me respondeu as perguntas sobre ela.

1 - Qual foram os problemas com ela?

2 - De quem você as comprou?

3 - Pagou quanto?

Se puder responder, eu agradeceria.

Até a próxima.

Euclides.

Boa noite Euclides,

Comprei no site www.seriallink.com.br e imagino que o problema está relacionado à compatibilidade entre as características dos motores que utilizei nos testes e a tensão que utilizei para testar (imagino).

Fiz uma tabela no Excel tensão de referência x corrente e substituí o divisor resistivo utilizando um potenciômetro para facilitar os ajustes e mesmo assim não consegui sucesso.

Utilizei o próprio Arduino e também os sinais da porta paralela.

Paguei R$90,00 + frete.

Só para informação, já testei o Easydrive 4.2 (vendido no LG) e o A4988 da Pololu (quase idêntico ao Big Easydriver vendido no LG) e funcionaram conforme as especificações técnicas, só o ajuste da corrente do A4988 não émuito intuitiva.

A placa CNC3AX que tenho utilizado é para motor unipolar e gera ruído desagradável, por isso pensei em utilizar driver para motor bipolar.

Durante um teste que fiz com o Pololu A4988 há um ano mais ou menos, utilizei tensão de 30V para os motores e depois de algum tempo não consegui fazer os motores girarem como no início do teste.

Só consegui resolver o problema substituindo o Atmega328 por outro que comprei no LG.

Diante disso, "imagino" que seja necessário isolar opticamente o Arduino do drive para evitar danos ao Arduino.

Até +

Milton Vilela

Olá Milton.

Obrigado pelas explicações.

Realmente a CNC3AX é barulhenta, eu não fiz o teste, mas ví uma funcionando e achei ruidosa (não muito, mas o suficiente para não se passar o dia perto dela...ou do motores que ela gerencie).

Exatamente. Provavelmente houve um retrocesso e atingiu o Arduino. Eu quando vou trabalhar com tensões diferentes de 5V, uso optoacoplador, é obrigatório...

Eu acredito que seja possível a criação do "Drive Ideal", alguns drives comerciais em certas situações se aproximam muito disso, mas o bacana é montar e fazer funcionar o seu...eu ainda tenho esperanças...

Fiz contato com um fabricante de uma placa que adquiri e pedi a ele peça sobressalente da placa, ele alegou que não existe mais, eu pedi o Hexa do processador e estou aguardando o que ele dirá. O processador é o mesmo da Linistepper, se ele não querer/puder fornecer vou fazer uns testes aqui para ver se dá pra gravar um PIC novo com o Assembler "velho" e ver no que dá.

Boa noite e obrigado.

Euclides.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço