sexta-feira, 17 de fevereiro de 2012

6) Montagem dos circuitos

 A fim de tornar o desenvolvimento do robô bastante acessível e conforme citado no item 2.1, este é um projeto que foi simplificado ao máximo e usa apenas materiais de baixo custo ou retirados de sucatas. O uso da porta paralela para controlar o robô também colabora para simplificar a projeto. Além de poder ser controlada facilmente, a documentação em domínio público sobre a porta paralela é bastante abundante. O esquema geral do projeto é mostrado na figura 1 e consiste de:

  • Software que controla o robô emitindo pulsos através da porta paralela.
  • Módulo de interface para proteção e estabilização dos pulsos.
  • Módulo de potência que coloca os pulsos na voltagem necessária para ativar os motores de passo.
  • Carroceria do robô contendo os motores de passo, rodas, etc.
Os itens seguintes detalham os passos iniciais para a execução do projeto. 

6.1 Software para testar a emissão dos pulsos 

O primeiro passo é testar a entrada e saída dos pinos da porta paralela conforme descrito no capítulo 3. A montagem da placa de teste de saída (figura 6) e o uso do programa exemplo são extremamente importantes como passos iniciais para a execução do projeto. Com isso fica fácil desenvolver um pequeno programa que ative quatro pinos de dados em seqüência (por exemplo D0 a D3) dentro de um loop de 4 passos, estabelecendo um intervalo de tempo fixo entre a ativação de cada pino, conforme a mostrado na tabela 4. Apesar de simples, este programa será utilizado para testes dos circuitos exigidos no projeto.


Fase
Pinos
1
1000
2
0100
3
0010
4
0001
Tabela 4 – Seqüência de ativação dos pinos para os testes iniciais.

Abaixo segue um exemplo em Delphi de como este programa de testes poderia ser implementado.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics,   
  Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
  ParBib; // Inclui a biblioteca de acesso a porta paralela

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    BitMask: Byte; // Máscara de bits
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 50; // Intervalo entre cada pulso (ms)
  Timer1.Enabled := false;
  SetLPT(pLPT1); // Seleciona a LPT1 (default)
end;

// Botão 1: Inicia emissão de pulsos
procedure TForm1.Button1Click(Sender: TObject);
begin
  BitMask := 1;
  Timer1.Enabled := true;
end;

// Botão 2: Interrompe emissão de pulsos
procedure TForm1.Button2Click(Sender: TObject);
begin
  Timer1.Enabled := false;
end;

// A cada pulso...
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  SetDataByte(BitMask);  // Envia o byte para a PP
  BitMask := BitMask * 2;// Seleciona o proximo pino
  if BitMask > 8         // Seleciona o pino D0
    then BitMask := 1;
end;

end.

6.2 Módulo de interface

Como citado, os sinais emitidos pela porta paralela, apesar de terem potência suficiente para acender alguns leds, não conseguem alimentar um circuito que tenha um consumo um pouco maior. Portanto a partir deste ponto será necessária uma fonte de alimentação externa. Uma fonte de computador modificada para funcionar como fonte de bancada, como descrito no capítulo 3, é perfeita para implementar os passos a seguir. Todos os circuitos funcionam com 5 volts, mas os motores precisam de 12 volts. Então uma fonte que tenha a opção de fornecer 5v e 12v se ajusta perfeitamente às necessidades do projeto.

Acrescentar uma fonte externa ao circuito implica na necessidade de criar uma proteção para a porta paralela. A porta paralela é diretamente conectada à placa mãe do computador, um curto circuito acidental que retorne pelos pinos da porta paralela pode queimar a placa mãe do computador, especialmente se a fonte de alimentação é capaz de fornecer alta amperagem como é o caso da fonte sugerida aqui. A fonte de computador tem proteção contra curto circuito, desligando automaticamente quando ocorre, mas nada garante que será desligada a tempo de evitar a queima da placa mãe. Além disso, essa fonte será usada apenas durante a fase de testes sendo depois substituída por baterias quando o projeto estiver terminado. 

O buffer 74LS541

Felizmente existe um chip capaz de proteger a porta paralela de retornos indesejados e ao mesmo tempo retransmitir os sinais vindos da porta paralela com estabilidade de tensão e a potência necessária para, por exemplo, permitir que eles transitem por um cabo relativamente longo, ou que excitem componentes menos sensíveis. Estamos falando do buffer 74LS541. Este chip em encapsulamento de 20 pinos, reserva 8 pinos para os sinais de entrada que são retransmitidos para outros 8 pinos de saída (figura 18). Os sinais de entrada podem ter uma voltagem entre 2v e 6v, o que é bem apropriado para os valores de saída da porta paralela. Já a voltagem de saída dos sinais terá o mesmo valor que a voltagem aplicada ao pino de alimentação (Vcc). Segundo o datasheet da Texas Instruments para o 74LS541, a alimentação deve ser de 5 volts com uma variação de 0.5v para mais ou para menos.

Figura 18: Pinagem do CI 74LS541 
Os pinos A1 até A8 são os pinos de entrada do sinal, os pinos Y1 a Y8 são os pinos de saída. A alimentação (5v) é feita pelo pino Vcc (20) e os pinos GND, G1 e G2 (10, 1 e 19 respectivamente) devem ser aterrados. A Figura 19 mostra o esquema elétrico para o 74LS541.

Figura 19: Esquema do módulo de interface paralela (Fonte: www.rogercom.com) 

6.3 Módulo de potência

Os CIs e circuitos funcionam com 5v, mas os motores precisam de 12v para funcionar. Então os sinais que chegam do módulo de interface precisam ser amplificados para poder ativar os motores. Além disso, motores de passo têm um consumo de corrente muito acima do que o 74LS541 pode suportar em seus terminais. Dependendo do motor utilizado, o consumo de corrente é de 200 mA a 450 mA por bobina ativada. No modo normal de operação (passo simples) é ativada uma bobina em cada passo do motor, mas quando é necessário obter mais torque, existe um modo de operação (alto torque) em que são ativadas duas bobinas por passo. Como serão usados dois motores, o consumo máximo de corrente pode chegar a 1.8 A, o que é muito acima dos 25 mA que o 74LS541 suporta.
O ULN2803

O ULN2803 é um CI que contém um conjunto de oito transistores darlington e funciona como um amplificador de sinais, tem 8 entradas que podem controlar até 8 saídas (figura 20). As entradas são ativadas com 5v, mas as saídas podem ter até 50v. Além disso, ele suporta um consumo de corrente de até 500mA. Existe também o ULN2003, que tem as mesmas características, com a diferença que tem 7 entradas e 7 saídas.

Como vamos utilizar dois motores e cada motor tem quatro bobinas, usar um ULN2803 para os dois motores parece uma opção óbvia, já que teoricamente poderíamos usar um único chip para controlar os dois motores. O problema é que isso só é possível com motores que consomem no máximo 250 mA e além disso teríamos que garantir que os motores sejam ativados apenas no modo de passo simples, porque caso fossem ativados no modo de alto torque o consumo de corrente poderia exceder a capacidade do chip.

Então a melhor opção é usar dois ULN2803, um para cada motor, desta forma garantimos que o consumo ficará dentro do limite suportado pelo chip. Segundo o datasheet do 2803, é possível ligar as entradas e saídas em paralelo para aumentar o consumo máximo de corrente suportado pelo chip. Então ligando as entradas e saídas duas a duas conseguimos uma capacidade máxima de 1 A, o que é suficiente para a maioria dos motores extraídos de impressoras.
 

Figura 20: Pinagem do ULN2803 (Fonte: datasheet do ULN2803 – SGS Thomson MicroElectronics) 

O esquema elétrico para o módulo de potência está descrito na Figura 21. Cada ULN2803 recebe os sinais do módulo de interface e ativa as bobinas de um motor. Note que a alimentação neste caso é de 12v. O diodo zener entre o positivo da fonte e o pino 10 de cada chip serve para absorver o campo eletromagnético reverso que é gerado quando o motor pára, isso ajuda a proteger o circuito. Este diodo deve ser de 12v e 0.5w. O terra da fonte (0v) deve estar conectado ao terra do módulo de interface e ao pino 9 dos dois chips.
Figura 21: Esquema elétrico do módulo de potência

Importante: É possível encontrar várias páginas na internet mostrando esquemas para controlar motores de passo onde a porta paralela é conectada diretamente ao ULN2803, sem usar o 74LS541 como interface. Esse esquema poderia funcionar se o motor estivesse sempre perto do computador. Como citado anteriormente, os sinais que saem da porta paralela tem pouca potencia e se tiverem que viajar por um cabo longo, a probabilidade de haver perda de dados é bastante alta. O uso do 74LS541 permite que o módulo de interface fique sempre perto do computador e retransmita os sinais da porta paralela com potencia suficiente para chegar ao módulo de potencia com um cabo de comprimento muito maior sem precisar nenhuma proteção especial. Poderia ser utilizado, por exemplo, um cabo flat, que é bem leve e não interfere tanto com a movimentação do robô.




Índice

2) Visão geral do projeto
3) Fonte de alimentação para testes de bancada
4) A porta paralela
5) Motores de passo
6) Montagem dos circuitos
7) Montagem do robô
8) Alimentação
9) Software de navegação
10) Conclusão
Apêndice - Duplicando polias e engrenagens


    Nenhum comentário:

    Postar um comentário