Escolar Documentos
Profissional Documentos
Cultura Documentos
CURITIBA
Dezembro de 2011
Documento
referente
ao
projeto
CURITIBA
Dezembro de 2011
SUMRIO
LISTA DE FIGURAS.............................................................................................. iv
LISTA DE TABELAS.............................................................................................. v
1.
RESUMO....................................................................................................... 6
2.
INTRODUO.............................................................................................. 6
3.
DETALHAMENTO DO PROJETO................................................................ 9
3.1
Mdulo Transmissor........................................................................ 9
Fluxograma.................................................................. 11
Mdulo Receptor............................................................................ 12
A velocidade conhecida............................................ 13
3.1.1.2
determinada................................................................................................ 13
4.
3.1.1.3
3.1.1.4
Fluxograma.................................................................. 17
Transdutores........................................................................ 18
4.2
Mdulo Transmissor............................................................ 19
4.3
Mdulo Receptor.................................................................. 20
4.3
5.
CONCLUSO............................................................................................. 23
6.
REFERENCIAS BIBLIOGRFICAS........................................................... 25
7.
ANEXOS..................................................................................................... 26
7.1
7.2
LISTA DE FIGURAS
Figura 1 Esquema de funcionamento do GPS. Triangulao de sinais de
satlites.................................................................................................................... 6
Figura 2 Equipamentos de viso artificial. Cmeras, controladores e
processadores......................................................................................................... 7
Figura 3 Diagrama do projeto. Disposio dos transmissores e do receptor....... 8
Figura 4 Arduino Duemilanove............................................................................. 9
Figura 5 Circuito do mdulo transmissor............................................................ 10
Figura 6 Fluxograma do cdigo do mdulo transmissor..................................... 11
Figura 7 Circuito do mdulo receptor.................................................................. 12
Figura 8 Sistema de coordenadas (x,y,z)........................................................... 14
Figura 9 Diagrama que apresenta variao de x e y no clculo dos
pontos.................................................................................................................... 15
Figura 10 Diagrama de tempos com respectivas notaes................................ 16
Figura 11 Fluxograma do cdigo do mdulo receptor................................. 17
Figura 12 Sinal de um transmissor ultrassom..................................................... 18
Figura 13 Teste de distncia: transmissores a 45, 90 e 120 cm.........................19
Figura 14 Teste de distncia: transmissores a 150, 180 e 200 cm.................... 19
Figura 15 Teste de sincronizao. Transmissores alinhados............................. 20
Figura 16 Sinal de um transmissor e sua respectiva representao no mdulo
receptor.................................................................................................................. 21
Figura 17 Resposta ao Arduino ao clculo terico............................................. 22
LISTA DE TABELAS
Tabela 1 Resposta do algoritmo aos valores tericos........................................ 22
1.
RESUMO
A fim de atender a demanda de sistemas de orientao em espaos
2.
INTRODUO
Nos ltimos anos, inmeros projetos de automao domstica tem sido
Por isso, este projeto prope a utilizao de sinais de ultrassom com carter
peridico a fim de o mdulo receptor posicionar-se no espao em que est
alocado.
Utilizando trs transmissores dispostos em um ambiente, cujo sincronismo
de transmisso controlado por um microcontrolador Arduino, e um receptor que,
ao captar os sinais transmite-os para outro Arduino que, conhecendo o perodo
entre cada transmisso e a velocidade de propagao da onda sonora consegue
desenvolver um clculo capaz de aproximar teoricamente o valor obtido.
O projeto apresenta uma soluo de custo inferior, porm preciso superior
ao GPS em espaos reduzidos.
Receptor
T
Figura 3 Diagrama do projeto. Disposio dos transmissores e do receptor
3.
DETALHAMENTO DO PROJETO
3.1
Mdulo Transmissor
3.1.1.1
Fluxograma
Inicio
Configura portas
Ativa
TRANSMISSOR1
Aguarda 5
microssegundos
Aguarda 1
segundo
Desativa
TRANSMISSOR1
Ativa
TRANSMISSOR2
Aguarda 5
microssegundos
Desativa
TRANSMISSOR2
Aguarda 1
segundo
Ativa
TRANSMISSOR3
Aguarda 5
microssegundos
Desativa
TRANSMISSOR2
Aguarda 5
segundos
3.2
Mdulo Receptor
3.1.1.1
A velocidade conhecida
3.1.1.2
determinada
(1)
(0,0,z)
(x,0,0)
(0,0,0)
(0,y,0)
P=(x,y,z)
3.1.1.3
Atravs da equao t = l .
c
Onde:
l = Distncia entre o receptor e o transmissor;
t = Variao de tempo entre a transmisso e a chegada
c = Velocidade de propagao da onda longitudinal.
Ora,
plano
R (espao
(x-,y+)
(x+,y+)
(x,y)
(x-,y)
(x+,y)
(x-,y-)
(x+,y-)
(x,y-)
(2)
(3)
Tal que:
tempoParametro = tempo usado como parmetro une tempo
terico e tempo real;
tempoCalculado2 = tempo de propagao do sinal a partir de um
transmissor, segunda chegada;
deltaReal = intervalo de tempo entre recepes de dois sinais obtidos
atravs do receptor;
Tempo de propagao
Intervalo entre recepes
1 segundo = perodo
Tempo de propagao
(1)
nas
funes
(2)
(3)
so
mostrados
como
3.1.1.4
Fluxograma
Inicio
Configura
display
Configura portas
Armazena
tempo
Aguarda
recepo
Recepo Ok?
Aguarda
recepo
Recepo Ok?
Armazena
tempo
Armazena
tempo
Recepo Ok?
Aguarda
recepo
Calcula posio
N
Apresenta
resultado
Figura 11 Fluxograma do cdigo do mdulo receptor
4.
Transdutores
Para efeitos de teste, conectou-se os transdutores (transmissor e
4.2
Mdulo Transmissor
Cabe ao mdulo transmissor enviar os sinais de maneira
4.3
Mdulo Receptor
Conforme pode-se concluir das imagens acima, o receptor consegue
4.3
CALCULADO
Y
0,01
0,15
0,25
0,70
0,90
0,43
0,88
0,99
X
0,24
0,24
0,24
0,25
0,40
0,68
0,77
1,00
Y
0,24
0,24
0,24
0,75
0,60
0,32
0,77
1,00
ERRO
TEMPO DE RESPOSTA
0,06
0,03
0,00
0,02
0,19
0,00
0,03
0,01
0,04
0,169
0,172
0,17
0,161
0,081
0,123
0,171
0,292
0,167
5.
CONCLUSO
Em primeiro lugar, importante ressaltar os grandes avanos obtidos aps
6.
REFERNCIAS BIBLIOGRFICAS
7.
ANEXOS
7.1
int TRANSMISSOR1=13;
int TRANSMISSOR2=12;
int TRANSMISSOR3=11;
void setup(){
pinMode(TRANSMISSOR1, OUTPUT);
pinMode(TRANSMISSOR2, OUTPUT);
pinMode(TRANSMISSOR3, OUTPUT);
}
void loop(){
digitalWrite(TRANSMISSOR1, HIGH);
// sets the LED on
delay(100);
digitalWrite(TRANSMISSOR1, LOW);
// sets the LED off
delay(1000);
// waits for a second
digitalWrite(TRANSMISSOR2, HIGH);
// sets the LED on
delay(100);
digitalWrite(TRANSMISSOR2, LOW);
// sets the LED off
delay(1000);
// waits for a second
digitalWrite(TRANSMISSOR3, HIGH);
delay(100);
digitalWrite(TRANSMISSOR3, LOW);
delay(5000);
7.2
#include <Time.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
//posicao inicial
float bx=0.5, by=0.5;
//velocidade de propagao do sinal em microssegundos
//Com a temperatura mdia de Curitiba no vero
double v=343.7020667;
//variao de valor aceitvel de posico
float delta=0.01;
//variao aceitvel de tempo
float deltaT=0.001;
//Variaveis para calculo de variao do tempo
double x=0,y=0;
//Vetor de variao de tempo
double menor[9];
//Menor valor do vetor
double m;
//Indice do vetor cujo menor valor est alocado
int n;
double T1, T2;
float parametro=0;
void setup(){
lcd.begin(16, 2);
Serial.begin(9600);
pinMode(7, INPUT);
}
void loop(){
PEGAPOSICAO:
lcd.setCursor(0, 0);
lcd.print("
lcd.setCursor(0, 0);
lcd.print("START");
bx=0.5, by=0.5;
x=0,y=0;
double temp, first;
");
double tempos[3];
PRIMEIRA_RECEPCAO:
if(!digitalRead(7))
goto PRIMEIRA_RECEPCAO;
else{
tempos[0]=micros();
first=tempos[0];
}
SEGUNDA_RECEPCAO:
if(!digitalRead(7))
goto SEGUNDA_RECEPCAO;
else{
temp=micros();
if((first+1500000) < temp){
tempos[0]=temp;
first=tempos[0];
goto SEGUNDA_RECEPCAO;
}
else{
if((temp-first) > 100000){
tempos[1]=temp;
}
else
goto SEGUNDA_RECEPCAO;
}
}
TERCEIRA_RECEPCAO:
if(!digitalRead(7))
goto TERCEIRA_RECEPCAO;
else{
temp=micros();
");
lcd.setCursor(0, 0);
lcd.print("T1=");
lcd.print(T1);
lcd.setCursor(0, 1);
lcd.print("
lcd.setCursor(0, 1);
lcd.print("T2=");
lcd.print(T2);
delay(3000);
if(T1 == T2)
");
goto IMPRIMEPOSICAO;
parametro=(calculaTempo1(bx,by,v,T1)
calculaTempo2(bx,by,v,T2));
CALCULAPOSICAO:
x=calculaTempo1(bx,by+delta,v,T1);
y=calculaTempo2(bx,by+delta,v,T2);
menor[0]=(x+y);
/*lcd.setCursor(0, 0);
lcd.print("
");
lcd.setCursor(0, 0);
lcd.print("1=");
lcd.print(menor[0]);*/
x=calculaTempo1(bx-delta,by+delta,v,T1);
y=calculaTempo2(bx-delta,by+delta,v,T2);
menor[1]=(x+y);
/*lcd.setCursor(0, 1);
lcd.print("
");
lcd.setCursor(0, 1);
lcd.print("2=");
lcd.print(menor[1]);
delay(2000);*/
x=calculaTempo1(bx-delta,by,v,T1);
y=calculaTempo2(bx-delta,by,v,T2);
menor[2]=(x+y);
/*lcd.setCursor(0, 0);
lcd.print("
");
lcd.setCursor(0, 0);
lcd.print("3=");
lcd.print(menor[2]);*/
x=calculaTempo1(bx-delta,by-delta,v,T1);
y=calculaTempo2(bx-delta,by-delta,v,T2);
menor[3]=(x+y);
/*lcd.setCursor(0, 1);
lcd.print("
");
lcd.setCursor(0, 1);
lcd.print("4=");
lcd.print(menor[3]);
delay(2000);*/
x=calculaTempo1(bx,by-delta,v,T1);
y=calculaTempo2(bx,by-delta,v,T2);
menor[4]=(x+y);
/*lcd.setCursor(0, 0);
lcd.print("
");
lcd.setCursor(0, 0);
lcd.print("5=");
lcd.print(menor[4]);*/
x=calculaTempo1(bx+delta,by-delta,v,T1);
y=calculaTempo2(bx+delta,by-delta,v,T2);
menor[5]=(x+y);
/*lcd.setCursor(0, 1);
lcd.print("
");
lcd.setCursor(0, 1);
lcd.print("6=");
lcd.print(menor[5]);
delay(2000);*/
x=calculaTempo1(bx+delta,by,v,T1);
y=calculaTempo2(bx+delta,by,v,T2);
menor[6]=(x+y);
/*lcd.setCursor(0, 0);
lcd.print("
lcd.setCursor(0, 0);
lcd.print("7=");
");
lcd.print(menor[6]);*/
x=calculaTempo1(bx+delta,by+delta,v,T1);
y=calculaTempo2(bx+delta,by+delta,v,T2);
menor[7]=(x+y);
/*lcd.setCursor(0, 1);
lcd.print("
");
lcd.setCursor(0, 1);
lcd.print("8=");
lcd.print(menor[7]);
delay(2000);*/
x=calculaTempo1(bx,by,v,T1);
y=calculaTempo2(bx,by,v,T2);
menor[8]=(x+y);
/*lcd.setCursor(0, 0);
lcd.print("
lcd.setCursor(0, 0);
lcd.print("9=");
lcd.print(menor[8]);*/
m=menor[0];
for(int i=0;i<9;i++){
if(menor[i]<m){
m=menor[i];
n=i;
}
}
if(n == 0){
by+=delta;
}
else if(n == 1){
");
bx-=delta;
by+=delta;
}
else if(n == 2){
bx-=delta;
}
else if(n == 3){
bx-=delta;
by-=delta;
}
else if(n == 4){
by-=delta;
}
else if(n == 5){
bx+=delta;
by-=delta;
}
else if(n == 6){
bx+=delta;
}
else if(n == 7){
bx+=delta;
by+=delta;
}
else if(n == 8){
goto IMPRIMEPOSICAO;
}
if(((calculaTempo1(bx,by,v,T1)
calculaTempo2(bx,by,v,T2))) < deltaT){
goto CALCULAPOSICAO;
}
else
goto IMPRIMEPOSICAO;
IMPRIMEPOSICAO:
//IMPRIMEPOSICAO
lcd.setCursor(0, 1);
lcd.print("
");
lcd.setCursor(0, 1);
lcd.print("X=");
lcd.print(bx);
lcd.print(" Y=");
lcd.print(by);
delay(2000);
goto PEGAPOSICAO;
}
double calculaTempo1(float x, float y, double v, double T1){
//TRS DIMENSES
double distanciaA = sqrt((x*x)+(y*y)+1);
double tempoA = (distanciaA/v);
//TRS DIMENSES
double distanciaB = sqrt(((1-x)*x)+(y*y)+1);
double tempoB = (distanciaB/v);
double tempo=(tempoB+1)-T1;
tempo = fabs(tempo-tempoA);
return tempo;
}
double calculaTempo2(float x, float y, double v, double T2){
//TRS DIMENSES
double distanciaB = sqrt(((1-x)*x)+(y*y)+1);
double tempoB = (distanciaB/v);
//TRS DIMENSES
double distanciaC = sqrt(((1-x)*x)+((1-y)*y)+1);
double tempoC = (distanciaC/v);
double tempo=(tempoC+1)-T2;
tempo = fabs(tempo-tempoB);
return tempo;
}