Clube CNC Brasil
Softwares => Mach 2 e 3 => Tópico iniciado por: Cássio Mello em 19/06/11 - 18:33
-
Bom dia!
Sou novo no fórum e estou projetando uma CNC de 3 eixos... Pretendo utilizar o programa Mach3, mas fiquei na dúvida quando às suas saídas...
Ele utiliza uma porta paralela, mas o que ele envia para o circuito elétrico que controla os motores e quais os pinos que ele utiliza pra cada coisa?
Pergunto isso pois planejo projetar um circuito com um PIC que gerencie essa comunicação...
Agradeço a ajuda!
Att.
Cássio Mello
-
Cassio,
Basicamente, não só o Match3 mas todos os softwares de controle fornecem os sinais de passo e direção (step/dir) p/ cada motor ... o sinal de passo são pulsos de 0 / 5vcc e o sinal de direção é um nível alto ou baixo, fixo e também de 0 / 5vcc
Da uma estudada em motores de passo p/ poder entender o que é preciso p/ criar seu driver : http://www2.eletronica.org/artigos/outros/estudo-do-motor-de-passo-e-seu-controle-digital (http://www2.eletronica.org/artigos/outros/estudo-do-motor-de-passo-e-seu-controle-digital)
-
Hm... Esses pulsos são as fases dos motores já pronto ou possuem um padrão próprio que precisa ser convertido?
É q tipo, estou pensando em controlar o motor de passo usando micro-passos e talvez, se conseguir, um controle de corrente para que estabilize o torque no máximo mesmo quando só 1 bobina fica energizada... Daí pegar diretamente do programa me limita um pouco (além de ser meio sem graça usar um pré-pronto hehehe)...
Sobre os drivers, pensei em criar uma ponte H com MOSFETs e usar optos para isolar o circuito (se a frequencia máxima deles for suficiente)...
Eu to cursando Eng. da computação na ufrgs, então minha idéia mesmo é aprender a fazer usando o menos possível de coisas prontas como os ULN2003 e tudo mais... Pretendo programar num PIC16F628A ou algo semelhante a sequencia de passos, botões de interface e sensores de segurança...
Att.
-
Hm... Esses pulsos são as fases dos motores já pronto ou possuem um padrão próprio que precisa ser convertido?
É q tipo, estou pensando em controlar o motor de passo usando micro-passos e talvez, se conseguir, um controle de corrente para que estabilize o torque no máximo mesmo quando só 1 bobina fica energizada... Daí pegar diretamente do programa me limita um pouco (além de ser meio sem graça usar um pré-pronto hehehe)...
Sobre os drivers, pensei em criar uma ponte H com MOSFETs e usar optos para isolar o circuito (se a frequencia máxima deles for suficiente)...
Eu to cursando Eng. da computação na ufrgs, então minha idéia mesmo é aprender a fazer usando o menos possível de coisas prontas como os ULN2003 e tudo mais... Pretendo programar num PIC16F628A ou algo semelhante a sequencia de passos, botões de interface e sensores de segurança...
Att.
O que vc pretende não bate com o que vc quer ou vice versa ... fiquei até meio tonto ... ehehehe ?_34
Mas vou te dar uma ideia mais ampla da "coisa" :
O software de controle (Alguns) pode te fornecer a sequencia dos passos e neste caso não bate com o que vc pretende pois não será preciso PIC e nem nada, somente FETs de potencia e acopladores opticos em cada fase do motor.
O que vc pretende fazer precisará receber, do software de controle, apenas os pulsos de passo e direção conforme descrevi no outro post ... estes pulsos serão enviados p/ o seu PIC e este sim devera providenciar as fases p/ o motor.
Os pulsos são enviados em tempo real e precisam ser tratados imediatamente, a menos que suas ideias estejam alem de simplesmente controlar o motor mas sim controlar o processo total ?!
Cada pulso enviado representa um passo a frente ou atras, e quem determina isto (frente e trás) é o sinal de direçao.
Espero ter ajudado e qualquer coisa grita ai ! ... rsrsr ;D
-
Hmmmm... Entendi! Isso me ajuda um monte! ^^
Então o q tenho q fazer é usar uma interrupção por evento no pic e a partir dele seguir uma sequencia qualquer (q seja funcional xD)...
O controle seria em tempo real sim... No caso é a mesma idéia de sempre pra controlar o motor de passo só que aumentando a resolução (usando micro-passos) e mantendo o torque constante...
A idéia do micro-passo até entendi: entre cada ativação/desativação das bobinas, variar gradualmente a tensão fornecida para criar uma gama maior de diferenças de forças de atração pelas bobinas...
Só q a idéia do torque constante que não me liguei direito como implementar...
No caso, o problema é que, se tenho uma sequencia half-step, tem horas q tenho duas bobinas energizadas e horas que tenho só uma... Qdo tiver 2, o torque resultante será maior que qdo tiver soh 1... Daí pra manter o torque constante, tenho q aumentar a energização qdo só uma bobina estiver ativa (em 2x para se equiparar a 2 bobinas ativas)... Só que não sei como fazer isso...
Sabe se tem algum dispositivo que aumentasse a corrente fornecida na malha para que eu possa fazer esse tipo de controle?
Vlw a ajuda cara! ^^
-
Hmmmm... Entendi! Isso me ajuda um monte! ^^
Então o q tenho q fazer é usar uma interrupção por evento no pic e a partir dele seguir uma sequencia qualquer (q seja funcional xD)...
Perfeito !
O controle seria em tempo real sim... No caso é a mesma idéia de sempre pra controlar o motor de passo só que aumentando a resolução (usando micro-passos) e mantendo o torque constante...
A idéia do micro-passo até entendi: entre cada ativação/desativação das bobinas, variar gradualmente a tensão fornecida para criar uma gama maior de diferenças de forças de atração pelas bobinas...
Em motores de passo vc controla a corrente e não a tensão.
Só q a idéia do torque constante que não me liguei direito como implementar...
No caso, o problema é que, se tenho uma sequencia half-step, tem horas q tenho duas bobinas energizadas e horas que tenho só uma... Qdo tiver 2, o torque resultante será maior que qdo tiver soh 1... Daí pra manter o torque constante, tenho q aumentar a energização qdo só uma bobina estiver ativa (em 2x para se equiparar a 2 bobinas ativas)... Só que não sei como fazer isso...
Me desculpe, mas isto é utópico ! Se vc aumentar a corrente p/ compensar o torque ira forçar a bobina do motor que provavelmente abrira o bico.
O unico meio seguro de fazer isto seria diminuir a corrente quando ha duas bobinas energizadas o que não ajudaria em nada ... concorda ? ... rsrsrs
Sabe se tem algum dispositivo que aumentasse a corrente fornecida na malha para que eu possa fazer esse tipo de controle?
Vlw a ajuda cara! ^^
Isto seria o de menos, se não fosse o problema que citei acima ... rsrsrs ;D
-
Hmmmm.... O negócio do torque eu li nesse site (na parte sobre motor bipolar): http://www.ebah.com.br/content/ABAAAAFWcAK/motor-passo (http://www.ebah.com.br/content/ABAAAAFWcAK/motor-passo)
Tb achei estranho colocar a corrente acima da fornecida pelo datasheet como limite... Na real acho q nao vale a pena arriscar mesmo, no mínimo baixará a durabilidade do motor... Segundo o site dá pra aumentar uns 40% da corrente...
No negócio do micro-passo, no caso eu vario a corrente nas bobinas, mas quando o motor tiver mais carga de trabalho, ele não vai puxar mais corrente e eu não perderei essa variação gradual bem definida? E como eu poderia controlar essa corrente? Existe algum dispositivo que varie a corrente de acordo com uma tensão? pra eu poder usar um PWM...
Vlw! ^^
-
Hmmmm.... O negócio do torque eu li nesse site (na parte sobre motor bipolar): [url]http://www.ebah.com.br/content/ABAAAAFWcAK/motor-passo[/url] ([url]http://www.ebah.com.br/content/ABAAAAFWcAK/motor-passo[/url])
Tb achei estranho colocar a corrente acima da fornecida pelo datasheet como limite... Na real acho q nao vale a pena arriscar mesmo, no mínimo baixará a durabilidade do motor... Segundo o site dá pra aumentar uns 40% da corrente...
Isto da na mesma, se vc pode aumentar 40% em uma bobina porque não poderia aumentar em todas ? E aumentar em todas qualquer driver faz ... rsrsrs ;D
Outra coisa, em driver's bipolares o meio passo é feito com jogo de corrente e vc esta confundindo com driver Unipolar onde hora ha duas bobinas acionadas e hora ha uma só bobina acionada.
No negócio do micro-passo, no caso eu vario a corrente nas bobinas, mas quando o motor tiver mais carga de trabalho, ele não vai puxar mais corrente e eu não perderei essa variação gradual bem definida?
Não porque a corrente é controlada e constante, vc é quem vai definir os patamares de corrente e não a carga ... em outras palavras, o motor vai ter que engolir, queira ou não queira ... ahahaaa ;D
E como eu poderia controlar essa corrente? Existe algum dispositivo que varie a corrente de acordo com uma tensão? pra eu poder usar um PWM...
Uma dica básica, um sensor de corrente em serie com cada grupo de bobinas (2 resistores) ... Lê estes sensores, interpreta e dispara, ou corta, o FETico correspondente. Qualquer AOP faz isto numa boa.
Da uma estudada no CI L297 que vc vai aprender bastante.
Abs
Reinaldo
-
Opa! Voltei ;D
Andei lendo melhor como funciona o motor de passo bipolar, e certamente era bem diferente do q eu pensava... xD
Fiz uma simulação no proteus agora com a ponte H, optos e um pic, e tá rodando blz...
Só q tipo, no início da simulação, quando ele coloca a 1ª sequência, o motor anda um passo anti-horário e depois começa a se mover em sentido horário infinitamente... Isso me gerou uma dúvida:
No caso, as bobinas são acionadas em uma sequencia para que o movimento se mantenha, mas... No início, o motor estará parado em uma posição aleatória... Como saberei com qual valor começar? Se eu começar com um valor errado, o motor não pode ir para um lugar errado e só depois se ajeitar?
Grato pela ajuda! ^^
-
Não Cassio !
O motor não dá um passo p/ traz e depois p/ frente, e sim se posiciona quando recebe alimentação ... depois é só entrar com a sequência.
Nota: Um motor de passo em operação nunca fica desenergizado até que a usinagem (peça) seja concluída.
O motor de passo nunca parte "abestado" p/ qualquer lado, ele sempre ira seguir uma sequência p/ direita ou p/ esquerda. Dá uma olhada neste site p/ vc ter uma ideia melhor da sequência do motor bipolar :
http://www2.eletronica.org/artigos/outros/estudo-do-motor-de-passo-e-seu-controle-digital (http://www2.eletronica.org/artigos/outros/estudo-do-motor-de-passo-e-seu-controle-digital)
-
Hmmmm... Entendo... Então na montagem da CNC é importante manter o eixo dos motores em sincronia com o 0,0,0 sob pena de ocorrer uma defasagem constante nas marcações?
Outra coisa... O q ocorre no proteus para ele girar para trás e depois começar a ir para a frente é que ele tá começando no 2º valor da sequência e não no 1º... Analisei o código e nada indica q deveria ocorrer isso.. Poderia dar uma olhada nele? Tá em linguagem C (usando o Hi-Tech C Compiler)...
#include <pic.h>
#define MAX_COMBINATIONS_FULL_STEP 4
#define PERIOD_SEQUENCE_FULL_STEP 1000
void Configure();
void UpdateData();
char motor_sequence_full_step[MAX_COMBINATIONS_FULL_STEP] = {0b0001, 0b0010, 0b0100, 0b1000}; //1a/2b/1b/2a//
int sequence = 0;
int timer_count = 0;
char motor_out = 0;
void main()
{
Configure();
while(1){
UpdateData();
}
}
void Configure(){
TRISC = 0;
PORTC = 0;
INTCON = 0b10100000;
OPTION_REG = 0b00000000;
}
void UpdateData(){
PORTC = motor_out;
}
void interrupt isr(){
if(TMR0IF){
timer_count++;
if(timer_count >= PERIOD_SEQUENCE_FULL_STEP){
timer_count = 0;
motor_out = motor_sequence_full_step[sequence];
if(sequence >= MAX_COMBINATIONS_FULL_STEP-1) sequence = 0;
else sequence++;
}
TMR0IF = 0;
}
}
Estou usando como pinos de saída, os LSB do TRISC, na forma: RC0 = 1a / RC1 = 2b / RC2 = 1b / RC3 = 2a...
O esquemático no Proteus é o seguinte: http://imageshack.us/photo/my-images/845/esquemtico.jpg/ (http://imageshack.us/photo/my-images/845/esquemtico.jpg/)
Os MOSFET fico meio bagunçado, pois soh depois me liguei que tava ligando um lado invertido e por isso não estava funcionando... O que achei estranho, pois teoricamente os MOSFET deveriam ser simétricos não?
Vlw! ^^
-
Gaudério,me passa esse esquema por MP pra eu ver de perto,no link não deu certo pra mim não,ta muito miudo...Vi umas coisinhas na sua ponte que me pareceu estranha.Do programa,não me pergunte,pois não atiro nada,só tijolo.
Abraços
-
http://www.mediafire.com/i/?mihc62lz4akyluc (http://www.mediafire.com/i/?mihc62lz4akyluc)
http://www.mediafire.com/?6q2fwk72aq960ru (http://www.mediafire.com/?6q2fwk72aq960ru)
Esquemático em JPG e no Proteus... ^^
Vlw!
-
Ja ta na mão,mas como te disse na MP tem erros no PIC.
Voce ta só no simulador???
-
Ah sim, malz... Esses erros aconteceram quando eu movi para o desktop o arquivo do proteus, dai ele não pegou o .hex... Erro meu ^^
Coloca esse .hex no PIC e não dará mais esse erro: http://www.mediafire.com/?hy9n41zdah5kc9c (http://www.mediafire.com/?hy9n41zdah5kc9c)
PS.: To só no simulador sim...
Vlw!
-
Hmmmm... Entendo... Então na montagem da CNC é importante manter o eixo dos motores em sincronia com o 0,0,0 sob pena de ocorrer uma defasagem constante nas marcações?
Vlw! ^^
Cassio,
Vc ainda não entendeu, vou tentar ser mais claro ...
Ao iniciar o trabalho vc primeiro liga o computador, carrega o software de controle e por ultimo alimenta os drivers ... ao alimentar os drivers, os motores irão se posicionar com um passo, ou meio passo, pra frente, ou pra traz ... e depois disto ficarão estáticos no mesmo lugar, porem ja alimentados e posicionados.... pouco importa se a sequência esta no inicio, no fim ou no meio, isto nada tem a ver com perder posição ou erros de posicionamento.
Depois vc carrega o programa da peça a ser usinada, coloca o material a ser usinado e posiciona os eixos, através do JOG, no inicio da usinagem (No ponto zero da peça (Posição Home)) ... zera os três eixos e por fim inicia a usinagem.
Percebeu que não tem a menor importância em qual sequência estão as fases dos motores ?
O passo do motor é sempre igual, independente de qual sequência estará as fases do mesmo.
-
hmm... Acho q entendi...
No caso, quando eu alimentar o motor de passo, ele se posicionará conforme a alimentação e se manterá estático... Daí, sempre antes de começar a usinagem, tenho q manualmente ajeitá-lo para o ponto 0,0,0 (mantendo-o alimentado)?
Não sabia desse JOG...
Parece q está funcionando toda a simulação... Agora é adicionar limitadores de corrente e micropassos... ;D
Vlw a ajuda!
-
Daí, sempre antes de começar a usinagem, tenho q manualmente ajeitá-lo para o ponto 0,0,0 (mantendo-o alimentado)?
Sim, sempre ! porem não necessariamente em modo manual, eles podem ir p/ a posição home automaticamente, desde que configurado p/ isto e existir na maquina sensores de posição.
O importante é vc observar que os motores só são ligados uma vez e depois ficam ligados o resto do tempo, até que alguem pare de utilizar a maquina ... p/ evitar que os motores super aqueçam enquanto estão em repouso, utiliza-se redutores de corrente, exemplo: Ao se passar dois segundos sem receber pulsos, o driver reduz a corrente que esta mantendo o motor fixo. Isto evita aquecimento e não permite que o motor se desloque.