Download - Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

Transcript
Page 1: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

Faculdade de Engenharia da Universidade do Porto Licenciatura em Engenharia Electrotécnica e dos

Computadores Ano Lectivo de 2002/2003

Sistemas de Telecomunicações II

Relatório sobre Radar compacto de onda contínua na banda X para a medição de

velocidade de veículos

Trabalho realizado por: José Pedro Gomes Ferreira nº ee98156 Nuno Beleza Jerónimo nº ee98042

Page 2: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 1

Índice Objectivos ............................................................................................................................2 Introdução ............................................................................................................................2

O efeito de doppler e os radares de onda contínua ..........................................................2 Esquema geral do trabalho...................................................................................................4 Circuito de condicionamento de sinal..................................................................................5 Processamento do sinal ......................................................................................................10

Esquema de montagem do microprocessador ................................................................10 Código desenvolvido para o microprocessador .............................................................10

Teste do RADAR...............................................................................................................14 Conclusão...........................................................................................................................15 Anexo.................................................................................................................................16

Page 3: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 2

Objectivos O trabalho consiste em realizar um radar de onda contínua compacto, fazendo uso do efeito de doppler. Será usado um gunnplexer da banda X com uma frequência de 10.5GHz, o qual irá alimentar um circuito de condicionamento de sinal. A sua saída irá então ser ligada a um microprocessador que funcionará como um frequêncimetro, fazendo a conversão do sinal para velocidade mostrando o resultado num mostrador.

Introdução

O efeito de doppler e os radares de onda contínua Os radares detectam a presença e localizam a sua posição, transmitindo energia electromagnética e observando o eco retornado. Nos radares de onda contínua, o eco é um sinal bastante fraco, em relação ao sinal transmitido. Uma forma de contornar essa diferença de potências é usando antenas separadas para a transmissão e para a recepção, mas normalmente o isolamento não é suficiente. Uma outra técnica para separar os dois sinais, quando existe movimento relativo entre o alvo e o radar, é o facto de haver uma mudança de frequência entre o eco e o sinal transmitido. Esta aparente mudança de frequência é devido ao efeito de doppler, que é a base dos radares de onda contínua. Se R for a distância do radar ao alvo, o número total de comprimentos de onda ? contidos na ida e volta é 2R/ ?, assumindo que R e ? são medidos na mesmas unidades. Como um comprimento de onda corresponde a uma excursão angular de 2p rad, a excursão angular total ? provocada pela onda electromagnética durante o seu trajecto de ida e volta é 4pR/ ? rad. Se o alvo estiver em movimento, R e ? estão a mudar continuamente. Uma mudança em ?, em respeito ao tempo, é equivalente a uma frequência. Isto é a frequência angular doppler ? d, em que:

λπ

λπφ

πω rdd

vdtdR

dtd

f44

2 ====

onde fd é a frequência de doppler e vr é a velocidade radial do alvo em relação ao radar. A frequência de doppler é:

cfvv

f rrd

022==

λ

em que f0 é a frequência transmitida e c a velocidade de propagação da luz no vazio. A velocidade relativa, vr, pode ser escrita como vr = v/cos(a).

Page 4: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 3

Sendo então observável que para a = 90º, vr será zero. Um radar de onda contínua simples pode ser representado da seguinte maneira:

O transmissor, no caso do trabalho o gunnplexer, gera continuamente uma oscilação à frequência f0, que é radiada pela antena. Uma porção da energia radiada é interceptada pelo alvo e é espalhada, alguma dela em direcção ao radar. Se o alvo estiver em movimento com uma velocidade radial relativa ao radar de vr, o sinal recebido terá um desvio relativo a f0 de +fd, no caso do alvo se estar a aproximar e –fd se o alvo se estiver a afastar. O eco recebido de frequência f0 ± fd, é recebido no radar pela antena, sendo misturado no mixer com a porção f0 transmitida, retirando-se o sinal diferença fd, sendo o seu sinal perdido no processo. Pode-se então aplicar o sinal a um amplificador, seguido por exemplo de um frequêncimetro para efectuar as medições de velocidade. O uso de uma única antena para transmissão/recepção é possível, pois pode-se fazer o isolamento entre os dois sinais, fazendo uso da sua separação em frequência derivada do efeito de doppler. Na prática a sua separação total não é possível, embora o facto de haver uma pequena fuga do sinal transmitido para o eco recebido não seja de todo negativo, pois pode-se usar essa fuga moderada para servir de referência na detecção da frequência de doppler.

fo

fo±fd

gunn oscilatorfo

mixer

fo

fo fo±fd

fd

a

Page 5: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 4

Esquema geral do trabalho O seguinte diagrama de blocos faz uma breve descrição do trabalho:

O sinal proveniente do gunnplexer será aplicado a um amplificador para elevar a amplitude do sinal de eco recebido e depois ser ligado a um comparador para se obter um sinal do tipo onda quadrada, livre de ruído e com uma excursão de 0V a 5V aproximadamente. Esse sinal será então aplicado ao microprocessador que retirará a frequência do sinal fazendo a contagem dos impulsos, fazendo a sua conversão para velocidade de acordo com os parâmetros seleccionados:

O cáculo da velocidade correspondente é feito mediante o valor do ângulo (0º : 85º) relativo entre o radar e o alvo seleccionado e a selecção da frequência do gunnplexer instalado (10.5GHZ ou 24.1GHz). O microprocessador têm ainda um

Gunnplexer

Amplificador Comparador Microprocessador

Display

Condicionamento do sinal Processamento do sinal

“Frequêncimetro”

Display

Ângulo

Conversão Frequência Velocidade

Frequência do Gunnplexer

Microprocessador

Page 6: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 5

pequeno menu de navegação que permite fazer o ajuste dos parâmetros mostrando essa informação no display:

Esta navegação é feita através de três botões de pressão: botão de modo que possibilita a passagem pelos vários modos e botões de mais e menos para seleccionar os valores. Existe ainda um led para distinguir os dois modos de actualizar a velocidade, estando este aceso no modo de velocidade máxima.

Circuito de condicionamento de sinal A entrada do circuito provém do gunnplexer, sendo este alimentado um regulador (LM2940) de 8V:

Velocidade instantânea

Velocidade máxima

Ajuste da frequência

Ajuste do ângulo

0º : 85º 2570 | 1120 A velocidade máxima é retida

durante 1s após a passagem do

Velocidade actualizada á frequência de amostragem

Page 7: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 6

o condensador de 10µF e 1 µF evitam que a saída do regulador oscile, atenuando a variação de tensão na saída, devido ao ajuste automático de tensão de saída. Os terminais do gunnplexer estão ligados da seguinte forma:

tendo o seguinte diagrama de blocos:

Como já foi explicado na introdução, há uma porção do sinal emitido que alimenta o mixer, de forma a ser possível, do sinal recebido, extrair fd. Essa pequena fuga é conseguida desviando o díodo de emissão (díodo de Gunn) do díodo de recepção. Esse desvio é o que também garante que o sinal transmitido, não danifica o díodo de recepção (“burnout”).

Page 8: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 7

A alimentação do circuito de condicionamento (também microprocessador e display), faz uso também de um regulador de 5V (LM2940), alimentado a 12V:

tendo o condensador a mesma função referida em cima.

Na amplificação foi usada uma montagem do tipo não inversora:

o condensador de 4.7µF tem como função fazer a acoplagem do sinal proveniente do gunnplexer. O sinal é então é posto sobre uma componente contínua de 2.5V, através do

Page 9: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 8

divisor resistivo, isto para o sinal ficar dentro da gama de operação do amplificador. A montagem não inversora tem um ganho de:

VVK

Ganho / 1000100

1001 =+=

O condensador de 10µF tem a função de não amplificar a componente contínua do sinal, visto para DC o condensador ser um circuito aberto, comportando-se assim o amplificador, para DC, como um seguidor de tensão. O paralelo da resistência de 100 Ohms com o condensador de 470 pF, implementa o filtro passa-baixo com frequência de corte:

KhzpKRC

fc 4.3470*100*2

12

1 ≈==ππ

o que limita a medida de velocidade para um valor de:

hKmG

kf

cfvr d /1756.3*

5.10*210*3*4.3

6.3*2

* 8

0

≈==

Esta limitação de banda irá melhorar a capacidade do radar alcançar uma distância de medição de velocidade maior, visto estarmos a eliminar o ruído fora da banda de passagem, aumentando assim a relação sinal/ruído. De seguida o sinal amplificado é tratado de forma a eliminar o ruído e obter-se um sinal do tipo onda quadrada, com valores de tensão de 0V e 5V (‘0’ ou ‘1’ lógico). Isso é conseguido usando um comparador com uma janela de histerese de 200 mV:

Page 10: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 9

sendo as resistências calculadas da seguinte forma:

VKK

KKL

RR

RRVV

VKK

KKL

RR

RRVV

REFTH

REFTL

6,20100

9,3100

9,315,221

211

4,25100

9,3100

9,315,221

211

=⋅−

+=⋅−

+=

=⋅−

+=⋅−

+=

+

tendo o comparador a seguinte curva de característica:

sendo L- e L+ 0V e 5V respectivamente, VREF 2,5V conseguidos através do divisor resistivo à entrada do terminal negativo do AmpOp, conseguindo desta forma que o sinal de entrada do comparador pendurado nos 2,5V, tenha uma janela de 200 mV, como foi calculado. Assim eliminamos, além do ruído, eventuais falsas transições e que o ruído quando não nenhum alvo em movimento, não provoque transições no sinal. Pode-se agora aplicar este sinal na porta do microprocessador, para se fazer a medição de velocidade.

Page 11: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 10

Processame nto do sinal

Esquema de montagem do microprocessador

Código desenvolvido para o microprocessador

Para o processamento do sinal obtido à saída do comparador, foi usado um microprocessador da família 80c51, mais concretamente o 89C51RD+, tendo este como principais diferenças a inclusão de um terceiro timer (Timer 2) e memória do tipo flash. O microprocessador foi basicamente programado para funcionar como um frequêncimetro, que de seguida fazia a conversão frequência/velocidade. Começou-se por definir duas variáveis globais, counter usada para contabilizar as interrupções (Timer 0) e impulsos onde irão ser guardados os impulsos contabilizados pelo Timer 1. Foram também definidas as portas a serem usadas, P1.5 Chip enable, P1.6 Serial data, etc. Foram criadas três funções além da função main: init, display e timer0. Na função init são efectuadas as várias inicializações dos registos e variáveis, que configuram o microprocessador e o inicializam para a tarefa desejada, a detecção de frequência e sua conversão em velocidade em Km/h. São configurados os registos SCON, TMOD, T2CON, TH0, TL0, TH1, TL1, RACAPL, RACAPH e IE. SCON é o registo que configura a porta série, o qual foi configurado para trabalhar no modo ‘01’, o qual corresponde a ter um baud rate variável, isto é, poder ser ajustado no inicio para um valor desejado, sem ter que um valor pré determinado, mas sim configurável. Neste registo ainda TI é posto a ‘1’ para ser possível escrever na porta série através de printf, sem que o utilizador se tenha que preocupar com a sua gestão.

Page 12: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 11

Em TMOD temos a configuração dos Timer 0 e Timer 1, estando o Timer 1 configurado para funcionar como counter no modo de 16 bit́ s, contando só quando houver impulsos na porta TR1 (pino 15). O Timer 0 está configurado para funcionar com timer no mod de 16 bit́ s.

T2CON serve para configurar o timer extra, o qual fica programado para funcionar como timer, para gerar o baud rate da porta série (é logo arrancado na sua configuração TR2=1). RACAPL e RACAPH, são os registos que vão ser utilizados para determinar o baud rate a ser gerado pelo Timer 2. Deste modo eles são carregados com valores de modo a ter-mos baud rate = 9600:

[ ][ ] ( )[ ]

654979600*32

1265536*32*960065536*32

129600

,(65536*32_

_

≈−

=⇔

⇔−

=⇔−

=

Mx

xMhz

RACAPLRACAPHosciladorFrequência

RateBaud

TH1 E TL1 são ambos carregados com 0, pois são os contadores que vão contabilizar os impulsos. TH0 e TL0 são carregados com o valor 25535, de modo a os impulsos serem amostrados a cada 200 ms. (será explicado em pormenor na descrição da função timer0) O registo IE corresponde ao registo de activação das interrupções, onde são activadas as interrupções dos Timer 0 e Counter 1, não sendo activadas a do Timer 2 visto não serem necessárias para a geração do baud rate. É ainda inicializado o array send, que contém a trama correspondente às siglas “FEUP” a serem mostradas no display, P1=0, led acende e serial clock e serial data para o display inicializados, mudando-se ce para ‘1’ (display não apto a receber). É então enviada a trama que contem “FEUP” (nesta situação ainda não é usada a função display pois esta não contém as siglas, a explicação do envio será feito na função display). Esta informação mantém-se no display cerca de um segundo, é então posto a 0 e é desligado o led e arrancados os Timer 0 e Counter 1 (TR0=1 e TR1=1). A função display está encarregue de enviar a informação para os mostradores de oito segmentos. Esta função tem como argumentos um valor numérico a ser tratado e enviado para o ‘display’, e outro que define a maneira como a informação deve ser tratada e visualizada. Nesta função existe uma tabela onde está contida a informação correspondente aos vários dígitos e às letras ‘A’ e ‘F’. Cada linha contém a trama correspondente ao seu dígito (0-9), havendo ainda duas linhas suplementares correspondentes ao ‘A’ e ao ‘F’. Nas colunas temos o valor correspondente a cada segmento (mais o ponto), ficando estes acesos quando a coluna é ‘1’ e desligados quando é ‘0’. O array send, onde fica a trama a enviar, é inicializado com “tracinhos” nos segmentos centrais, correspondendo ao fim de escala (999!!!). Caso a velocidade a ser mostrada seja inferior a esse valor, é então construída uma nova trama com esse valor. De seguida são calculados os dígitos das centenas, dezenas e unidades, podendo assim desta forma serem usados directamente na tabela, para servirem de índices (já que

Page 13: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 12

o 0 está na linha 0, o 1 na 1, …). A trama é começada por um ‘1’, sendo depois a trama “povoada” com os restantes símbolos (4, um para cada mostrador) e finalizada com ‘0’. Existem três modos de visualização: um para a velocidade instantânea e máxima, um para o ajuste do ângulo e outro para o ajuste da frequência do gunnplexer. No primeiro modo (velocidade), os três primeiros mostradores são “carregados” com os seus dígitos correspondentes e quarto é deixado “desligado” (não se espera velocidades na casa dos milhares, nem perto do valor de fim de escala!). Para a selecção do ângulo, são usados os dois primeiros mostradores para o ângulo em questão (0:85), o terceiro é deixado em branco e o quarto mostra a letra ‘A’ (posição 10 da tabela). O modo de ajuste de frequência é semelhante ao do ângulo com a diferença de ser mostrado um ‘F’ (posição 11 da tabela). Após se ter a trama construída (36 bit’s, 1 ini,4*8+2(led’s extras), 1 fim), esta é enviada para o display, fazendo-se o chip enable (ce=0), e depois para cada bit a transmitir tem que se gerar um sinal de clock, para validar esse bit. È feito então, no fim da trama, o chip disable (ce=0). Todos estes sinais têm que respeitar tempos de guarda (referenciados na folha de características). A função timer0, corresponde à função de atendimento do Timer0 (interrupt 1). Nesta função os registos TH0 e TL0 são logo carregados com os valores no início, mais quatro unidades (o que corresponde a menos contagens) para compensar os dois ´mov’s ́dos valores, conseguirmos gerar a amostragem de 200 ms. Este valor é conseguido da seguinte forma:

• interrupção gerada a cada 40000 µs (12/12Mhz*(65535-2535)) • em cada interrupção, counter é incrementado • ao fim de 5 interrupções, os impulso são amostrados • reinicia-se counter e o contador de impulsos (TH1 e TL1) Neste processo o Timer 1 é parado para não se fazer contagens erradas, sendo o caso mais desfavorável o seguinte:

1 0*1001 011 1 001

TLTHimpulsosTLTHFFTLTH

+→==∧=→=∧=

Ou seja, quando devíamos ter contabilizado 256 impulsos, vamos contabilizar 0! Isto deve-se ao facto da multiplicação e soma não serem realizadas instantaneamente, e o counter funcionar independentemente. Parando o counter evitam-se estas situações e o erro introduzido é muito reduzido, e constante, e podia mesmo ser eliminado, bastando para isso ter em conta os ciclos perdidos na operação, e entrar com eles no carregamento de TH1 e TL1.

Finalmente temos a função main. Nesta função é criada a tabela de co-senos, tabela esta, que devido ao facto de não haver livraria de float’s disponível, foi multiplicada por 10000, de forma a contornar o facto de só termos disponível a divisão inteira. Na tabela figuram valores do co-seno, para os ângulos de 0º a 85º (passo de 5º). Em main é construído um pequeno conjunto de menus, nos quais é possível visualizar a velocidade instantânea, fazer o ajuste do ângulo, o ajuste da

Page 14: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 13

frequência do gunnplexer (não mudar a frequência do gunnplexer, mas poder mudar de gunnplexer) e finalmente visualizar a velocidade máxima.

No modo de velocidade instantânea, a velocidade é actualizada à taxa de amostragem (200 ms), isto se houver mudança no número de impulsos contados. Também só existe actualização se tiver havido novo carregamento da variável impulsos (através da variável set), ou seja só vamos efectuar o cálculo da velocidade e seu respectivo envio para o display (no modo 0) quando se justifique: quando houve uma amostragem e essa amostragem foi diferente da anterior. O cálculo da velocidade é feito através da seguinte expressão:

)cos(/* αcfreqimpulsosvr =

O valor c_freq é dependente da frequência do gunnplexer pelo que será calculado,

quando for falado no modo de ajuste da frequência do gunnplexer. Durante esse processo, é também verificado se o botão de mudança de modo é

premido. Além dessa verificação, é ainda garantido que o mostrador vai a zero, isto porque pode acontecer que após registar x impulsos, na altura de actualizar a variável que fica com o número de impulsos anterior (impa), haja uma nova amostragem, e essa amostragem seja zero (não há nenhum veiculo a passar). Deste modo irá ficar registado no display uma velocidade, quando deveria mostrar 0. Essa velocidade fica registada porque quando for verificado se houve uma contagem diferente, ambas as variáveis vão conter zero, não havendo desta forma nova actualização do display. Mas entretanto fica registado um valor no display, até haver uma nova passagem de um veículo.

Quando o botão de modo é premido, passamos para a configuração do ângulo relativo entre o radar e o veículo. Aqui o ângulo pode ser ajustado através dos botões mais e menos. O ângulo é mudado, actualizando o índice da tabela de co-senos, e a variável angulo, que é passada à função display (no modo 1), para ser possível visualizar qual o ângulo seleccionado.

Se o botão de modo for premido mais uma vez, passamos para o modo de ajuste da frequência. Neste modo se o botão mais ou menos for premido é mudado entre a possibilidade de se ter um gunnplexer de 10.5 GHz e um de 24.1GHz. Esta mudança é feita através da actualização da variável c_freq. Para cada um dos gunnplexer’s temos um c_freq diferente. De seguida mostra-se o seu cálculo:

2/*6.3*10000*5_ λ=freqc

1120_0124.01.242570_0286.05.10

≈⇒≈⇒=≈⇒≈⇒=

freqcGHzfofreqcGHzo

λλ

Começando pelo factor de multiplicação 5, este deve-se ao facto de estarmos a

amostrar o sinal a uma taxa de 200 ms. Ficamos assim desta forma com a frequência em Hz. O 10000 advém do facto de termos previamente multiplicado toda a tabela de ângulos por esse valor e o 3.6 para termos um valor em Km/h.

Page 15: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 14

A variável freq (assume o valor 10 ou 24) é usada na chamada a display (modo 2), para poder ser possível ver qual a frequência do gunnplexer seleccionada.

Premindo novamente o botão de modo, fica seleccionado o modo de retenção da velocidade máxima, acendendo-se um led para ser possível fazer a distinção entre este modo e o de velocidade instantânea.

Este modo é em todo semelhante ao de velocidade instantânea, com a diferença do display só ser actualizado quando for detectada uma velocidade superior à actual, além das condições do modo de velocidade instantânea. Quando o veículo sair do raio de detecção do radar, a velocidade é retida por cerca de um segundo, antes de retornar a zero.

Finalmente, se for premido o botão de modo mais uma vez, retorna-se ao modo de velocidade instantânea.

Visto ter sido configurada a porta série, sempre que se envia informação para o

display, também se envia os mesmos dados para porta série, tendo isso, no âmbito de desenvolvimento do trabalho, servido apenas para debuging. Esta funcionalidade poderá vir a ser usada para outras aplicações futuras, como registar velocidades ao longo do tempo, ficando assim estas registadas, podendo depois serem extraídas informações como as velocidades médias de passagem.

O código encontra-se em Anexo.

Teste do RADAR Os primeiros teste foram efectuados em laboratório, consistindo estes, para o condicionamento de sinal, em verificar se após a saída do comparador tínhamos um sinal, do tipo onda quadrada, com uma excursão entre os 0V e 5V. Numa primeira fase ligou-se o gerador de sinal ao circuito, aplicando-se uma onda sinusoidal à sua entrada. Foi verificado que o comparador apresentava à sua saída, como tinha sido projectado, um sinal do tipo onda quadrada, com a excursão desejada (muito perto dos valores de saturação), variando apenas a frequência de acordo com o sinal de entrada. De seguida foi feito o mesmo teste mas ligando desta vez a saída do gunnplexer à entrada do circuito, de modo a verificar se quando não havia alvos em movimento à frente do gunnplexer, não havia sinal à saída do comparador e se com presença de sinal não havia falsas transições do sinal, devido a ruído. Para o ganho projectado na altura, ambos os requisitos foram alcançados. Após ser validado o circuito de condicionamento, foi a vez de submeter o microprocessador a testes. Verificou-se, aplicando uma onda quadrada com uma excursão de 0V a 5V, proveniente do gerador de sinal, e que este fazia uma conversão correcta para velocidade, consoante a frequência aplicada à sua entrada. Neste teste ficou também comprovado que o microprocessador não apresentava qualquer problema em fazer conversões de velocidade, até valores de fim de escala (os 999Km/h impostos, correspondendo a uma frequência de aproximadamente 19.4KHz).

Page 16: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 15

Os testes finais foram efectuados com o circuito completo, no exterior, usando o velocímetro do veículo como referência. O ganho de 100, projectado inicialmente, mostrou-se insuficiente, pelo que devido à falta de disponibilidade foi aumentado logo para 1000. Desta forma não havendo outro condensador para compensar o aumento da resistência, e manter a mesma frequência de corte, os testes foram realizados sem filtro passa alto. O teste consistiu em colocar o radar na berma da estrada, sendo o ângulo do mesmo ajustado para 5º (esta medição foi feita sem recurso a qualquer aparelho de medição), e fazer algumas passagens. Foram registadas as velocidades indicadas pelo velocímetro e pelo radar, as quais são apresentados de seguida:

Velocímetro Radar

20 km/h 19 km/h

40 km/h 38 km/h

60 km/h 55 km/h

>85 km/h 82 km/h >105 km/h 98 km/h

Dos valores registados pode-se supor, visto não terem sido feitas muitas medições e não haver um radar de referência calibrado, que o radar projectado faça uma detecção correcta, já que o erro do velocímetro dos automóveis costuma aumentar com o aumento da velocidade. Partindo deste pressuposto pode-se afirmar que o radar mostrou um muito bom desempenho, visto também, o seu alcance ser próximo dos trinta metros (possivelmente até superior, já que nesse sentido não se fez nenhuma medição). Pese embora que em situação limite (próximo do alcance máximo), as medições oscilam-se muito, podendo isto dever-se ao facto da ausência do filtro passa baixo, que podia ter melhorado o seu desempenho para estas distâncias.

Conclusão Em termo de conclusão, pode-se apenas referir que o projecto inicial era para fazer a medição da velocidade de veículos, mas como o ganho foi aumentado de uma só vez para mil, alvos como pessoas, passaram também a ser detectados, mesmo a distâncias razoáveis (>10 m). Caso houve-se mais tempo podia-se ter calibrado o ganho para só detectar alvos de dimensões superiores (veículos motorizados), tendo em conta a sua aplicação inicial. Sendo esta o radar ficar colocado numa das pontes da FEUP, que passam por cima dos acessos da mesma.

Page 17: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 16

Anexo *-------------------------------------------------------------------------------/

Page 18: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 17

/ / / Sistemas de Telecomunicacoes II 2002/2003 / / / / ee98156 Jose Ferreira / / ee98042 Nuno Jeronimo / / / /-------------------------------------------------------------------------------*/ #include <reg592.h> //define 8051 registers #include <stdio.h> //define I/O functions void timer0(void); void init(void); void display(int v,char tipo); unsigned char counter=0; unsigned int impulsos; sbit modo = P1^0; //atribuicao nomes as portas sbit plus = P1^4; sbit minus =P1^2; sbit led = P1^3; //ATRIBUICOES DISPLAY sbit ce = P1^5; //Clock enable sbit sdata= P1^6; //Serial data sbit sclk = P1^7; //Serial clock void display(int v,char tipo){ //tabela com codificacao de 0-9 mais 'A' e 'F'(pos 10 e 11) char tabela[12][8] = {{1,1,1,1,1,1,0,0},{0,1,1,0,0,0,0,0},{1,1,0,1,1,0,1,0},{1,1,1,1,0,0,1,0},{0,1,1,0,0,1,1,0},{1,0,1,1,0,1,1,0},{1,0,1,1,1,1,1,0},{1,1,1,0,0,0,0,0},{1,1,1,1,1,1,1,0},{1,1,1,1,0,1,1,0},{1,1,1,0,1,1,1,0},{1,0,0,0,1,1,1,0}}; char d,i,j,c,u; char send[36]={1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0}; if(v<999) { send[0]=1; c=v/100; d=(v-c*100)/10; u=v-c*100-d*10; if(tipo==0) //modo de visualizar no modo 0 e 3(normal e vr max.) { for(i=0;i<8;i++){ send[i+1]=tabela[u][i];} //digito das unidades carregado for(i=0;i<8;i++){ send[i+9]=tabela[d][i];} //digito das dezenas carregado for(i=0;i<8;i++){ send[i+17]=tabela[c][i];} //digito das centenas carregado for(i=0;i<11;i++){ //digito dos milhares(nada neste caso) send[i+25]=0;} } /*-----------------------------------------------------------------------------------------------*/ else if(tipo==1) // modo de visualizar no modo 1(angulo) {

Page 19: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 18

for(i=0;i<8;i++){ send[i+1]=tabela[u][i];} //digito das unidades carregado for(i=0;i<8;i++){ send[i+9]=tabela[d][i];} //digito das dezenas carregado for(i=0;i<8;i++){ send[i+17]=0;} //digito das centenas carregado(nada neste caso) for(i=0;i<8;i++){ send[i+25]=tabela[10][i];} //digito dos milhares carregado(letra A neste caso pos=10) for(i=33;i<36;i++){ send[i]=0;} } /*-----------------------------------------------------------------------------------------------*/ else if(tipo==2) // modo de visualizar no modo 2(freq. gun.) { for(i=0;i<8;i++){ send[i+1]=tabela[u][i];} //digito das unidades carregado for(i=0;i<8;i++){ send[i+9]=tabela[d][i];} //digito das dezenas carregado for(i=0;i<8;i++){ send[i+17]=0;} //digito das centenas carregado(nada neste caso) for(i=0;i<8;i++){ send[i+25]=tabela[11][i];} //digito dos milhares carregado(letra F neste caso pos=11) for(i=33;i<36;i++){ send[i]=0;} } } else { } /*----------------------------------------Envio dos dados em serie-----------------------*/ ce=0; //chip enable for(i=0;i<36;i++) //envia dados ja serializados { sdata=send[i]; for(j=0;j<1;j++){} //clock serie sclk=1; //clock serie for(j=0;j<1;j++){} //clock serie sclk=0; //clock serie } ce=1; } void init(void){ char send[36]={1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,0,0,1,0,0,1,1,1,1,0,1,0,0,0,1,1,1,0,0,0,0}; //array de aranque "FEUP" char i,j; SCON = 0x52 | SCON; // SCON TMOD = 0xd1; //Timer0 e Counter1 T2CON= 0x34; //timer2 TH0 =0x63; TL0=0xBF; //de maneira a fazer dar inteiro para 200ms(1us*40000*5) TH1 =0; TL1=0; RACAPL=0xD9 ; //configura porta serie com BAUD RATE 9600 RACAPH=0xff ; AUXR=AUXR & 0xfc; //Uso da memoria externa (nosso caso interna) XDATA

Page 20: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 19

IE=0x8F; counter=0; P1=0; //led de modo vr max. sdata=0; //inicializa entrads do display sclk=0; ce=1; /*------------------------ Display "FEUP" -------------------------------*/ ce=0; for(i=0;i<36;i++) { sdata=send[i]; for(j=0;j<1;j++){} sclk=1; for(j=0;j<1;j++){} sclk=0; } ce=1; /*------------------------------------------------------------------------*/ printf("FEUP\n"); for(impulsos=0;impulsos<34000;impulsos++) //cerca de um segundo em "FEUP" { } impulsos=0; printf("Ready\n"); display(0,0); led=1; TR1=1;TR0=1; //arranca timers (contador e temporizador) } main () { /*------------------------- MAIN -----------------------------*/ unsigned int impa,max,c_freq=2570; // c_freq constante a multiplicar em vr,max para o modo vr max. unsigned char i_cos=0,angulo=0,modo_s=0,freq=10; //indice da tabela cos,valor do angulo para display,modo menu,freq. gun.; unsigned int cos[]= {10000,9961,9848,9659,9396,9063,8660,8191,7660,7071,6427,5735,5000,4226,3420,2588,1736,871}; unsigned long vr=0; init(); /*-------------------------------------------- ciclo principal -----------------------*/ while (1) { //modo normal if(impulsos!=impa && set==1) //se houver contagens calcula velocidade {

Page 21: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 20

set=0; vr=(unsigned long) impulsos*c_freq/cos[i_cos]; //calcula velocidade(Km/h) display((int)vr,0); //envia para display printf("vr=%d impulsos=%d\n",(int)vr,(int)impulsos); impa=impulsos; } if(impulsos==0 && set==1 && vr!=0){ vr=0; display((int)vr,0); printf("vr=%d impulsos=%d\n",(int)vr,(int)impulsos); } if(modo) //activa modo de ajuste de angulo { while(modo){} //garante so uma activacao modo_s=1; display((int)angulo,1); printf("Angulo = %d\n",(int)angulo); } /*--------------------------------------- principio modo angulo -----------------------*/ while(modo_s==1) { if(minus && angulo>0) //reduzir angulo de 5 { while(minus){} angulo-=5; i_cos--; display((int)angulo,1); printf("Angulo = %d\n",(int)angulo); } if(plus && angulo<85) //aumentar angulo de 5 { while(plus){} angulo+=5; i_cos++; display((int)angulo,1); printf("Angulo = %d\n",(int)angulo); } if(modo) { while(modo){} //garante so uma activacao modo_s=2; //activa modo ajuste freq. gun. display((int)freq,2); printf("F %d\n",(int)freq); } } /*------------------------------------------ fim modo angulo -------------------------*/ while(modo_s==2) { if((plus || minus) && freq==10) { while(plus || minus){} freq=24; c_freq=1120; display((int)freq,2); printf("F %d\n",(int)freq); } if((plus || minus) && freq==24) { while(plus || minus){} freq=10; c_freq=2570; display((int)freq,2); printf("F %d\n",(int)freq); } if(modo) { while(modo){} //garante so uma activacao modo_s=3; //activa modo fixacao vr max. led=0; max=0; display(0,0);

Page 22: Sistemas de Telecomunicações IIhmiranda/st2/microcontroller_radar_report.pdf · gunn oscilator fo mixer fo fo±fd fo fd a . página 4 Esquema geral do trabalho O seguinte diagrama

página 21

} } /*------------------------------------- fim modo ajuste freq. gun. -------------------------*/ while(modo_s==3) { if(impulsos!=impa && set==1) //se houver contagens calcula velocidade { set=0; vr=(unsigned long) impulsos*c_freq/cos[i_cos]; //calcula velocidade(Km/h) if(vr>max){max=(int)vr;} //actualiza max display(max,0); //envia para display printf("vr max=%d\n",max); impa=impulsos; } if(impulsos==0 && max!=0 && set==1) //vr chegou a zero, volta-se a nova medicao; { max=0; for(vr=0;vr<17000;vr++) //aguenta valor max aprox. 1s { if(modo){break;} } vr=0; display(max,0); printf("vr max=%d\n",max); } if(modo) { while(modo){} //garante so uma activacao modo_s=0; //volta modo normal led=1; } } /*------------------------------ fim modo fixacao vr max. --------------------------------*/ } /*----------------------------------------- fim ciclo principal --------------------------*/ } /*------------------ interrupcao do timer 1 ----------------------*/ void timer0 (void) interrupt 1 { TH0 =0x63; TL0=0xc3; //mais 4 que na inicializacao para compensar mov's counter++; if(counter==5) //contagem impulsos a cada 200ms { TR1=0; //para contador de impulsos impulsos=256*TH1+TL1; //gurada n. impulsos(L) //gurada n. impulsos(H) set=1; counter=0; TH1=0; //renicializa contadores impulsos TL1=0; TR1=1; //aranca contador de impulsos } }