Driver para Motor de Passo NEMA: 34 – Torque: 100,00 kgf.cm – Corrente: 3,00 A

Pessoal,

preciso de um Driver bipolar para controlar pelo arduíno o motor de passo Nema 34:

http://www.neoyama.com.br/produtos/motores/motor-de-passo/motor-de-...

alguém pode me dar uma LUZ, o próprio site possui um:

http://www.neoyama.com.br/produtos/comandos/driver-para-motor-de-pa...

Não sei se este driver funcionaria com o Arduino, e mesmo que funcione acho que é um exagero (posso estar enganado)..., será que existe algo simples para minha aplicação com arduino?

ja entrei em contato com a Kalatec, estou aguardando uma resposta deles, mas acredito que aqui posso ter mais ajuda.

desde já obrigado pela atenção de todos.

Exibições: 6608

Responder esta

Respostas a este tópico

Veja esse Sketch, Tem que testar para ver se esta OK . 

Já adaptei para o seu motor/driver .

Anexei o arquivo TBS6600. ino. 

"

// Controle de Motor de Passo NEMA32 com Modulo driver TBS6600 (HY-DIV268N-5A)// http://labdegaragem.com/forum/topics/driver-para-motor-de-passo-nema-34-torque-100-00-kgf-cm-corrente
// Motor Minebea NEMA 32 Bipolar / Modulo HY-DIV268N-5A / Arduino Nano / IDE 1.6.7
// OBS: Motor Bipolar 8 fios configurado como Bipolar série ou paralelo
// Ajuste os DIP SWITCHES antes de fazer os testes (fonte desligada)
// Gustavo Murta 14/jun/2016

// Definições das Portas Digitais do Arduino

int ENA = 7; // Porta digital D07 - ativa (enable)
int DIR = 3; // Porta digital D03 - direção (direction)
int PUL = 2; // Porta digital D02 - passo(step)

int atraso = 0; // Atraso no pulso em microsegundos
float FREQ = 200; // Frequências dos pulsos por segundos
boolean sentido = true; // Variavel de sentido
int CONTADOR = 200; // Número de pulsos (passos por volta)

// FULL = 200 passos / HALF = 400 passos / P1_4 = 800 passos / P1_8 = 1600 passos / P1_16 = 3200 passos

void setup()
{
Serial.begin(9600);

DDRD = DDRD | B11111100; // Configura Portas D02 até D07 como saída
digitalWrite(ENA, LOW); // Desativa o driver TSB6600
delay (50); // Atraso de 50 milisegundo
digitalWrite(ENA, HIGH); // Ativa o driver TSB6600
FREQUENCIA(); // Calcula o período do sinal STEP

//Serial.println(atraso) ; // Imprime na Console, o tempo em microseguindos
}


void HOR() // Configura o sentido de rotação do Motor
{
digitalWrite(DIR, HIGH); // Configura o sentido HORÁRIO
}

void AHR() // Configura o sentido de rotação do Motor
{
digitalWrite(DIR, LOW); // Configura o sentido ANTI-HORÁRIO
}

void PASSO() // Pulso do passo do Motor
{
digitalWrite(PUL, LOW); // Pulso nível baixo
delayMicroseconds (atraso); // Atraso de X microsegundos
digitalWrite(PUL, HIGH); // Pilso nível alto
delayMicroseconds (atraso); // Atraso de X microsegundos
}

void FREQUENCIA() // Configura quantos pulsos por segundo (Hz)
{
atraso = 1000000 / (2*FREQ); // calculo do tempo de atraso (1/2 periodo) em us
}




void TesteMotor()
{
HOR();
for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
delay (500) ; // Atraso de 500 mseg

AHR();
for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
delay (500) ; // Atraso de 500 mseg
}

void loop()
{
FREQ = 200;
FREQUENCIA();
CONTADOR = 200;
Serial.print(atraso);
Serial.println(" us Full, 200 passos, 200 PPS");
Serial.println();
TesteMotor();

FREQ = 600;
FREQUENCIA();
CONTADOR = 200;
Serial.print(atraso);
Serial.println(" us Full, 200 passos, 600 PPS");
Serial.println();
TesteMotor();
}

"

Anexos

Antes de fazer os testes , mande uma foto com a sua montagem ! 

E me avise.  jgustavoam@gmail.com

PERFEITO!!!! 

obrigado, se eu tiver duvida na montagem entro em contato.

Este tipo de diagrama eu preciso pensar um pouco com as peças em mãos, como falei, se sentir dificuldade eu grito.

Obrigado! 

José Murta,

fiz a instalação conforme orientação e o programa também, porém nao funcionou. Só funciona quando retiro o fio 7 (EN), o motor só roda com o EN desconectado. outra coisa que reparei foi que o sistema de dipswitch é diferente na legenda da placa conforme imagem... fiz varios testes com os dipswitchs em posições diferentes até que descobrisse que estava invertido, pois o manual diz uma sequencia e o driver informa outra:

https://www.rcscomponents.kiev.ua/datasheets/div268n-5a-datasheet.pdf

mudei seu codigo para testar a rotação em várias velocidades e nao consigo fazer o motor girar com velocidade superior a 400 pulsos por segundo.


int ENA = 7; // Porta digital D07 - ativa (enable)

int DIR = 3; // Porta digital D03 - direção (direction)

int PUL = 2; // Porta digital D02 - passo(step)

int atraso = 0; // Atraso no pulso em microsegundos

float FREQ = 200; // Frequências dos pulsos por segundos

boolean sentido = true; // Variavel de sentido

int CONTADOR = 200; // Número de pulsos (passos por volta)

#define pot A0
int potvalor;

// FULL = 200 passos / HALF = 400 passos / P1_4 = 800 passos / P1_8 = 1600 passos / P1_16 = 3200 passos

void setup()

{

Serial.begin(9600);
pinMode (pot,INPUT);

DDRD = DDRD | B11111100; // Configura Portas D02 até D07 como saída

digitalWrite(ENA, LOW); // Desativa o driver TSB6600

delay (50); // Atraso de 50 milisegundo

digitalWrite(ENA, HIGH); // Ativa o driver TSB6600

FREQUENCIA(); // Calcula o período do sinal STEP

//Serial.println(atraso) ; // Imprime na Console, o tempo em microseguindos

}

void HOR() // Configura o sentido de rotação do Motor

{

digitalWrite(DIR, HIGH); // Configura o sentido HORÁRIO

}

void AHR() // Configura o sentido de rotação do Motor

{

digitalWrite(DIR, LOW); // Configura o sentido ANTI-HORÁRIO

}

void PASSO() // Pulso do passo do Motor

{

digitalWrite(PUL, LOW); // Pulso nível baixo

delayMicroseconds (atraso); // Atraso de X microsegundos

digitalWrite(PUL, HIGH); // Pilso nível alto

delayMicroseconds (atraso); // Atraso de X microsegundos

}

void FREQUENCIA() // Configura quantos pulsos por segundo (Hz)

{

atraso = 1000000 / (2*FREQ); // calculo do tempo de atraso (1/2 periodo) em us

}

void TesteMotor()

{

HOR();

for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador

{

PASSO(); // Avança um passo no Motor

}

/* delay (500) ; // Atraso de 500 mseg

AHR();

for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador

{

PASSO(); // Avança um passo no Motor

}

delay (500) ; // Atraso de 500 mseg
*/
}

void loop()

{
int potFreq;
potvalor = analogRead (A0);
potFreq = map(analogRead(pot),0,1023,0,800);

FREQ = 4000;

FREQUENCIA();

CONTADOR = 50;

Serial.println(potFreq);
Serial.print(" ");
Serial.print(potvalor);
Serial.print(" ");

TesteMotor();

}

Anexos

No meu circuito o EN era negativo, no seu é positivo !

Mude o programa então para EN negativo. 

Qual ligação fez ? Bipolar serie ou Bipolar paralelo ?

Fiz a modificação :( só mude os dip switches, quando o modulo estiver desligado) 

Passo Completo (maior torque)  -

SW 4 OFF / SW 5 ON / SW 6 ON  

( 200 passos por rotação do motor ) 

Ligação Bipolar Série : 

Corrente  driver (1,8A)  - SW 1 OFF / SW 2 OFF / SW 3 ON 

e depois :

Bipolar Paralelo :

Corrente  driver (4,2A)  - SW 1 ON / SW 2 OFF / SW 3 OFF

Fiz a ligação Bipolar paralelo.

o EN + fica ligado no pino 7 conforme seu circuito (imagem anexa). devo colocar o EN - no pino 7? nao intendi.

todos os testes que fiz com o dip switches foram com o modulo desligado, porém nao girava com o EN ligado de forma nenhuma. o problema que em um dos testes fiz uma programação que só testava o motor quando o valor de botão fosse == 1 conforme codigo anexo. e o meu driver no momento que nao rodava por que nao dava o comando com o valor do botao esquentou muito e acho que danificou um dos diodos... (mas isso só aconteceu após todos os testes frustrados de girar o motor a uma velocidade superior a 300 pps).

agora restou o driver chines para mais um teste antes de comprar um driver novo.

Anexos

Bruno, a ansiedade pode trazer prejuízos. Recomendei a você, que enviasse as informações e fotos da sua montagem antes de ligar na energia. Seu módulo driver HY-DIV268 veio com uma configuração diferente da que eu encontrei na WEB ! 

Chinês é tão avacalhado, que na foto impressa no módulo a configuração dos dip switches é de um jeito, e no Manual essa configuração é invertida ! Em qual usar ? 

http://labdegaragem.com/forum/topics/tb6600-m-dulo-controlador-hy-d...

Favor informar qual configuração de DIP Switches fez no primeiro teste. Para entender o que pode ter ocorrido de problema. Tire uma foto do switches. 

O que eu sugeri que trocasse no comando do pino EN foi a alteração no seu programa.(Para efeito de testes). A montagem é a mesma que postei no forum. 

digitalWrite(ENA, HIGH); // Desativa o driver TSB6600

delay (50); // Atraso de 50 milisegundo

digitalWrite(ENA, LOW; // Ativa o driver TSB6600

Bruno, você montou o fusível de 5A na alimentação do módulo, como havia sugerido ?

Pode usar fusível de automóvel. 

Muita atenção ao selecionar as chaves no DIP Switches ! Veja para qual lado as chaves estão lgadas (ON) ou desligadas (OFF). Os modelos podem ser diferentes. Veja a identificação ON  - esse lado é o ligado. 

Nessa foto de exemplo , o lado ON é para baixo, desse modo veja a configuração selecionada . 

              SW1 ON /  SW2 ON   /  SW3 OFF  /  SW4 OFF  /  SW5  ON  /  SW6 OFF  /  SW7 ON  /  SW8 ON 

Esse tipo de driver NÃO PODE SER ALIMENTADO SEM CARGA ! 

Não pode energizar o módulo, sem fazer a correta montagem do motor. 

A configuração dos switches deve ser de acordo com o limite de corrente do seu motor.

Monte um fusível de 5A ( de carro) na entrada D+ da placa driver ( alimentação) .

José Murta,

Obrigado pelas dicas, realmente fui com muita sede ao pote. A fazenda em que eu estava não tinha internet, acabei arriscando. A configuração do Dipswitch que fiz inicialmente foi a conforme encontrada na internet, e não pela foto anexa ao driver, mas nao importa muito porque no fim testei em várias posições como nao sabia qual era o ON e OFF (se para cima ou para baixo)... olhe nesta foto, o dipswitch diz NO para baixo, acredito que eles erraram na impressão e significa ON.


Vou refazer os testes. Voce acredita que o problema que estou tendo para girar o motor é em função do Driver mal instalado e do EN invertido?

vou refazer os testes a noite e te mando um vídeo com toda a configuração para melhor análise.

Obrigado mais uma vez pela grande ajuda.

Caro Bruno , agora consegui identificar o dip switch . 

A configuração da foto é essa :

Corrente  driver (0,2A)  - SW 1 ON / SW 2 ON / SW 3 ON  

(corrente muito baixa para acionar o motor ) 

SW 4 OFF / SW 5 ON / SW 6 ON  - essa configuração esta correta ! 

( 200 passos por rotação do motor ) 

Siga  a tabela que esta impressa no módulo. Não siga a tabela do manual . 

Passo Completo (maior torque)  

SW 4 OFF / SW 5 ON / SW 6 ON  

( 200 passos por rotação do motor ) 

 

Bipolar Paralelo :

Corrente  driver (4,2A)  - SW 1 ON / SW 2 OFF / SW 3 OFF

Você seguiu as cores dos fios na ligação do motor ?

Na foto, os fios estão ligados incorretamente !!!!!

Se a sua identificação ON é também para baixo, como na minha foto faça assim :

A posição ON (para baixo) é para onde deve virar as chavinhas para ligado (ON). 

E a outra posição (para cima) , obviamente é desligada (OFF) . 

Esse tipo de driver NÃO PODE SER ALIMENTADO SEM CARGA ! 

Não pode energizar o módulo, sem fazer a correta montagem do motor. 

Se tivesse montado um fusível de 5A na entrada da alimentação, talvez não teria queimado o seu módulo. 

Saiu alguma fumaça ?

Esta foto peguei na internet, nao foi a configuração que usei.

Saiu fumaça sim... : (

abri o driver e um dos capacitores queimou...

vou comprar um fusível para testar antes com o novo driver. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço