segunda-feira, 20 de outubro de 2014

Sensor Infravermelho



Temos dois tipos de sensor infravermelho o ativo e o passivo. O sensor infravermelho ativo ele tem um receptor e um emissor de luz, assim ao emitir a luz no objeto e refletido para o receptor. O sensor infravermelho passivo ele possui um receptor, ele somente recebe a luz.


Sensor infravermelho ativo




Sensor Infravermelho passivo


Para o projeto o sensor infravermelho ativo e mais viável,assim  podemos utilizar sensor de proximidade que tem como função detectar obstáculos.  Possui um circuito simples caso desejemos criar o sensor. Como vemos na figura abaixo:
circuito sensor de proximidade (barreira)
Os resistores irão regular a potencia do sensor, tendo um resistor de 100 ohms para o led e um de 4k 7 Ohms no transistor. Dessa maneira o led emissor IR tera maior alcance devido sua resistencia ser menos, mas a resistência nao pode ser muito baixa, pois pode queimar o led ou o circuito.
Devido a isso foi acoplado um transistor ao circuito para fazer o controle, servindo também para desativar o circuito e economizar energia. podemos ver esse circuito expressado abaixo ligado ao Arduíno. Na figura esta contido um LDR (no lugar do TIL78) e um led vermelho (no lugar do TIL32).





Referencia:
  • http://robolivre.org/conteudo/sensor-de-infravermelho.

Melhores especificações e exemplos:
  • http://www.arduinoecia.com.br/2014/07/contador-sensor-de-proximidade-ir.html
  • http://blog.filipeflop.com/sensores/sensor-infravermelho.html
  • http://www.filipeflop.com/pd-6b910-sensor-infravermelho.html


sexta-feira, 17 de outubro de 2014

Pessoal, vale a pena ler, pois temos que saber como retroceder o motor:

Controle de motor de passo com ponte H L298N

A maioria dos projetos que eu vejo utilizando o driver motor ponte H L298N  envolve o controle de motores DC. Faz sentido pois uma das grandes vantagens desse módulo é que ele suporta correntes de até 2A por canal. 

Mas com esse módulo também é possível controlarmos motores de passo. Vamos ver como isso funciona, mostrando antes as especificações e pinagem :

Ponte H L298N Arduino

Especificações ponte H L298N


  • Tensão de Operação: 6~35v
  • Chip: ST L298N (datasheet)
  • Controle de 2 motores DC ou 1 motor de passo
  • Corrente de Operação máxima: 2A por canal ou 4A máx
  • Tensão lógica: 5v
  • Corrente lógica: 0~36mA
  • Limites de Temperatura: -20 a +135°C
  • Potência Máxima: 25W
  • Dimensões: 43 x 43 x 27mm
  • Peso: 30g
Pinagem ponte H L298N

Pinagem


  • MOTOR A e MOTOR B são os conectores utilizados para ligação de 2 motores DC ou 1 motor de passo
  • ATIVA MA e ATIVA MB - Podem ser ligados aos pinos PWM do Arduino para controle de velocidade do motor
  • ATIVA 5V e 5v - Esta placa possui um regulador de tensão integrado. Quando o módulo é alimentado por fonte externa (6 à 35v) e um jumper está colocado no conector Ativa 5v, o pino 5v possui uma SAÍDA de +5v. Quando não há jumper no pino Ativa 5v, o pino 5v se comporta comoENTRADA, podendo ser utilizado , por exemplo, os 5v do Arduino para alimentação. Portanto,tome cuidado ao utilizar o pino 5v e evite danos ao módulo.
  • 6-35v GND - Pinos alimentação externa
  • ENTRADA - Barramento com os pinos de IN1 a IN4. IN1 e IN2 controlam o Motor A, e IN3 e IN4controlam o Motor B. No caso de motores de passo, os 4 pinos são utilizados

Eu testei esse módulo com um motor de passo bipolar, retirado de uma impressora (o mesmo que eu utilizei no post Controlando motor de passo bipolar com o módulo Easydriver). Como o motor é de 12 volts, utilizei uma fonte externa para alimentação. Repare que o pino GND do Arduino deve ser ligado ao GND da fonte externa :


Circuito Arduino Uno - Ponte H L298N


Com esse motor eu vou usar a sequência mostrada na tabela abaixo, que se refere ao motor que eu tenho. A bobina 1 está ligada aos fios amarelo e cinza, e a bobina 2 aos fios marrom e verde, e provavelmente são diferentes das cores dos fios do motor que você tiver aí. De qualquer forma, basta descobrir quais são os pares das bobinas.


Motor de passo - Sequencia de ativação 4 passos


Com base na tabela, vou acionando os pinos 8, 9, 10 e 11 do Arduino com pequenos intervalos, movimentando o motor. Como estamos acionando diretamente os pinos, não vamos utilizar bibliotecas nesse programa.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Programa : Ponte H L298N e motor de passo
// Autor : Arduino e Cia

// Conexoes modulo - Arduino
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;

void setup()
{
  // Define os pinos como saida
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
}

int tempo = 10;

void loop()
{
  // Passo 1
  digitalWrite(IN1, 1);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 1);
  delay(tempo);  

  // Passo 2
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 1);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 1);
  delay(tempo);

  // Passo 3
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 1);
  digitalWrite(IN3, 1);
  digitalWrite(IN4, 0);
  delay(tempo);

  // Passo 4
  digitalWrite(IN1, 1);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 1);
  digitalWrite(IN4, 0);
  delay(tempo);
}

Adapte o programa ao seu projeto, ajustando a sequência de ativação, alterando o sentido de rotação e modificando o programa para que o motor se movimente em ângulos pré-determinados.

Trabalho escrito por: http://www.arduinoecia.com.br/2014/08/ponte-h-l298n-motor-de-passo.html

Segue o link da demonstração da placa ponte H sendo utilizado no youtube:
https://www.youtube.com/watch?v=XP044wTL_to

segunda-feira, 13 de outubro de 2014

Lógica de Programação

Como será lido os sensores:

Isto varia, vi um vídeo que um sensor de luminosidade de 0 a 5 volts, interpreta em bits ate 1025, suponho que metade para cima seja 1(positivo) e metade para baixo seja 0(negativo);

Caso trabalhe com o mouse mais 2 sensores, acredito que funcionara o projeto sendo sensor da direita, sensor da esquerda  e mouse verificando se esta indo reto(aumentando Y positivo), virando a esquerda( diminuindo X negativo), virando para direita(aumentando X positivo), e tendo que retroceder(aumentando Y negativo);

Considerando os fatos acima, terá uma tabela verdade para os sensores:

Esquerda
Direita
Resultado
1
1
Acelera
1
0
Desacelera e aumenta o grau para Esquerda
0
1
Desacelera e aumenta o grau para Direita
0
0
Retrocede

Teoricamente, poderíamos começar um laço de repetição assim:

Inteiro Esquerda, Direita;
Float Aceleração;
Enquanto (motor estiver ligado){
Se (Esquerda=1, Direita=1){
Aceleração +=1;
}
Se(Esquerda=1, Direita=0){
            Aceleração = Aceleração*0.6;
            InclinaçãoEsquerda +30°;
            Aceleração +=1;
}
Se(Esquerda=0, Direita=1) ){
            Aceleração = Aceleração*0.6;
            InclinaçãoDireita +30°;
            Aceleração +=1;
}
Se(Esquerda=0, Direita=0) ){
            Aceleração = Aceleração*0.2;
            Retrocede;
}
}

No caso a Aceleração, seria com uma formula com base no motor e no tempo, considerando que o tempo seja a cada segundo, a aceleração seria aumentando a força do motor e desaceleração diminuindo, a inclinação seria com base nas rodas, nesse ponto necessito que expliquem como seria, pois não entendo.

Acredito que assim não precisaria, guardar os dados para a segunda volta, pois automaticamente ele estaria acelerando e desacelerando no próprio percurso, mas caso precise guardar, teríamos que guardar as posições de X e Y em um Array, e numa próxima rodada, resetar as posições iniciais para 0,0 no inicio e seguir:

Y Aumenta, X =  anterior ( Acelera)
Y Aumenta, X Aumenta ( Diminui Aceleração, Inclinação a Direita)
Y Aumenta, X Diminui (Diminui Aceleração, Inclinação a Esquerda)
Y Diminui ( Diminui Aceleração, retrocede).

O Acionamento dos Motores será automático com a aceleração, mas acredito que um botão que ative a energia seria o primeiro passo, para considerar que a corrida já começou.
Poderia também ter um segundo botão para ativar a segunda volta, que assim poderia pegar as coordenadas guardadas de x e y para o novo percurso.

Estes 2 links são interessantes:
O primeiro demonstra como funciona o sensor de luminosidade e como o software interpreta os sinais: 
http://engcomper.blogspot.com.br/2011/08/tutorial-sensor-de-luminosidade-com.html

Já o segundo é um trabalho pronto sobre um robô seguidor de percurso mas com uma teoria diferente:
http://vivaolinux.com.br/artigo/Robotica-com-Android-e-Arduino/?pagina=1



quarta-feira, 1 de outubro de 2014

Temas a serem discutidos.

1- Sensor Infravermelho: 
  • -Função: detectar as limitações do percurso a ser seguido.
  • -Pontos a serem explorados: 
    • Qual a melhor disposição dos sensores; 
    • Qual o tipo de sensor existente no mercado; 
    • Como fazer a leitura pela Arduino;
    • Como detectar a diferença de cores.

2 - Estrutura do protótipo:
  • - Função: percorrer  o percurso de forma ágil e segura, ou seja, deve-se manter sempre dentro da pista e da forma mais rápida possível.
  • - Pontos a serem explorados: 
    • Quantos motores usar; 
    • Estrutura mais baixa ou mais alta;
    • Quantas rodas usar(exemplo: duas rodas e um apoio);
    • Vantagens e desvantagens.

3 - Driver do motor:
  • - Função: separar o acionamento dos motores(correntes mais altas) da parte lógica do protótipo(microcontrolador-Arduino);
  • - Pontos a serem explorados: 
    • Qual a corrente suportada pelo driver(ponte h);
    • Quantos pinos do necessita para o controle dos motores; 
    • Qual a tensão suportada.

4 - Sensor de percurso:
  • - Função: guardar o primeiro caminho percorrido pelo robô para posterior acesso nas voltas seguintes.
  • - Pontos a serem explorados: 
    • Qual o tipo de dado(exemplo: mouse coordenada xy); 
    • Como armazenar os dados.

5 - Microcontrolador:
  • - Função: executar a parte lógica do dispositivo.
  • - Pontos a serem explorados; 
    • Qual a capacidade de memória necessária;
    • Quantos pinos para controle dos motores e leitura de sensores precisaremos.

6 - Lógica de Programação:
  • - Função: controlar o protótipo afim de atender os objetivos da competição.
  • - Pontos a serem explorados; 
    • Como será lido os sensores;
    • Como será o laço de repetição;
    • Como será a tomada de decisão;
    • Como será o acionamento dos motores.