26.12.2014 Views

Desenvolvimento de um Veículo Aéreo Não-Tripulado - LARA ...

Desenvolvimento de um Veículo Aéreo Não-Tripulado - LARA ...

Desenvolvimento de um Veículo Aéreo Não-Tripulado - LARA ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Não chegou<br />

Hea<strong>de</strong>r 1<br />

Não chegou<br />

Hea<strong>de</strong>r 2<br />

Estado<br />

Inicial<br />

Chegou<br />

Hea<strong>de</strong>r 1<br />

Aguardando<br />

Hea<strong>de</strong>r 2<br />

Chegou<br />

Hea<strong>de</strong>r 2<br />

Não chegaram<br />

todos os dados<br />

Aguardando<br />

ID<br />

Checks<strong>um</strong><br />

diferente do<br />

calculado<br />

Calcula<br />

Checks<strong>um</strong><br />

Chegaram<br />

todos<br />

os dados<br />

Armazena<br />

dado<br />

Aguardando<br />

Tamanho (N)<br />

Aguardando<br />

Checks<strong>um</strong><br />

Checks<strong>um</strong><br />

igual ao<br />

calculado<br />

Processa<br />

dados<br />

recebidos<br />

Figura 4.4: Máquina <strong>de</strong> estados para <strong>de</strong>codificação do protocolo <strong>de</strong> comunicação<br />

a <strong>um</strong>a taxa <strong>de</strong> 50 pacotes (com cerca <strong>de</strong> 100 bytes) por segundo. Porém, é importante reconhecer<br />

as limitações - não existe forma <strong>de</strong> corrigir erros a não ser a retransmissão, e o programa está<br />

limitado a 256 bytes <strong>de</strong> dados. O overhead para pequenos pacotes também é significante. Uma<br />

possível melhoria seria o uso <strong>de</strong> <strong>um</strong>a algoritmo como CRC32 ou <strong>um</strong>a variante do Reed-Solomon,<br />

que permitiria a correção dos erros <strong>de</strong> comunicação.<br />

4.4 Gerador <strong>de</strong> PWM<br />

O gerador <strong>de</strong> PWM é <strong>um</strong> dos dispositivos mais importantes da aeronave - sem ele, os sistemas<br />

<strong>de</strong> controle não conseguem atuar sobre os servos. Como esse dispositivo <strong>de</strong>ve ser extremamente<br />

confiável, a idéia foi utilizar o software mais simples possível, evitando a introdução <strong>de</strong> eventuais<br />

bugs no código.<br />

Como visto na seção <strong>de</strong> hardware, esse dispositivo está baseado em <strong>um</strong> microcontrolador Atmel<br />

AVR ATmega328P, ou seja, em <strong>um</strong>a arquitetura <strong>de</strong> 8 bits. A vantagem <strong>de</strong>sse tipo <strong>de</strong> dispositivo<br />

(sem sistema operacional) é o acesso direto aos periféricos internos, como timers, e a redução<br />

máxima na latência das interrupções.<br />

Uma primeira idéia seria utilizar os módulos <strong>de</strong> PWM embutidos em hardware, porém, essa<br />

técnica limitaria o número <strong>de</strong> canais utilizados ao número <strong>de</strong> PWMs do dispositivo (nesse caso,<br />

3). Como são gerar 8 sinais PWM (<strong>um</strong> para cada servo), a abordagem utilizada foi “reaproveitar”<br />

o mesmo timer para todos os canais. Essa abordagem foi utilizada em [2].<br />

O timer foi configurado para gerar <strong>um</strong>a interupção e zerar a cada 1 ms (mudança <strong>de</strong> canal,<br />

“Estado A”), e para gerar <strong>um</strong>a interupção quando o seu valor fosse igual a <strong>um</strong> valor <strong>de</strong> referência<br />

(mudança <strong>de</strong> nível lógico, “Estado B”), entre 0 e 1000 µs. Esse conceito está ilustrado na Figura<br />

4.5.<br />

74

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!