Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print
ELETRÔNICA / ELÉTRICA => Eletrônica Básica => Microcontroladores => Tópico iniciado por: Marcos Dornelas em 02 de Fevereiro de 2011, 21:56
-
Aceito Exemplos!
Muito Obrigado!
-
E ai pessoal boa tarde !
Estou usando para funcionar um motor de passo um PIC16F877A e o CI L297 com TIPs, preciso gerar um clock para o CI, pelo o que eu li em alguns comentários eu tenho que gerar um sinal PWM fornecido por uma programação no PIC.
Alguem poderia me informar as comandos ou algum link que possa me ajudar ??
Aguardo,
Obrigado.
Thiago H.
-
Thiago,
O PIC acionará o motor de passo através do L-297 e dos transistores. Sendo assim, o PIC só precisa enviar sinais de passo e de direção de movimento do motor ao L-297. Os sinais PWM são gerados e controlados pelo L-297. O PIC não precisa gerar sinais PWM.
Dependendo do que quer fazer, dá até para descartar o L-297 e usar o PIC para controlar os motores, fazendo a função de PWM e efetuar "microstepping" no PIC, mas aí a coisa complica um pouco. Link: http://www.fromorbit.com/projects/picstep/index.php (http://www.fromorbit.com/projects/picstep/index.php)
Sugiro colocar um CI TTL 7409 entre o L-297 (se for usado) e os transistores.
-
Thiago.Henrique
existe um equívoco aí ... eu tenho que gerar um sinal PWM fornecido por uma programação no PIC ... e isso não é verdade.
O que é necessário é na verdade um trem de pulsos, e este trem pode ser feito com qualquer oscilador, um exemplo bem simples é utilizando o LM555, onde vc terá circuitos aos montes na internet, e com o devido datasheet vc aprende até a calcular os valores dos componentes de acordo com a temporizaçao necessária.
Outra coisa, é que com o próprio LM555 vc pode fazer um PWM ... procure sobre o assunto que vc verá que existem opções além de microcontroladores.
Marcos Dornelas
recomendo procurar e ler o help do compilador que desejar utilizar (MikroC, PicBasic, C18, JavaPIC, CCS, ASM ... ) com certeza lá possui exemplos aproveitáveis.
-
Bom dia a todos !
Minilathe:
É exatamente isso que eu já tinha feito, usei o L297+7409+TIPs para o acionamento do motor, segue a imagem em anexo (algumas ligações entre PIC e L297 não serão necessárias).
Blackmore:
pois então blackmore, como gerar esse trem de pulso e como variar a velocidade de "trem"? Mas se é possivel fazer isso com o PIC eu não precisaria do LM555 no caso, pois já usarei o PIC para fazer toda a programação do projeto.
Dúvidas.
Como controlar a velocidade? ( até onde eu sei é a frequencia dos pulsos gerados )
No caso eu vou ter no projeto 4 motores de passo unipolares, e todos vão girar tanto sentido horário quando anti horário. No caso eu controlaria o sentido pela porta de direção do L297. Esse trem de pulsos se vir do PIC eu posso compartilhar com todos os 4 L297 ?
Obrigado de novo pessoal pela atenção.
AT+
-
pois então blackmore, como gerar esse trem de pulso e como variar a velocidade de "trem"?
é como falei, vc pode usar um LM555, basta estudar e entender como funciona ... dae tu vai sacar onde e como fazer essa variação do tempo do sinal ... e assim varia a velocidade do trem ... maaass
Mas se é possivel fazer isso com o PIC eu não precisaria do LM555 no caso, pois já usarei o PIC para fazer toda a programação do projeto.
bom ... eu não imaginei que o projeto já está sendo tocado por um microcontrolador, se fosse para girar apenas um motor não precisa de microcontrolador, afinal nem tudo precisa de microcontrolador, até certo ponto microcontrolador é evolução ... então esqueça o que eu disse anteriormente ...
Como controlar a velocidade? ( até onde eu sei é a frequencia dos pulsos gerados )
com o microcontrolador? se vc vai utilizar o PWM basta alterar o Duty cycle ... simples assim ...
No caso eu vou ter no projeto 4 motores de passo unipolares, e todos vão girar tanto sentido horário quando anti horário. No caso eu controlaria o sentido pela porta de direção do L297. Esse trem de pulsos se vir do PIC eu posso compartilhar com todos os 4 L297 ?
até pode, mas todos os motores terão sempre a mesma velocidade ... se vc pretende q um seja mais rápido que outro continuamente, procure outra opção.
-
Como controlar a velocidade? ( até onde eu sei é a frequencia dos pulsos gerados )
com o microcontrolador? se vc vai utilizar o PWM basta alterar o Duty cycle ... simples assim ...
Nananinanão ! Vou repetir pela enésima vez: motores de passo são motores síncronos. A velocidade é determinada pela frequência, não pelo ciclo de trabalho.
No caso eu vou ter no projeto 4 motores de passo unipolares, e todos vão girar tanto sentido horário quando anti horário. No caso eu controlaria o sentido pela porta de direção do L297. Esse trem de pulsos se vir do PIC eu posso compartilhar com todos os 4 L297 ?
até pode, mas todos os motores terão sempre a mesma velocidade ... se vc pretende q um seja mais rápido que outro continuamente, procure outra opção.
Ou gere trens de pulsos individuais ...
-
Nananinanão ! Vou repetir pela enésima vez: motores de passo são motores síncronos. A velocidade é determinada pela frequência, não pelo ciclo de trabalho.
ok ... PWM não serve .. :)
-
Bom dia pessoal,
Poh assim me confundiram ainda mais, srsr...
Não há problema se os motores terem a mesma velocidade (freqüência), mas se não é pelo Duty Cycle como eu gero esse trem de pulsos?? E o PWM, eu esqueço??
-
Não confundir duty cycle (DC) com frequência (f), são coisas diferentes:
DC = Ton / ( Ton + Toff)
f = 1 / (Ton + Toff)
Um pode variar independentemente do outro.
-
ah tá
Entao Minilathe seria isso:
Ton + Toff = T
f = 1 / T
Mas agora trabalhando no PIC, eu tenho que criar um trem de pulsos, então quanto menor o periodo (T), maior será a frequencia. Mas maior será a frequencia do clock ou do motor ?? Ou aumentando a Frequencia consequentemente já aumenta a velocidade de rotacao do motor ??
-
Ton + Toff = T
f = 1 / T
Correto.
Mas agora trabalhando no PIC, eu tenho que criar um trem de pulsos, então quanto menor o periodo (T), maior será a frequencia. Mas maior será a frequencia do clock ou do motor ?? Ou aumentando a Frequencia consequentemente já aumenta a velocidade de rotacao do motor ??
O PIC tem de gerar um trem de pulsos ao motor de acordo com a necessidade. Não confundir a frequência do clock do processador (PIC), que rodará o programa, e o "clock" enviado ao motor. São independentes!!
-
a frequencia do clock do processador é o do crystal ou to falando besteira ??
Agora o trem de pulsos enviados para o motor, quais os comandos de programação usados para criar esse trem de pulsos para o motor ??
Uso a saida CCP do PIC ?? Posso usar para para 4 motores simultaneamente ??
-
a frequencia do clock do processador é o do crystal ou to falando besteira ??
Sim, é a do cristal. Mas o PIC também poderia operar com oscilador interno (do tipo RC).
Agora o trem de pulsos enviados para o motor, quais os comandos de programação usados para criar esse trem de pulsos para o motor ??
Uso a saida CCP do PIC ?? Posso usar para para 4 motores simultaneamente ??
Os pulsos podem ser gerados através de uma programação dotada de temporização ajustável (para variar a frequência do clock do motor) por software do PIC ou por hardware interno do PIC (temporizador).
-
maravilha Minilathe,
no caso o pic iria operar com o cristal.
agora no caso da frequencia do motor, eu desconheço essa diferença entre o software do PIC e o hardware interno. Como seria ?
O que eu descobri até agora foi algo parecido com
setup_ccp1 ( ccp_pwm )
set_pwm_duty ( valor )
setup_timer2_ ( .....
mas ainda não sei como organizar de uma forma funcional.
-
Thiago.Henrique
depois de ter sido repreendido ... aprendi a lição ... e veja que você está configurando o módulo PWM do microcontrolador com o fragmento do código descrito por vc, e como dito pelo mestre CNCNow! isso está errado ...
Uma forma que você consegue mandar o sinal na frequência que vc precisa para o trem de pulsos a partir do microcontrolador através de interrupção. Veja bem, é apenas um caminho ... com certeza irão recomendar outros.
Vou acompanhar o tópico, devido ao fato do mestre minilathe sempre agregar conhecimento a quem ele ajuda, não que outros não o façam (exemplos o CNCNOW! e o FGilli) mas o minilathe é profissional da área ... hahaha ...
-
Blackmore
por isso estou aqui, para saber através do conhecimento de vocês o que é o certo.
O que eu coloco é o pouco conhecimento que eu tenho sobre e se eu tiver errado, que me corrige por favor :D
Já deixei claro que estou muito satisfeito com o fórum, mas no momento eu preciso gera esse trem de pulsos e funcionar 4 motores unipolares através do PIC e o CI L297 e 7409.... srsrsr
tamo junto blackmore !
-
Thiago,
maravilha Minilathe,
no caso o pic iria operar com o cristal.
agora no caso da frequencia do motor, eu desconheço essa diferença entre o software do PIC e o hardware interno. Como seria ?
O que eu descobri até agora foi algo parecido com
setup_ccp1 ( ccp_pwm )
set_pwm_duty ( valor )
setup_timer2_ ( .....
mas ainda não sei como organizar de uma forma funcional.
Sugiro você estudar:
(1) A arquitetura interna do PIC que pretende usar
(2) Exemplos de programa em PIC (controle de motores de passo, temporização). No site da Microchip (www.microchip.com (http://www.microchip.com)) há muito material em inglês.
(3) Como a usar simuladores como o Proteus, que permite rodar a simulação de seu sistema (PIC, drivers, motores), incluindo o programa do PIC.
Também é necessário definir requisitos da sua aplicação, você disse que o PIC vai comandar os 4 motores de seu sistema de paletizador não é isso? Então os comandos para o paletizador funcionar serão programados no PIC?
-
Thiago, seria de todo interessante que vc descrevesse a operação da máquina detalhadamente, de modo que possamos opinar com conhecimento de causa ... a solução que vc imaginou pode não ser a mais adequada ao seu caso e certamente não é a única ...
Ignoro se a sua prioridade é o estudo de microcontroladores em geral, PICs em particular ou se é a consecução do projeto. Se é este o caso, creio que é hora de avaliar outras alternativas ... a utilização de microcontroladores é perfeitamente viável, mas o que vc pretende não é exatamente simples, a coisa pode enredar mesmo programadores experientes, particularmente se for necessária a interpolação de eixos ...
-
Bom dia pessoal !
Minilathe:
Exatamente, são 4 motores ( X,Y,Z, rotação ), haverá uma programação no PIC que irá comandar a movimentação dos motores. Essa programação informará ao motor o quanto girar e o sentido de giro, a máquina executará somente a programação fornecida a ela.
Exemplo:
Produto 1: ( 300,150,60,0) //pegou o produto na esteira
Levar Produto 1: ( 80,30,40,0 ) //deixou produto na esteira agora irá pegar o próximo....
Seria essa a forma de raciocínio.
Todos os movimentos serão calculados com base no passo do fuso e rpm dos motores para.
CNCNow:
A máquina será um Paletizador Cartesiano, a forma de operação está mais explicada acima e também há uma imagem croqui de como mais ou menos será a máquina.
-
A máquina será um Paletizador Cartesiano ...
Tá, mas continuo sem saber qual é a sua prioridade ... a utilização de um uC é mandatória ou outra solução é admissível ?
De modo geral paletizadores não exigem a interpolação dos eixos e a operação com velocidade fixa pode ser admissível ... isto facilita bastante as coisas.
-
Exatamente CNCNow, também não vejo necessidade de variar a velocidade, e ter uma para cada motor, acredito que pode ser a mesma para os 4 motores....
As possibilidade de controles que foram discutidos no nosso grupo, foi de colocar um CLP ou fazer a programação em C em um microC.
Então optamos pelo uC por sair bem mais barato... agora se há outra forma de controle desses motores eu desconheço.
-
Não seria usual nesse tipo de aplicação, mas acho viável utilizar um programa em código G e um software CNC (EMC2, TCNC, Mach3,...). A vantagem é o reduzido esforço de programação e uso de uma linguagem poderosa para comandar motores, inclusive com interpolação (que não é o seu caso). Assim, parte de controle de seu sistema ficaria pronta mais rapidamente, mas talvez didaticamente não fosse apropriado.
Em linhas de produção (seu caso) e em automação de processos são mais usados respectivamente CLP e SDCDs, ou então soluções customizadas usando microcontroladores, em aplicações mais simples.
-
É Minilathe, acho que seria algo a mais para eu buscar informação, também acho que nesse caso de automação o recomendado seria CLPs ou microcontroladores. ..
-
Então optamos pelo uC por sair bem mais barato... agora se há outra forma de controle desses motores eu desconheço.
Thiago, eu costumo dizer que preço e custo são coisas muitíssimos diferentes ... não há nada de barato nos microcontroladores, exceto o chip ... o que custa caro de fato é o desenvolvimento e - perdoe a franqueza se for excessiva - me parece que vc carece da experiência para desenvolver a aplicação em tempo e custo razoáveis ...
CLPs podem ser uma boa alternativa, mas tb não estão isentos de percalços e se é verdade que nenhum caminho está isento de pedras, alguns são mais batidos, as pedras maiores já foram removidas ou já se sabe onde estão e é possível desviar delas ...
De modo geral, em casos como o discutido, costumo recomendar a utilização de um PC e progs como o Mach, EMC2, TurboCNC, como já sugerido pelo Gil. O custo total do sistema acaba ficando muito baixo, o tempo de desenvolvimento muito curto e a flexibilidade é enorme ... para uma aplicação como seu paletizador acho difícil justificar outra alternativa, a menos que se pretenda produzi-lo em massa, para comercialização ... no caso da fabricação de uma ou algumas unidades eu não tenho dúvidas de que a relação custo / benefício desta abordagem é imbatível.
-
É Minilathe, acho que seria algo a mais para eu buscar informação, também acho que nesse caso de automação o recomendado seria CLPs ou microcontroladores. ..
Ok, entendi que sendo um trabalho escolar, o uso de soluções consagradas pelo mercado é mais apropriado. Apesar de não ser o mais rápido e mais barato (tempo e $$$), não é?
Para iniciar descreva a sua aplicação passo a passo, em termos de comandos de alto nível, do tipo:
(1) "mover braço 1 até que a condição x seja verdadeira"
(2) "mover braço 2 na quantidade de m passos"
.....
Voce pode usar um fluxograma ou um diagrama de estados para montar essa modelagem de sua lógica.
Em seguida vá detalhando cada passo, definido anteriormente, em instruções mais específicas (movimentação de motores, verificação de condições de chaves de fim de curso ou botoeiras, ...). O seu programa "surgirá" naturalmente dessa descrição passo a passo mais detalhada.
-
CNCNow:
Isso é verdade, eu não tenho experiência nenhuma, comecei aprofundar sobre o assunto com livros de eletrônica e programação C este ano.
Uma outra forma é usando esses programas CNC, mas eu preciso que o programa seja totalmente gratuito, eles são ??
Vou pensar mais sobre o assunto e conversar com meu orientador hoje na faculdade e volto a entrar em contato amanhã.
Obrigado mais vez.
Minilathe:
Isso mesmo, o microcontrolador foi recomendado pelo professor, mas agora estou em dúvida entre uC e programas CNC. Acho que por CNC ganharia tempo.
É isso mesmo que vou fazer de inicio Gil, descrever o trabalho de cada motor para cada produto que for ser pego.
Mas voltando no inicio do tópico, preciso saber como eu gero o trem de pulsos, ou seja, ditar o ritmo para o motor, usando o microcontrolador.
-
Thiago,
Muito simples, para um motor unipolar acionado em Half-Step:
Inicio
aciona fase 1
temporiza T
aciona fase 1 e 2
temporiza T
aciona fase 2
temporiza T
aciona fase 2 e 3
temporiza T
aciona fase 3
temporiza T
aciona fase 3 e 4
temporiza T
aciona fase 4
temporiza T
aciona fase 4 e 1
temporiza T
volta ao inicio se não andou "n" passos
Mas, como eu disse, dê uma olhada no site da Microhip (www.microchip.com (http://www.microchip.com)), voce não quer tudo de "mão beijada" :) ...., não é?
-
AHAHAHAHA ai sim eim...
hummmm ... agora me ajudo muito, vou me informar melhor e volto a postar.
Brigadão Minilathe.
-
... preciso que o programa seja totalmente gratuito, eles são ??
O TurboCNC [ DOS ] e o EMC2 [ Linux ] são gratuitos. Recomendo enfaticamente a familiarização com o EMC2, é extremamente poderoso e o código é aberto. Há inclusive um PLC incorporado, pronto pra usar. Além disso, coisas muito úteis, como um osciloscópio ...