gostaria de ajuda para solucionar alguns problemas desse meu projeto. eu quero movimentar e acionar uma tocha de corte plasma para cortes retos. eu fiz um protótipo utilizando um braço de portão automatizado mas não consigo controlar a velocidade nem usando placa controladora pwm.

daí pensei em substituir esse motor AC mono 220v 1/4cv e refazer tudo com motor de passo controlado por arduíno. agora preciso encontrar um motor de passo que tenha a mesma velocidade máxima de um portão mas também possa controlar e diminuir sem perder o torque necessário para mover a tocha, que acredito ser muito inferior ao motor original.

ok, o correto seria montar um esquema tipo CNC com somente 2 eixos mas isso fica muito caro e quero aproveitar esse braço de portão, trocando apenas o motor que aciona ele. nos testes que fiz a precisão ficou muito boa para o uso que preciso, o problema foi que para cortar chapas mais espessas eu preciso diminuir a velocidade e para chapas mais finas até aumentar um pouco.

a primeira dificuldade é saber quantos RPM gira o fuso acionador. esse fuso também não não encontro e não descobri de quantos passos é. aliás nem o perfil de alumínio que esse braços usam eu encontro, parece ser algo feito sob encomenda para os fabricantes.

resumindo, meu problema principal é encontrar um motor que possa controlar a velocidade linear da tocha de 1mm/s a uns 20mm/s.

obrigado,

Anibal

Exibições: 241

Responder esta

Respostas a este tópico

Os videos são bem interessantes. 

Agora entendi o objetivo do projeto. 

A guia do carro é que precisa ser bem estabilizada. 

sim, no braço do portão que usei pude adaptar uma guia que deixou bem firme e cortou uma chapinha de 2mm quase com perfeição, necessitando de pouco acabamento ou nenhum no caso se for soldar em outra chapa. tem que levar em conta que a tocha é de uma máquina simples e portanto a precisão da tocha também é um fator limitante, daí que acho que gastar um eixo de CNC nisso não vai melhorar a precisão.

segue foto do fuso que está no braço do portão

Anexos

ACL, 

é este o seu motor ?  

Se for ele é de 1.8° por step e de 0,68 A.

Qual a fonte que você está usando para o motor? V ?

RV

esse mesmo. fonte 12v 1a

Boa noite ACL,

se seu motor é para 12V, a fonte terá que ser de pelo menos 15V.

O A4988 é quem controla a corrente sobre o motor.

Leia este artigo, 'e muito bom .

http://blog.eletrogate.com/driver-a4988-motor-de-passo-usando-o-ard...

RV

programa do arduino, copiado daqui com algumas alterações para usar chave de direção e potenciometro para variar a velocidade:

// Controle de Motor de Passo NEMA17 com Modulo driver A4988
// http://labdegaragem.com/forum/topics/tutorial-arduino-motor-de-pass...
// Motor Minebea NEMA 17 Unipolar / Modulo A4988 / Arduino Nano / IDE 1.6.7
// OBS: Motor Unipolar 6 fios configurado como Bipolar
// Gustavo Murta 02/abr/2016

// Definições das Portas Digitais do Arduino

int RST = 8; // Porta digital D08 - reset do A4988
int SLP = 9; // Porta digital D09 - dormir (sleep) A4988
int ENA = 7; // Porta digital D07 - ativa (enable) A4988
int MS1 = 4; // Porta digital D04 - MS1 do A4988
int MS2 = 5; // Porta digital D05 - MS2 do A4988
int MS3 = 6; // Porta digital D06 - MS3 do A4988
int DIR = 3; // Porta digital D03 - direção (direction) do A4988
int STP = 2; // Porta digital D02 - passo(step) do A4988
int atraso = 0; // Atraso no pulso em microsegundos
float FREQ = 200; // Frequências dos pulsos (100.7 Hz medido com scope = 100 Hz)
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()
{

pinMode(10, INPUT); // pinos da chave seletora de direção
pinMode(11, INPUT);

Serial.begin(9600);

DDRD = DDRD | B11111100; // Configura Portas D02 até D07 como saída
digitalWrite(ENA, HIGH); // Desativa o chip A4988
FULL() ; // Configura modo de avanço do motor FULL, HALF, P1_4, P1_8 ou P1_16

DDRB = 0x0F; // Configura Portas D08,D09,D10 e D11 como saída
digitalWrite(SLP, HIGH); // Desativa sleep do A4988
rst_A4988(); // Reseta o chip A4988
digitalWrite(ENA, LOW); // Ativa o chip A4988

FREQUENCIA(); // Calcula o período do sinal STEP
Serial.println(atraso) ; // Imprime na Console, o tempo em microsegundos
}

void rst_A4988()
{
digitalWrite(RST, LOW); // Realiza o reset do A4988
delay (10); // Atraso de 10 milisegundos
digitalWrite(RST, HIGH); // Libera o reset do A4988
}

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(STP, LOW); // Pulso nível baixo
delayMicroseconds (atraso); // Atraso de X microsegundos
digitalWrite(STP, 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 FULL()
{
digitalWrite(MS1, LOW); // Configura modo Passo completo (Full step)
digitalWrite(MS2, LOW);
digitalWrite(MS3, LOW);
}

void HALF()
{
digitalWrite(MS1, HIGH); // Configura modo Meio Passo (Half step)
digitalWrite(MS2, LOW);
digitalWrite(MS3, LOW);
}

void P1_4()
{
digitalWrite(MS1, LOW); // Configura modo Micro Passo 1/4
digitalWrite(MS2, HIGH);
digitalWrite(MS3, LOW);
}

void P1_8()
{
digitalWrite(MS1, HIGH); // Configura modo Micro Passo 1/8
digitalWrite(MS2, HIGH);
digitalWrite(MS3, LOW);
}

void P1_16()
{
digitalWrite(MS1, HIGH); // Configura modo Micro Passo 1/16
digitalWrite(MS2, HIGH);
digitalWrite(MS3, HIGH);
}

void TesteMotor()
{

if ( digitalRead(11) == HIGH )
{
// Serial.println("horario" );
HOR();
for(int i=0; i <= CONTADOR; i++) // Incrementa o Contador
{
PASSO(); // Avança um passo no Motor
}
}

if ( digitalRead(10)== HIGH )
{
//Serial.println("anti horario " );

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

void loop()
{
int vnew = 0 ;
vnew = analogRead( 0 ) ;
Serial.println(vnew );

FULL();
FREQ = vnew;
FREQUENCIA();
CONTADOR = vnew;

TesteMotor();

/////////// comentado

/*
HALF();
FREQ = 600;
FREQUENCIA();
CONTADOR = 400;
Serial.print(atraso);
Serial.println(" us Half, 200 passos, 600 Hz");
Serial.println();
TesteMotor();

P1_4();
FREQ = 1600;
FREQUENCIA();
CONTADOR = 800;
Serial.print(atraso);
Serial.println(" us Micro 1/4, 800 passos, 1600 Hz");
Serial.println();
TesteMotor();

P1_8();
FREQ = 3600;
FREQUENCIA();
CONTADOR = 1600;
Serial.print(atraso);
Serial.println(" us Micro 1/8, 1600 passos, 3600 Hz");
Serial.println();
TesteMotor();

P1_16();
FREQ = 6600;
FREQUENCIA();
CONTADOR = 3200;
Serial.print(atraso);
Serial.println(" us Micro 1/16, 3200 passos, 6600 Hz");
Serial.println();
TesteMotor();
*/
}

ACL, por favor, remove o sketch que colou na área de texto e anexa um arquivo com ele.

RV

segue anexo

Anexos

bom...eu mexi,mexi,mexi nesse programa e no controle do potenciômetro e não consigo um controle satisfatório da velocidade desse motor. como comprei usado pode não estar em perfeitas condições. tem algum jeito melhor de testar ? eu acho que ele tem uma faixa muito estreita de controle e fora dela vibra e faz barulho, e nos limites do controle para e ronca apenas.

Boa tarde ACL,

É possivel sim voce testar o seu step motor.

Primeiro faça teste estáticos de continuidade,e de isolação.

Teste  cada enrolamento se tem a mesma resistência ôhmica, e a isolação com 

outros entolamentos e com a carcaça.

Se tudo estiver OK, faça o teste dinâmico.

Assim.

Se ele é para 12V, pode usar a sua fonte de 12V para este teste.

Cole uma fita gomada formando um ponteiro no eixo do motor.

Ligue os enrolamento entre os 12V e o Gnd (em qq ordem).

Em seguida inverta um dos enrolamentos (qq um). O eixo deverá dar um deslocamento, ou para direita ou para esquerda.

Em seguida mantenha este que inverteu como está e inverta o outro.

Novamente o eixo deverá deslocar, e em seguida mantendo agora este

como está inverta o primeiro, e novo deslocamento deverá ocorrer.

Como não sei a sequencia dos enrolamentos deste motor, cada inversão ele pode mudar ou não de sentido de rotação.

RV

Boa tarde Anibal, 

Informe as especificações do seu motor.

Seu problema pode ser ajuste incorreto da corrente no driver A4988. 

Ou então o seu motor não esta adequado para a sua aplicação (torque insuficiente). 

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço