Loading


Autor topico: Programa para Motor de Passo  (Lida 4548 vezes)

0 Membros e 1 Visitante esto vendo este topico.

Offline JoãoFDS

  • Novato
  • *
  • Mensagens: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Palmas/TO
  • Nome:: João Ferreira
  • Profissão: Técnico Mecatrônico/Informática
Programa para Motor de Passo
« Online: 15 de Dezembro de 2011, 20:25 »
Boa noite a todos.
Ja faz um tempo que visito o site, mas só agora resolvi me cadastrar.
sou novo aqui no site, se estiver postando no lugar errado peço desculpas.

Bom, la vai a duvida.
  estou tentando controlar um motor de passo nema23 (6 fios) pela porta paralela.
como é só um motor estou a usar o ULN2003 com um TIP122 e sua saída pois o motor é de 2A.

  A questão é... no script de programação (DEV C++) eu preciso enviar um pulso por vez para o CI ou posso enviar os 4 pulsos de uma só vez? (no caso... D0; D1; D2; D3 simultaneamente).
  Sendo pulsos alternados com um determinado intervalo de tempo, como ficaria com um laço for ou while, também poderia ser sem laços, contudo que tivesse como aumentar ou diminuir a RPM.

fiz esse mas ele só ativa uma porta.

    unsigned char valor=8;
    while(valor>=0){
                   outportb (0x378, 2);
                   cout << valor;
                   _sleep(500); //meio segundo
                   }

Obrigado e aguardo soluções inteligentes.



Online minilathe

  • Moderadores
  • CNCMASTER
  • ******
  • Mensagens: 3359
  • Sexo: Masculino
  • Perguntas? http://www.istf.com.br/perguntas/
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Programa para Motor de Passo
« Resposta #1 Online: 15 de Dezembro de 2011, 22:19 »
Se cada bit da porta estiver associado a uma fase do motor, mais de uma fase pode ser acionada simultaneamente, exemplo:

unsigned char i, valor[]={0x01, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x09};

while (1){
    for (i = 0; i < 8; i++){
        outportb (0x378, valor);
        printf( "%d - %d\n", i, valor);
        _sleep(500); //meio segundo
   }
}

Offline JoãoFDS

  • Novato
  • *
  • Mensagens: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Palmas/TO
  • Nome:: João Ferreira
  • Profissão: Técnico Mecatrônico/Informática
Re:Programa para Motor de Passo
« Resposta #2 Online: 15 de Dezembro de 2011, 22:49 »
 :-\
Desculpe mas não sou um expert em Motor de Passo...
quando você fala "cada bit da porta estiver associado a uma fase do motor", você fala do que exatamente? fase = corrente?

e o seu script não compilou aqui. Obrigado pela ajuda.

Online minilathe

  • Moderadores
  • CNCMASTER
  • ******
  • Mensagens: 3359
  • Sexo: Masculino
  • Perguntas? http://www.istf.com.br/perguntas/
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Programa para Motor de Passo
« Resposta #3 Online: 15 de Dezembro de 2011, 23:10 »

Se você quer comandar um motor de passo, sugiro antes dar uma lida no funcionamento do mesmo. Um motor de passo possui várias fases, enrolamentos.

Offline C N C N o w !

  • Moderador
  • CNCMASTER
  • ******
  • Mensagens: 6313
  • Sexo: Masculino
Re:Programa para Motor de Passo
« Resposta #4 Online: 15 de Dezembro de 2011, 23:20 »
You are not allowed to view links. Register or Login
quando você fala "cada bit da porta estiver associado a uma fase do motor", você fala do que exatamente? fase = corrente?


João, cada enrolamento do motor é denominado fase. A estrutura de um motor unipolar de seis fios é assim:


         +---/\/\/\---0 A1
         |  *
COM1 0---+
         |         *
         +---/\/\/\---0 A2


         +---/\/\/\---0 B1
         |  *
COM2 0---+
         |         *
         +---/\/\/\---0 B2


Observe que há dois pares de bobinas, A1/A2 e B1/B2. Os enrolamentos de um mesmo par nunca são energizados concomitantemente, mas de pares diferentes sim.

Para operação do motor em passo cheio no modo padrão, duas fases energizadas, uma possível sequência ( representando fases energizadas por 1 e desenergizadas por 0 ):


A1 A2 B1 B2
 0  1  0  1  -  1
 0  1  1  0  -  2
 1  0  1  0  -  3
 1  0  0  1  -  4


Com esta sequência [ 1, 2, 3, 4 ] o motor gira para um lado, invertendo-se a sequencia o motor gira para o lado oposto.

Para quem queira familiarizar-se com motores de passo costumo indicar :

You are not allowed to view links. Register or Login

Citar
aguardo soluções inteligentes.


Nós tb ... ;D
« Última modificação: 15 de Dezembro de 2011, 23:23 por C N C N o w ! »

Offline JoãoFDS

  • Novato
  • *
  • Mensagens: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Palmas/TO
  • Nome:: João Ferreira
  • Profissão: Técnico Mecatrônico/Informática
Re:Programa para Motor de Passo
« Resposta #5 Online: 16 de Dezembro de 2011, 00:02 »
C N C N o w !

Muito obrigado pelo esclarecimento...
pouco depois do comentário do minilathe, lí algumas coisas referente e descobrí
parte do que  você deixou no post. Enfim ficou claro sobre as fases.

Aproveitando para responder a questão do minilathe sobre cada bit em cada fase.... cada bit esta sim
associado a uma cada fase do motor, porem seu script que seria minha solução não compilou aqui.

minha intenção é faze-lo girar e controlar sua RPM atravez de _sleep()
qualquer ajuda é bem vinda..

Obrigado a todos.

Online minilathe

  • Moderadores
  • CNCMASTER
  • ******
  • Mensagens: 3359
  • Sexo: Masculino
  • Perguntas? http://www.istf.com.br/perguntas/
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Programa para Motor de Passo
« Resposta #6 Online: 16 de Dezembro de 2011, 00:12 »
Qual comando não compilou? Ou deu erro?


Offline JoãoFDS

  • Novato
  • *
  • Mensagens: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Palmas/TO
  • Nome:: João Ferreira
  • Profissão: Técnico Mecatrônico/Informática
Re:Programa para Motor de Passo
« Resposta #7 Online: 16 de Dezembro de 2011, 00:23 »
#include <iostream>
#include <stdio.h>
using namespace std;

int main(){
   
unsigned char i, valor[]={0x01, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x09};

while (1){
    for (i = 0; i < 8; i++){
        outportb (0x378, valor);
        printf( "%d - %d\n", i, valor);
        _sleep(500); //meio segundo
   }                   
  }                system("pause > null");
                   return 0;
                   }


Aqui deu outporb undeclared.

Offline rymaeda

  • Novato
  • *
  • Mensagens: 45
  • Sexo: Masculino
  • GUIA-CNC
Re:Programa para Motor de Passo
« Resposta #8 Online: 16 de Dezembro de 2011, 01:08 »
Bom dia a todos.

Faz tempo que não programo nada mas vou arriscar um pitaco.

DevC++ é um ambiente de desenvolvimento para Windows e o Windows em suas últimas encarnações restringe o acesso às suas portas de comunicações como a que pretende em seus experimentos.

Outport pelo pouco que me lembro pertence à biblioteca do TurboC/C++ para DOS e há uns 12 anos atrás as bibliotecas para controle da porta paralela para Windows eram pagas uma rápida pesquisa na Rede parece indicar que ainda seja assim.

Alternativamente pode baixar os compiladores TurboC gratuitamente no museu da Borland e fazer a sua pesquisa em ambiente DOS...

/pitaco

Boa sorte,

Ricardo

Offline JoãoFDS

  • Novato
  • *
  • Mensagens: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Palmas/TO
  • Nome:: João Ferreira
  • Profissão: Técnico Mecatrônico/Informática
Re:Programa para Motor de Passo
« Resposta #9 Online: 16 de Dezembro de 2011, 01:36 »
Muito obrigado pelo "Pitaco" Ricardo....rs

   Embora concorde com você, que existam outros compiladores que desemprenham o mesmo
papel que o Dev C++ e tals... Porém, para os fins que utilizo a programação, ao meu ver ainda não preciso de um outro compilador.

   Com relação ao modo de acessar a porta paralela, já fiz alguns projetos com motor DC e
felizmente ocorreu tudo bem, utilizo uma DLL (inpout32.dll) que carrega os modulos necessários para obter acesso a ela.

Desde já agradeço o interesse, Grande abraço.

Online minilathe

  • Moderadores
  • CNCMASTER
  • ******
  • Mensagens: 3359
  • Sexo: Masculino
  • Perguntas? http://www.istf.com.br/perguntas/
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Programa para Motor de Passo
« Resposta #10 Online: 16 de Dezembro de 2011, 08:20 »
Acho que o DEV C++ não é adequado para comandar um motor de passo, principalmente em altas velocidades. Testei o programa a seguir no BC 3.0 com Windows Vista e funcionou. O editor de mensagens do forum interpretou alguns carcteres, alterando o código visualizado, acho que agora vai aparecer corretamente.

outportb e sleeep são defindos na biblioteca DOS

======================================================
#include<stdio.h>
#include<dos.h>

main(){

unsigned char i, valor[]={0x01, 0x03, 0x02, 0x06, 0x04, 0x0c, 0x08, 0x09};

while (1){
   for (i = 0; i < 8; i++){
      outportb (0x378, valor[ i ] );
      printf( "%d - %d\n", i, valor[ i ] );
      sleep(500); //meio segundo
   }
}
}
« Última modificação: 16 de Dezembro de 2011, 08:22 por minilathe »

Offline JoãoFDS

  • Novato
  • *
  • Mensagens: 9
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: Palmas/TO
  • Nome:: João Ferreira
  • Profissão: Técnico Mecatrônico/Informática
Re:Programa para Motor de Passo
« Resposta #11 Online: 16 de Dezembro de 2011, 15:37 »
Muito obrigado a todos, em especial ao minilathe pela atenção e dicas.

Após bater a cabeça na parede, surgiu uma luz... consegui fazer o script.
fiz um laço para delay e outro para os pulsos, vou postar caso haja outros interessados.

//   ===============================================  //

#include <stdio.h>
#include <iostream>

//laço de delay

void espera(int tempo) {
     double i;
    for (i=1; i<=tempo; i++) {
    }
}

//laço de pulsos

int main()
{
    cin >> i;   
    while(i==1||i==0){
                           
              if(i==0){
              outportb (0x378, 0);} 
                           
              if(i==1){
                      outportb (0x378,1);
                      espera(1000000);
                      outportb (0x378,2);
                      espera(1000000);
                      outportb (0x378,4);
                      espera(1000000);
                      outportb (0x378,8);
                      espera(1000000);
                      }
                      }

return 0;
}
//   ===============================================  //

lembrando que meu sistema é WinXp então utilizei uma DLL (inpout32.dll) para obter acesso a porta.
mais informações ON Google.

Obrigado a todos.



Share via facebook Share via twitter

Similar Topics

  Assunto / Iniciado por Respostas / Visualizações Última Mensagem:
xx
Programa para testar motores de passo

Iniciado por gui_zilli

9 Respostas
12300 Visualizações
Última Mensagem: 28 de Outubro de 2009, 16:18
por matrixlan1
xx
Ajuda com programa para 4 motor

Iniciado por viking

18 Respostas
3238 Visualizações
Última Mensagem: 07 de Maio de 2010, 21:31
por cientista13
xx
Driver para Motor de Passo (que nunca perde o passo) - O FUTURO VEM AI.

Iniciado por mandiares

17 Respostas
4034 Visualizações
Última Mensagem: 20 de Abril de 2012, 20:06
por minilathe
xx
Motor de passo ou servo motor para furadeira sensitiva?

Iniciado por JoãoFir

0 Respostas
1228 Visualizações
Última Mensagem: 02 de Março de 2011, 16:39
por JoãoFir
sad
Motor de passo travando E X+ não para.

Iniciado por MarcosNC

0 Respostas
78 Visualizações
Última Mensagem: 19 de Maio de 2014, 10:09
por MarcosNC
xx
Motor de passo travando e X+ não para.

Iniciado por MarcosNC

0 Respostas
100 Visualizações
Última Mensagem: 19 de Maio de 2014, 10:19
por MarcosNC
 


Users found this pages searching for:

google guiacnc 42080656 ewu com com google guiacnc 66111022 com com google guiacnc 72676100 cwc com com google guiacnc 59930103 ew0 com com motor passo google guiacnc 44442042 dmq com com google guiacnc 41934586 ewu com com para motor passo google guiacnc 52434380 ewu com com linguagem para motor passo
google guiacnc 57155469 cwc com com google guiacnc 67720277 com com search yahoo guiacnc pdp9ndr8wyij4i5fryg1h t0- com google guiacnc com google guiacnc 66111022 cwc com com google guiacnc 64125504 cwc com com google guiacnc 42553238 ewu com google guiacnc 61965928 com com motor passo google guiacnc 64125504 com