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
-
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
-
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
}
-
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...
-
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.
-
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
-
Para que você quer fazer esse programa do PIC? Vai usar em sua CNC?
-
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.
-
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??
-
È 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?