domingo, 2 de julho de 2017

Controle de Motor de Passo através da Porta Paralela

Para entender melhor o circuito, é preciso ser Técnico em Eletrônica, computadores e Programação e, assim, sobre Porta Paralela de Computador.

Obviamente, você precisará de um computador, fonte de alimentação de 12 volts (de preferência um eliminador de bateria), motor de passo, chip ULN2003 e alguns fios de conexão.

É muito importante que você trabalhe com o menor motor de Passo disponível no mercado, como o usado em uma unidade de disquete.

As cores dos fios do motor passo a passo não são padrão.

A porta paralela do PC é uma maneira de conseguir que o computador se comunique com o mundo exterior.

A porta paralela geralmente é usada para interface de impressoras, mas a usamos para interfacear o motor de passo.

A porta paralela consiste em 25 pinos, mas só pode transmitir 8 bits de dados por vez.

O motivo do grande número de pinos é que cada pino de dados possui seu próprio pino de retorno de terra.

Existem outros pinos para várias outras funções.

Utilizamos apenas quatro pinos de dados e um pino de terra.

As funções dos vários pinos são dadas na Tabela I.

Os pinos 2 a 9 são pinos de dados.

Aqui, usaremos os pinos de dados 2 a 5, correspondentes aos bits de dados D0 a D3 da porta 378 (hexadecimal) para LPT1 ou 278 (hexadecimal) para LPT2.

Além disso, o pino 25 é usado como o pino de aterramento.

Se a porta paralela estiver conectada diretamente a um dispositivo elétrico, isso irá danificar a porta.

Assim, precisamos de um amplificador de corrente entre a porta paralela e o dispositivo elétrico.

O ULN2003, usado precisamente para este propósito, possui uma série de pares de transistores Darlington.

Uma configuração Darlington é uma maneira de conectar dois transistores para amplificar a corrente para muitas vezes do valor de entrada.

O motor de passo possui várias vantagens em relação a outros motores, no que diz respeito ao controle de um computador.

Inclui alta precisão de movimento angular, velocidade de rotação e alto torque de arranque e de parada.

Estamos lidando com um motor de passo permanente, unipolar que tem quatro bobinas dispostas.

Os terminais 1 e 2 são terminais comuns (conectados ao terra ou à alimentação positiva) e os outros quatro terminais são alimentados aos sinais apropriados.

Quando um sinal adequado é aplicado, o eixo gira por um ângulo específico, chamado de resolução de passo do motor.

Na aplicação contínua do mesmo sinal, o eixo permanece na mesma posição.

A rotação ocorre apenas quando o sinal é alterado em uma seqüência apropriada.

Existem três modos de operação de um motor de passo, ou seja, modo de excitação de singlecoil, modo de excitação de dualcoil e modos de meio passo.

Cada bobina é energizada sucessivamente de forma rotativa.

Se as quatro bobinas forem assumidas em um plano horizontal, o padrão de bits será 0001, 0010, 0100, 1000 e 0001.

Aqui, duas bobinas adjacentes são energizadas sucessivamente de forma rotativa.

O padrão de bits será 0011, 0110, 1100, 1001 e 0011.

Aqui, o motor de passo opera a metade da resolução de passo dada.

O padrão de bits é 0001, 0011, 0010, 0110, 0100, 1100, 1000, 1001 e 0001.

O programa para DOS pode ser usado para executar o motor em modo completo ou semi-passo, ou em bobina única ou Modo de excitação de bobina dupla.

O método utilizado na EFY para a identificação correta das bobinas do motor passo a passo envolveu a medição

A resistência dos enrolamentos, bem como a sua continuidade, pode ser feita na escala ohms x 1, usando qualquer Multímetro.

A resistência das bobinas individuais em relação aos pontos médios será aproximadamente a metade da resistência dos pares de bobinas combinadas (L1 e L2 ou L3 e L4).

Depois de ter identificado as bobinas dessa maneira, conecte-as ao circuito como mostrado na figura.

Agora, se a seqüência de entrada para as bobinas estiver errada, o eixo, em vez de se mover (no sentido horário ou anti-horário), só vibrará.

Isso pode ser corrigido por tentativa e erro, trocando a conexão com as bobinas.

As formas de onda de saída para modo de bobina única de passo completo, como visto no osciloscópio, são mostradas na figura.

#include <conio.h>
#include <dos.h>
#define FULLSTEP_SINGLECOIL
//#define FULLSTEP_DOUBLECOIL
//#define HALFSTEP
unsigned char fullstep_singlecoil_val[]={1,2,4,8};
unsigned char fullstep_doublecoil_val[]={3,6,12,9};
unsigned char halfstep_val[]={8,12,4,6,2,3,9};
void main()
{
unsigned int i=0;
while(!kbhit())
{
#ifdef FULLSTEP_SINGLECOIL
outportb(0x378,fullstep_singlecoil_val[i%sizeof
(fullstep_singlecoil_val)]);
#elif defined(FULLSTEP_DOUBLECOIL)
outportb(0x378,fullstep_doublecoil_val[i%sizeof
(fullstep_doublecoil_val)]);
#elif defined(HALFSTEP)
outportb(0x378,halfstep_val[i%sizeof(halfstep_val)]);
#endif
delay(10);
i++;
if(i==65535u) i=0;
}
outportb(0x378,0);
}

Compile e execute o programa sob qualquer compilador como o turboc for dos ou Borland C ++.

#include <sys/io.h>
#include <unistd.h>
#include <stdlib.h>
//#define FULLSTEP_SINGLECOIL
//#define FULLSTEP_DOUBLECOIL
#define HALFSTEP
unsigned char fullstep_singlecoil_val[]={1,2,4,8};
unsigned char fullstep_doublecoil_val[]={3,6,12,9};
unsigned char halfstep_val[]={8,12,4,6,2,3,9};
void main()
{
unsigned int i=0;
if(ioperm(0x378,1,1)==-1) exit(1);
while(1)
{
#ifdef FULLSTEP_SINGLECOIL
outb(fullstep_singlecoil_val[i%sizeof(fullstep_
singlecoil_val)],0x378);
#elif defined(FULLSTEP_DOUBLECOIL)
outb(fullstep_doublecoil_val[i%sizeof(fullstep_
doublecoil_val)],0x378);
#elif defined(HALFSTEP)
outb(halfstep_val[i%sizeof(halfstep_val)],0x378);
#endif
usleep(5000);
i++;
if(i==65535u) i=0;
}
outb(0,0x378);
}

Compile e execute o programa da seguinte maneira:

#gcc – O6 – o motor motor.c
#./motor

A bandeira - O6 é necessária para usar o 'outb' função.