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 ...
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