Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print

ELETRÔNICA / ELÉTRICA => Eletrônica Básica => Programação => Tópico iniciado por: Preston em 27 de Setembro de 2010, 13:42

Título: AJUDA! Programação para Plotter de 3 eixos usando L298 e PIC16F877A
Enviado por: Preston em 27 de Setembro de 2010, 13:42
EDIT - Esqueci de falar, que a programação na verdade, são só os eixos X e Y. Agora estamos usando dois PICS, um para controlar cada eixo.

Olá, sou novo no fórum, e ele me foi recomendado pelo meu professor. Estou postando aqui para pedir ajuda, pois estamos com problemas na programação do nosso projeto de feira: um Plotter (Você envia as coordenadas de um desenho para o computador, e através de uma porta paralela que se comunica com a placa, ele faz o desenho para você). Estamos usando o driver L298 e dois PIC16F877A com motores unipolares. O programa é o seguinte:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#include <16F877A.h>
#fuses nowdt,hs,put,noprotect,nodebug,brownout,nolvp,nocpd,nowrt,reserved
#use delay(clock=20000000)

#use  fast_io(a)
#use  fast_io(b)
#use  fast_io(c)
#use  fast_io(d)
#use  fast_io(e)

#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#byte porte=0x09

void main()
{

set_tris_a(0b11111111);
set_tris_b(0b00000000);
set_tris_c(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b00000000);

   char values[] = {58,40,57,17,53,36,54,18};
   int passo1 = 0, passo2 = 0, passo3 = 0;
   unsigned char xold=0, yold=0, zold=0;

   
   while(true){

   if(input(PIN_A0))xold=0;
   if(input(PIN_A2))yold=0;
   if(input(PIN_A4))zold=0;

     
//****************** EIXO X ****************************************************

     if((!input(PIN_A0))&&(xold==0))
     {     
         if(input(PIN_A1))
    {
           (passo1<8 )?(passo1++):(passo1=0);
            output_b(values[passo1]);         
         }     
         else{
            (passo1>0)?(passo1--):(passo1=7);
            output_b(values[passo1]);
                     
         }           
         if(!input(PIN_A0))xold=1;
      }
     
       
     
//***************** EIXO Y *****************************************************     
     
         if((!input(PIN_A2))&&(xold==0))
     {     
         if(input(PIN_A3))
    {
           (passo2<8 )?(passo2++):(passo2=0);
            output_c(values[passo2]);         
         }     
         else{
            (passo2>0)?(passo2--):(passo2=7);
            output_c(values[passo2]);
                     
         }           
         if(!input(PIN_A2))xold=1;
      }
     
//***************** EIXO Z *****************************************************

 if((!input(PIN_A4))&&(zold==0))
{     
         if(input(PIN_A5))
         {
            (passo3<8 ) ?(passo3++):(passo3=0);
            output_d(values[passo3]);   
                   
         }     
     
         else{
            (passo3>0)?(passo3--):(passo3=7);
            output_d(values[passo3]);
                     
         }           
         if(!input(PIN_A4))zold=1;
     }
   }
}


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Consultando o Datasheet, verificamos que os valores para Meio-Passo são os citados no início (58, 36, etc...), mas não estamos conseguindo fazer funcionar corretamente.
Também estamos em dúvida com qual programa usar para controlar os motores (TurboCNC ou Mach3), e também precisamos de um programa que funcione para transformar arquivos dwf em G-Code.
Qualquer ajuda será extremamente bem-vinda.
Obrigado desde já
Título: Re: AJUDA! Programação para Plotter de 3 eixos usando L298 e PIC16F877A
Enviado por: Robinho em 30 de Setembro de 2010, 11:39
Olá amigo,tudo bem? :)
Quanto ao melhor programa para controle, eu gosto muito do turbocnc, visto que alem de ser gratuito é leve e de facil manuseio,em plataforma "DOS",funciona em micros antigos é um dos mais leves que conheço!. Porém não tem interface gráfica como o mach ou seja se você quiser fazer um circulo, na tela do monitor não ira aparecer o desenho de um circulo se revelando de acordo com o desenvolvimento do trabalho.... O programa para conversão de dxf em G-cod gratuito é esse do link abaixo,lá também pode ser baixado o turbo cnc gratuitamente....
http://www.dakeng.com/ace.html (http://www.dakeng.com/ace.html)
Um grande abraço! ;) se precisar de alguma coisa é so dizer!... ;)
Att:Robinho