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: carloshestre em 27 de Janeiro de 2012, 22:53

Título: duvidas com o while
Enviado por: carloshestre em 27 de Janeiro de 2012, 22:53
ola galera,estou com uma duvida, ja vi que o comando while é um laço para repeticoes
na linguagem c , sera que tem como determinar o numero de vezes que o programa
deve repetir ?  se tiver me de um exemplo do codigo que ja pesquisei e nao achei nada.
È que na verdade preciso determinar um numero correto de pulsos e sao muitos
e o pic 16f628a nao da pra fazer muito(memoria pequena) , nesse modo daria. obrigado
Título: Re:duvidas com o while
Enviado por: gui.manufa em 27 de Janeiro de 2012, 23:25
Bom, pelo que entendi você quer que o programa entre em um WHILE, repita a rotina determinadas vezes e depois saia.
Vou colocar um exemplo do meu programa que controlava motores de passo dado uma distancia D.
/*
CONT=Contador de pulsos
CONT2=contador de distancia (a cada 8 pulsos deslocava 1mm)
D=distancia fornecida em mm
/*


     OUTPUT_HIGH(EN_Z)                                          //Liga o motor

      WHILE(CONT2<D)
        {
         OUTPUT_TOGGLE(CLOCK_Z);                         // Pulsos na saída
         DELAY_US(350);
         CONT++;                                                        // Incrementa o contador
         IF(CONT==8){CONT2++;CONT=0;}               //Se a contagem de pulsos for igual a 8, incrementa a contagem de distancia e zera o contador de pulsos
         IF(FCZ && !SENT){OUTPUT_LOW(EN_Z);}    //Se atingir o fim de curso o motor desliga
        }
Título: Re:duvidas com o while
Enviado por: minilathe em 28 de Janeiro de 2012, 07:31
ola galera,estou com uma duvida, ja vi que o comando while é um laço para repeticoes
na linguagem c , sera que tem como determinar o numero de vezes que o programa
deve repetir ?  se tiver me de um exemplo do codigo que ja pesquisei e nao achei nada.
È que na verdade preciso determinar um numero correto de pulsos e sao muitos
e o pic 16f628a nao da pra fazer muito(memoria pequena) , nesse modo daria. obrigado

Para repetir um grupo de instruções "n" vezes, o comando ideal seria o "for". O "while" é normalmente mais usado para executar um grupo de instruções enquanto uma condição for satisfeita. Por exemplo, enquanto o valor de uma variável "float" for maior que um certo limite ou enquanto esse valor estiver dentro de um limite mínimo e máximo. Evidentemente que essa condição do "while" também poderia ser um contador, onde seria verificado se está dentro de um certo valor limite. Exemplo:

// Executar as instruções 5 vezes
n = 5;

for (i = 0, i < n, i++) {
 a+ = b + c;
 a++;
 b* = 2;
}

Mas você também pode executar as instruções e contar quantas vezes são executadas enquanto uma certa condição é satisfeita, usando o while. Depois verifica o valor do contador para informar quantas vezes as instruções foram executadas.

Mas dá para fazer tudo isso com assembler, sem "for" nem "while". Não é o compilador que faz a diferença e resolve os problemas e sim o programa e o programador.

Para contar pulsos pode-se também usar os contadores internos do PIC16F628. Enfim, há muitas possibilidades...
Título: Re:duvidas com o while
Enviado por: carloshestre em 30 de Janeiro de 2012, 19:24
VALEU PELA RESPOSTA
Eu nao estou entendendo , as duas programaçoes sao feitas no começo do programa 
ou no final? entao gui.manufa eu estou controlando um motor de passo
ja fiz o drive para controlar e  funciona bem , mas para facilitar eu tinha que
aprender a dominar esta parte por exemplo em um sequencial de 4 leds onde
entraria esse comando?obrigado.
Título: Re:duvidas com o while
Enviado por: carloshestre em 01 de Fevereiro de 2012, 20:15
ai galera da uma força , to precisando so disso para montar o meu
eixo x e y
ja estou  com os fusos prontos no lugar vou trabalhar com mdf
valeu
Título: Re:duvidas com o while
Enviado por: minilathe em 01 de Fevereiro de 2012, 22:04
Para que você quer fazer esse programa do PIC? Vai usar em sua CNC?
Título: Re:duvidas com o while
Enviado por: carloshestre em 02 de Fevereiro de 2012, 17:21
sim ,minilathe eu vou fazer uma especie de cnc , só que para cada trabalho, vou ter uma gravaçao no pic
basicamente eu fiz um drive de potencia para 4 saidas do pic ,  com isso o motor gira numa boa sem pular passo
estou com um motor de 5 kgf nele pede 4 volts por fase 1,6 a por fase 2,5 ohm por fase , mas deste modo
ele nao tem força , quando eu alimento ele com 12 volts de uma bateria de ate 10 amperes, ele fica forte
mas esquenta bem com um meter em serie eu medi a corrente esta em torno de 4,5 ampres , agora que tá
como vou limitar a corrente? se eu por um tranzistor com potenciometro no comum vai ter perca de tensao?
outra pergunta , sera que o mach 3 controla esse drive?
desculpe pela quantia de perguntas , eu so tenho um curso basico de eletronica e na parte de pic
o que eu sei estou aprendendo com voces .
ah , o codigo que voce postou eu tentei ate que consegui obrigado.
Título: Re:duvidas com o while
Enviado por: minilathe em 03 de Fevereiro de 2012, 11:01
sim ,minilathe eu vou fazer uma especie de cnc , só que para cada trabalho, vou ter uma gravaçao no pic

Acho que o seu projeto deveria ser revisto, se quer produzir peças numa CNC não precisa fazer um programa especifico num PIC. Isso é antieconômico, desnecessário e dificilmente pode ser feito. Há maneiras mais recomendadas, como usar um sistema ou um software CAM, do tipo Mach3, EMC2, ... que é uma solução mais flexível e eficaz.

Agora, se você quer aprender programação, aí é outra história. Mas não atrele isso à sua necessidade de produção...

basicamente eu fiz um drive de potencia para 4 saidas do pic ,  com isso o motor gira numa boa sem pular passo
estou com um motor de 5 kgf nele pede 4 volts por fase 1,6 a por fase 2,5 ohm por fase , mas deste modo
ele nao tem força , quando eu alimento ele com 12 volts de uma bateria de ate 10 amperes, ele fica forte
mas esquenta bem com um meter em serie eu medi a corrente esta em torno de 4,5 ampres , agora que tá
como vou limitar a corrente? se eu por um tranzistor com potenciometro no comum vai ter perca de tensao?
outra pergunta , sera que o mach 3 controla esse drive?
desculpe pela quantia de perguntas , eu so tenho um curso basico de eletronica e na parte de pic
o que eu sei estou aprendendo com voces .
ah , o codigo que voce postou eu tentei ate que consegui obrigado.

Para limitar a corrente do motor, seu programa deverá controlar a corrente do motor utilizando as técnicas de PWM e chopper. Se você só tem um curso básico de PIC, eu diria que vai ter que "comer muita poeira" até atingir algo eficaz.

Se seu interesse é produzir logo, é mais barato comprar uma placa CNC3AX e usar um software CAM.

E então??
Título: Re:duvidas com o while
Enviado por: carloshestre em 03 de Fevereiro de 2012, 19:05
È mesmo eu vou comprar uma placa , mas eu quero pega as manhas do microcontrolador
para que se eu precisar, por exemplo fazer um braço robo que faça sempre o mesmo movimento e
esse movimento tiver que ser sempre com precisao daria certo.
conheço bem a parte pneumatica , faço maquinas com esse  sistema e se eu conseguisse juntar tudo isso
daria para fazer varios tipos de maquinas , por que quando preciso de precisao com pneumatica nao tenho.
conheço bem tambem a parte de comandos eletricos.
o mach3 manda um sinal para cada fase do motor ou é a placa cnc3ax que recebe um pulso para cada
eixo e faz a comutaçao ordenando as bobinas?