quinta-feira, 15 de novembro de 2012

Desenvolvimento de sensor IR de baixo custo para linha e distância

31/03/2013
Esquemas para pesquisa LM567
http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS006975.PDF
Esquema elétrico

02/2013
Trabalhamos na montagem do primeiro TCRT5000 conforme este post e o resultado ainda foi 2 cm para detecção de linha branca, conforme este post do nosso blog: http://www.cienciaemconsciencia.blogspot.com.br/2013/02/primeiro-tcrt-5000-sensor-de-linha.html

Abaixo o esquema da placa de sensor com amplificador ótico e controle de frequência:

Link para impressão da placa para elaboração por método térmico:
https://skydrive.live.com/redir?resid=AC8ECA0DCFBBC517!406&authkey=!APqRJ5PlkRPeHR4

19/12/2012
Testes com TCRT 5000 e TITAN usando dois emissores de IR e bc558 como amplificador
Estes testes comprovaram que, em ambos os sensores, o resultado de distância melhora quando usamos 2 emissores de IR . Isso ocorre pela maior difusão dos raios IR causado pela maior número de emissores. Para tanto, controles remotos usam lentes  (lentes de Fresnel) que aumentam a difusão dos raios. Como não temos estas lentes usaremos vários emissores (4 por sensor) para melhorar a eficiência e sensibilidade. Neste caso é melhor cada emissor com um resistor, ou seja, o sistema em paralelo, o que acarretará um aumento no consumo de bateria.
Vídeos dos testes:


17/12/2012
Testes TCRT 5000 com ne555 no emissor e bc548 no receptor
Resultado: não houve melhora, continua com 2,5 cm

Teste TITAN com Arduino, gerando pulsos por PWM com frequência de 490Hz e BC558 utilizado para amplificar o sinal
Resultado: 40 cm
Programa utilizado

void setup(){
  pinMode (6, OUTPUT);
  pinMode (0, INPUT);
  Serial.begin (9600);
}
void loop(){
  float teste;
  analogWrite (6, 60);
  teste= analogRead (0);
  Serial.print ("Valor lido = ");
  Serial.println (teste);
delay (300);
}

Vídeo do trabalho


Arquivo com os dados para gráficos dos sensores
https://skydrive.live.com/redir?resid=AC8ECA0DCFBBC517!352&authkey=!APn8ig4O0cELZC4

12/12/2012
Hoje realizamos um teste com os sensores TCRT5000 e o sensor artesanal Titan. Os seguintes testes foram realizados:
TRCT5000
BC548 - transistor com amplificação de 10 vezes
BC548 - BC548 - amplificação de 100 vezes
BC548 - TIP110 - amplificação de 5000 vezes
lm358 - amplificador ótico

Titan
BC548 - transistor com amplificação de 10 vezes
BC548 - BC548 - amplificação de 100 vezes
BC548 - TIP110 - amplificação de 5000 vezes
lm358 - amplificador ótico
ne555  frequência de 28,8 kHz (tempo de pico= 0,028ms e tempo de vale 0,007ms) no emissor e com BC548 como amplificador ótico 
ne555  frequência de 28,8 kHz e com lm358

Resultados
Tabela 1- Valores obtidos de distância de um objeto pelos sensores testados
Teste
TCRT5000 (cm)
Titan (cm)
BC548
3,5
46
BC548 com BC548
4,5
4,5
BC548  com TIP110
4,2
12
lm358
27
6

Teste
Titan (cm)
ne555 e BC548
86
ne555 e lm358
33,5

Gráficos obtidos pelos melhores resultados com luz acesa e apagada


Vídeos dos melhores resultados
Teste de configuração com TCRT5000



TCRT5000
Teste com BC548


Teste com lm358


Teste com 2 BC548
 

Teste do sensor TITAN
com ne555 no emissor e Lm358

com lm358
com ne555 e bc548
com bc548


com bc548/TIP110


Conclusão
O capacitor ligado direto ao receptor funciona transformando o sinal de nalógico para digital, possibilitando o uso do programa do QR1113.
(Elaine - escrever resultados da tabela e ouras conclusões anotadas)

Próximos testes
Ligar o ne555 ao receptor de IR para controlar a frequência de recepção do sinal emissor, evitando interferência ambiente.
Testar o ne555 e o bc 548 no TCRT5000. Primeiro só ligando o ne555 ao emissor e depois ao emissor e receptor.
Testar o ne555 ao led reciclado de aparelhos eletrodomésticos. 




28/11/2012 - Teste com 555
Hoje realizamos um teste de sensor utilizando o 555 em modo astável. Primeiro fizemos um pisca-pisca com led´s para testar a configuração do 555, usando um potenciômetro para controlar a velocidade do piscar:


Depois testamos o sensor TRCT5000 sem o 555 como forma de calibração:

O resultado, como esperado foi 2,5 cm para o sensor apresentar sensibilidade.
Testamos então, o TRCT5000 com o ne555 emitindo um frequência de 30kHz. Não temos como afirmar exatamente esta frequência pois não temos um osciloscópio mas, vamos procurar na internet como fazer. Pelos cálculos a frequência deveria ser essa. O resultado foi frustante, esperávamos uns 30 cm e o sensor continuou medindo 3 cm...


Testamos então o sensor feito para o TITAN artesanalmente e, o resultado foi acima do esperado - o sensor era capaz de identificar um objeto branco a cerca de 30 cm de distância, com boa sensibilidade e mantendo valores constantes. 
Uma hipótese que discutimos está no fato do sensor ser montado com o emissor e o receptor ligados na mesma trilha (positivo) que, com o uso do 555, achamos que pode ter sincronizado os dois na mesma frequência eliminando possíveis ruídos.
Testamos também o LM358 para amplificar o sinal mas não houve resultado, parecia que o sensor estava desligado.
Iremos repetir todos os testes na semana que vem e montaremos um sensor artesanal direto na protoboard para comparar resultados. 



17/11/2012 - Cálculo da frequência do 555

16/11/2012 - Nesta simulação usamos o 555 para modular um sinal com frequência de 30 kHz e um amplificador ótico, LM358, para amplificar o sinal, resultando num sinal amplificado de 9mA para 36 mA.
Simulado no Proteus.



15/11/2012 - Esquemas elétricos com 555 para sensor de ultrassom


Novembro 2012 - Artigo enviado para a Febrace 2013

















DESENVOLVIMENTO DE SENSORES DE INFRAVERMELHO DE LONGA DISTÂNCIA PARA ROBÔS DE SUMÔ

Versão preliminar


Instituição: Pequenos Cientistas – EE Frei Dagoberto Romag
Endereço: R. José Valter Pacheco, Jd São José, Campo Limpo Paulista/SP  Tel.: (011) 4039-3455

Autores: Elaine Nascimento Barbosa, Any Taisa Ramos de Andrade, Jhonatan Henrique dos Santos Vaz

Orientador: Alan Barbosa de Paiva

Área do projeto: ENGENHARIA - Eletrônica
Período de Desenvolvimento do Projeto: Abril 2012 a Março 2013








Assinaturas:
Número da Febrace:
Dedicatória:

Agradecimentos:



Sumário

Introdução .............................................................................................
4
Objetivo .................................................................................................
5
Justificativas...........................................................................................
5
Metodologia............................................................................................
5
Cronograma.............................................................................................
6
Resultados Preliminares..........................................................................
7
Bibliografia .............................................................................................
9

























































DESENVOLVIMENTO DE SENSORES DE INFRAVERMELHO DE LONGA DISTÂNCIA PARA ROBÔS DE SUMÔ
Versão preliminar

AUTORES: Elaine Nascimento Barbosa, Any Taisa Ramos de Andrade, Jhonatan Henrique dos Santos Vaz
ÁREA: Engenharia - eletrônica
ORIENTADOR: Alan Barbosa de Paiva
INSTITUIÇÃO: PEQUENOS CIENTISTAS – EE FREI DAGOBERTO ROMAG

INTRODUÇÃO
Sensores são elementos ativos ou passivos que servem para fornecer informações sobre o ambiente ou sobre grandezas físicas. Segundo Franchin (2012) “ o desenvolvimento de sensores é o aumento da habilidade do robô obter informações sobre o ambiente em que se encontra, bem como, de suas próprias características...”
Segundo Patsko (2006) “Literalmente, podemos definir a palavra sensor como ‘aquilo que sente’. Na eletrônica, um sensor é conhecido como qualquer componente ou circuito eletrônico que permite a análise de uma determinada condição do ambiente, podendo ser ela algo simples como temperatura ou luminosidade, ou uma medida um pouco mais complexa como a rotação de um motor ou a distância de um carro até algum obstáculo próximo, ou até mesmo eventos distantes como a detecção de partículas subatômicas ou radiações cósmicas”.
Existem diversos tipos de sensores e, cada um, para uma determinada função no ambiente. Um deles, é o sensor infravermelho que, segundo Medeiros (2005) “... é um tipo de radiação eletromagnética não ionizante. Ao interagir com a matéria, a radiação infravermelha não provoca a formação de íons, ou seja, não remove elétrons da matéria, mas provoca vibrações de algumas moléculas. O resultado da interação é o aumento da temperatura do sistema”.
Há várias aplicações dos sensores de infravermelho no dia-a-dia, como por exemplo, leitores de código de barras, indicadores de fim de curso em linhas de montagem, sensores de presença, sensores de passagem, sensores de distância e até mesmo no controle remoto da T.V. Robôs são  um dos tipos de teste de aplicação das múltiplas funções destes sensores fazendo a leitura de distâncias, objetos, linhas e de outros fatores ambientais guiando-o e fornecendo dados para tomada de decisões e tem aplicações diversas como em áreas industriais como a automobilística, no desarmamento de bombas, no transporte de materiais, em operações militares, no serviço doméstico, na educação, na medicina, em desenvolvimento de próteses e na exploração espacial (ASSIS e COELHO, 2008). Estes sensores são feitos de um material piroelétrico natural ou artificial que produz tensão quando é aquecido. A maioria dos sensores infravermelho são revestidos com espelhos parabólicos ou lentes Fresnel afim de recuperar as ondas infravermelhas de uma sala inteira (SPENCER, 2012).
As vantagens destes sensores em relação a outros são seu custo, sua diversidade de aplicação (o mesmo sensor pode ser usada para diversas aplicações), sua velocidade de resposta e facilidade de desenvolvimento, além da sua imunidade a interferência, apesar da influência da iluminação natural e artificial do ambiente (1BRAGA, 2011). Além disso, tem dificuldade em distinguir entre objetos que irradiam semelhantes níveis de energia térmica (SPENCER, 2012).

OBJETIVOS
Projetar e construir um sensor de infravermelho, utilizando componentes de baixo custo, capaz de detectar distâncias superiores a 30 centímetros, que seja capaz de ler linhas brancas ou pretas sofrendo o mínimo de interferência da luz ambiente. Estes sensores serão aplicados em robôs, que utilizam o Arduino, onde seus pulsos elétricos e dados coletados do ambiente serão essenciais para seu funcionamento.

JUSTIFICATIVAS
Uma das grandes motivações de desenvolver um sensor de infravermelho de longa distância para robôs de competição (combate e resgate) é a falta de referências disponíveis sobre o tema. Quando se pesquisa no Google sobre o tema, aparecerem sensores de poucos centímetros, o sensor comercial da SHARP ou sensores de ultrassom.
Além disso, sensores de infravermelho têm uma velocidade de resposta maior quando comparada a sensores de ultrassom, pois usam a luz infravermelha que viaja a uma velocidade maior que o som no ambiente.
Outra vantagem de sensores de infravermelho em relação a ultrassom é a aplicação destes sensores que são capazes de detectar objetos, medir distância e seguir linhas de qualquer cor, enquanto sensores de ultrassom, medem distâncias e detectam objetos.
Por último, devido à facilidade de obtenção de componentes e montagem, sensores de infravermelho são mais baratos para construir que outros tipos, além de poderem ser construídos com materiais facilmente obtidos em lixo eletrônico.

METODOLOGIA
Alguns parâmetros são essenciais para avaliar sensores, dentre os quais, serão avaliados 4 deles:
- Linearidade – capacidade do sensor manter o resultado dentro de uma faixa constante de valores.
- Sensibilidade: capacidade do sensor identificar uma linha branca em fundo preto e uma linha preta em fundo branco, claramente (valores opostos), sem sofrer influência do ambiente. Verificar a possibilidade do sensor identificar a cerca de 15 centímetros de distância cores diferentes.
Estes parâmetros serão medidos através do Serial Monitor do Arduino, utilizando a porta analógica ou digital e o programa SIMPLOT (CAVALCANTE e DAMASCENO, 2012).
- Velocidade de resposta: tempo médio de resposta do sensor a mudança do ambiente – branco e preto. Este parâmetro será medido no teste de aplicação em um chassi.
- Maior distância atingida pelo sensor. Será medido nos testes em suporte de protoboard.
O projeto está dividido em 2 fases distintas:
1ª Fase – teste de sensor em protoboard – todos os sensores serão montados em protoboard´s e analisados através do Serial Monitor do Arduino, por 30 segundos, utilizando o sketch para leitura de sensores de LDR e informações do datasheet do sensor infravermelho QR1113 (CAVALCANTE e DAMASCENO, 2012). A protoboard será colocada na base de um suporte universal com uma presilha, tendo uma régua de medida (plástica comum) ao fundo para determinar a distância de leitura. Todos os testes serão repetidos 5 vezes em 3 dias diferentes.
2ª Fase – o melhor sensor da fase 1 será montado em placa de circuito impresso e, as placas, instaladas em um chassi de combate que irá competir numa arena, contra um robô da mesma categoria utilizando sensores de ultrassom. Será feito uma disputa simular ao Torneio Juvenil de Robótica da USP em melhor de 3 rounds, repetidos 3 vezes.
O registro do projeto será feito através do blog www.cienciaemconsciencia.blogspot.com e através de vídeos gravados dos testes, publicados no blog e no you tube.

CRONOGRAMA
O QUÊ
COMO
QUANDO
REVISÃO DA LITERATURA
SITES DA INTERNET
SETEMBRO 2012 A JANEIRO 2013
TESTES DE DESENVOLVIMENTO
ROTEIRO ABAIXO
OUTUBRO 2012 A FEVEREIRO 2013
TESTES DE APLICAÇÃO
DESAFIO DE ROBÔS DE SUMÔ
FEVEREIRO 2013
ANÁLISE DOS DADOS
INTERPRETAÇÃO DOS GRÁFICOS GERADOS
DEZEMBRO 2012 A FEVEREIRO 2013
CONCLUSÃO
REVISÃO DO PROJETO E ADIÇÃO DA ANÁLISE DOS DADOS
FEVEREIRO A MARÇO 2013
ESCRITA DO ARTIGO FINAL
REVISÃO DO PROJETO E ADIÇÃO DA ANÁLISE DOS DADOS E CONCLUSÃO
FEVEREIRO A MARÇO 2013

TESTE
TIPO DE COMPONENTE
PRAZO
FONTE
TIL 32 E TIL 78
RESISTOR 150 E 10KΩ
NOVEMBRO
SOCIETY OF ROBOTS
TCRT 5000
RESISTOR 150 E 10KΩ
NOVEMBRO
DATASHEET
SENSOR RECICLADO
RESISTOR 150 E 10KΩ
NOVEMBRO
LUSOROBOTICA
QR1113
-
NOVEMBRO
DATASHEET
MELHOR SENSOR
CAPACITOR DE 100nF
DEZEMBRO
SENSOR QR1113
BC548/TIP120
DEZEMBRO
NEWTON C. BRAGA2
NE555 E LM358
FEVEREIRO
NEWTON C. BRAGA2
APÓS OS TESTES O MELHOR SENSOR PASSA PARA A SEGUNDA FASE
MELHOR SENSOR
MELHOR AMPLIFICADOR
FEVEREIRO



Resultados preliminares
Este projeto está sendo desenvolvido em conjunto com a equipe Pequenos Cientistas da EE Elza Facca Martins Bonilha, de Campo Limpo Paulista, projeto “Desenvolvimento de sistemas de tração para chassis robóticos de competição de baixo custo utilizando Arduino e reciclagem”, robô chamado Hermes e o chassi Titan.


Esquema elétrico do sensor robô Titan/Orion

 
Robô Titan e Orion

Uma solução foi encontrada parcialmente na internet, no site Luso Robótica, que propunha sensores usando emissores e receptores vindos da controle remoto e aparelhos eletrodomésticos (http://lusorobotica.com/ index.php/topic,527 .0.html). Testamos o sensor mas este não atingiu uma distância interessante (conseguia apenas 5 cm de sensibilidade), com a desvantagem do extremo aquecimento da placa e, num dos testes, o curto circuito dos emissores. A opção então, foi construir sensores mais baratos com led´s de 5mm e resistores de 1/4W e, obter emissores dos controle remotos. Fizemos testes com resistores de vários valores (330, 220 e 100 ohm e um sensor com maior espaçamento entre o emissor e receptor) e, o melhor resultado foi o sensor com 100 ohm (14 cm).

Esquema elétrico para construção de um sensor reciclado (PARALLAX, 2010).


Medida de altura de reflexão dos sensores



Testamos os sensores utilizando o multímetro, celulares para verificar a emissão de infravermelho e o Arduino para calibrar a leitura, usando uma atividade da apostila do EDUCASAEN,que fazia a leitura de um LDR (CAVALCANTE e DAMASCENO, 2012). O resultado indicou que o melhor sensor usa um resistor de 100 ohm no emissor e um 10k ohm no receptor. Um teste indicou também que o LM358 poderia funcionar bem para amplificar o sinal mas não deu tempo de fazer a placa. Uma outra opção comercial é o sensor TRCT5000, que usa um resistor de 150ohm no emissor e um resistor de 10kohm no fototransistor.
Sensor de IR Artesanal e Sensor TRCT 5000
Dados preliminares comprovam que, o sensor artesanal do TITAN quando comparado ao sensor TRCT5000, apresenta detecção de objetos a uma maior distância e, o TRCT5000, apresenta resultados melhores em relação a linearidade e influência em relação a ruídos externos – interferência da luz ambiente, conforme os gráficos gerados abaixo.
Comparação da altura dos sensores TRCT5000 e Titan
Teste de comparação sensor artesanal – TITAN e TRCT5000.
  
BIBLIOGRAFIA
SOCIETY OF ROBOTS. Schematics – infrared emitter detector; [S.I.]: Society of Robots, disponível em: http://www.societyofrobots.com/sensors.shtml, acesso em: 10/04/2012.

CAVALCANTE, M e DAMASCENO, E. S. Oficina Arduino: EDUCASAEN; [S.I.]: Educasaen, disponível em: http://www.educasaen.blogspot.com, acesso em: 06/07/2012.

ALLDATASHEETS, TRCT5000, [S.I.]: Datasheet catalog, disponível em: http://search.datasheetcatalog.net/key/qr1113, acesso em : 08/10/2012.

ALLDATASHEETS, TIL 78, [S.I.]: Datasheet catalog, disponível em: http://search.datasheetcatalog.net/key/TIL78, acesso em : 08/10/2012.

ALLDATASHEETS, TIL 32, [S.I.]: Datasheet catalog, disponível em: http://search.datasheetcatalog.net/key/TIL32, acesso em : 08/10/2012.

LUSOROBOTICA, Tutorial: Sensor IR que custa 0€, [S.I.]: Luso Robótica, disponível em: http://lusorobotica.com/index.php/topic,837.0.html, acesso em : 08/09/2012.

1BRAGA, N. C. Sensoriamento Infravermelho (ART639), [S.I.]: newtoncbraga, disponível em: http://www.newtoncbraga.com.br/index.php/artigos/49-curiosidades/4577-art639.html, acesso em : 25/10/2012.

2BRAGA, N. C. Seleção de circuitos com sensores (ART761), [S.I.]: newtoncbraga, disponível em: http://www.newtoncbraga.com.br/index.php/ artigos/54-dicas /5781-art748.html, acesso em : 25/10/2012.

PARALLAX. Robotics with boe – bot: a student guide; Version 2.2, [S.I.]: Parallax, disponível on-line em: http://parallax.com/Portals/0/Downloads/ docs/books/edu/Roboticsv2_2.pdf, acesso em: 25/08/2012.

SPENCER, W. Infrared-sensors; [S.I.]: tech faq, disponível on-line em: http://www.tech-faq.com/infrared-sensors.html acesso em: 15/10/2012.
ASSIS, W de O e COELHO, A. D. Automação industrial e robótica; Revista Mecatrônica Fácil, nº 45, ano 6, 2008.

MEDEIROS, M. A. Ferro de passar roupas a controle remoto: a presença do infravermelho no dia-a-dia; [S.I.]: quiprocura; disponível em: http://www.quiprocura.net/infraferro/index.html, acesso em 08/10/2012.

FRANCHIN, M. N. Cap. 9: Sensores, [S.I.]: Unesp, disponível on-line em: http://www.dee.feb.unesp.br/~marcelo/robotica/Robot9.htm, acesso em 08/10/2012.

PATSKO, L. F. Tutorial de eletrônica: aplicação e funcionamento de sensores; [S.I.]: Maxwell Bohr, 2006, disponível on-line em: http://www.maxwellbohr.com.br/downloads/robotica/mec1000_kdr5000/tutorial_eletronica_-_aplicacoes_e_ funcionamento_de_sensores.pdf, acesso em 08/10/2012.


31/10/2012
Teste comprativo de sensores infravermelho - TRCT5000 e sensor TITAN











Esquemas elétricos

fotos





























Vídeos

Análise dos dados
30/09/2012
Adquirimos um sensor modelo QR1113 com as seguintes características


Tensão de alimentação: 5v
Corrente do emissor: 1A
Corrente do receptor: 20mA
A grande diferença do sensor analógico pra o digital é a presença de um capacitor que atua como condensador.


Como programação de calibração sugere-se pelo mesmo site o seguinte sketch:

int SensorPin=2;
int Sensorval=LOW;
void setup()
{

pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop()
{

pinMode(2,OUTPUT);       // Primeiro é necessário configurar o pino do Arduino (digital 2) que conecta o Vout do
digitalWrite(2,HIGH);        //breakout como saída para descarregar o capacitor, colocando o pino digital 2 do Arduino
delayMicroseconds(10);    // em alto (HIGH) e depois uma espera de 10 microssegundos
pinMode(2,INPUT);          // E por fim configura o pino do Arduino (digital 2) como entrada
long time = micros();
// Enquanto o tempo for menor que 3000 microssegundos e o pino do sensor for alto (HIGH), então o valor do sensor
// será a diferença entre o tempo atual e o tempo anterior.
while (digitalRead(SensorPin) == HIGH && micros() - time < 3000);
int diff = micros() - time;
Sensorval=diff;
if(Serial.available()>0);
{
Serial.println(Sensorval);
}
delay(500);
}


25/08/2012

Estávamos trabalhando num sensor IR usando partes de controle remoto (led emissores) e recpetores que existem em aparelhos com controle remoto. O sensor que fizemos, além de aquecer o resistor, mantinha pequenas distâncias (5cm). Bom, pesquisando no site do Arduíno (www.arduino.cc) encontrei o que pode ser a solução para o problema - na base do TSOP ligamos um resistor de 10Kohm, como os receptores normais mas, segundo a apostila da parallax (Apostila parallaxde onde eu tirei o esquema abaixo apareceu a solução - ligar um resistor de 220 ohm na base. Com isso a estimativa é um sensor de 30 cm. Se der certo conseguiremos 4 sensores de distância IR com boa resolução.


Sugiro o uso de resistores de 100 a 200 ohm no emissor para uma melhor distância.
05/08/2012
Análise de programação do projeto de robô de sumô para o Torneio Juvenil de Robótica 2012:
M1 motor direito: 8–FRENTE, 9–RÉ
M2 motor esquerdo: 10-FRENTE, 11–RÉ
S1 – sensor de linha dianteiro
S2 -  sensor de linha traseiro
S3 – sensor de objeto dianteiro
S4 – sensor de objeto traseiro
S5 – sensor de objeto direito
S6 – sensor de objeto esquerdo
---------------------------------------------------
S1 - ↓ - 9, 11
S2 - ↑ - 8, 10
S3 - ↑ - 8, 10
S4 - ↓ - 9, 11 
S5 - ←90° ↑ - 9, 10 DELAY 8,10
S6 - →90º ↑ - 8, 11 DELAY 8,10
S1 + S3 - ↑ - 8, 10
S1 + S4 - ↓ - 9, 11
S2 + S3 - →90°↑→90°↑ - 8, 11 DELAY 8,10 - 8, 11 DELAY 8,10

Programa elaborado na IDE do Arduíno:
/* Projeto desenvolvido para robô de sumô no Torneio Juvenil de robótica 2012 pela equipe Pequenos Cientistas*/
// —————————————————————————  Pinos dos Motores
int direito_frente = 7;
int direito_re = 8;
int esquerdo_frente = 9;
int esquerdo_re = 10;
//--------------------------------------------- giro de 90°
int giro = 200;
//--------------------------------------------- Pinos sensores
int IR1 = 0;
int IR2 = 1;
int IR3 = 2;
int IR4 = 3;
int IR5 = 4;
int IR6 = 5;
//--------------------------------------------Variaveis de leitura dos sensores
int maximo = 3; // tensão de detecção do sensor IR
int VR1;
int VR2;
int VR3;
int VR4;
int VR5;
int VR6;
// ————————————————————————— Setup
void setup() {
// Seleciona motores
pinMode(direito_frente, OUTPUT);
pinMode(direito_re, OUTPUT);
pinMode(esquerdo_frente, OUTPUT);
pinMode(direito_re, OUTPUT);
//Ativa sensores
pinMode(IR1, INPUT);
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);
pinMode(IR4, INPUT);
pinMode(IR5, INPUT);
}

// ————————————————————————— Loop
void loop() {
  //faz a leitiura dos sensores e converte o valor lido (de 0 a 1024) em valores de tensão 
VR1 = analogRead(IR1) * 0.0049;//sensor de linha dianteiro
VR2 = analogRead(IR2) * 0.0049;//sensor de linha traseiro
VR3 = analogRead(IR3) * 0.0049;//sensor de objeto dianteiro
VR4 = analogRead(IR4) * 0.0049;//sensor de objeto traseiro
VR5 = analogRead(IR5) * 0.0049;//sensor de objeto direito
VR6 = analogRead(IR6) * 0.0049;//sensor de objeto esquerdo

//leitura de sensores e comparação com limite de leitura (variável máximo), com resposta
//S1 - ↓ - 9, 11
if (VR1 < maximo) {
digitalWrite (direito_frente,  LOW);
digitalWrite (direito_re, HIGH);
digitalWrite (esquerdo_frente, LOW);
digitalWrite (esquerdo_re, HIGH);
}
//S2 - ↑ - 8, 10
if (VR2 < maximo){
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
}
//S3 - ↑ - 8, 10
if (VR3 < maximo){
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
}
//S4 - ↓ - 9, 11 
if (VR4 < maximo){
digitalWrite (direito_frente,  LOW);
digitalWrite (direito_re, HIGH);
digitalWrite (esquerdo_frente, LOW);
digitalWrite (esquerdo_re, HIGH);
}
//S5 - ←90° ↑ - 9, 10 DELAY 8,10
if (VR5 < maximo){
digitalWrite (direito_frente, LOW);
digitalWrite (direito_re, HIGH);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
delay(giro);
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
}
//S6 - →90º ↑ - 8, 11 DELAY 8,10
if (VR6 < maximo){
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, LOW);
digitalWrite (esquerdo_re, HIGH);
delay(giro);
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
}
//S1 + S3 - ↑ - 8, 10
if (VR1 < maximo && VR3 < maximo){
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
}
//S1 + S4 - ↓ - 9, 11
if (VR1 < maximo && VR4 < maximo){
digitalWrite (direito_frente,  LOW);
digitalWrite (direito_re, HIGH);
digitalWrite (esquerdo_frente, LOW);
digitalWrite (esquerdo_re, HIGH);
}
//S2 + S3 - →90°↑→90°↑ - 8, 11 DELAY 8,10 delay 8, 11 DELAY 8,10
if (VR2 < maximo && VR3 < maximo){
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, LOW);
digitalWrite (esquerdo_re, HIGH);
delay(giro);
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
delay(giro);
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, LOW);
digitalWrite (esquerdo_re, HIGH);
delay(giro);
digitalWrite (direito_frente, HIGH);
digitalWrite (direito_re, LOW);
digitalWrite (esquerdo_frente, HIGH);
digitalWrite (esquerdo_re, LOW);
}
}
/*FIM*/

Bom, salvo os problemas (o simulino não consegue ligar as 4 saídas digitais ao mesmo tempo e, as saídas analógicas não funcionam corretamente - a 4 e 5 não ativam e eu não sei porquê) o simulino pode demonstrar este programa funcionando, conforme vídeo abaixo:

01/08/2012
Sensores infravermelho sofrem influência da luz ambiente. Uma das idéias para solucionar o problema e tornar o sensor mais eficiente, principalmente para medir distâncias é o uso de receptores do tipo TSOP, iguais a estes:

Vale a pena dar uma olhada neste artigo:
Em breve mais detalhes do circuito.

20/07/2012

O projeto de robôs de sumo envolve o uso de sensores de linha, que normalmente são Infravermelhos (IR) e, sensores de distância, para identificar objetos. Os sensores de distância podem ser ultrassônicos (utilizam sons com frequências acima da audição humana) ou sensores de infravermelho. A escolha de infravermelho se deve ao custo deste em relação aos sensores de som - R$60,00 os de ultrassom, R$12,00 os IR e para fazer o sensor IR, cerca de R$5,00. A questão de fazer os sensores IR envolve a compra (TIL32 e TIL78 sofrem interferência da luza ambiente) e a montagem - o fototransistor é invertido, coisa que descobrimos do pior jeito (errando que se aprende).


 É importante destacar que o ideal é testar os sensores antes de utilizar. A estática da mão pode queimar o fototransistor e a temperatura do ferro de solda pode fazer o mesmo. O sistema proposto abaixo economiza, e muito, energia durante os combates. Não pode ser usado para medir distâncias, apesar das informações deste esquema no Multisim ter indicado que o LED IR "pisca" com uma frequencia de 24Khz. Sem um osciloscópio não arriscaria usar esse valor como referência. Se bem isolado, consegue até 10 cm de sensibilidade. 

O código abaixo pode ser utilizado para calcular a distância, mas o objetivo inicial deste código é apenas testar os 6 sensores.
/* Programa para leitura de 6 sensores IR - Projeto Robô Lutador de Sumô Equipe Pequenos Cientistas 2012
*/
int IR1=0;
int IR2=1;
int IR3=2;
int IR4=3;
int IR5=4;
int IR6=5;

int L1 = 5;
int L2 = 6;
int L3 = 7;
int L4 = 8;
int L5 = 9;
int L6 = 10;


int maximo = 400;
int VR1;
int VR2;
int VR3;
int VR4;
int VR5;
int VR6;

void setup() {
// configura o pino como saida
pinMode(L1, OUTPUT);
pinMode(L2, OUTPUT);
pinMode(L3, OUTPUT);
pinMode(L4, OUTPUT);
pinMode(L5, OUTPUT);
pinMode(L6, OUTPUT);

// configura o pino como entrada
pinMode(IR1, INPUT);
pinMode(IR1, INPUT);
pinMode(IR2, INPUT);
pinMode(IR3, INPUT);
pinMode(IR4, INPUT);
pinMode(IR5, INPUT);

Serial.begin (9600);
}
void loop(){
  
  // le o estado do botao
VR1 = analogRead(IR1);
VR2 = analogRead(IR2);
VR3 = analogRead(IR3);
VR4 = analogRead(IR4);
VR5 = analogRead(IR5);
VR6 = analogRead(IR6);

// verifica se o sensor está ativo
if (VR1 >= maximo) {
// se sim, acende o LED
digitalWrite(L1, HIGH);
}
if (VR2 >= maximo){
// caso contrario, apaga o LED
digitalWrite(L2, LOW);
}
if (VR3 >= maximo) {
// se sim, acende o LED
digitalWrite(L3, HIGH);
}
if (VR4 >= maximo) {
// se sim, acende o LED
digitalWrite(L4, HIGH);
}
if (VR5 >= maximo) {
// se sim, acende o LED
digitalWrite(L5, HIGH);
}
if (VR6 >= maximo) {
// se sim, acende o LED
digitalWrite(L6, HIGH);

}
}


Aliás, é possível utilizar este código para controlar o robô bastando substituir os leds com seus resistores por pontes H. Caso se interesse verifique nosso post anterior.


Abaixo uma sugestão de como montar uma placa com sensores IR para um robô de sumô 20x20 cm.








4 comentários:

  1. Na Tabela 1, os resultados levam em conta sensores unitários, sem emissores extras?

    ResponderExcluir
  2. correto...com emissores extras chegamos a distâncias proximas a 80 cm... Usamos mais 2 emissores com frequencia de 30kHz

    ResponderExcluir
  3. Boa noite tem como postar a esquema das ligações do modelo com o NE555 e BC548 do Sensor de IR. Preciso montar um igual para uma feira de Ciências. Obrigado.

    ResponderExcluir
  4. Se possível mandar para meu e-mail => aracajunetlink@hotmail.com

    ResponderExcluir