sexta-feira, 23 de setembro de 2011

Carrinho com Controle Caseiro

     Primeiramente montei uma base de um carrinho de controle velho (Meu amigo Francisco me doou) e refiz o circuito interno. Coloquei a ponte H com transistores no projeto, o circuito da ponte H na postagem logo abaixo a essa. O carrinho possui também faróis, usei 2 LEDs de alto brilho.
Ponte H com 8 Transistores TIP120 ligado ao Arduino.
Visão frontal do projeto, faróis mencionados anteriormente.

     A Finalidade desse chassi que ajeitei e para estudar o arduino usando diversos controles (PS1, PS3, Joystick) e fazer controles dos projetos também por sem fio (Bluetooth, WiFi, RF, etc.), mas vai ser tudo com calma.

     Para começar com esse projeto, eu mesmo fiz um controle, me baseei em um controle de Master System II... Sendo que no controle possui 6 botões, no que eu mesmo montei possui 5 botões (direcionais e botão para qualquer função determinada). Com esse controle não precisa de biblioteca só usei pushbutton, mas nos controles em que me referi anteriormente, precisa sim de biblioteca no arduino. Logo abaixo mostra o layout e a foto de como ficou o controle.
     Aproveitei os Direcionais de um controle de video game velho e coloquei no novo controle, usei resistores de 1kohm. O cabo eu aproveitei um que tinha, é um cabo de rede. O layout e para fazer a caneta na placa nos furos logo acima (7 furos): 5v, Botão Desce, Botão Direito, Botão Cima, Botão Esquerdo, Botão Solto e GND
     Na programação, os botões ficaram nas portas digitais... Praticamente usei quase todas as portas digitais do arduino com esse projeto do Carrinho sendo controlado por um controle de Game. A programação é bem fácil, praticamente é idem ao do Sensor de Toque.

Programação:
//Farol
int led1 = 11;
int led2 = 12;
//Motores
int direcaoE = 5;
int direcaoD = 6;
int motorF = 9;
int motorT = 10;
//Controle
int cima = 2;
int vcima = 0;
int baixo = 3;
int vbaixo = 0;
int direito = 4;
int vdireito = 0;
int esquerdo = 7;
int vesquerdo = 0;
int tecla = 8;
int vtecla = 0;
void farol_ligado()
{
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
}
void farol_desligado()
{
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
}
void direcao(int dE, int dD)
{
  analogWrite(direcaoE, dE);
  analogWrite(direcaoD, dD);
}
void movimento(int mF, int mT)
{
  analogWrite(motorF, mF);
  analogWrite(motorT, mT);
}
void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(direcaoE, OUTPUT);
  pinMode(direcaoD, OUTPUT);
  pinMode(motorF, OUTPUT);
  pinMode(motorT, OUTPUT);
  pinMode(cima, INPUT);
  pinMode(baixo, INPUT);
  pinMode(esquerdo, INPUT);
  pinMode(direito, INPUT);
  pinMode(tecla, INPUT);
}
void loop()
{
  vcima=digitalRead(cima);
  vbaixo=digitalRead(baixo);
  vesquerdo=digitalRead(esquerdo);
  vdireito=digitalRead(direito);
  vtecla=digitalRead(tecla);
  if(vcima == HIGH)
  {
    movimento(255,0);
  }
  if(vbaixo == HIGH)
  {
    movimento(0,255);
  }
  if(vesquerdo == HIGH)
  {
    direcao(255,0);
  }
  if(vdireito == HIGH)
  {
    direcao(0,255);
  }
  if(vtecla == HIGH)
  {
    farol_ligado();
  }
  else
  {
    farol_desligado();
    movimento(0,0);
    direcao(0,0);
  }
}


     Na programação, antes de fazer a preparação de tudo no void setup() criei 4 novas funções... Essas funções que criei são para facilitar a programação, para não ficar repetindo varias vezes a mesma programação. Criando uma função (um void), invés de digitar varia vezes a mesma programação que deseja, com isso só ao digitar o nome da função irá executar o que está dentro dela... Com isso diminui muito a quantidade de linhas na programação e pode deixar mais claro para entendê-lo. As funções são para ligar e desligar o farol, outra que irá servir para o controle da direção e outro para aceleração (se irá se movimentar para frente ou para trás).

     Depois que calibrei os botões, digitalRead(), a programação era quando eu pressionar o botão determinado e der o valor 1 no arduino, irá executar o que programação (e: apertei o botão cima, quando pressionei o arduino estava lendo 0 passou a ler para 1, quando estiver em 1 o carrinho irá para frente). Mas se nenhuns dos botões forem apertados, o carrinho irá ficar parado, como mostra no else (desativei todas as funções).
Vídeo:


terça-feira, 13 de setembro de 2011

Ponte H com Transistor

     Existem vários tipos de pontes H feitos com CI (Circuitos Integrados) que conheço é o L293D (que usei no meu motorshield), L293B e o L298 (esse CI aguenta mais potencia que os outros dois) mas existem outros tipos de CIs.

     Também pode fazer com transistor, com esse componente tem vários tipos de montagens usando só transistores NPN ou só PNP ou mistura (dois de cada). Para montar a ponte H com transistores é necessário de 4 componentes para acionar 1 motor.

 Nessa postagem fiz em uma única placa 2 ponte H usando transistores TIP 120, usei total de 8 transistores e 8 resistores, para proteger o circuito.
     Os transistores são utilizados para ser usamos como amplificadores ou interruptores de sinais elétricos, nesse caso estou usando como interruptor para poder controlar o sentido em que o motor roda. O TIP120 é um transistor DARL que suporta até 100v, 5A e 65W.

Circuito eu pesquisei no google e encontrei esse e funcionou perfeitamente:



     O circuito mostra para ligar apenas um motor, o layout do lado é no caso 2 ponte H, para ligar 2 motores como se fosse o CI.

Fotos:

Vídeo:

quarta-feira, 7 de setembro de 2011

Carrinho Acionado por Luz

     Bom esse projeto não uso o arduino, mas também pode implementar o arduino nele, esse projeto é bom para o pessoal que está começando a eletrônica. Se usa um circuito bem simples e fácil de montar. Primeiramente é bom montar o circuito em um protoboard ou numa barra sindal para depois fazer a placa (caso saiba fazer).

     O circuito desse carrinho precisa de um transistor NPN (usei o TIP120), um resistor, um LDR, um motor e suporte para  2 de pilhas AA (o meu suporte arranquei de um carrinho velho que tinha, rs).

     O carrinho funciona, quando colocar algum alguma luz direcionada ao LDR, a resistência do LDR diminui e aciona o motor, o transistor serve para amplificar a corrente para que o motor funcione.

Esquema do Projeto:



Fotos do Projeto:


sábado, 3 de setembro de 2011

Potenciômetro

     Nessa postagem irei explicar função nova, estou utilizando potenciômetro para controlar o tempo em que um LED vai piscar e a intensidade de luz do LED RGB, usando nas portas PWM.

     Nessa "aula" estou usando 4 potenciômetros, 1 LED RGB e 3 resistores de 220ohm para proteger o LED. 1 potenciômetro é para o LED do pino 13 e outros 3 para cada cor do LED RGB. O circuito do potenciômetro com os LED RGB fica assim:
Esse circuito é para 1 potenciômetro, mas é idem com todos os potenciômetros.
Programação:

const int led = 13;
int T = 0;
const int R = 11;
const int G = 10;
const int B = 9;
const int potled = 0;
const int potR = 1;
const int potG = 2;
const int potB = 3;
void setup()
{
  pinMode(led, OUTPUT);
  pinMode(R, OUTPUT);
  pinMode(G, OUTPUT);
  pinMode(B, OUTPUT);  Serial.begin(9600);
}
void loop()
{
  //Programação De Tempo do LED que pisca
  T=analogRead(potled);
  digitalWrite(led, HIGH);
  delay(T);
  digitalWrite(led, LOW);
  delay(T);
                                                                                                                                                               //Programação de Cores com RGB                                                                                                                                   int valorR=analogRead(potR);                                                                                                              int valorG=analogRead(potG);
  int valorB=analogRead(potB);
  int pwmr = map(valorR,0,1023,0,255);
  int pwmg = map(valorG,0,1023,0,255);
  int pwmb = map(valorB,0,1023,0,255);
  analogWrite(R, pwmr);

  analogWrite(G, pwmg);
  analogWrite(B, pwmb);
}

     Agora irei explicar a função matemática map() e variável const:
                                 - const -> A const palavra-chave significa constante. É uma variável qualificador que modifica o comportamento da variável, tornando uma variável " read-only ". Isto significa que a variável pode ser usado apenas como qualquer outra variável de seu tipo, mas seu valor não pode ser alterado. Você vai ter um erro do compilador, se você tentar atribuir um valor a uma const variável.

- map() -> map serve para fazer calculo de um intervalo para o outro, map(valor, ValorInicialDesligado, ValorInicialLigado, ValorFinalDesligado, ValorFinalLigado), ou seja, o ValorInicalDesligado ficará mapeado em ValorFinalDesligado, e o ValorInicalLigado ficará mapeado em ValorFinalLigado.
OBS.: Nos valores Desligado, não quer dizer que o valor tem quer se menor do que os valores Ligados, podendo fazer o contrario, o valor Desligado ser maior que os Ligado. Também podendo usar valores negativos.


Vídeo:

 
Blogger Templates