quarta-feira, 24 de fevereiro de 2016

Carro de controle remoto utilizando controle de TV

Vamos criar um programa simples que irá controlar um pequeno veículo através de um controle de TV ou qualquer outro controle IR compatível com o auxilio da biblioteca IR e com a IDE do arduino .

Materiais:

  • Arduino Uno;
  • Ponte H dupla(  L9110, L298n ou de transistores)
  • Controle emissor IR( controle de TV, Rádio , DVD, Etc)
  • Receptor IR;
  • Resistor de 100 ohm para o receptor IR.
  • 2 Motores, motorredutores ou servos de parabólica adaptado;
  • 1 base para montar o conjunto.

O Receptor IR é responsável por receber os pulsos infra vermelhos codificados enviados pelo controle e convertê-los em sinal que possa ser lido e decodificado por um microcontrolador. Antes de fazer as ligações, atentar-se a pinagem do receptor IR. Existem alguns modelos e pinagens diferentes como na imagem abaixo:


Neste exemplo irei utilizar o modelo de pinagem do IS1U60, PIC12043S e SFH505A.
Também existem shields dedicados como este feito por mim mesmo na imagem abaixo:


Ponte H:

A ponte H é um esquema de transistores para controlar o sentido de giro de motores e fazer sua reversão. Para cada motor é necessário uma ponte. Abaixo o esquema de uma ponte H e exemplos de ponte H dupla feita com componentes discretos e um shield de Ponte H:

Controlador Ponte H L9110 - Dois Motores - Arduino Robotica

Vamos utilizar como exemplo o shield L9110 de ponte H dupla. Neste shield temos os pinos: A-1A, A-1B, B-1A E B-1B responsáveis por fazer a reversão e controle dos motores, serão ligados nas saídas digitais do Arduino 6,7,8 e 9 e nos motores conforme o esquema abaixo:


Caso o carro estiver com os movimentos invertidos, basta trocar os fios + com -.
Devemos ter uma certa atenção ao ligar os pinos 6,7,8 e 9 para que funcione semelhante a lógica abaixo:

0000= PARA
1111=NÃO VAMOS UTILIZAR

Ligaremos também o pino de saída do receptor IR no pino 13 do arduino e o resistor de 100ohm no pino de VCC do receptor IR.

Com relação a base ou chassis , existem algumas prontas na internet, no meu caso, utilizei uma placa de fenolite e colei os servos de parabólica adaptados na parte de trás. Neste caso removi o fim de curso do servo para que gire 3690 graus. Na frente coloquei um pequeno rodizio só para apoio.


Para o programa a seguir, precisaremos da biblioteca IRremote .


// Programa : Carro de Controle Controle Remoto IR  
// Autor : Fernando Moreira  
  
#include <IRremote.h>  
int RECV_PIN = 13;  
float armazenavalor;  
int IN1 = 6;  
int IN2 = 7; 
int IN3 = 8;  //PINOS DO ARDUINO UTILIZADOS PARA A PONTE H
int IN4 = 9; 

  IRrecv irrecv(RECV_PIN);  

decode_results results;  
  
void setup()  
{  
  pinMode(IN1, OUTPUT);   
  pinMode(IN2, OUTPUT);  
  pinMode(IN3, OUTPUT);   // //PINOS DEFINIDOS COMO SAÍDAS QUE SERÃO LIGADOS A PONTE H
  pinMode(IN4, OUTPUT);  
  
  Serial.begin(9600);  
  irrecv.enableIRIn(); // Inicializa o receptor IR  
}  
   
void loop()  
{  
  if (irrecv.decode(&results))  
  {  
    Serial.print("Valor lido : ");  
    Serial.println(results.value, HEX);  
    armazenavalor = (results.value);  
    if (armazenavalor == 0x20DF02FD) //Verifica se a tecla AVANÇAR foi acionada 
    {  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN2, LOW); 
      digitalWrite(IN4, LOW);      //AVANÇAR
    }  
    if (armazenavalor == 0x20DF827D) //Verifica se a tecla RÉ foi acionada  
    {  
       digitalWrite(IN1, LOW); 
      digitalWrite(IN3, LOW);      //RÉ
      digitalWrite(IN2, HIGH);
      digitalWrite(IN4, HIGH);
    }  
    if (armazenavalor == 0x20DFE01F) //Verifica se a tecla ESQUERDA foi acionada  
    {  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN3, LOW);
      digitalWrite(IN2, LOW); 
      digitalWrite(IN4, HIGH);      //ESQUERDA
    }  
    if (armazenavalor == 0x20DF609F) //Verifica se a tecla DIREITA foi acionada  
    {  
      digitalWrite(IN1, LOW); 
      digitalWrite(IN3, HIGH);      //DIREITA
      digitalWrite(IN2, HIGH);
      digitalWrite(IN4, LOW);
    }  
    if (armazenavalor == 0x20DF22DD) //Verifica se a tecla PARAR foi acionada  
    {  
       digitalWrite(IN1, LOW); 
      digitalWrite(IN3, LOW);      //PARAR
      digitalWrite(IN2, LOW);
      digitalWrite(IN4, LOW); 
    }  
   irrecv.resume(); //Le o próximo valor  
  }  

}  


Após compilar e gravar o programa no Arduíno, deixaremos conectado via usb para customizar as teclas de acionamento.
Vamos abrir o monitor serial da IDE do arduino para verificar o que está sendo enviado por cada tecla do controle.
Os valores são impressos via serial e exibidos em hexadecimal :



Com esses valores, podemos escolher qualquer tecla que for conveniente, anotar seu valor e substituir na função if no programa ex:

  if (armazenavalor == 0x20DF02FD) //Verifica se a tecla AVANÇAR foi acionada 
    {  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN2, LOW); 
      digitalWrite(IN4, LOW);      //AVANÇAR


Neste caso, a tecla com o valor 0x20DF02FD é responsável por fazer o carro avançar.
 Fiz a seguinte configuração:





Os valores podem ser diferentes de controle para controle. O ideal é ler os valores e substituir no programa conforme necessário.
Esse programa pode ser utilizado para controlar relés, LEDs e qualquer outro dispositivo ligado as portas digitais. Podemos acrescentar mais botões e modificar a lógica conforme a nossa imaginação permitir.



domingo, 29 de novembro de 2015

COMPONENTES BÁSICOS PARA AEROMODELISMO ELÉTRICO

Vou falar um pouco sobre os componentes básicos para iniciar no fantástico mundo do aeromodelismo elétrico.

Radio Transmissor:
É responsável por receber o comando do usuário através de botões e "Sticks", codificar e transmitir ao aeromodelo, para que seja possível o controle do mesmo.
Existem vários modelos de rádio transmissor, vão desde os primeiros AM, FM aos mais modernos 2.4Ghz. Não existe uma quantidade definida de canais para começar no aeromodelismo, quanto mais canais melhor, porém, devido ao valor de um rádio com muitos canais ser alto, o minimo que recomendo é um rádio com 4 canais. Vale muito a pena gastar um pouco mais e investir em um rádio com 9 ou mais canais, pois com o tempo você pode precisar e um único rádio servirá para todos os seus aeromodelos.



Cada canal é responsável por um movimento de seu modelo, exemplo 3 canais:

Canal 1 - Direita / esquerda - Pode ser ligado ao leme ou ailerão, depende do modelo.
Canal 2 - Sobe / desce - Geralmente ligado ao profundor do aeromodelo
Canal 3 - Aceleração - Este canal geralmente é ligado ao motor para controlar a velocidade


Receptores:
Recebem o sinal codificado do transmissor e transforma em um sinal conhecido "PWM" para cada canal.
Devem ser pareados com os transmissores, de preferencia de mesma marca. Chamamos o processo de parear de "Bindagem", isso para que o transmissor e o receptor trabalhem em um sinal que não interfira em outros receptores.


Assim como o transmissor, o receptor possui vários canais, cada canal será ligado aos demais componentes eletrônicos do Aeromodelo.

Servos:
São componentes responsáveis pela movimentação dos lemes e demais direcionadores do aeromodelo. O servo recebe o sinal PWM do receptor e varia a posição do sei eixo de 0º a 180º, conforme a posição do "Stick" no transmissor. Existem servos que suportam mais ou menos torque. Os mais usados em aeromodelos elétricos pequenos são os de 9g, enquanto em modelos maiores são necessários servos com maior torque.


Motor:
Outro principal componente que deve ser bem escolhido em função da velocidade de "Stall" e tipo de hélice de cada modelo é o motor. Podem ser com escovas"brushed" ou sem escovas "brushless". Os mais usados hoje são os "brushless" também chamados de "outrunner", por possuírem alto rendimento, alto empuxo, durabilidade e ser de fácil manutenção.



Hélices e porta-hélices:

A hélice vai depender muito do tipo das características de voo de cada modelo. São escolhidas em função do material, diâmetro, passo, número de pás e também em função do motor. São montadas no motor com o auxilio de um porta-hélice que pode ser rosqueado ou com o uso de elásticos.



"Speed Controller" ou ESC:
Controlam a velocidade do motor de acordo com os pulsos PWM que saem do receptor ao comando do usuário, através do stick do transmissor.
No caso de controladores para motores "brushless", possuem um microcontrolador interno que interpreta os sinais PWM e gera um sinal trifásico para as três fases do Motor. Possuem um conjunto de Mosfets que suportam altos valores de correntes, Os mais comuns para aeromodelos pequenos são Escs de 20 a 30A. Alguns possuem BEC ( Battery Ellimination Circuit)  e podem ser utilizados para alimentar o receptor e os servos.
Bateria:
Será o combustível do nosso aero, podem ser de diversos materiais, porém, o que importa no caso de aeromodelos é a capacidade de descarga, tensão da bateria e quantidade de células. As baterias mais utilizadas são as de Lipo por possuírem uma boa relação de peso/potencia. As mais utilizadas em modelos pequenos são de 2 ou 3 células (2S e 3S), que determinam sua tensão. Cada célula possui 3,7V, portanto, uma bateria de 3 células terá 11,1V. Outro fator importante é a capacidade de descarga. Na pratica de aeromodelismo lidamos com correntes em torno de 20A, a bateria deve ser capaz de nos fornecer essa quantidade de corrente por um tempo razoável sem que danifique-se.
Vou criar um tópico mais detalhado a respeito de baterias e como escolher a melhor para o seu modelo nos próximos posts.




Monitor de Bateria com alarme de baixa tensão:

Outro componente muito importante para seu aeromodelo é um monitor de bateria.
Caso a tensão na bateria atinja o valor minimo programado pelo monitor, por exemplo 3,3V,  um alarme irá soar indicando que você deve pousar o modelo para substituição da bateria ou recarga.
É um componente barato de muita importância em caso de drones. Se a bateria acaba em um avião, você pode planar até pousar o mesmo. No Caso de drones, se a bateria acaba em vôo, o mesmo desce igual a uma pedra. Abaixo está um exemplo de Monitor de Bateria:
Carregadores e balanceadores de Bateria:

Não podemos deixar de lado um componente muito importante que é o carregador e balanceador de baterias. Bateria de Lipo requer muito cuidado na sua utilização e administração de carga, caso contrário podem explodir ou descarregar até abaixo do limite mínimo podendo inchar e ir para o descarte.
É muito importante garantir que as células da bateria estão balanceadas com a mesma tensão e os carregadores corretos garantem isso.
Existem alguns tipos básicos de carregadores no mercado que podemos utilizar, carregadores mais simples que somente carregam até a tensão máxima e carregadores que além de carregar a bateria, possuem opções de balanceamento, carga em uma tensão segura para estocar a bateria quando não estiver utilizando-a, descarregar baterias e selecionar tipos de baterias e seleção de correntes de carga e descarga.
*Nunca deixem uma bateria de Lipo carregando sem supervisão, é muito perigoso.

Abaixo estão alguns exemplos de carregadores que encontramos no mercado, o primeiro seria um carregador mais simples e o segundo um mais completo que administra a carga e carrega diferentes tipos de baterias.




Com esses componentes em mãos, já é possível montar um aeromodelo radio controlado. 
Abaixo segue o esquema de ligação mais básico e comun dos componentes para um aeromodelo de 4 canais:


Agora falta colocar cada coisa em seu lugar no aeromodelo.
No próximo post vou explicar como construir um aeromodelo simples de isopor e como cada servo movimenta os direcionadores.
Muito obrigado.












Arduino - sensor de temperatura com display, setpoint, ventoinha e alarme

Olá, neste post vou mostrar um circuito simples controlador de temperatura com display, utilizando o Arduino Uno como microcontrolador e o software Isis do Proteus para fazer a simulação.

O circuito é didático e funciona da seguinte forma: Se a temperatura do sistema estiver abaixo do setpoint, o LED verde ficará piscando indicando o funcionamento normal. Se a temperatura atingir o setpoint a ventoinha irá ligar, quando a ventoinha esfriar o sensor, ela desliga e continua o funcionamento normal. Se a temperatura subir e a ventoinha não der conta de esfriar ou parar de funcionar, um LED vermelho indicador de alarme vai Acender para alertar o ocorrido até que a temperatura abaixe até o setpoint.

O Setpoint e o Set do alarme serão feitos pelos Potenciômetros ligados nos Pinos A1 e A2 do Arduino respectivamente.

O LM35 é ligado ao pino analógico A0.

O Programa exibe no Display e também via serial os valores de setpoint e temperatura.
Há uma opção no programa que deve ser habilitada (remover //) para que envie via serial.

Circuito:


Lista de Materiais:
1x LM35 (sensor de temperatura)
2x Potenciômetros de 5k
1x LED verde
1x LED vermelho
1x Display Nokia 5110 ou 3310
1x Capacitor de 4,7uF
2x Resistores de 220ohms
1x Resistor de 440ohms
1x Transistor TIP31 ou de acordo com a potencia da ventoinha
1x Arduino (pode ser UNO, NANO, MEGA) é só modificar a ferramenta na hora de compilar.
1x Fonte 5V.


Programa e Teste no Proteus:

Foram utilizados os componentes LCD NOKIA 3310 e Arduino UNO.
Esses componentes necessitam de bibliotecas que podem ser encontradas no link abaixo:

PROGRAMA+ESQUEMA+BIBLIOTECAS ARDUINO E PROTEUS



Teste Pratico:




Espero que tenham gostado e tirem algum aprendizado a partir deste post.
Muito Obrigado.