quarta-feira, 29 de agosto de 2012

Ponte H - Controle de Motores DC


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


Ponte H - Teoria, Conceitos & Usos

Motores são dispositivos que convertem a energia elética em energia mecânica de rotação, e tem infinidades de usos na Eletrônica, Robótica e Mecatrônica.

O maior problema com motores DC é controlar sua rotação e direção para que você possa ter uma ampla gama de utilização.

O PWM resolve o problema de controle de velocidade, onde inserindo um sinal controlado por PWM no motor torna se possível controlara a rotação do mesmo. Outro problema seria com relação ao torque, para isso temos também as caixas de redução que diminuem a rotação do motor, mas garantem um aumento de torque devido a relação existentes para as engrenagens utilizadas.

A ponte H é um conceito utilizado para que seja possível controlara o sentido da rotação (horário ou anti-horário).

Todas as técnicas citadas acima, garantem um excelente uso de motores de corrente DC e de vários tamanhos e potências.

Motor DC de pequeno porte:-
Vista expandida do Motor DC






Alguns modelos







Motor de Passo:-








Servo Motor:-


 






Vamos nos deter na PONTE H:-

Definição do Wikipedia:
Ponte H é um circuito eletrônico que permite que um micro controlador controle um motor DC, o micro controlador por sí não consegue "dar" a corrente necessária para o funcionamento do motor, e ainda torna possível que o motor rode tanto para um sentido quanto o outro. Estes circuitos são geralmente utilizados em robótica e estão disponíveis em circuitos prontos ou podem ser construídos por componentes.
Ponte H - Teórica, com chaves
Funcionamento para os 2 sentidos de rotação



O nome ponte H é dado pela forma que assume o circuito quando montado. O ciruito é construído com quatro "chaves" ( S1-S4 ) que são acionadas de forma alternada ( S1 e S4 ou S2 e S3). Para cada configuração das chaves o motor gira em um sentido.
As chaves S1 e S2 assim como as chaves S3 e S4 nao podem ser ligadas ao mesmo tempo pois podem gerar um curto circuito.
Para construção da ponte H pode ser utilizado qualquer tipo de componente que simule uma chave liga-desliga como transistores, relés, MOSFETs.
Para que o circuito elétrico fique protegido, é aconselhável que sejam configuradas portas lógicas com componentes 7408 e 7406 a fim de que nunca ocorram as situações de curto circuito descritas acima.
Outro melhoramento que pode ser feito à ponte H , seria a colocação de diodos entre as "chaves", pois quando a corrente não tem onde circular, no caso de o motor parar, ela volta para a fonte de alimentação
economizando assim o gasto de energia de uma bateria ou evitando que a corrente danifique o microcontrolador, por exemplo.


Quem quiser aprofundar-se mais um pouco no assunto, sugiro a leitura do artigo:
http://www.maxwellbohr.com.br/downloads/robotica/mec1000_kdr5000/tutorial_eletronica_-_montagem_de_uma_ponte_h.pdf

HARDWARE & MATERIAIS:

1 x Arduino Duemilanove, UNO, MEGA ou Teensy
1 x BreadBoard
4 x TIP-120
1 x Circuito Integrado L298N - Ponte H Dupla
2 x Transistores BC548
2 x Transistores BC558
2 x Resistores de 0,47 Ohms x 2W
4 x Resistores de 1K Ohms
4 x diodos 1N4148
2 x Capacitores de 100 nF cerâmicos
2 x Chaves 1 Pólo x 2 Posições
1 x Pack de Bateria de 9V ou 4,5V
Fios e Cabos para as conexões


CIRCUITO & ESQUEMAS:

Primeiro teste; simulação com chaves:
Usando o diagrama citado na parte teórica acima, e usando duas chaves de 1 x pólo / 2 x posições.

Chave Liga/Desliga/Liga Alavanca 3T

Segundo teste; usando transistores NPN e PNP (isso evita a condição de termos as chaves de um lado da ponte ligadas ao mesmo tempo.  Podendo ser usados transistores BC548 e BC558 (NPN e PNP, respectivamente).
Neste caso, os transistores Q4 e Q1 serão mantidos no estado de saturação (para um sentido de rotação) enquanto Q3 e Q2 são mantidos no estado de corte (base em 0 Volts)
E para o outro sentido, o caso inverso; Q4/Q1 em corte e Q3/Q2 em saturação.

Os diodos são para proteção dos Transistores devido à força contra eletromotriz gerada pelo motor durante os acionamentos de partida e paradas bruscas.
O capacitor serve para minimizar picos de tensão nas bobinas do motor, bem como evitar faiscamento nas escovas. Além disso, serve também para:
- Filtrar ruídos de Alta-Freqüência
- Minimizar interferências em equipamentos de RF (rádios AM/FM, televisores, etc...)





Para acionamento do primeiro sentido de rotação, devemos ter:
Q4 e Q1 no estado de saturação = Q4 sem sinal na base e Q1 com sinal positivo na base
Enquanto isso Q3 e Q2 devem ficar no estado de corte, ou seja: Q3 sem sinal na base e Q2 com sinal positivo na base.
O inverso ocorrendo para o segundo sentido de rotação.
Resumindo: Q4 e Q3 devem ser acionados ao mesmo tempo e com o mesmo tipo de sinal, enquanto Q2 e Q1 também devem se acionados ao mesmo tempo e com o mesmo tipo de sinal.
Veja tabela:

Sentido 1 => Q4=Q3=sem sinal         e Q2=Q1=sinal positivo
Sentido 2 => Q4=Q3=sinal positivo   e Q2=Q1=sem sinal

Estes circuitos usando transistores bipolares de baixo ganho, tem um inconveniente:

O consumo de corrente elevado na porta do Arduino!!!

Analisando a curva de ganho (HFE) x corrente de coletor (IC) de um transistor bipolar BC548 temos:



Podemos ver que para correntes de coletor de 2 mA o ganho seria de 300 vezes.
Enquanto que para correntes de coletor de 300 mA o ganho seria de 20 vezes apenas.
Isso nos mostra que para termos correntes de  300 mA, exigidas pelos motores DC, necessitaríamos de correntes de base de 15 mA ou maior (15 mA x 20 = 300 mA).
O Arduino pode fornecer no máximo 40 mA nas portas.

Calculo do resistor
R=V/I
R=(5V - 0,7V) / 0,015 ~= 280 Ohms

Quanto menos corrente sendo consumida da porta do Arduino, melhor....


Terceiro teste; Ponte H com Transistores Darlington  TIP-120 (NPN):
Usando o esquema abaixo.

Exemplo com Transistores NPN TIP-120
Neste circuito não é necessário os diodos, pois o TIP-120 já tem internamente um diodo de proteção.

Conforme as entradas A e B recebem níveis ALTO ou BAIXO, teremos determinado o sentido de rotação.
segundo a tabela abaixo:

A = ALTO, B = BAIXO -> Sentido Direto de rotação
A = BAIXO, B = ALTO -> Sentido Reverso de rotação
A = BAIXO, B = BAIXO -> Parado
A = ALTO, B = ALTO -> PROÍBIDO, Curto Circuito

Os transistores Darlingtons tem um ganho maior para altas correntes de coletor, reduzindo aquele problema anteriormente citado.
Veja na figura abaixo, que para altas correntes de coletor, temos altos ganhos... acima de 1000
Assim, por exemplo: para 300 mA teriamos ganho de 1200 vezes (usando 1 mA na base) teríamos um resistor de base igual a:

R = (5V - 0,7V) / 0,001 ~= 4300 Ohms



Circuito equivalente

Substrato






Quarto teste; usando o Circuito Integrado (CI) L298N Dual H-Bridge (Ponte H Dupla).
DataSheet do L298
http://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf


L298N Substrato


Ponte H Dupla - L298N. 
Alimentação de 5V - 35V. 
Corrente máxima de 2A. 
Potencia máxima de 25W. 
Pode comandar um stepper de 2 fases ou um stepper de 4 fases ou 2 motores DC. 



L298N Pinagem


L298N Diagrama em Blocos
Como mostrado no diagrama acima, temos os pinos 1 e 15 como sendo o Current sense (sensor de corrente). Na verdade este pino pode ser ligado diretamente ao GND de nosso circuito, mas toda via o uso correto seria colocando um resistor de baixíssimo valor (para não interferir na corrente de saída, cerca de 0,1 Ohm) e de tal forma que possamos medir a tensão em cima deste resistor e calcular a corrente que está sendo fornecida (funciona como um shunt). Por isso o resistor deve ter uma dissipação potência elevada, da ordem de 1 a 5 Watts dependendo da corrente a ser usada na saída (geralmente usa se associação de resistores em paralelo para isto).
O pino 4, Supply voltage Vs é a tensão de alimentação para os motores, enquanto que o pino 9, Logical Supply Voltage Vss é a tensão do circuito de controle +5V do Arduino. o pino 8, GND é comum aos dois circuitos.
Sempre colocar um capacitor de desacoplamento de 100nF entre os VCC/VDD (Vss/Vs) e o terra.
Os pinos 6 e 11 (ponte A e ponte B) Enable, podem ser colocados en nível alto diretamente conectados ao Vs, ou podem ser usados por pinos de controle provenientes do Arduino


L298N Circuito Típico com 2 motores
Você pode também usar cada uma das saídas para controlar individulamente um motor DC, com somente uma direção de rotação. Assim podemos controlar até 4 motores DC.
Podendo também, mesclar o uso, ou seja um motor numa ponte H (dois sentidos de roatação) e dois outros com somente um sentido de rotação.

Controle de Motor de passo,  visite para maiores informações:
http://www.roboticasimples.com/artigos.php?acao=14

L298N Circuito para motor de passo Bipolar

Nos Próximos posts; veremos a parte prática desta teoria, com os testes realizados.

Primeira parte com a Ponte H com Chave, Ponte H com Transistores bipolares NPN e PNP e Ponte H com transistores Darlington.

Segunda parte com o Controle via L298H (Ponte H Dupla).

Terceira Parte controle de Servomotores e Motores de Passo.

Então, até Breve!

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

domingo, 26 de agosto de 2012

RGB Fading - Mood Lamps 2


RGB Fading - Mood Lights



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 é um complemento do primeiro projeto "RGB Fading Mood Lights"
Só que agora com LEDs R, G, B convencionais de Alto Brilho e 10mm

O esquema de ligação é praticamente o mesmo (ligar os catodos dos LEDs ao GND e os anodos aos pinos 11, 10 e 9 do Arduino.

Neste projeto existe um calculo de incremento randômico na variação de cores dos LEDs, o que gera um efeito menos cíclico (repetitivo).

O material necessário, é somente a troca do LED RGB por LEDs convencionais de Alto Brilho e 10 mm, nas cores Vermelho, Verde e Azul (nada impede que seja feito com LEDs difusos.

Abaixo fotos do projeto:







O programa pode ser obtido em:

http://www.4shared.com/file/ZjJPkQEi/LED_Fading_Mood_Lights_2.html


Abaixo o vídeo:
http://www.youtube.com/watch?v=DMYp4Rp8GTs

Correção no vídeo:
Resistor de 330 Ohms

video


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


Arduino - Chave Óptica



Chave óptica

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

Neste projetos iremos exemplificar o uso de chaves ópticas para acionar dispositivos e também como sensor para contagem de objetos e até mesmo controle de velocidade de objetos.


Uma chave óptica típica é um dispositivo em que existe uma fonte emissora, normalmente um LED infra-vermelho, e um receptor, geralmente um fototransistor, conforme mostra a figura abaixo. O dispositivo é montado de tal forma que entre o emissor e o receptor existe uma fenda onde pode ser introduzido um objeto. A introdução desse objeto interrompe o feixe de radiação do emissor, provocando uma mudança de estado do circuito.

Chave óptica comercial, diagrama interno





Circuito Típico com componentes discretos


As chaves ópticas são extremamente rápidas e têm a vantagem de não utilizarem contatos mecânicos que podem desgastar-se e ainda apresentarem problemas de repiques.

As chaves ópticas são usadas em automatismos, encoders de controle de movimento e robótica, e em muitas outras aplicações importantes relacionada a mecatrônica e opto-eletrônica.



As chaves ópticas são usadas também em mecanismos de segurança, diferente dos convencionais mas ainda assim muito semelhante ao funcionamento de uma chave e a sua fechadura. Nas chaves ópticas, a “chave” é um cartão com uma certa combinação ranhuras, que quando introduzida na “fechadura/fenda” permite abrir uma porta, um armário, dependendo daquilo que se quer proteger.

No nosso projeto, usaremos um cartão perfurado, para simular uma cremalheira ou até mesmo objetos, e assim poder contar ou verificar a velocidade de passagem de objetos.

Alguns modelos disponíveis:










MATERIAIS & COMPONENTES:

1 x Arduino Duemilanove, UNO ou MEGA
1 x BreadBoard
1 x Chave Óptica PHCT204
dataseheet: http://bioserver.cpgei.ct.utfpr.edu.br/disciplinas/microcontroladores/datasheets/PHCTX0X-chaveoptoeletronica.pdf
1 x resistor de 330 Ohms
1 x resistor de 10K Ohms
Cabos e Fios para as conexões

DIAGRAMAS & CIRCUITOS:

Abaixo o diagrama de interligação dos componentes.


Cartão usado para o teste de contagem e velocidade.



Esse cartão tem 8 passagem x 8 interrupções em 10cm de comprimento, isso significaria que:
se em 1 segundo eu conseguir contar os 16 estados completos, então o cartão estaria se deslocando a uma velocidade de 10 cm/s; poderiamos por exemplo, com um dente em uma roda, contar a quantidade de giros completos em RPM, e assim por diante.... existem vária utilizações para este tipo de projeto, use sua criatividade.





PROGRAMAÇÃO E SOFTWARE:

Você pode baixar o código completo para Arduino acessando o link:

http://www.4shared.com/file/uYoNHYoo/Chave_optica_1.html




Segue o código comentado:


/*
#####################################################################################
#   Arquivo:            Chave_optica_1.pde                                             
#       Micro-processador:  Arduino UNO ou Teensy++ 2.0      
#   Linguagem:    Wiring / C /Processing /Fritzing / Arduino IDE          
#
# Objetivo:           Sensor Optical Switch (chave óptica)
#  
# Funcionamento:    Contagem de Objetos, sistema de segurança
#                           com cartão de identificação perfurado, medida
#                           de velocidade de cremalheiras ou objetos,
#                           etc...
#
#
#
#   Autor:              Marcelo Moraes 
#   Data:               26/08/12
#   Local:              Sorocaba - SP
#
#####################################################################################

  Este projeto contém código de domínio público.
  A modificação é premitida sem aviso prévio.
 */


// deinições de variáveis
#define opticalPin 3
#define myDelay 1000

// executado na inicialização do Arduino
void setup(){
  Serial.begin(9600); // inicializa a comunicação serial
  pinMode(opticalPin, INPUT); // definição do pino do sensor
}

// loop principal do programa
void loop(){
  // definição de varial para temporização
  // pode armazenar temporização de até 50 dias
  // myDelay é o tempo que queremos comparar
  unsigned long endTime = millis() + myDelay;
  // faz a leitura do sensor e guarda como estado prévio
  byte previousState = digitalRead(opticalPin); 
  int counter = 0; // inicializa contador
  // enquanto for menor que "endTime" executa
  while(endTime > millis()){
    // coloca estado do pino como estado corrente
    byte currentState = digitalRead(opticalPin);
    // se o estado conrrente não for igual ao estado prévio
    if(currentState != previousState){
      counter++; // acrescenta 1 ao contador
      // faz estado prévio igual ao estado corrente
      previousState = currentState; 
    }// continua executando
  }
  // imprime contador no monitor serial
  // facilmente modificado se precisar imprimir em LCD
  // ou display 7 segmentos
  Serial.println(counter);
}
//FIM DA COMPILAÇÃO




VÍDEOS E TESTES:


video

Veja este vídeo no youtube e com uma melhor resolução:
http://www.youtube.com/watch?v=IsmYcm00z1s


Obrigado, e até o próximo Projeto!


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




terça-feira, 21 de agosto de 2012

Teensyduino Open Source Hardware

Arduino by Myself
Teensyduino

Chegou a minha mais nova aquisição em termos de Hardware "Open Source"...
O Teensy++ versão 2.0 compatível com Arduino.

O Teensy usa processador ATMEL AT90USB1286 e programar Teensy com software Arduino provê um ambiente simples e fácil para iniciantes.  Para acesso a todas as facilidades do Teensy, melhor seria usar a programação em linguagem C/C++.



O Teensy++ 2.0 tem como características

SpecificationTeensy 2.0Teensy++ 2.0
ProcessorATMEGA32U4AT90USB1286
Flash Memory32256130048
RAM Memory25608192
EEPROM10244096
I/O2546
Analog In128
PWM79
UART,I2C,SPI1,1,11,1,1
 - Conexão USB
 - Processador AVR de 16 MHz
 - Botão de programação
 - Aplicação Teensy de carga de programas
 - Ferramentas de desenvolvimento de SW livre
 - Trabalha om várias plataformas de Software
 - Pequeno tamanho
 - Pode ser usado na BreadBoard
 - Baixo custo
 - Compatível com bibliotecas do Arduino e IDE
 - USB MIDI, Disk, Joystick, RawHID & Flight Sim Controls.
 - digitalWite(), digitaRead(), pinMode(), etc. otimizados.
 - 3,5 K extras de memória de programa (menor bootloader)
 - suporte a teclado internacional (não USA).
 - opção de 3,3 V e menu Tools > CPU Speed





Teensy++ Loader (para carregar arquivos .HEX diretamente ao processador


Teensy na BreadBoard


IDE Arduino e Teensy



Pinagem completa do Teensy++ 2.0




Para maiores detalhes, projetos, tutoriais, bibliotecas e também aquisição do Teensy, visite:
http://www.pjrc.com/teensy/index.html


Até breve, com projetos para o Teensy.

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

Figuras reais do Hardware:

Embalagem protetora anti-estática

Manual Simples e Recomendações

Hardware