Projeto PIC Auto Pilot

Retirado de meu antigo blog deixo aqui este post para referência futuras, quem sabe um dia este projeto e o PIC revivem  😉 , boa leitura:
.
.
.
O PIC Auto Pilot é um projeto, totalmente aberto, de piloto automático para aeromodelos aviões usando microcontroladores PIC ( iniciamente PIC18F4550 @ 48MHz )
Uma das principais diretivas deste projeto é que seja facilmente reproduzido por outros, sem usar componentes caros e/ou difíceis de encontrar.
O programa é  escrito em C e o compilador C18 (gratuito) .
Para quem não estiver muito familiarizado com este microcontrolador PIC ou o compilador, maiores informações e downloads podem ser feitos diretamente no site do fabricante Microchip : wwww.microhip.com

Projeto PIC Auto Pilot – 1 – PWM Servos

Aqui demonstrada a técnica de controle dos servos (e serve para o ESC-controle motor), visto que o PWM do modelo de PIC escolhido – PIC18F4550- não opera c/ frequências baixas como a necessária pra controlar os servos/ motor (50Hz), foi implementado um PWM em software.
Funcionamento:
– O Timer 0 do  PIC foi programado para gerar uma interrupção à cada cada 20mS (=50Hz), então quando ocorre, o PIC gera um pulso variável (e programável) que pode variar de 1 à 2mS que é justamente a largura de pulso para o servo variar seu eixo proporcionalmente em 90o. fig. abaixo (créditos www.servocity.com) :Pulso PWM:

Variação do eixo do Servo:
Servo Angle Schematic 180 3.8

Importante ressaltar que vários sites (a maioria creio) e outras fontes mencionam que a variação de pulso entre 1 à 2mS faz o servo variar em 180o o que não é bem verdade na prática e, inclusive nas especificações dos servos Hitec que vi.

Uma ótima referência de como servos funcionam (em inglês):  http://www.servocity.com/html/how_do_servos_work_.html

O firmware anexo demonstra esta aplicação link:  https://dl.dropbox.com/u/40257323/Interrupts%2018F4550%20C18.zip

Projeto PIC Auto Pilot – 2 – Acelerômetro

Para o controle de Roll e Pitch teremos um acelerômetro que “medirá a inclinação” do avião, o modelo escolhido e usado inicialmente foi o ADXL213 mas, pelo seu alto preço e relativa dificuldade em encontrar foi substituído por outro mais moderno, mais barato e muito popular (graças acredito ao seu uso com Arduino): o modelo MMA7361 que, inclusive consegui umas amostras da Freescale nos EUA.

Tem à venda no Mercado Livre até já numa plaquinha breakout board  🙂 que, facilita bastante por ele ser pequeno e difícil de soldar na mão.

Coloquei um vídeo no YouTube  rodando o softwate de controle de servo pelo acelerômetro, aqui está praticamente direto, sem uma inteligência/ cálculos de compensação exceto o filtro de Kalman que explicarei em seguida, o link: http://www.youtube.com/watch?v=2Ogg3giHqFo

E o código fonte do programa: https://dl.dropbox.com/u/40257323/Aceler-Servo%2018F4550%20C18%28REV0%29.zip

Written by Marcelo Campos

Leave a Comment

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *