Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
DETERMINACAO DA DEFASAGEM ENTRE SINAIS: COMPARACAO E
ANALISE DE METODOS PRATICOS VARIADOS
Gabriel Bastos Barboza Luz
Projeto de Graduacao apresentado ao Curso
de Engenharia Eletronica e de Computacao
da Escola Politecnica, Universidade Federal
do Rio de Janeiro, como parte dos requisitos
necessarios a obtencao do tıtulo de Engenheiro.
Orientador: Ricardo Rhomberg Martins
Rio de Janeiro
Junho de 2016
Luz, Gabriel Bastos Barboza
Determinacao da Defasagem entre Sinais: Comparacao
e Analise de Metodos Praticos Variados/Gabriel Bastos
Barboza Luz. – Rio de Janeiro: UFRJ/ Escola Politecnica,
2016.
XIII, 53 p.: il.; 29, 7cm.
Orientador: Ricardo Rhomberg Martins
Projeto de Graduacao – UFRJ/ Escola Politecnica/
Curso de Engenharia Eletronica e de Computacao, 2016.
Referencias Bibliograficas: p. 31 – 31.
1. Defasagem entre Sinais. 2. Processamento de Sinais.
3. DOA. I. Martins, Ricardo Rhomberg. II. Universidade
Federal do Rio de Janeiro, Escola Politecnica, Curso de
Engenharia Eletronica e de Computacao. III. Tıtulo.
iii
Dedico este trabalho a minha
bisavo, Maria da Silva Bastos, e
ao meu avo, Geraldo Candido
Barboza, in memoriam, alem do
meu Deus. Como e bom saber
que posso encontra-los todos os
dias em meu coracao.
iv
Agradecimentos
A Deus, meu melhor amigo e a pessoa mais importante na minha vida. Obrigado
pelas portas que o Senhor abriu ao longo da minha caminhada, mas principalmente
pelas que estavam fechadas e me fizeram permanecer no Seu caminho! “Assim como
os ceus sao mais altos do que a terra, tambem os meus caminhos sao mais altos do
que os seus caminhos e os meus pensamentos mais altos do que os seus pensamentos.”
Isaıas 55:9
Aos meus pais, David de Rezende Luz e Elaine Bastos Barboza Luz, por tudo que
me deram ou deixaram de me dar para o meu bem, mas principalmente, por tudo
que voces foram, sao e sempre serao para mim. Nao conseguir imaginar maneiras
suficientes para agradecer ou nao encontrar palavras que me permitam expressar
com toda exatidao o que sinto por voces me faz entender plenamente o significado
do amor. E por isso que so me resta dizer: eu amo voces!
A minha irma, Raquel Bastos Barboza Luz, meu exemplo de pessoa dedicada,
persistente e carinhosa, atributos estes que muito me sao proveitosos ha mais de
duas decadas. Mesmo voando cada vez mais alto, saiba que estarei te esperando em
suas aterrisagens.
A minha avo, Elina Bastos Barboza, e a minha tia, Gislaine Bastos Barboza,
que alem de contribuirem financeiramente com muito mais do que precisava, me
conduziram na realizacao deste sonho atraves de seus conselhos. Menino era, porem
amadureci; gracas a voces, hoje homem me tornei.
A minha avo Ana de Rezende Luz e demais tios, Geraldo, Daniel e Delmo, pelas
suas oracoes e prontidao em ajudar-me, ainda que ocupados. Sem duvidas, a minha
famılia e a melhor de todas!
A minha noiva, Bruna Camargo Marins, por estar sempre perto, mesmo quando
ausente. Obrigado pelo incentivo, compreensao e ajuda, despertando em mim o
desejo de melhorar a cada dia. Este e mais um degrau que subimos.
Ao meu orientador, professor Ricardo Rhomberg Martins, por sua dedicacao e
prontidao mesmo em finais de semana, feriados e festas de fim de ano. Obrigado
pela confianca e compreensao neste comeco de um novo ciclo na minha vida.
Aos meus amigos da graduacao, das “viagens” diarias para a UFRJ e do SOL-
TEC, alem dos professores que tive ao longo do curso. Obrigado pela formacao
v
academica, polıtica, social e cultural que voces me proporcionaram. Este percurso
seria muito mais arduo sem voces.
Aos tantos outros que me ajudaram nesta trajetoria e cujo espaco nao seria
suficiente para agradecer a todos. Muito obrigado!
vi
Resumo do Projeto de Graduacao apresentado a Escola Politecnica/UFRJ como
parte dos requisitos necessarios para a obtencao do grau de Engenheiro Eletronico
e de Computacao.
Determinacao da Defasagem entre Sinais: Comparacao e Analise de Metodos
Praticos Variados
Gabriel Bastos Barboza Luz
Junho/2016
Orientador: Ricardo Rhomberg Martins
Curso: Engenharia Eletronica e de Computacao
Este Projeto Final apresenta uma analise de diversos algoritmos que podem ser uti-
lizados no calculo da defasagem entre 2 ou mais sinais na vida real de forma pratica,
comparando vantagens e desvantagens entre eles. Antes de entrar na parte mais
importante do trabalho, apresenta-se uma analise fısica dos fenomenos envolvidos
com o objetivo de conseguir um melhor entendimento daquilo que posteriormente
sera tratado de um ponto de vista matematico.
Palavras-chave: Defasagem entre Sinais, Processamento de Sinais, DOA.
vii
Abstract of Undergraduate Project presented to POLI/UFRJ as a partial fulfillment
of the requirements for the degree of Engineer.
SIGNALS DELAY DETERMINATION: COMPARISON AND ANALYSIS OF
MISCELLANEOUS METHODS
Gabriel Bastos Barboza Luz
June/2016
Advisor: Ricardo Rhomberg Martins
Course: Electronic Engineering
This Final Project presents an analysis of many algorithms that may be used to
determine the delay between 2 or more signals in real life, comparing advantages
and disadvantages between them. Before introducing the most important subject,
this study presents a physical analysis of the phenomena involved in order to get a
better understanding of that will be treated from a mathematics viewpoint.
Keywords: Signals Delay, Signals Processing, DOA.
viii
Sumario
Lista de Figuras xi
Lista de Tabelas xiii
1 Introducao 1
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Delimitacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Descricao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Fundamentacao Teorica 7
2.1 Compreensao fısica do assunto . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Compreensao fısica utilizando ondas sonoras . . . . . . . . . . . . . . 11
3 Metodo 1: Analise no Tempo 13
3.1 Implementacao no arduino . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Implementacao no matlab . . . . . . . . . . . . . . . . . . . . . . . . 15
4 Metodo 2: Media do Produto 17
4.1 Implementacao no arduino . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2 Implementacao no matlab . . . . . . . . . . . . . . . . . . . . . . . . 18
5 Metodo 3: Deslocamento e Produto Escalar 19
6 Metodo 4: Transformada de Fourier 22
7 Comparacao dos Metodos Utilizados 25
8 Conclusoes 30
Referencias Bibliograficas 31
ix
A Codigos 32
A.1 Amostragem dos Sinais - Arduino . . . . . . . . . . . . . . . . . . . . 32
A.2 1a Amostragem: dados1 . . . . . . . . . . . . . . . . . . . . . . . . . 35
A.3 2a Amostragem: dados2 . . . . . . . . . . . . . . . . . . . . . . . . . 38
A.4 Analise no Tempo - Arduino . . . . . . . . . . . . . . . . . . . . . . . 41
A.5 Analise no Tempo - Matlab . . . . . . . . . . . . . . . . . . . . . . . 43
A.6 Media do Produto - Arduino . . . . . . . . . . . . . . . . . . . . . . . 45
A.7 Media do Produto - Matlab . . . . . . . . . . . . . . . . . . . . . . . 47
A.8 Deslocamento e Produto Escalar - Matlab . . . . . . . . . . . . . . . 49
A.9 Transformada de Fourier - Matlab . . . . . . . . . . . . . . . . . . . . 51
x
Lista de Figuras
1.1 Som da igreja Metodista Central de Cabo Frio. Mesmo em um am-
biente pequeno, a empresa responsavel pelos equipamentos sonoros
(2 caixas FZ 108 HPA com funcao delay acoplada) se preocupou em
aplicar um atraso na caixa mais afastada do palco para garantir que
os sons chegassem simultaneamente ao fundo da igreja (uma vez que
o sinal eletrico de entrada se propaga numa velocidade muito maior
do que o som no ar, caso as caixas estivessem suficientemente afasta-
das, um receptor ao fundo da sala ouviria o mesmo som duas vezes).
Fonte: http://goo.gl/arbPfv . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Defasagem numa conversa entre 2 pessoas em um mesmo comodo
ao vivo e utilizando aparelhos analogicos: “as conversas” ocorrem
simultaneamente, ou seja, nao ha atraso significativo (considerando,
e claro, que as 2 pessoas estejam proximas o suficiente para se es-
cutarem e para as ondas sonoras nao demorarem mais tempo via-
jando no ar do que o sinal analogico na linha de transmissao). Fonte:
http://www.wirelessnotes.org/digital-cellular-latency.html . . . . . . . 3
1.3 Defasagem numa conversa entre 2 pessoas em um mesmo comodo ao
vivo e utilizando aparelhos digitais (incluindo os de tecnologia VoIP):
a percepcao e de que o ouvinte escuta a mesma frase 2 vezes, com
um pequeno atraso do lado do aparelho (os valores de latencia apre-
sentados na imagem, ainda que nao experimentais, podem ser con-
siderados verossımeis). Fonte: http://www.wirelessnotes.org/digital-
cellular-latency.html . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Defasagem numa conversa em grupo entre pessoas que estejam em
um mesmo comodo ao vivo e utilizando aparelhos digitais (incluindo
os de tecnologia VoIP): a percepcao de atraso na escuta atraves dos
aparelhos e ainda maior devido ao delay acumulado. Um caos! Fonte:
http://www.wirelessnotes.org/digital-cellular-latency.html . . . . . . . 4
1.5 Exemplo de um sistema que corrige a defasagem dos sinais capturados
para maximizar seu desempenho. Fonte: http://goo.gl/MmkY8S . . . 5
xi
2.1 Como o proprio nome ja sugere, o conceito por tras das antenas adap-
tativas e que elas sejam capazes de se adaptar de forma inteligente
(como tambem sugere o outro nome) ao ambiente em que atuam para
garantir nao so o melhor funcionamento possıvel do sistema no qual
estao inseridas, mas tambem dos que estao em seu entorno ao focali-
zar sua irradiacao num menor numero de direcoes, diminuindo assim o
numero de sinais interferidos. Fonte: http://www.embedded.com/design/connectivity/4006442/How-
to-create-beam-forming-smart-antennas-using-FPGAS . . . . . . . . . 8
2.2 Nos sistemas de antenas adaptativas, a filtragem dos sinais indeseja-
dos e implementada atraves de pesos que forcam a interferencia des-
trutiva entre eles. Tais pesos sao calculados dinamicamente de acordo
com a direcao de interesse. Fonte: http://www.intechopen.com/books/advances-
in-satellitecommunications/new-antenna-array-architectures-for-satellite-
communications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Representacao das ondas geradas por uma serie de gotas que caem
na superfıcie da agua a intervalos regulares de tempo. . . . . . . . . . 9
2.4 Gotas simultaneas caindo com a mesma frequencia. . . . . . . . . . . 10
2.5 “Diagrama de Irradiacao” das gotas que caem em fase. . . . . . . . . 11
2.6 Ondas geradas por duas gotas caindo fora de fase. Em “a”, a gota da
esquerda esta atrasada; o oposto acontece em “b”. . . . . . . . . . . . 11
2.7 Caixa de som da Paroquia Porciuncula de Sant’Ana em Niteroi. O
sistema de line array e projetado de forma a utilizar interferencias
construtivas para diminuir a perda da pressao sonora ao longo do
ambiente sonorizado. . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1 Dois microfones distanciados de λ/2. . . . . . . . . . . . . . . . . . . 13
3.2 As senoides defasadas do arquivo dados1 . . . . . . . . . . . . . . . . 14
3.3 As senoides defasadas do arquivo dados2 . . . . . . . . . . . . . . . . 15
5.1 Representacao grafica do produto escalar entre os vetores de dados1. . 20
5.2 Representacao grafica do produto escalar entre os vetores de dados2. . 21
6.1 Transformada de Fourier dos sinais em dados1. E interessante notar
que ambos os sinais apresentam suas componentes exatamente na
mesma frequencia, proximo a 1 kHz, e que a defasagem pode ser
facilmente notada pelo fato do sinal1 ter fase praticamente nula . . . 23
6.2 Transformada de Fourier dos sinais em dados2 . . . . . . . . . . . . . 24
xii
Lista de Tabelas
7.1 Defasagem em graus . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
7.2 Observacao 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7.3 Observacao 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
xiii
Capıtulo 1
Introducao
1.1 Tema
O tema do trabalho consiste na comparacao de metodos praticos variados para se
determinar a defasagem entre dois sinais, buscando expor os meios necessarios para
a utilizacao de cada um, suas vantagens e desvantagens, alem de propor combinacoes
entre si e a consequente composicao de novos metodos com este fim.
1.2 Delimitacao
Os objetos de estudo sao sinais de baixa frequencia adequados aos A/D de que se
dispoe. Eles simulam sinais que teriam sido modulados, transmitidos e demodulados
como acontece nos sistemas que utilizam antenas.
1.3 Justificativa
No dia-a-dia nos deparamos constantemente com situacoes em que dois ou mais
sinais viajam com fases diferentes entre si, o que exige um tratamento adequado
para se manter o perfeito funcionamento do sistema no qual estao inseridos. Em
audio, um mesmo som emitido a partir de transmissores diferentes pode chegar em
diferentes instantes de tempo num mesmo receptor, dando a impressao da existencia
1
de eco caso esta defasagem nao seja compensada.
Figura 1.1: Som da igreja Metodista Central de Cabo Frio. Mesmo em um am-
biente pequeno, a empresa responsavel pelos equipamentos sonoros (2 caixas FZ
108 HPA com funcao delay acoplada) se preocupou em aplicar um atraso na caixa
mais afastada do palco para garantir que os sons chegassem simultaneamente ao
fundo da igreja (uma vez que o sinal eletrico de entrada se propaga numa veloci-
dade muito maior do que o som no ar, caso as caixas estivessem suficientemente
afastadas, um receptor ao fundo da sala ouviria o mesmo som duas vezes). Fonte:
http://goo.gl/arbPfv
Na telefonia, o atraso de sinais pode levar a uma conversa extremamente confusa
em que o ouvinte nao consegue distinguir com clareza quando ha uma pausa no
discurso ou a falha e proveniente da rede, levando-o a atropelar quem estava falando.
2
Figura 1.2: Defasagem numa conversa entre 2 pessoas em um mesmo comodo ao
vivo e utilizando aparelhos analogicos: “as conversas” ocorrem simultaneamente, ou
seja, nao ha atraso significativo (considerando, e claro, que as 2 pessoas estejam
proximas o suficiente para se escutarem e para as ondas sonoras nao demorarem
mais tempo viajando no ar do que o sinal analogico na linha de transmissao). Fonte:
http://www.wirelessnotes.org/digital-cellular-latency.html
Figura 1.3: Defasagem numa conversa entre 2 pessoas em um mesmo comodo ao vivo
e utilizando aparelhos digitais (incluindo os de tecnologia VoIP): a percepcao e de que
o ouvinte escuta a mesma frase 2 vezes, com um pequeno atraso do lado do aparelho
(os valores de latencia apresentados na imagem, ainda que nao experimentais, podem
ser considerados verossımeis). Fonte: http://www.wirelessnotes.org/digital-cellular-
latency.html
3
Figura 1.4: Defasagem numa conversa em grupo entre pessoas que estejam em um
mesmo comodo ao vivo e utilizando aparelhos digitais (incluindo os de tecnologia
VoIP): a percepcao de atraso na escuta atraves dos aparelhos e ainda maior devido ao
delay acumulado. Um caos! Fonte: http://www.wirelessnotes.org/digital-cellular-
latency.html
Em radares, sinais defasados e sem o tratamento adequado deixam de representar
a realidade do que esta sendo monitorado e colocam em risco a seguranca dos que se
utilizam destes: avioes e submarinos podem nao ter tempo habil para desviar de um
obstaculo ou as forcas armadas de um paıs podem deixar de reconhecer a invasao de
inimigos em seu territorio, por exemplo. Fato e que, independente da sua finalidade,
qualquer sistema precisa considerar o atraso dos sinais ao longo do seu percurso e
processamento a fim de garantir o correto funcionamento para o qual foi projetado.
4
Figura 1.5: Exemplo de um sistema que corrige a defasagem dos sinais capturados
para maximizar seu desempenho. Fonte: http://goo.gl/MmkY8S
1.4 Objetivos
O objetivo geral e, entao, aprofundar o conhecimento relativo ao processamento
de sinais defasados atraves das ferramentas adequadas para cada caso. Desta forma,
tem-se como objetivos especıficos: (1) comparar metodos de aplicacao pratica para se
determinar a defasagem entre dois sinais; (2) propor combinacoes entre eles para que,
de forma sistematica, sejam capazes de responder aos diferentes cenarios possıveis,
e; (3) propor novos metodos de maior eficiencia que sejam capazes de abranger os
cenarios nao alcancados pelos escopos dos estudos anteriores.
1.5 Metodologia
Um gerador de sinais sera responsavel por gerar os sinais defasados em 2 cenarios
distintos e um arduino sera utilizado para amostra-los. Em algumas situacoes os si-
nais serao processados pelo proprio microcontrolador, enquanto nas demais os dados
serao encaminhados aos softwares Matlab e Microsoft Excel, onde o processamento
sera realizado offline.
5
1.6 Descricao
No capıtulo 2 sera apresentada toda a fundamentacao teorica necessaria para
embasar a aplicacao proposta neste trabalho. Os capıtulos 3, 4, 5 e 6 apresentarao
de forma detalhada 4 metodos praticos diferentes para se obter a defasagem entre
2 ou mais sinais, a teoria por tras de cada metodo e de que forma os mesmos
podem ser implementados. O capıtulo 7 trara a consolidacao dos resultados obtidos,
sendo seguido pela conclusao do estudo no capıtulo 8, onde novas perspectivas serao
apresentadas para projetos futuros.
6
Capıtulo 2
Fundamentacao Teorica
Um dos temas de estudo de maior interesse na atualidade no campo das teleco-
municacoes, as antenas adaptativas sao elementos extremamente eficientes que vem
sendo utilizadas em sistemas de telefonia movel, radares e avioes nao tripulados.
Este tipo de sistema e sempre composto por um conjunto de antenas tambem cha-
madas de inteligentes (em ingles, a literatura utiliza os termos “Adaptive Antenna”
e “Smart Antenna”, sendo este mais abrangente).
7
Figura 2.1: Como o proprio nome ja sugere, o conceito por tras das ante-
nas adaptativas e que elas sejam capazes de se adaptar de forma inteligente
(como tambem sugere o outro nome) ao ambiente em que atuam para garan-
tir nao so o melhor funcionamento possıvel do sistema no qual estao inseri-
das, mas tambem dos que estao em seu entorno ao focalizar sua irradiacao
num menor numero de direcoes, diminuindo assim o numero de sinais interfe-
ridos. Fonte: http://www.embedded.com/design/connectivity/4006442/How-to-
create-beam-forming-smart-antennas-using-FPGAS
Determinada a direcao de interesse para a transmissao ou para a recepcao, as
antenas adaptativas utilizam-se da defasagem dos sinais por meio de interferencias
construtivas e destrutivas para executar o direcionamento desejado.
8
Figura 2.2: Nos sistemas de antenas adaptativas, a filtragem dos sinais indesejados e
implementada atraves de pesos que forcam a interferencia destrutiva entre eles. Tais
pesos sao calculados dinamicamente de acordo com a direcao de interesse. Fonte:
http://www.intechopen.com/books/advances-in-satellitecommunications/new-
antenna-array-architectures-for-satellite-communications
2.1 Compreensao fısica do assunto
Figura 2.3: Representacao das ondas geradas por uma serie de gotas que caem na
superfıcie da agua a intervalos regulares de tempo.
Comecemos imaginando uma cuba d’agua na qual caem duas series de gotas a
espacos iguais de tempo (mesma frequencia) e simultaneas (em fase).
As ondas originadas em cada ponto em que caem as gotas se propagarao com
9
velocidades iguais, uma vez que esta depende apenas do meio de propagacao que e
o mesmo para as duas: a agua. Elas levarao sempre tempos iguais para chegarem
a qualquer ponto da mediana que passa pelo ponto central da reta que une os dois
pontos em que caem as gotas, como se pode ver na figura 2.4:
Figura 2.4: Gotas simultaneas caindo com a mesma frequencia.
Na direcao da mediana as duas chegarao sempre em fase e, portanto, somando-
se. Quando houver uma crista de uma, havera uma crista da outra. Quando houver
um vale de uma, havera um vale da outra. Logo, nesta direcao elas se somam e a
amplitude resultante das duas sera o dobro da amplitude de cada uma isolada.
Na medida em que nos afastamos desta direcao particular, a simultaneidade
diminui e, em consequencia, a interferencia construtiva entre ambas, acarretando
menores amplitudes na resultante. Fazendo uso de uma representacao atraves de
um diagrama de irradiacao, poderıamos resumir na figura 2.5 o que foi dito.
10
Figura 2.5: “Diagrama de Irradiacao” das gotas que caem em fase.
Se, no entanto, uma das gotas cair um pouco atrasada em relacao a outra, a
primeira onda caminhara mais ate atingir um ponto em que esteja em fase com a que
foi formada posteriormente, simplesmente porque saiu antes. Consequentemente, o
diagrama de irradiacao “da uma inclinada”, como exemplificado na figura 2.6.
Figura 2.6: Ondas geradas por duas gotas caindo fora de fase. Em “a”, a gota da
esquerda esta atrasada; o oposto acontece em “b”.
2.2 Compreensao fısica utilizando ondas sonoras
As ondas que se propagam num meio lıquido como a agua sao transversais, isto
e, as partıculas do meio se movimentam numa direcao e a propagacao da onda se da
11
numa direcao perpendicular aquela. Ja as ondas sonoras sao de pressao (grandeza
escalar) e longitudinais, isto e, o movimento das partıculas e da energia (onda) se
dao na mesma direcao.
No entanto, grandezas tais como velocidade de propagacao, frequencia e com-
primento de onda sao validas para ambas apesar de nao serem visıveis no caso das
ondas sonoras. A interferencia entre duas ondas que se propagam no mesmo meio
tambem se da de igual maneira: em algumas regioes ela pode ser construtiva e em
outras destrutiva, dependendo do tempo de propagacao da onda desde a fonte ate
o ponto considerado, ou seja, da defasagem entre as ondas neste ponto, dando ori-
gem a uma serie de equipamentos que usam este fenomeno para reforcar o sinal em
direcoes de especial interesse. Um deles pode ser visto abaixo:
Figura 2.7: Caixa de som da Paroquia Porciuncula de Sant’Ana em Niteroi. O
sistema de line array e projetado de forma a utilizar interferencias construtivas para
diminuir a perda da pressao sonora ao longo do ambiente sonorizado.
12
Capıtulo 3
Metodo 1: Analise no Tempo
Neste capıtulo apresentaremos os dois primeiros algoritmos que calculam a de-
fasagem entre dois sinais. Eles foram implementados em programas para arduino
e Matlab com dados obtidos de dois microfones distanciados de λ/2 (para efeitos
de programacao; fisicamente, basta que a distancia entre eles nao seja desprezıvel
em relacao ao comprimento de onda). Consequentemente, o tempo que uma onda
sonora, cuja velocidade no ar e 340 m/s, leva para ir de um microfone ao outro e
T/2 conforme aparece na figura 3.1.
Figura 3.1: Dois microfones distanciados de λ/2.
Os graficos das figuras abaixo foram feitos atraves do software Microsoft Ex-
cel utilizando-se dos dados gerados pela amostragem definida no apendice A.1, cu-
13
jos resultados serao chamados daqui pra frente de dados1 (apendice A.2) e dados2
(apendice A.3).
Figura 3.2: As senoides defasadas do arquivo dados1
Pode-se ver no grafico da direita (zoom da imagem a esquerda) que, em termos
de pontos do eixo x, o perıodo da senoide vale (25 - 4) = 21. De forma analoga, a
defasagem entre as senoides vale (8 - 4) = 4.
Se quisermos exprimir esta defasagem em graus, sera necessario fazer a seguinte
regra de 3:
4
21=
∆1
360→ ∆1 = 68, 57 ◦ (3.1)
Em radianos terıamos:
4
21=
∆1
2π→ ∆1 = 1, 2rad (3.2)
E interessante notar que esta e uma defasagem entre os sinais no tempo, ou seja,
e o valor do cateto adjacente a θ do triangulo da figura 3.1.
14
Figura 3.3: As senoides defasadas do arquivo dados2
Utilizando o mesmo raciocınio, conclui-se agora que a defasagem entre os sinais
vale:
∆2 =2
21∗ 360 = 34, 28 ◦ (3.3)
3.1 Implementacao no arduino
O programa anexado ao apendice A.4 implementa no arduino exatamente o
mesmo raciocınio anterior.
Resultados obtidos pelo arduino para os sinais contidos em dados1:
f = 1012, 15 Hz e ∆1 = 61, 21 ◦ (3.4)
Resultados obtidos pelo arduino para os sinais contidos em dados2:
f = 1008, 06 Hz e ∆2 = 26, 13 ◦ (3.5)
3.2 Implementacao no matlab
O codigo no apendice A.5 tambem replica a analise no tempo “via grafico”, desta
vez no software Matlab.
15
Resultados obtidos pelo Matlab para os sinais contidos em dados1:
f = 1010, 8 Hz e ∆1 = 52, 04 ◦ (3.6)
Resultados obtidos pelo Matlab para os sinais contidos em dados2:
f = 1009, 4 Hz e ∆2 = 21, 80 ◦ (3.7)
16
Capıtulo 4
Metodo 2: Media do Produto
Observando a figura 3.2 do capıtulo anterior, notamos que podemos representar
os sinais por:
Sinal1 = A+ A′cos(ωt) e Sinal2 = B +B′cos(ωt+ ∆), (4.1)
onde ∆ equivale a defasagem entre os sinais. O produto dos dois e dado por:
Prod = [A+ A′cos(ωt)][B +B′cos(ωt+ ∆)]
= AB + AB′cos(ωt+ ∆) + A′Bcos(ωt) + A′B′cos(ωt)cos(ωt+ ∆)
(4.2)
O valor medio deste produto nos permite reduzir esta relacao para:
E[Prod] = E[AB] +��
������
���:0
E[AB′cos(ωt+ ∆)] +��
������
�:0E[A′Bcos(ωt)] + E[A′B′cos(ωt)cos(ωt+ ∆)]
= AB + A′B′E[����
����: 0
cos(2ωt+ ∆) + cos(∆)
2]
= AB +1
2A′B′cos∆
(4.3)
De posse dos sinais amostrados, podemos expressar numericamente a media de
cada um e do produto entre eles, alem de suas amplitudes, reduzindo o calculo da
17
defasagem a simples substituicao de valores em:
∆ = acos[2
A′B′(E[Prod]− AB)] (4.4)
4.1 Implementacao no arduino
O script apresentado no apendice A.6 calcula a defasagem entre os sinais usando
a expressao acima. Os resultados obtidos foram:
dados1:
∆1 = 57, 70 ◦ (4.5)
dados2:
∆2 = 20, 48 ◦ (4.6)
4.2 Implementacao no matlab
Um algoritmo semelhante foi implementado no Matlab e pode ser visto no
apendice A.7.
Resultados obtidos para os sinais contidos em dados1:
f = 1010, 8 Hz e ∆1 = 58, 71 ◦ (4.7)
Resultados obtidos para os sinais contidos em dados2:
f = 1009, 4 Hz e ∆2 = 20, 62 ◦ (4.8)
18
Capıtulo 5
Metodo 3: Deslocamento e
Produto Escalar
Como sabemos, o produto escalar entre dois vetores pode-se escrever como:
x1x2 = |x1||x2|cos∆, (5.1)
cujo valor sera maximo quando ambos estiverem em fase e mınimo quando esti-
verem em contra-fase.
Considerando as amostragens dos sinais feitas ao longo do tempo como vetores,
pode-se pensar em deslocar x2 em relacao a x1 calculando o produto escalar entre
ambos em cada posicao ate que se encontrem seus mınimos e maximos.
O numero de deslocamentos unitarios necessario para se chegar a um maximo sera
a defasagem, em numero de amostras, entre os sinais. O numero de deslocamentos
entre um maximo e um mınimo sera meio perıodo do sinal em questao. Resumindo:
∆
180 ◦=
ndeslocamentos(origem, prod escalar maximo)
ndeslocamentos(prod escalar maximo, prod escalar mınimo)(5.2)
O programa encontrado no apendice A.8 permite fazer estes calculos. O grafico
e os resultados obtidos a partir dele foram:
19
Figura 5.1: Representacao grafica do produto escalar entre os vetores de dados1.
pontomax = 13 e pontomin = 56
∆1 = 0, 95 rad = 54, 42 ◦
O grafico apresenta varios picos e vales porque os vetores contem varios perıodos
dos sinais, acarretando varios momentos de alinhamento e desalinhamento entre os
mesmos. A defasagem entre eles e de 13 (n ◦ de deslocamentos necessarios para
encontrar o 1 ◦ alinhamento) divididos por 86 (dobro do n ◦ de deslocamentos entre
um pico e um vale, que por si so representaria apenas meio perıodo).
13
86(em n ◦ de amostras) =
54, 42
360(em graus) =
0, 3π
2π(em radianos) (5.3)
Quando usamos o arquivo dados2 como entrada, descobrimos que a defasagem
em n ◦ de amostras entre os sinais e de6
88, equivalente a 24,55 ◦ ou 0,43 radianos.
20
Figura 5.2: Representacao grafica do produto escalar entre os vetores de dados2.
21
Capıtulo 6
Metodo 4: Transformada de
Fourier
Ao fazer a transformada de Fourier de um sinal, obtemos a representacao do
mesmo no domınio da frequencia em modulo e fase:
F (f(t)) = |F (f(t))| ∠F (f(t)) (6.1)
Desta forma, podemos calcular a defasagem entre 2 sinais ao descobrir a fase
associada a maior componente de cada sinal e realizar uma simples subtracao. A
vantagem deste metodo e a diminuicao do prejuızo causado por ruıdos inerentes dos
meios de propagacao, uma vez que suas frequencias podem ser eliminadas atraves de
filtros de acordo com a proposta do sistema ao qual esta inserido (sistemas de audio,
por exemplo, podem desconsiderar as componentes na faixa do ultrassom atraves de
um filtro passa baixa).
O programa em Matlab do apendice A.9 implementa esta transformada para
cada sinal amostrado, cujos graficos resultantes podem ser vistos abaixo:
22
Figura 6.1: Transformada de Fourier dos sinais em dados1. E interessante notar que
ambos os sinais apresentam suas componentes exatamente na mesma frequencia,
proximo a 1 kHz, e que a defasagem pode ser facilmente notada pelo fato do sinal1
ter fase praticamente nula
Plotados os graficos, o programa ainda calcula os picos dos modulos das trans-
formadas dos sinais e subtrai as fases associadas a estes modulos, apresentando a
defasagem procurada.
Resultados obtidos para os sinais contidos em dados1:
f = 1065 Hz e ∆1 = 51, 51 ◦ (6.2)
23
Figura 6.2: Transformada de Fourier dos sinais em dados2
Resultados obtidos para os sinais contidos em dados2:
f = 1065 Hz e ∆2 = 24, 38 ◦ (6.3)
24
Capıtulo 7
Comparacao dos Metodos
Utilizados
Apresentam-se a seguir
a) Um resumo dos resultados obtidos com os varios algoritmos utilizados no
Excel, no Arduino e no Matlab para a defasagem dos sinais representados pelos
arquivos dados1 e dados2.
b) Comentarios acerca da precisao e da confianca nestes resultados.
Tabela 7.1: Defasagem em graus
AmostrasMetodo Analise no Tempo Media do Produto Desloc. e Prod. Escalar Fourier
Visual Arduino Matlab Arduino Matlab Matlab MatlabDados1 68,57 ◦ 61,21 ◦ 52,04 ◦ 57,70 ◦ 58,71 ◦ 54,42 ◦ 51,51 ◦
Dados2 34,28 ◦ 26,13 ◦ 21,80 ◦ 20,48 ◦ 20,62 ◦ 24,55 ◦ 24,38 ◦
Observacao 1 2 3 4 5 6 7
Obs 1: como dito anteriormente, o metodo visual oferece certa seguranca pelo
fato de que seus resultados foram obtidos atraves de observacoes diretas dos graficos,
sem problemas decorrentes de programacao e/ou interpretacao. Em termos de pre-
cisao, no entanto, comeca-se a perceber a importancia do numero de amostras to-
madas por perıodo. Seriam mesmo aqueles os melhores valores para representar os
picos das senoides? Certamente uma frequencia de amostragem maior melhoraria a
precisao dos resultados.
Obs 2: o programa do arduino calcula o perıodo da senoide na linha:
25
periodo = tempo do pico um [2] - tempo do pico um [1];
e a defasagem entre os sinais na linha:
Diferenca de tempos = abs(tempo do pico dois [1] - tempo do pico um [1]);
Consultando-se os arquivos de dados usados neste trabalho, obtem-se os seguintes
valores para estas grandezas e as respectivas frequencias:
Tabela 7.2: Observacao 2
AmostrasVariaveis pico um [2] pico um [1] pico dois [1] Perıodo (µs) Freq. (Hz)
Dados1 15777688 15776696 15776864 992 1008,06Dados2 11668208 11667216 11667288 992 1008,06
E interessante notar que as amostras correspondentes a estes valores sao exa-
tamente as mesmas do metodo visual, com o que se verifica entao que nao houve
erros de programacao. Pode-se pensar que foi conseguida uma precisao melhor, no
entanto ela e apenas aparente, baseada em valores que, por serem expressos em
microsegundos, tem um grande numero de algarismos pouco significativos. Conti-
nuamos a merce da frequencia de amostragem, onde os resultados certamente seriam
mais precisos se ela fosse maior. Em termos de confianca nestes resultados, podemos
notar que ha uma diferenca consideravel em relacao aos anteriores:
Arduino x Visual
dados1:61, 21− 68, 57
68, 57= 10, 73%
dados2:26, 13− 34, 28
34, 28= 23, 77%
(7.1)
Obs 3: uma tabela semelhante a anterior, desta vez com os valores lidos dos
arquivos dados1 e dados2 pelo Matlab, nos leva aos seguintes resultados:
Tabela 7.3: Observacao 3
AmostrasVariaveis pico um [2] pico um [1] pico dois [1] Perıodo (µs) Freq. (Hz)
Dados1 15777688 15776696 15776864 992 1008,06Dados2 11668208 11667216 11667288 992 1008,06
26
Apesar das entradas serem identicas a tabela 7.2 processada pelo Arduino, vimos
que os calculos das defasagens com o Matlab nao convergiu nos mesmos resultados.
Como o programa nesta 2a ferramenta calcula o perıodo e a defasagem dos sinais
atraves de medias, pode-se pensar que seu resultado e mais preciso pois ele evita,
de certa forma, a questao da baixa frequencia de amostragem. Os resultados obser-
vados na respectiva coluna da tabela 7.1 sao ainda mais discrepantes dos do metodo
visual, porem mais confiaveis, e por isso servirao de referencia para as proximas
comparacoes:
Matlab x Visual
dados1:52, 04− 68, 57
68, 57= 24, 11%
dados2:21, 80− 34, 28
34, 28= 36, 41%
(7.2)
Matlab x Arduino
dados1:52, 04− 61, 21
61, 21= 14, 98%
dados2:21, 80− 26, 13
26, 13= 16, 57%
(7.3)
Obs 4 e 5: o calculo da defasagem utilizando as medias dos sinais, conforme
visto no capıtulo 4, teoricamente tornaria a analise independente dos instantes de
amostragem. No entanto, este metodo pode implicar em erros se as medias nao
forem calculadas sobre um numero inteiro de ciclos das senoides, o que nos traria
de volta a questao dos instantes das amostragens para se determinar os ciclos.
Pelos calculos realizados durante os nossos testes, vemos este metodo conver-
gir seus resultados em valores proximos aos obtidos pelo Matlab com a Analise no
Tempo que, conforme dito anteriormente, servira de referencia pela maior confiabi-
lidade:
27
Arduino x Analise no Tempo
dados1:57, 70− 52, 04
52, 04= 10, 88%
dados2:20, 48− 21, 80
21, 80= 6, 06%
(7.4)
Matlab x Analise no Tempo
dados1:58, 71− 52, 04
52, 04= 12, 82%
dados2:20, 62− 21, 80
21, 80= 5, 41%
(7.5)
A comparacao dos resultados obtidos pelas 2 ferramentas tambem comprovam
uma maior eficacia da Media do Produto:
Arduino x Matlab
dados1:58, 71− 57, 70
57, 70= 1, 75%
dados2:20, 62− 20, 48
20, 48= 0, 68%
(7.6)
Obs 6 e 7: tendo em vista que a Media do Produto se mostrou menos discrepante
do que a Analise no Tempo, podemos toma-la por referencia para comparar os 2
ultimos metodos que so foram implementados no Matlab.
Deslocamento e Produto Escalar x Media do Produto
dados1:54, 42− 58, 71
58, 71= 7, 31%
dados2:24, 55− 20, 62
20, 62= 19, 06%
(7.7)
28
Fourier x Media do Produto
dados1:51, 51− 58, 71
58, 71= 12, 26%
dados2:24, 38− 20, 62
20, 62= 18, 23%
(7.8)
Apesar da Transformada de Fourier apresentar uma discrepancia nao desprezıvel
em relacao a Media do Produto, ela traz uma caracterıstica interessante que deve
ser considerada de acordo com o sistema ao qual se propoe o calculo da defasagem
entre sinais: o isolamento dos ruıdos no calculo da defasagem!
29
Capıtulo 8
Conclusoes
Pode-se entao perguntar: ha, portanto, algum metodo perfeito? A resposta e:
NAO! Na engenharia busca-se sempre o melhor modelo para a aplicacao desejada
levando-se em consideracao sua eficiencia, custos, pre-requisitos, etc. Solucao al-
guma JAMAIS sera perfeita para todos casos de uso. Gracas a esta realidade, o
processamento analogico ainda persiste em um mundo cada vez mais digital. Ainda
que sua importancia e, consquentemente, sua utilizacao diminua com o tempo, ainda
e possıvel encontrar aplicacoes em que este se faz necessario. E se algum dia esta
realidade deixar de existir, ainda assim os metodos abordados neste estudo podem
ser aproveitados para fins didaticos.
Como continuacao do assunto, e possıvel estender o atual trabalho a deter-
minacao da direcao de chegada de um sinal (DOA - Direction of Arrival), conforme
indicado pela figura 3.1.
30
Referencias Bibliograficas
[1] GROSS, F. “Smart Antennas for Wireless Communications”. pp. 145–163, New
York, McGraw-Hill Professi, 2005.
[2] MARTINS, R. R. “Antenas e Processamento de Sinais”. p. 280, Rio de Janeiro,
UFRJ, 2013.
[3] MCROBERTS, M. “Arduino Basico”. Sao Paulo, Novatec Editora, 2011.
[4] MUHAMED, R. Direction of Arrival Estimation using Antenna Arrays. M.Sc.
thesis, Virginia Polithecnic Institute and State Univsersity, Blacksburg,
Virginia, USA, 1996.
[5] DA SILVA, B. F. Determinacao da Direcao de Chegada (DOA) de um Sinal
Sonoro usando o microcontrolador Arduino. Monografia, Universidade
Federal do Rio de Janeiro, Rio de Janeiro, 2014.
[6] FERREIRA, J. L. R. “Antenas Inteligentes”, 2008. Disponıvel em: <http:
//www.gta.ufrj.br/grad/08_1/antena/index.html>.
31
Apendice A
Codigos
A.1 Amostragem dos Sinais - Arduino
#include <Average.h>
#include <math.h>
#include <LiquidCrystal.h>
const unsigned char PS_16 = (1<<ADPS2);
const unsigned char PS_128 = (1 << ADPS2) | (1 << ADPS1) | (1 <<
ADPS0); // ADPS2 , ADPS1 e ADPS0 em 1
float time1 [81];
float time2 [81];
LiquidCrystal lcd(9, 8, 5, 4, 3, 2);
int analogPin1 = 1; // 1a. entrada analogica
int analogPin2 = 2; // 2a. entrada analogica
int i;
void setup()
{
Serial.begin (9600); // Define a velocidade da comunicac~ao
serial
32
pinMode(1, INPUT); pinMode(2, INPUT); // Configura os pinos 1 e
2 como entradas
// set up the ADC
ADCSRA &= ~PS_128; // Remove bits set by Arduino library
ADCSRA |= PS_16; //Set our own prescaler to 64
lcd.begin(16, 2);
lcd.setCursor (0,0);
lcd.print ("Direcao chegada");
ADCSRA |= PS_16;
}
void loop()
{
int sinal_original_um [81];
int sinal_original_dois [81];
i = 1;
while (i<=80) {
sinal_original_um[i] = analogRead(analogPin1);
time1[i] = micros ();
sinal_original_dois[i] = analogRead(analogPin2);
time2[i] = micros ();
Serial.print (i);
Serial.print (";");
Serial.print (sinal_original_um[i]);
Serial.print (";");
Serial.print (time1[i]);
Serial.print (";");
Serial.print (sinal_original_dois[i]);
Serial.print (";");
Serial.println (time2[i]);
i++;
33
}
delay (1000);
}
34
A.2 1a Amostragem: dados1
Sinais analogicos amostrados: X Hz, amplitude de Y e Z ◦ de defasagem
Amostra Sinal 1 Tempo 1 Sinal 2 Tempo 2
1 325 15776532 689 15776552
2 435 15776576 759 15776600
3 546 15776624 806 15776648
4 657 15776672 824 15776696
5 752 15776720 819 15776740
6 822 15776764 780 15776796
7 871 15776820 721 15776840
8 878 15776864 643 15776888
9 850 15776912 551 15776936
10 797 15776960 460 15776984
11 711 15777008 369 15777028
12 609 15777052 295 15777076
13 497 15777100 234 15777124
14 385 15777148 201 15777172
15 284 15777196 191 15777216
16 199 15777240 210 15777264
17 137 15777288 254 15777312
18 111 15777336 324 15777360
19 117 15777384 408 15777404
20 152 15777428 497 15777452
21 222 15777476 591 15777500
22 312 15777524 676 15777548
23 419 15777572 748 15777592
24 531 15777616 799 15777640
25 639 15777664 827 15777688
26 737 15777712 824 15777736
35
Amostra Sinal 1 Tempo 1 Sinal 2 Tempo 2
27 815 15777760 792 15777780
28 862 15777804 739 15777828
29 878 15777852 667 15777876
30 863 15777900 579 15777924
31 815 15777948 487 15777968
32 736 15777992 393 15778016
33 639 15778040 313 15778064
34 529 15778088 247 15778112
35 415 15778136 206 15778156
36 309 15778180 191 15778204
37 220 15778228 202 15778252
38 153 15778276 242 15778300
39 118 15778324 304 15778344
40 111 15778368 382 15778392
41 141 15778416 472 15778440
42 198 15778464 565 15778488
43 284 15778512 656 15778532
44 387 15778556 728 15778580
45 501 15778604 788 15778628
46 612 15778652 819 15778676
47 712 15778700 828 15778720
48 796 15778744 806 15778768
49 853 15778792 756 15778820
50 877 15778844 679 15778868
51 867 15778892 595 15778916
52 823 15778940 499 15778964
53 751 15778988 408 15779008
36
Amostra Sinal 1 Tempo 1 Sinal 2 Tempo 2
54 654 15779032 324 15779056
55 547 15779080 257 15779104
56 433 15779128 211 15779152
57 326 15779176 192 15779196
58 231 15779220 199 15779244
59 160 15779268 235 15779292
60 120 15779316 291 15779340
61 112 15779364 368 15779384
62 135 15779408 459 15779432
63 189 15779456 551 15779480
64 271 15779504 643 15779528
65 371 15779552 719 15779572
66 483 15779596 779 15779620
67 595 15779644 816 15779668
68 699 15779692 827 15779716
69 785 15779740 808 15779760
70 847 15779784 766 15779808
71 878 15779832 689 15779860
72 871 15779884 609 15779908
73 831 15779932 516 15779956
74 764 15779980 423 15780004
75 669 15780028 338 15780048
76 563 15780072 263 15780096
77 451 15780120 216 15780144
78 342 15780168 192 15780192
79 244 15780216 196 15780236
80 171 15780260 228 15780284
37
A.3 2a Amostragem: dados2
Sinais analogicos amostrados: X Hz, amplitude de Y e Z ◦ de defasagem
Amostra Sinal 1 Tempo 1 Sinal 2 Tempo 2
1 337 11666960 538 11666980
2 446 11667004 611 11667028
3 559 11667052 679 11667076
4 668 11667100 731 11667124
5 760 11667148 763 11667168
6 827 11667192 773 11667216
7 870 11667240 761 11667264
8 876 11667288 728 11667312
9 852 11667336 672 11667356
10 795 11667380 607 11667404
11 713 11667428 532 11667452
12 595 11667480 441 11667504
13 483 11667528 371 11667552
14 373 11667576 311 11667600
15 271 11667624 268 11667644
16 190 11667668 249 11667692
17 135 11667716 247 11667740
18 112 11667764 270 11667788
19 121 11667812 315 11667832
20 159 11667856 376 11667880
21 230 11667904 448 11667928
22 323 11667952 526 11667976
23 431 11668000 604 11668020
24 543 11668044 670 11668068
25 652 11668092 723 11668116
26 747 11668140 760 11668164
38
Amostra Sinal 1 Tempo 1 Sinal 2 Tempo 2
27 819 11668188 775 11668208
28 865 11668232 767 11668256
29 877 11668280 734 11668304
30 859 11668328 682 11668352
31 804 11668376 619 11668396
32 726 11668420 541 11668444
33 628 11668468 465 11668492
34 516 11668516 390 11668540
35 403 11668564 325 11668584
36 300 11668608 278 11668632
37 211 11668656 249 11668680
38 147 11668704 246 11668728
39 115 11668752 262 11668772
40 115 11668796 300 11668820
41 144 11668844 358 11668868
42 207 11668892 427 11668916
43 295 11668940 504 11668960
44 400 11668984 582 11669008
45 513 11669032 652 11669056
46 622 11669080 711 11669104
47 721 11669128 752 11669148
48 803 11669172 771 11669196
49 856 11669220 770 11669244
50 877 11669268 743 11669292
51 868 11669316 697 11669336
52 822 11669360 638 11669384
53 750 11669408 562 11669432
39
Amostra Sinal 1 Tempo 1 Sinal 2 Tempo 2
54 655 11669456 486 11669480
55 547 11669508 403 11669532
56 419 11669556 337 11669580
57 314 11669604 285 11669624
58 224 11669648 252 11669672
59 153 11669696 244 11669720
60 117 11669744 258 11669768
61 112 11669792 295 11669812
62 139 11669836 349 11669860
63 196 11669884 414 11669908
64 280 11669932 492 11669956
65 384 11669980 571 11670000
66 496 11670024 643 11670048
67 606 11670072 703 11670096
68 708 11670120 748 11670144
69 792 11670168 769 11670188
70 849 11670212 771 11670236
71 877 11670260 751 11670284
72 871 11670308 705 11670332
73 831 11670356 649 11670376
74 764 11670400 575 11670424
75 671 11670448 499 11670472
76 566 11670496 419 11670520
77 453 11670544 352 11670564
78 340 11670588 295 11670612
79 248 11670636 263 11670660
80 172 11670684 243 11670708
40
A.4 Analise no Tempo - Arduino
float Direcao_de_chegada_rad;
float Diferenca_de_tempos;
float floatDiferenca_entre_os_sinais_rad;
float floatDirecao_de_chegada_via_prod_rad;
float frequencia;
float npi = 3.14;
float tempo_do_pico_um [10];
float tempo_do_pico_dois [10];
int periodo;
int Pico_sinal_um [10];
int Pico_sinal_dois [10];
unsigned long ulongAmplitude_sinal_um = 0;
unsigned long ulongAmplitude_sinal_dois= 0;
unsigned long ulongMedia_prod = 0;
unsigned long ulongMedia_sinal_um = 0;
unsigned long ulongMedia_sinal_dois = 0;
unsigned long ulongSoma_sinal_um , ulongSoma_sinal_dois ,
ulongSoma_prod;
void loop()
{
int contador_de_picos_um =0;
int contador_de_picos_dois =0;
unsigned long produto_sinal_um_e_dois [81];
// Obtenc~ao dos picos de ambos os sinais
i=2;
while (i<=60) {
if (sinal_original_um[i-1] <= sinal_original_um[i] &&
sinal_original_um[i] > sinal_original_um[i+1])
{
41
contador_de_picos_um ++;
Pico_sinal_um[contador_de_picos_um] = sinal_original_um[i];
tempo_do_pico_um [contador_de_picos_um] = time1[i];
}
if (sinal_original_dois[i-1] <= sinal_original_dois[i] &&
sinal_original_dois[i] > sinal_original_dois[i+1])
{
contador_de_picos_dois ++;
Pico_sinal_dois[contador_de_picos_dois] =
sinal_original_dois[i];
tempo_do_pico_dois [contador_de_picos_dois] = time2[i];
}
i++;
}
// Calculo do perıodo e da frequencia do sinal um
periodo = tempo_do_pico_um [2] - tempo_do_pico_um [1];
frequencia = 1000000.0/ periodo; //O perıodo esta em
microsegundos
Serial.print ("Frequencia = ");
Serial.print (frequencia);
Serial.println (" Hz");
// Calculo da defasagem entre os sinais
Diferenca_de_tempos = abs(tempo_do_pico_dois [1] -
tempo_do_pico_um [1]);
Serial.print ("Defasagem relativa via grafico = ");
Serial.print (360* Diferenca_de_tempos/periodo);
Serial.println (" graus");
}
42
A.5 Analise no Tempo - Matlab
arquivo = fopen(’Dados1_para_1000Hz.txt’);
[A] = fscanf(arquivo ,’%d %d %f %d %f’,[5, inf]);
fclose(arquivo);
A=A’;
%Carregando os dados do arquivo em variaveis
i=1;
while i<length(A)
sinal1(i) = A(i,2); % Vetor com os valores das amostras na
entrada A0
t1(i)= A(i,3);% Vetor com os instantes das amostras na
entrada A0
sinal2(i) = A(i,4); % Vetor com os valores das amostras na
entrada A1
t2(i)= A(i,5);% Vetor com os instantes das amostras na
entrada A1
i=i+1;
end
%Determinando os pontos no tempo onde ha maximo em cada senoide
j=1;
for i=2:( length(sinal1) -1)
if (sinal1(i-1) <=sinal1(i))&&( sinal1(i)>sinal1(i+1))
t_MAX_sinal1(j) = t1(i);
j=j+1;
end
end
j=1;
for i=2:( length(sinal2) -1)
if (sinal2(i-1) <=sinal2(i))&&( sinal2(i)>sinal2(i+1))
t_MAX_sinal2(j) = t2(i);
j=j+1;
end
43
end
% Tendo os instantes dos maximos de cada senoide , determina -se
seu periodo
periodo =0;
for i=2:( length(t_MAX_sinal1))
periodo=periodo+t_MAX_sinal1(i)-t_MAX_sinal1(i-1);
end
periodo=periodo *0.000001/(i-1); %Passa o tempo que estava em
microsegundos para segundos e calcula a media do perıodo
frequencia = 1/ periodo;
%Determinando a fase e diferenca de tempo dos dois sinais
if(length(t_MAX_sinal1)>=length(t_MAX_sinal2))
limite=length(t_MAX_sinal2);
else
limite=length(t_MAX_sinal1);
end
fase =0;
for i=1: limite
fase=fase+abs(t_MAX_sinal2(i)-t_MAX_sinal1(i));
end
fase=fase/limite; %A fase tambem e calculada pela sua media e
esta em microsegundos
diferencaTempo=fase *0.000001;
defasagemGraus_analiseTempo = 360* diferencaTempo/periodo
44
A.6 Media do Produto - Arduino
// Calculo da soma do sinal um , dois e do produto entre eles
ulongSoma_prod = 0;
ulongSoma_sinal_um = 0;
ulongSoma_sinal_dois = 0;
i = 1;
while (i <= 80) {
ulongSoma_sinal_um = ulongSoma_sinal_um + (long)
sinal_original_um[i];
ulongSoma_sinal_dois = ulongSoma_sinal_dois + (long)
sinal_original_dois[i];
produto_sinal_um_e_dois[i] = (long)sinal_original_um[i]*( long
)sinal_original_dois[i];
ulongSoma_prod = ulongSoma_prod + produto_sinal_um_e_dois[i];
i++;
}
// Calculo das medias
ulongMedia_prod = ulongSoma_prod /80;
ulongMedia_sinal_um = ulongSoma_sinal_um /80;
ulongMedia_sinal_dois = ulongSoma_sinal_dois /80;
// Calculo das amplitudes dos sinais um e dois
ulongAmplitude_sinal_um = Pico_sinal_um [2] - ulongMedia_sinal_um
;
ulongAmplitude_sinal_dois = Pico_sinal_dois [2] -
ulongMedia_sinal_dois;
// Calculo da defasagem entre os sinais
floatDiferenca_entre_os_sinais_rad = acos(( float)(
ulongMedia_prod - ulongMedia_sinal_um*ulongMedia_sinal_dois)
*2/ ulongAmplitude_sinal_um/ulongAmplitude_sinal_dois);
Serial.print ("Defasagem entre os sinais via produto = ");
45
Serial.print (180* floatDiferenca_entre_os_sinais_rad/npi);
Serial.println (" graus");
46
A.7 Media do Produto - Matlab
% Calculo da soma do sinal um, dois e do produto entre eles
soma_sinal1 = 0;
soma_sinal2 = 0;
soma_produtoSinais = 0;
for i=1: length(sinal1)
soma_sinal1 = soma_sinal1 + sinal1(i);
soma_sinal2 = soma_sinal2 + sinal2(i);
produtoSinais(i) = sinal1(i) * sinal2(i);
soma_produtoSinais = soma_produtoSinais + produtoSinais(i);
end
% Calculo das medias
media_sinal1 = soma_sinal1/length(sinal1);
media_sinal2 = soma_sinal2/length(sinal1);
media_produtoSinais = soma_produtoSinais/length(sinal1);
% Calculo das amplitudes dos sinais um e dois
amplitude_sinal1 = 0;
amplitude_sinal2 = 0;
for i=1: length(sinal1)
if (sinal1(i) > amplitude_sinal1)
amplitude_sinal1 = sinal1(i);
end
if (sinal2(i) > amplitude_sinal2)
amplitude_sinal2 = sinal2(i);
end
end
amplitude_sinal1 = amplitude_sinal1 - media_sinal1;
amplitude_sinal2 = amplitude_sinal2 - media_sinal2;
% Calculo da defasagem entre os sinais
47
defasagemGraus_mediaProduto = acosd (2/ amplitude_sinal1/
amplitude_sinal2 *( media_produtoSinais -media_sinal1*
media_sinal2))
48
A.8 Deslocamento e Produto Escalar - Matlab
%interpolando os dados
t_interpolado = t1(1):((t1(2)-t1(1))/4):t1(length(t1));
sinal1_interpolado = spline(t1,sinal1 ,t_interpolado);
sinal2_interpolado = spline(t2,sinal2 ,t_interpolado);
%sinal2=transpose(sinal2);
sinal2_interpolado=transpose(sinal2_interpolado);
for i=1: length(sinal1_interpolado)
produtoEscalar(i)=sinal1_interpolado*sinal2_interpolado;
k=sinal1_interpolado (1); %Guarda o primeiro valor de
sinal1
for j=1: length(sinal1_interpolado)-1
sinal1_interpolado(j)=sinal1_interpolado(j+1); %
Desloca o vetor sinal1 de uma posic~ao
end
sinal1_interpolado(length(sinal1_interpolado))=k; %
Substitui o ultimo valor de sinal1 pelo primeiro
end
plot (1: length(sinal1_interpolado), produtoEscalar);
xlabel(’ Indices correspondentes ’);
ylabel(’Maximos e Minimos do Produto Escalar ’);
for i=2:( length(produtoEscalar))
if (produtoEscalar(i-1)<produtoEscalar(i))&&( produtoEscalar(
i)>produtoEscalar(i+1))
break;
end
end
t_MAX_produtoEscalar=i
49
for i=2:( length(produtoEscalar))
if (produtoEscalar(i-1)>produtoEscalar(i))&&( produtoEscalar(
i)<produtoEscalar(i+1))
break;
end
end
t_MIN_produtoEscalar=i
defasagemRadianos_deslocamentoProduto = t_MAX_produtoEscalar*pi
/( t_MIN_produtoEscalar -t_MAX_produtoEscalar)
defasagemGraus_deslocamentoProduto = t_MAX_produtoEscalar *180/(
t_MIN_produtoEscalar -t_MAX_produtoEscalar)
50
A.9 Transformada de Fourier - Matlab
% Aumentando a frequencia de amostragem para "melhora -la"
for i = 0: length(sinal1)-1
sinal1_aux (2*i+1) = sinal1(i+1);
t1_aux (2*i+1)= t1(i+1);
sinal2_aux (2*i+1) = sinal2(i+1);
t2_aux (2*i+1)= t2(i+1);
end
for i = 2:2: length(sinal1_aux)-1
sinal1_aux(i) = [sinal1_aux(i-1)+sinal1_aux(i+1) ]/2;
t1_aux(i) = [t1_aux(i-1)+t1_aux(i+1) ]/2;
sinal2_aux(i) = [sinal2_aux(i-1)+sinal2_aux(i+1) ]/2;
t2_aux(i) = [t2_aux(i-1)+t2_aux(i+1) ]/2;
end
sinal1 = sinal1_aux;
t1 = t1_aux;
sinal2 = sinal2_aux;
t2 = t2_aux;
TAmostragem = (t1(2)-t1(1))*1e-6; % tempo entre duas amostras
fAmostragem = 1/ TAmostragem; % frequencia de amostragem
% Calculo da FFT do sinal1
NFFT = 2^ nextpow2(length(sinal1));
FFT_sinal1 = fft(sinal1 ,NFFT)/length(sinal1);
f = fAmostragem /2* linspace (0,1,NFFT /2+1);
% Descobrindo a fase correpondente ao maior modulo da
transformada de sinal1
MaiorModuloAteAgora = 0;
ModuloMaximo = 0;
for i = 5: length(f)
FFT_sinal1_A = abs(FFT_sinal1(i-1));
51
FFT_sinal1_B = abs(FFT_sinal1(i));
if (FFT_sinal1_B > FFT_sinal1_A)
MaiorModuloAteAgora = FFT_sinal1_B;
if (MaiorModuloAteAgora >= ModuloMaximo)
ModuloMaximo = MaiorModuloAteAgora;
fase_sinal1 = phase(FFT_sinal1(i));
end
end
end
% Calculo da FFT do sinal2
FFT_sinal2 = fft(sinal2 ,NFFT)/length(sinal2);
MaiorModuloAteAgora = 0;
ModuloMaximo = 0;
for i = 5: length(f)
FFT_sinal2_A = abs(FFT_sinal2(i-1));
FFT_sinal2_B = abs(FFT_sinal2(i));
if (FFT_sinal2_B > FFT_sinal2_A)
MaiorModuloAteAgora = FFT_sinal2_B;
if (MaiorModuloAteAgora >= ModuloMaximo)
ModuloMaximo = MaiorModuloAteAgora;
fase_sinal2 = phase(FFT_sinal2(i));
end
end
end
subplot (2,1,1)
plot(f,2* abs(FFT_sinal1 (1: NFFT /2+1))); hold all;plot(f,2* abs(
FFT_sinal2 (1: NFFT /2+1))); hold all;; hold off;figure(gcf);
legend(’sinal1 ’,’sinal2 ’); grid on; axis ([0 3000 0 1000])
title(’Transformada de Fourier dos sinais 1 e 2 - dados1 ’)
ylabel(’Amplitudes ’)
subplot (2,1,2)
52
plot(f,2* phase(FFT_sinal1 (1: NFFT /2+1))); hold all;plot(f,2* phase
(FFT_sinal2 (1: NFFT /2+1))); hold all;; hold off;figure(gcf);
legend(’sinal1 ’,’sinal2 ’); grid on; axis ([0 3000 -8 2]);
xlabel(’Frequencia (Hz)’)
ylabel(’Fases’)
defasagemGraus_FFT = abs(fase_sinal1 - fase_sinal2)*180/ pi
53