sexta-feira, 7 de setembro de 2012

Ponte H, Experimentos Parte-1



Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada.
sendo:
"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);


EXPERIMENTO 1


O primeiro experimento com a Ponte-H, será com as chaves liga/desliga/liga (alavanca 3T).

HARDWARE & MATERIAIS:
2 x Chaves alavanca de 3 posições, tipo LIGA/DESLIGA/LIGA
1 x motor DC de uso geral
Pack de bateria ou fonte de alimentação
Fios e cabos

Lembrando o conceito: 

em a) vemos as chaves sem acionamento e o motor está parado
em b) temos a chave superior da primeira "perna" do H acionada e a chave inferior da segunda "perna" do H acionada, o que resulta no motor girando em um sentido (por exemplo: horário).
em c) temos a chave inferior da primeira "perna" do H acionada e a chave superior da segunda "perna" do H acionada, o que resulta no motor girando no outro sentido (por exemplo: anti-horário).
NUNCA, deve ser acionado duas chaves na mesma "perna" do H, pois isso causaria um curto-circuito no sistema.
O acionamento de chaves em ambas as "pernas" do H, duas chaves superiores ou as dua chaves inferiores; isso não causaria efeito algum.



Esquema real de montagem:

Em X1-1 e X1-2, deve ser conectado o motor DC com tensão conveniente à alimentação do sistema.

Este esquema nos protege do caso que nunca devemos executar; pois, com o tipo de chave utilizado, nunca poderemos acionar somente uma "perna" do H (não podemos causar o curto-circuito).



O teste consiste em acionar as chaves de forma opostas; uma para cima e a outra para baixo e vice-versa.

VÍDEO:



Melhor visualizado pelo youtube: http://youtu.be/9Kz4qM8wOFY


EXPERIMENTO 2:

Agora vamos melhorar um pouco nossa ponte H, utilizando componentes eletrônicos discretos, tais como resistores e transistores bipolares de uso geral.

Isso permitirá utilizar o Arduino, para controlar o sentido da rotação de um motor DC.
De posse desse tipo de controle, podemos pensar em diversas utilizações para a ponte H.

HARDWARE & MATERIAIS:
2 x Transistores BC548C
2 x Transistores BC558C
4 x Resistores de 1KΩ
4 x resistores de 10KΩ
4 x Diodos 1N4148
1 x Motor DC
1 x BreadBoard
Fios e cabos para as conexões
Conectores parafusáveis (opcional)
Placa de circuito (opcional)

DataSheet dos Transistores
http://www.datasheetcatalog.org/datasheet/fairchild/BC548.pdf
http://www.datasheetcatalog.org/datasheet/fairchild/BC558.pdf



ESQUEMA & LAYOUT:



Abaixo o esquema e o layout da placa em eagle.

Não esqueça de conectar o GND do arduino com o GND do circuito (pino 2 - central do conector JP1)
Os outros dois pinos do conector JP1 são de sinal proveniente do Arduino (conforme programa).

No arduino os pinos usados foram o 10 e 11 .
Ligar M1-A ao pino 10 e M1-B ao pino 11

X1 é a conexão do Motor DC.

X2 é a coneção da alimentação externa para o motor. Sendo: X2-1=+VCC e X2-2=GND

Esquema Eletrônico
Os resistores podem ser testados com outros valores para melhores resultados.
Por exemplo: 330 Ω ou 470 Ω.

Ao colocar  M1-A em nível Alto, T1 ficará no estado de corte (Aberto) e T3 em saturação (conduzindo), ao mesmo tempo, colocando M1-B em nível Baixo, T4 ficará no estado de corte (aberto) e T2 em saturação (conduzindo). O motor irá ter uma rotação em um sentido.
Invertendo as condições em M1-A e M1-B, teremos rotação no outro sentido.

Layout Circuito Impresso
OBS.: Por questão de simetria, foi feito a opção por um jumper na placa de circuito impresso, conectando o GND externo (conector X2-2) com o GND da placa. Apenas por questão de simetria. Modificações podem ser feitas a vontade!

Pegue os arquivos originais aqui:
http://www.4shared.com/file/xaqSKSfU/Ponte_H_BC548-558.html

Como os transistores admitem no máximo 500 mA de pico máximo e trabalahm com 100 mA continuo, devemos escolher um motor DC que puxe no máximo 100 mA.

Circuitos mais avançados podem também ser testados.


SOFTWARE & PROGRAMAÇÃO:

O programa para teste é muito simples; consiste em um programa que comanda o motor em uma direção durante 1 segundo, inverte a direção por mais um segundo e assim por diante em loop.
Neste caso o suso é muito limitado, porém temos grandes possibilidades, tais como: controle de motor de passo para maior precisão no giro, uso do PWM para variação de velocidade, controle de servo-motores em aplicações de Robótica, Domótica ou Modelismo.
Enfim....
Basta programar e usar sua Ponte H com transistores.


// programa exemplo, somente

void setup(){
  pinMode(10, OUTPUT); // definição dos pinos
  pinMode(11, OUTPUT);
  digitalWrite(10, HIGH); // para o motor
  digitalWrite(11, HIGH);
}

void loop(){
  digitalWrite(10, HIGH); // primeira direção
  digitalWrite(11, LOW);
  delay(1000); // espera 1 segundo
  digitalWrite(10, LOW); // segunda direção
  digitalWrite(11, HIGH);
  delay(1000); // espera 1 segundo
}
// FIM DA COMPILAÇÃO


EXPERIMENTO 3:

Para obtermos uma maior corrente no acionamento de dispositivos que puxam uma maior corrente, devemos usar transistores que forneças esta corrente, assim, neste experimento, foi usado o transistor Darlington TIP-120 para a montagem da Ponte H.
Com isto garantimos uma maior corrente, um maior ganho de corrente, ou seja: necessitaremos menos corrente do Arduino para acionar uma carga que exige uma maior corrente.

Detalhe do circuito na BreadBoard

Mais detalhe, conector de alimentação externa



Circuito com o controle por PWM, via potenciômetro



HARDWARE & MATERIAIS:
4 x Transistores TIP120 ou TIP122
4 x Resistores de 1KΩ
1 x Motor DC
1 x BreadBoard
Fios e cabos para as conexões
Conectores parafusáveis (opcional)
Placa de circuito (opcional)


http://www.fairchildsemi.com/ds/TI/TIP120.pdf


ESQUEMA & LAYOUT:



Abaixo o esquema e o layout da placa em eagle.

No circuito,foi utilizado resistor de 1KΩ





A1 e A2 são as ligações com o Arduino nos pinos 10 e 11 respectivamente. No Conector JP1 são os pinos 1 e 3. Enquanto que o pino 2 é o GND comum.
X1-1 e X1-2, é a conexão do Motor DC.
X2-1 é a Conexão do GND e X2-2 é a conexão do +V Externo.

Originais Eagle:

http://www.4shared.com/file/sTNEBxsB/Ponte_H_TIP120.html




SOFTWARE & PROGRAMAÇÃO:

Para o teste podemos usar o mesmo código da seção anterior.

Porém;
É possível colocar um potenciômetro conectado ao arduino (pino A0 por exemplo) e assim efetuar um controle PWM de velocidade e direção do Motor DC.

+5V----------/\/\/\/\/\-------------GND
                    |
                    |
                  A0

O 5V é o a alimentação proveniente do arduino (alimentação lógica, separada da alimentação do Motor DC).
O Código abaixo é um simples exemplo de como efetuar esse controle.
Na posição central do potenciômetro, teríamos o motor parado, girando para a esquerda o motor teria sentido anti-horário, e girando para a direita o motor teria sentido horário.



/* código de domínio público
modificações são permitidas sem necessidade de aviso prévio*/

// definição de pinos e constantes
int pinH1 = 9;
int pinH2 = 10;
int pinPOT = 0;  
int valor; 
int valorH1; 
int valorH2;
void setup() 
  Serial.begin(9600); // inicialização da comunicação serial
// loop prinicpal do programa
void loop() 
  valor = analogRead(pinPOT); // faz a leitura analógica do potenciômetro            
  
  // mapeia os valores lidos
  valorH1 = map(valor, 0, 511, 255, 0); // entre 0 e metade do cursor do POT
                                                             // determina rotação em um sentido     
  valorH2 = map(valor, 512, 1023, 0, 255); // entre metade do cursor do POT e o fim de curso
                                                                  // determina rotação no outro sentido
  
  if (valor > 511){
     valorH1 = 0; // ao ultrapassar a metade do cursor do POT, zera este valor
  }
  else{
    valorH2 = 0; // se ainda não está na metade, deixa este valor zerado
  }
  
  // imprime no monitor serial as informações recebidas do POT e valores H1 e H2
  Serial.print("Valor: ");
  Serial.print(valor, DEC);
  Serial.print(" Valor H1: ");
  Serial.print(valorH1, DEC);
  Serial.print(" Valor H2: ");
  Serial.println(valorH2, DEC);
  
  // aciona os pinos do arduino convnientemente com o valor para o PWM.
  analogWrite(portaH1, val1);
  analogWrite(portaH2, val2);  
}
// FIM DA COMPILAÇÃO




VÍDEOS:

Dúvidas e sugestões enviem para: arduinobymyself@gmail.com

No youtube: http://www.youtube.com/watch?v=hk4APp1_Jd0