PLACA BUFFER II OU PLACA LPT PROG SABER



UM POUCO DA HISTÓRIA DESSA PLACA

Há alguns anos (2005) eu publiquei um artigo, na extinta revista Saber Eletrônica, que descrevia uma placa que poderia ser utilizada para testes e estudos da porta paralela de um PC. A essa placa eu dei o nome de "Placa Buffer II" por causa de uma outra placa, também projeto meu, que foi publicada na revista Mecatrônica Fácil nr98 de Janeiro/Fevereiro de 2003. Mas a editora sempre sugeria nomes mais "distintos", e essa aqui acabou sendo publicada com o nome "LPT PROG Saber". Eu mesmo usei essa placa em muitos dos meus testes.

Recentemente eu "reativei" a minha placa, mas não para lidar com a porta paralela de um PC, mas de um MSX. E foi bastante divertido fazer algumas experiências com a placa e o "micrinho" (lá vem pedrada da comunidade!!! rsrsrsrs). Precisei de uma placa auxiliar para adaptar tudo, mas essa fica para uma próxima ok! Então pensei, porque não publicar essa placa novamente?! Quem sabe alguém não esteja precisando de algo do tipo, seja para um PC, MSX, Apple II, TR80, etc.

Sendo assim, se este for o seu caso curta (ou não) mais esse projeto!


INTRODUÇÂO

Sempre que se pretende realizar um projeto qualquer, ligado ao mundo da automação, a aplicação de um microcontrolador em conjunto ou não com um PC é a opção da maioria dos técnicos e engenheiros da área. Geralmente o microcontrolador atuará como os “braços” da automação “emprestando” suas portas I/O para o PC que, se este for o caso, será utilizado como elemento “acumulador” (data logger) de dados. Porém, em alguns casos, o PC poderia realizar ambas as tarefas. Neste artigo apresento uma placa que permitirá compreender e testar a porta paralela de um PC, e assim utilizá-la como I/O em futuras automações.


A PROPOSTA

Muitos são os PCs fora de uso, encostados nos “almoxarifados” das empresas, esperando um fim digno. Em alguns casos a aplicação destas “velhas” máquinas em pequenos “automatismos” pode resolver um problema de “orçamento”, por exemplo.

A proposta da placa LPT PROG é servir como ferramenta de estudos e testes para aplicações da porta paralela do PC em projetos de automação e outros, onde o número de I/Os requeridos não seja grande (com pequenas implementações é possível ampliar consideravelmente o número de I/Os disponível na placa).

A placa também é um excelente “apoio” para estudantes de Engenharia da Computação e similares, pois permitirá a esses realizar a interface entre o PC e o “mundo exterior” de maneira rápida e segura.

As principais características técnicas desta placa são:

  • Fonte de alimentação 5 VDC/1 A presentes na placa, compatibilizando os níveis DC presente na maioria das portas paralelas presentes nos PCs atuais;
  • “Buffers” para todos os pinos de I/O da porta paralela, sendo o “buffer” para os pinos de dados bi-derecional, permitindo assim que os testes sejam feitos seguindo todos modos possíveis de “setups” da porta paralela: SSP, ECP e EPP;
  • Oito LEDs para testes de saída;
  • Quatro displays de sete segmentos;
  • Um display de cristal liquido LCD 16 x 2 com controle de contraste através de trimpot;
  • Um ULN2803 para controle de motores DC e também motores de passo unipolares (até dois), com chave DIP para habilitação do “drive” de controle do motor;
  • Cinco chaves tipo “push-button” para testes de entrada na porta paralela;
  • Presença de cinco jumpers para controle e seleção de:
    • Controle da habilitação;
    • Controle da direção para a saída de dados;
    • Seleção dos LEDs e displays de sete segmentos feito por jumper.
  • Proto-área com 550 pontos para inserção de novos componentes (ampliação) de acordo com as necessidades do usuário que poderá acomodar facilmente uma matriz de contatos com o mesmo número de pontos;
  • Todas as ligações entre os pinos de I/O da porta paralela (bufers) feitas de forma independente, através de conectores, aumentando a liberdade de conexões.

ONDE USAR

Como dito anteriormente esta placa poderá ser utilizada em testes e estudos para aplicações em automações como:

  • Controle para casa inteligente;
  • Mini CLP para pequenas automações;
  • Alarmes;
  • Controle para “mini-robôs”;
  • Monitoramento de diversos tipos de variáveis, com a adição de componentes apropriados para a tarefa;
  • Enfim, controles e automatismos diversos.

Acredito que com o aprendizado do funcionamento da porta-paralela aliada ao uso de uma boa ferramenta de programação e uma boa dose de criatividade, o uso desta ferramenta não tem limites.


A PORTA PARALELA

Muitos já utilizaram a porta paralela em algum tipo de controle. Para esses, o que irei mostrar a seguir pode não ser nenhuma novidade, porém acredito que para muitos outros a porta paralela ainda possa ser considerada uma “caixa preta”.

A porta paralela, também conhecida como LPT, é de longe a mais simples de se acessar em um PC. Estes pinos de I/O podem ser acessados tanto em nível de byte como também em nível de bit com cada pino de saída ou entrada escrito ou lido de maneira independente.

Estes pinos possuem níveis de tensão compatível com padrão TTL (0 VDC e 5 VDC), tanto nos pinos de saída quanto nos pinos de entrada. Um outro detalhe importante diz respeito à corrente máxima admitida que não deve ultrapassar 10 mA por pino de I/O (valor seguro). Sendo assim, não é permitido ligar motores, bobinas de relés e outros, diretamente aos pinos, sem que o devido “interfaceamento” seja providenciado.

Na tabela abaixo é dada a pinagem padrão da porta LPT nos PC’s, montada sob um conector DB25 (de cor lilás, geralmente).

Descrição dos pinos da porta paralela

Pino

Função

Direção

Tipo


Pino

Função

Direção

Tipo

01

Strobe

Saída

Controle

10

Ack

Entrada

Status

02

Dado 0

Saída

Dados

11

Busy

Entrada

Status

03

Dado 1

Saída

Dados

12

OE

Entrada

Status

04

Dado 2

Saída

Dados

13

Printer On line

Entrada

Status

05

Dado 3

Saída

Dados

14

A. feed

Saída

Controle

06

Dado 4

Saída

Dados

15

Printer Error

Entrada

Status

07

Dado 5

Saída

Dados

16

Init. printer

Saída

Controle

08

Dado 6

Saída

Dados

17

Sel./Desel. Printer

Saída

Controle

09

Dado 7

Saída

Dados

18-25

Ground

Terra


As especificações passadas na tabela acima, referem-se a porta paralela configurada no modo NORMAL ou SPP no “setup” da placa mãe do PC.

Observando a tabela você notará que na porta paralela existem 12 pinos de saída e 5 de entrada. Os pinos de dados e controle podem ser utilizados como “saída” (para ativar cargas) e os pinos de status como entrada de botões, sensores e outros (tudo dentro dos padrões de tensão já apresentados).

Agora que você conhece fisicamente como a porta se apresenta, o tipo de conector utilizado e sua pinagem, o número de entradas e saídas disponíveis e o nível de tensão presente nestes pinos, falarei sobre os endereços dos registradores de “DADOS”, “CONTROLE” e “STATUS”, utilizados para o controle da porta. Isso está descrito na tabela abaixo.

Endereços dos registradores

Nome

Endereços (LPT1)

Endereços (LPT2)

Descrição

Registro de Dados

378H

278H

Envia um byte para a impressora (saída de dados)

Registro de Status

379H

279H

Ler o Status da impressora (entrada de dados)

Registro de Controle

37AH

27AH

Envia dados de controle para a impressora (saída de dados)

O “H” após os endereços referem-se a notação Hexadecimal.

Anteriormente foi dito que a porta paralela pode ser controlada tanto em nível de “byte” quanto de “bit”. É preciso compreender que não podemos acessar diretamente os pinos de I/O da porta paralela. Este acesso é feito inserindo “valores” nos registradores de controle da porta. A tabela abaixo demonstra o valor a ser inserido para ligar o bit (pino) correspondente na linha de dados.

Valores para endereço de dados

Pino

Descrição do pino

Valor Hexadecimal a ser inserido

Resultado no registrador de controle

2

Dado 0

01H

00000001b

3

Dado 1

02H

00000010b

4

Dado 2

04H

00000100b

5

Dado 3

08H

00001000b

6

Dado 4

10H

00010000b

7

Dado 5

20H

00100000b

8

Dado 6

40H

01000000b

9

Dado 7

80H

10000000b

Para fazer um pino igual a +VCC (5VDC) deve-se inserir no registrador específico o valor “1” lógico no bit referente ao pino e para desligá-lo basta inserir o “0” lógico no mesmo bit. Assim, é possível inserir um “byte” diretamente no registrador de controle, ligando ou desligando um ou vários bits na porta de uma só vez. Vamos a um exemplo.

Obs.: O registrador de DADOS trabalha com lógica “normal”, ou seja, ao receber um “1” lógico em um de seus bits, o pino ligado ao mesmo, passará para nível lógico “1” (+5 VDC), o mesmo acontecendo com o “zero” lógico.

Digamos que você deseje ligar os bits “0” (pino 2) e “5” (pino 7) da porta paralela, na linha de dados, endereço 378H (LPT1). Vamos considerar que todos os bits estejam desligados (00H no registrador). Sendo assim, combinamos os valores 01H e 20H utilizando o operador lógico “OU”. O exemplo dado a seguir foi feito na “Linguagem C”:

valor = 0x01 | 0x20;

Em seguida, inserimos o byte resultante (21H ou 00100001 binário) no registrador desejado:

escreva(0x378, valor);

Assim, temos os bits “0” e “5” ligados, e o restante desligados.

Você poderia se perguntar: “- E se eu quiser desligar um bit qualquer?!? Como faço isso?!?”

Para desligar um bit, como dito anteriormente, basta inserir o “0” lógico no bit. Porém se você pretende desligar apenas o bit “5”, ligado anteriormente, e inserir 00H no registrador, o bit “0” também será desligado. Sendo assim, o melhor a fazer é utilizar um outro operador lógico, como o operador “E” ou então o operador “OU exclusivo” para a tarefa. Vamos a um exemplo:

Utilizando o operador “OU exclusivo”: valor = valor ^ 0x20;

Utilizando o operador “E”: valor = valor & 0xDF;

Obs: DFH é igual a 110111111 binário.

Ambas as operações terão como resultado final 01H dentro da variável valor, considerando que o valor é igual a 21H antes da operação “E” ou “OU exclusivo. A partir deste momento, basta atualizar a variável no registrador e o bit 5 será desligado, mantendo o bit 0 ligado.

Para trabalhar com os pinos de controle, é preciso conhecer a posição dos mesmos no registrador de CONTROLE 0x37A (LPT1). Veja a tabela abaixo. As posições marcadas com “X” mostram que não há pino de I/O conectado a estes bits e as marcações “P” demonstram apenas sua posição.

Posição dos pino no registrador de controle

Pino

Descrição

Posição do bit no registrador

1

Strobe

XXXX000P

14

A. Feed

XXXX00P0

16

Init. Printer

XXXX0P00

17

Sel./Desel. Printer

XXXXP000

Um detalhe muito importante sobre os pinos de controle da porta paralela diz respeito a sua lógica de ativação. Nos pinos de dados o nível lógico de ativação é igual a “1” e desativação igual a “0”.

Porém os pinos de controle, exceto o pino 16 (Init. Printer), operam com lógica invertida. Ou seja, para que os pinos da porta “1” (Strobe), “14” (A. Feed) e “17” (Sel./Desel. Printer) sejam levados a +VCC é necessário inserir “0” lógico no registrador.

Para que entender melhor o que foi dito, vamos a um exemplo: em uma necessidade qualquer se deseja fazer o pino 1 (Strob) e 16 (Init. Printer) da porta iguais a +VCC (+5VDC), mantendo o restante desligados. Como dito, o pino Strob opera sob lógica invertida. Assim o valor a ser inserido seria:

valor = 0x0A | 0x04;

O resultado desta operação será igual a 0EH (hexadecimal) ou 00001110b (binário). Veja que o bit “0” do registrador de controle foi levado a zero. Isto irá inserir no pino “1” da porta física +VCC (5VDC). Os bits “1” e “3” do registrador de controle foram mantidos em “1”, mantendo em GND os pinos “14” e “17” na porta paralela. Já o bit “2” foi levado a “1” lógico, o que levará o pino 16 da porta a +VCC (5VDC). Agora basta inserir a variável no registrador.

escreva(0x037A,Valor);

Para desligar um bit qualquer o processo é exatamente igual ao já explicado para o registrador de dados (operador “Ou exclusivo” ou então “E”), porém deve-se estar atento sobre a lógica invertida de alguns pinos da porta de controle!

Fica claro que para inserir GND em todos os pinos de controle, devemos inserir no registrador correspondente o valor 0BH ou 00001011b e para ligar (+5VDC) todos os pinos o valor a ser inserido deverá ser 04H ou 00000100b. É importante notar que os quatro bits mais significativos do registrador de controle não possuem função e sendo assim o valor destes bits pode ser tanto “0” quanto “1”. No exemplo dado preferi trabalhar com os bits no estado “0”.

Até o presente momento, falei apenas dos pinos de “saída” da porta, de acordo com o padrão SPP. Falarei agora sobre os pinos de entrada e do registrador de “STATUS”, utilizado na leitura destes pinos.

Na tabela abaixo é demonstrado o nome e número do pino que pode ser utilizado como entrada na porta paralela, a função do mesmo e a sua lógica de ativação.

Nome, número e operação dos pinos de entrada

Nome do Pino

Número do pino

Operação

Busy

11

Ativo em nível lógico “1’

Ack

10

Ativo em nível lógico “0”

OE

12

Ativo em nível lógico “0”

Printer On Line

13

Ativo em nível lógico “0”

Error

15

Ativo em nível lógico “0”

Você deve ter percebido que temos apenas cinco pinos e, portanto, teremos apenas 5 bits a serem lidos na porta. Sendo assim, para que esta leitura seja perfeita, devemos saber qual a posição de cada pino, no byte do registrador de STATUS (379H para LPT1). Veja a tabela abaixo.

Posição dos pinos no registrador de Status

Pino na porta paralela

11

10

12

13

15

NC

NC

NC

Posição do pino no registrador STATUS

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

Valor lido

0

1

1

1

1

1

1

0

Note que os pinos usam a parte mais significativa do byte (bit4 a bit7) e um único bit na parte menos significativa (bit3). Os bits 3, 2 e 1 não estão conectados fisicamente na porta, mas estão presentes na leitura do registrador (byte) e devem ser considerados. Perceba que sem nenhum “hardwarte” conectado que altere o estado lógico dos pinos, o valor de leitura será 126 decimal (binário 01111110).

Se estivéssemos lidando apenas com o pino de entrada “Busy”, ativado no nível lógico “1”, leríamos no registrador de entrada, o seguinte:

Busy ativado: 254 (binário 11111110); Busy desativado: 126 (binário 01111110)

Você já deve ter percebido, que caso um outro pino da porta seja ativado, os valores serão alterados. Utilizando este método seria necessária uma tabela, dentro do programa de leitura da porta, com todos os valores possíveis para sabermos se um único pino foi ou não alterado. Se estivéssemos monitorando todos os pinos, esta tabela seria grande e o tempo de processamento da mesma poderia tornar uma determinada automação desinteressante se feita por um PC um pouco mais lento que os mais modernos.

Porém, utilizando um recurso simples, podemos isolar o nosso “pino” (ou bit) e saber se o mesmo está ou não ligado. Veja como isso seria feito na linguagem “C”, por exemplo.

entrada = leia(0x379);

entrada = entrada & 0x80;

if (entrada)

printf(“O bit busy está ligado\n”);

else

printf(“O bit busy está desligado\n”);

No pequeno exemplo (segmento de um código fonte), você notará que isolei o bit 7, do byte inserido no endereço 379H (hexadecimal) fazendo um “AND” lógico com o valor 80H (binário 10000000). Se o estado lógico do bit desejado for “1”, o valor retornado será 80H (maior que um) e se igual a “0” lógico, o valor retornado será 00H.


Nota: É de suma importância que você compreenda que os registradores de DADOS e CONTROLE da porta LTP são registradores de escrita, e o registrador de STATUS é um registrador de leitura!!!

Acredito que ao chegar neste ponto do artigo você já deve ter notado que ter conhecimentos sobre lógica digital (uso correto da lógica “E”, “OU”, “OU exclusivo”, “NÃO” e suas associações) é de extrema importância para lidar com segurança e habilidade com os registradores da porta paralela. Não basta apenas conhecer uma “linguagem” de programação qualquer e seus comandos. São necessários conhecimentos básicos de lógica digital também.


O CIRCUITO


Acima temos o esquema elétrico da Placa LPT PROG ou placa Buffer II. Podemos analisá-la em blocos. Consideremos como bloco “1”, os CIs 2, 3 e 4 e todos os componentes ligados a estes. Podemos chamar este bloco então de bloco dos “buffers” (tanto de entrada como saída). Estes “buffers” são na verdade CIs TTL, da família LS, HC ou ainda HCT.

CI2 (74LS245) é um buffer bi-direcional de oito bits inserido entre os pinos de dados (D0 a D7) da porta LPT e a aplicação do usuário. Busque na WEB o datasheet do mesmo, se tiver dúvidas a respeito da operação deste ou de outro componente presente no circuito.

O pino “1” deste CI permite selecionar a direção dos dados. Quando em nível lógico “1” o sentido dos dados é feito dos pinos com prefixo “A” para os pinos com prefixo “B”. Quando levamos este mesmo pino ao nível lógico “0”, o sentido é invertido. Isto garante a possibilidade de se trabalhar com a linha de dados também no modo bi-direcional. Veja a tabela mais abaixo.

O pino 19 deste mesmo CI, permite habilitar o mesmo. Quando inserido neste pino o nível lógico “0” o CI é habilitado. Quando o nível lógico presente no pino 19 for igual a “1”, o CI é desabilitado e seus pinos “An” e “Bn” são levados a “tri-state” (alta-impedância).

Ambos os pinos descritos estão presentes na placa, com nível lógico “default” igual a “1”, mantidos através dos resistores de “pull-up” R2 e R3 e a troca do estado lógico, por parte do usuário, é possível através dos jumpers JP2 e JP3.

Tabela Verdade para o 74LS245

Entradas

Entradas/Saídas

/OE

DIR

An

Bn

0

0

A=B

Entradas

0

1

Entradas

B=A

1

X

Z

Z

  • 0 = Nível lógico “0” (GND)
  • 1 = Nível lógico “1” (+5VDC)
  • X = Nível lógico indeterminado (não importa valor)
  • Z = Alta impedância

CI3 (74LS367) é um buffer com seis entradas e saídas. Este CI foi inserido entre os pinos de entrada (Busy, ACK, OE, Printer On line e Error) da porta LPT e a aplicação do usuário. Os pinos “1” e “15” deste CI habilitam o mesmo. Quando estes pinos são levados ao nível lógico “0” o CI está habilitado para uso e todos os valores inseridos em suas entradas são refletidos em suas respectivas saídas. Caso os pinos de habilitação recebam o nível lógico “1” (garantido pelo resistor de pull-up R4) o CI é desabilitado e suas saídas colocadas em “alta-impedância”. A troca do estado deste pino (para “0” lógico) na placa pode ser feita pelo usuário através do jumper JP4.


CI4 (74LS08) é um quaduplo “E” com duas entradas cada. Este CI permite “bufferizar” os pinos de controle (Stobe, A. Feed, Init. Printer e Sel./Desel. Printer) da porta LPT e a aplicação do usuário. Este CI não possui pinos de habilitação ou qualquer outro tipo de controle. Na figura 6 a disposição destas portas no CI.

É importante compreender que um buffer não é exatamente um “isolador”. Um “buffer”, também chamado às vezes de drive, nada mais é que um elemento que permite trabalhar uma tensão ou correntes maiores que o dispositivo de controle propriamente dito. No caso, os CIs apresentados podem trabalhar com correntes da ordem de 20mA com segurança. Estamos assim protegendo a porta LPT de possíveis drenos excessivos de corrente. Para lidar com componentes como um TRIAC, por exemplo, ligado a porta LPT é recomendável o uso de um acoplador óptico.

Um outro bloco presente no circuito é o “bloco de alimentação”. Este é formado pelo CI1 (7805), um regulador de tensão para 5VDC, os capacitores C1, C2, C3 e C4 que atuam como filtros para a tensão de alimentação, o diodo retificador D1 (1N4001) que protegerá o circuito contra uma eventual troca de polaridade na fonte externa aplicada em CN1, além do LED D1 usado para indicar a condição de ligado da placa e de seu resistor limitador de corrente R1.

Continuando a analise dos blocos, podemos falar do “bloco de LEDs” do usuário (D3 a D10) com seus resistores limitadores de corrente (R5 a R12). O catodo de todos os LEDs foram interconectados e levados até JP1, que permite selecionar a operação desejada entre “LEDs ou display de sete segmentos”. Estes LEDs podem ser utilizados para indicar o estado presente em uma determinada saída, quando da criação de um programa.

Outro bloco disponível na placa forma a “seção dos displays de sete segmentos”. A mesma é formada por DISP1 a DISP4 (displays de sete segmentos catodo comum), os resistores R5 a R12 (compartilhados com a seção dos LEDs), os transistores Q1 a Q4 e os resistores de base R13 a R16. Os emissores dos transistores foram interconectados e levados até JP1, que como dito anteriormente, permite selecionar a operação entre LEDs ou displays de sete segmentos. Estes displays podem ser utilizados nas mais diversas aplicações como: contadores, relógios, medidores, etc. Seu uso requer conhecimentos com “varredura de displays”, onde temos um único “bus” (via) para os segmentos e o controle efetivo feito através de seus catodos.

Temos também um bloco que permite controlar motores DC ou ainda até dois motores de passo unipolares. Este bloco é formado por CI5 (ULN2803), os conectores CN12 e CN13, além da chave DIP1 (8 segmentos) que permite conectar CI5 aos resistores R5 a R12.

O bloco do LCD é formado por CN11 (ponto onde será inserido o LCD) e o trimpot P1. O jumper JP5 permite aterrar o pino 5 (R/W) do LCD. Desta forma o LCD fica habilitado apenas para escrita. Alguns programadores utilizam um LCD exatamente desta forma, porém outros preferem ter a possibilidade de ler o registro de “busy flag”, além de outros registros internos. Pensando nisso, preferi deixar livre a escolha do modo de operação do LCD.

E por último temos o bloco das chaves formado por S1 a S5 e os seus resistores de “pull-up” R17 a R21.

As “saídas” e “entradas” dos buffers receberam conectores para a ligação com os blocos do usuário (LEDs, LCD, Displays de 7 segmentos, motor e chaves), que também possuem seus próprios conectores para a conexão.

Acredito que esta liberdade permitirá criar muitas soluções, sem a necessidade de se prender a um esquema “inflexível”, geralmente disponibilizado na maioria das placas de estudos oferecidas no mercado. Na tabela abaixo motro a disposição destes conectores e sua descrição.

Descrição dos pinos dos conectores presentes na placa

Conector

Descrição

Pino do conector

1

2

3

4

5

6

7

8


CN3

Dados/LPT

D0

D1

D2

D3

D4

D5

D6

D7

CN4

Entradas/LPT

(STATUS)

ACK

Prt. On Line

OE

Busy

Error




CN5

Saídas/LPT

(CONTROLE)

Strobe

A. Feed

Init.

Prt

S/D

Print





CN6

LCD Dados

D0

D1

D2

D3

D4

D5

D6

D7

CN7

LCD Controle

RS

R/W

EN






CN8

LEDs

LED D3

LED D4

LED D5

LED D6

LED D7

LED D8

LED D9

LED D10

Segmentos display 7 seg.

A

B

C

D

E

F

G

Ponto

CN9

Controle do

Display 7 seg

Q1

Q2

Q3

Q4





CN10

Teclas S1 a S5

S1

S2

S3

S3

S5




CN12

Motor 1

+12

VDC

+12

VDC

CN8

1

CN8

2

CN8

3

CN8

4



CN13

Motor 2

+12

VDC

+12

VDC

CN8

5

CN8

6

CN8

7

CN8

9



Obs.: É importante salientar que a tabela demonstra as ligações de forma “indireta” em alguns casos, pois podem existir componentes entre os pinos dos conectores e seus destinos, indicados na tabela.

A alimentação para placa deve ser fornecida por uma fonte externa com tensão de 12VDC regulados e filtrados, com corrente de 1 A.


MONTAGEM


Na acima é dado o desenho do circuito impresso que usei em meu protótipo.Trata-se de um lay-out com duas faces (lado da solda e dos componentes). Mais abaixo, no final deste artigo, é possível encontrar os arquivos PDFs separados para ambas as faces, para confecção pelo método de transferência térmica. Utilize o desenho presente neste artigo apenas para posicionar os componentes durante a montagem.

É aconselhável o uso de suportes para todos os CIs. Os jumpers devem ser feitos com barra de pinos e uso de straps é a melhor opção para fechá-los.

O LED D2 pode ser de qualquer tipo. Já para os LEDs D3 a D10 sugero o uso de LEDs vermelhos comuns e difusos, com 5 mm de diâmetro. Os displays de sete segmentos utilizados são do tipo “catodo comum” e nenhum outro é admitido no circuito.

Tenha cuidado para não inverter os displays de sete segmentos, que podem ser soldados diretamente na placa ou ainda receberem suportes de CI devidamente adaptados para a inserção dos displays. Os LEDs, transistores e o diodo D1 também merecem atenção ao serem ligados na placa, assim como os capacitores eletrolíticos.

Os resistores possuem valores diferenciados na placa. Use a lista de materiais inserida no final deste artigo para se orientar. A troca de um resistor com valor maior por um menor, dependendo do ponto onde o mesmo for inserido poderá acarretar prejuízos ao circuito e também a porta paralela do PC.

O regulador de tensão CI1 necessita de um radiador de calor para modelo TO-220 a ser parafusado na placa. O conector CN1 é do tipo P4 fêmea e CN2 é do tipo DB25 macho ou fêmea.

Para os conectores CN3 a CN11 recomendo o uso de barra de pinos e neste caso a ligação se dará através da técnica do “wire-warpping”, através de uma ferramenta específica, ou ainda através de suportes para CI adaptados para este fim.

A chave DIP1 é uma chave DIP com 8 chaves independentes. Os conectores CN12 e CN13 são do tipo KRE (conectores parafusáveis tipo solda placa) com seis segmentos cada. O uso deste tipo de conector torna a ligação dos motores mais fácil e permite um acabamento mais elegante à placa.

O LCD poderá ser soldado diretamente à placa com o uso de uma barra de pinos. O uso de um soquete também é possível neste tipo de ligação e permitirá que o LCD seja utilizado em outros projetos. A escolha no método de ligação é livre e apenas recomendo, no caso de solda direta na placa, que sejam tomados os devidos cuidados com a isolação do ferro-de-solda e também com o aquecimento excessivo nos pontos do LCD.

As chaves S1 a S5 são chaves tácteis pequenas para PCI, com quatro pinos. Estas chaves são facilmente encontradas no mercado especializado.

Para você que desejar ampliar ainda mais seus estudos com a placa LPT PROG, aconselho a inserção na mesma de uma pequena matriz de contatos, como fiz com a minha. Junto a proto-área foi deixado quatro pequenos furos que “casam” perfeitamente com os que encontramos nas matrizes de contatos com 550 pontos da marca “Shako” ou outras. Caso não seja possível parafusar a sua matriz de contatos você poderá utilizar fita adesiva dupla face ou outro adesivo.

Para ligar a placa a porta paralela de um PC, você deverá construir um cabo como o indicado abaixo ou ainda adquirir um cabo de extensão para impressoras paralelas. Este cabo não deve ter comprimento superior a 2 metros, para evitar perdas no mesmo.

DB25 Macho -------------- 2 m ----------------- DB25 Macho

1--------------------------------- 1
2 --------------------------------- 2
3 --------------------------------- 3
4 --------------------------------- 4
5 --------------------------------- 5
6 --------------------------------- 6
7 --------------------------------- 7
8 --------------------------------- 8
9 --------------------------------- 9
10 --------------------------------- 10
11 --------------------------------- 11
12 --------------------------------- 12
13 --------------------------------- 13
14 --------------------------------- 14
15 --------------------------------- 15
16 --------------------------------- 16
17 --------------------------------- 17
18-25 --------------------------------- 18-25


TESTE E USO

Após a montagem, recomendo uma verificação minuciosa na mesma. Apesar de bem simples, qualquer troca ou mesmo inversão poderá fazer com que o circuito ou parte do mesmo não funcione adequadamente. E você precisa se lembrar ainda que esta placa estará ligada a porta paralela do seu PC. Aumente os cuidados com as verificações a serem feitas, para evitar qualquer problema como a queima da porta paralela ou ainda do próprio PC.

Não entrarei nos detalhes de como “configurar” a porta paralela de um PC, pois cada placa mãe possui um BIOS e este pode trazer características próprias para tal. A configuração ideal para os testes que demonstrarei foram feitos no modo “SPP”.

Mais abaixo, no final deste artigo, apresento um pequeno programa que pode ser utilizado como exemplo para testar as entradas e saídas da placa,

teste_leds.c


Todos os meus testes e exemplos foram montados com a Linguagem de programação “C”, com o uso do compilador Dev C++ 4.9.9.0 (http://www.bloodshed.net/download.html) e biblioteca de acesso a porta paralela INPOUT.DLL (http://www.logix4u.net/inpout32.htm). Não serão detalhados o uso da linguagem, nem do compilador. Deixarei o estudo dos mesmos por conta de cada um. Também não oferecerei nenhum programa, montado em outra linguagem.

O uso da Linguagem C para realizar os testes tem um motivo em particular: eu gosto de programar em C. Não entrarei no mérito “programação” neste artigo, pois o intuito do mesmo não é este. Aconselho aos interessados em proceder os testes com outras linguagens a estudar atentamente o que foi dito neste artigo sobre a porta paralela, o funcionamento dos componentes utilizado no bloco “buffer” e também na linguagem de programação desejada.

Seja qual for a linguagem de programação selecionada, apenas o estudo do conjunto descrito pode garantir o sucesso no uso da placa LPT PROG.

Para o programa fornecido os pontos foram conectados como indicado na tabela abaixo e os jumpers como segue: JP1 (2-3), JP2 (fechado), JP3 (aberto), JP4(fechado), JP5(fechado).

Interligações necessárias para os testes

Saídas

LPT/Dados

Entradas

LEDs


Entradas

STATUS/LPT

Saídas

Chave S1

CN3

CN8


CN4

CN10

1

1


1

1

2

2




3

3




4

4




5

5




6

6




7

7




8

8





CONCLUSÃO

O uso de PCs em pequenas e médias automações residenciais, comerciais e até mesmo industriais é possível. Conhecer bem as “portas” nativas dos PCs permitirá aplicar estas máquinas na substituição de caros CLPs e outros equipamentos, por exemplo. Para muitos o uso de um microcontrolador ainda é a maneira mais viável, Como dito, muitos PCs estão parados, esperando serem aplicados. Uma excelente opção é “reciclá-los” e utilizá-los como cérebro de uma pequena automação. Boa montagem e até a próxima!

DOWNLOADS

- Circuito
- Lay-out da placa (TOP)
- Lay-out da placa (BOTTON)
- Lay-out da placa (Serigrafia)
- Programa exemplo
- Lista materiais


O circuito foi devidamente testado. Não me responsabilizo por possíveis problemas que possam ocorrer durante a sua montagem ou pelo uso inadequado deste circuito. Você está por sua própria conta e risco.

Este projeto foi publicado, com minha autorização, na Revista Saber Eletrônica Total nº 395 de Dezembro de 2005.

Especificações:

- Cérebro - PC
- Saídas - LEDs, displays de 7 segmentos, motor, etc
- Entradas - 5 chaves ou sensores TTL
- Programa - A que você se sentir melhor! ;)

 



Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.