Powered By Blogger
Mostrando postagens com marcador PWM. Mostrar todas as postagens
Mostrando postagens com marcador PWM. Mostrar todas as postagens

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



















sábado, 3 de março de 2012

PWM - LED Fading

Arduino by my Self


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);

Este tutorial tem como objetivo mostar o uso do PWM para controlar o brilho de um LED causando efeito de desvanecimento contínuo da luz emitida.
Usaremos a função analogWrite() para escrever um sinal com modulação por pulso no LED; esta função comuta um sinal "on" "off" rapidamente no pino digital, com diferentes proporções, causando o efeito de "fading".

Vamos fazer um parenteses para entender melhor o PWM.
(
Modulação largura, ou PWM, é uma técnica para obter resultados analógicos com meios digitais. 
O controle digital é usado para criar uma onda quadrada, um sinal alternado entre ligada e desligada.
Este padrão on-off pode simular tensões entre plenos (5 volts) até (0 volts), alterando a porção do
tempo que o sinal passa ligado em relação ao tempo que o sinal passa desligado. 
A duração de "tempo" é chamado de largura de pulso.
Para obter diferentes valores analógicos, você muda, ou modula, a largura de pulso. 
Se você repetir esse padrão on-off rápido o suficiente com um LED, por exemplo, 
o resultado é como se o sinal fosse uma tensão estável entre 0 e 5v, controlando o brilho do LED.
No gráfico abaixo, as linhas verdes representam um tempo regular, um período. 
Esta duração ou período é o inverso da frequência de PWM.
Em outras palavras, como a freqüência de PWM do Arduino é cerca de 500Hz,as linhas verdes mediriam 2 milissegundos cada. 
Uma chamada para analogWrite () é uma escala de 0 - 255; analogWrite(255) indica que se solicita um ciclo de trabalho de 100%
ciclo (sempre ligado), e analogWrite (127) é um ciclo de 50% (metade do tempo), e assim por diante.

PWM


Texto extraído do site: http://arduino.cc/en/Tutorial/PWM, visite!
)

O hardware:
1 x Placa Arduino UNO
1 x Resistor 220O
1 x LED
1 x Breadboard
Fios

O Circuito:
Imagem gerada usando Fritzing, Visite o site oficial para download e tutoriais:
http://fritzing.org/

Usando a Breadboard:
Connecte o terminal "Anodo" do LED ao resistor;
O terminal "Catodo" do LED, conecte ao negativo da alimentação;
O outro terminal do resistor, conecte ao pino 9 do Arduino.


O Programa:

Abaixo o código comentado.


/*
 Fade

 Este exemplo mostra como desvanecer um LED conectado ao pino 9
 usando a função analogWrite().

 Este código é de domínio público.
  */


int brightness = 0;                                  // quantidade de brilho do LED
int fadeAmount = 5;                              // quantos pontos o LED irá desvanecer


//inicialização
void setup()  { 
   pinMode(9, OUTPUT);                   // declara o  pino 9 como saída



//programa inicial
void loop()  { 
  analogWrite(9, brightness);                //determina o brilho do LED   
  brightness = brightness + fadeAmount;                // troca o brilho para a próxima iteração do loop
  if (brightness == 0 || brightness == 255) {           // reverte a direção do desvanecimento ao fim do mesmo
    fadeAmount = -fadeAmount ; 
  }     
  delay(30);                                         // espera 30 milisegundos para ver o efeito de escurecimento
}


Consulte o site do Arduino para maiores informações:
http://arduino.cc/en/Tutorial/Fade

Vídeo:






Conclusão:




Mais uma experiência de nível básico, sem maiores problemas em sua execução.
Hardware simples e Software descomplicado.
Básico.


Espero ter ajudado com mais este POST, até o próximo!