Prottipo de um Mecanismo Embarcado de Auxlio a
Protótipo de um Mecanismo Embarcado de Auxílio a Pilotagem de Aeromodelos Alexandre Zendron Prof. Miguel Alexandre Wisintainer, Orientador
Roteiro �Introdução ◦ Objetivos do trabalho �Fundamentação teórica �Implementação �Operacionalidade �Resultados �Conclusão �Extensões e Discussão
Objetivos �Capturar o posicionamento angular do aeromodelo; �Interpretar o posicionamento do aeromodelo para proceder com a tomada de decisão para a correção do nivelamento; �Acionar os servo mecanismos para proceder com a correção de nível do aeromodelo.
Fundamentação Teórica �Aeromodelo
Navegação �Eixos do aeromodelo �Superfícies de Controle
Recursos �At. Mega 328 �Acelerômetro �Girômetro
Recursos �Servo �Sinal PWM
Recursos �Ardu. Pilot
Recursos �Atomic. IMU
Recursos �Processing IDE �Arduino IDE
Controle Remoto �Receptor �Transmissor
Automação �Sistemas embarcados; �Sistemas de controle de voo; �Sistema de malha fechada; �Filtro de Kalman.
Trabalhos Correlatos �FMA Direct; �Sistema de controle de atitude embarcado para voo autônomo
Requisitos Funcionais �O protótipo deverá utilizar servo mecanismos para a interação com as superfícies de controle; �O sistema deverá ser ativado e desativado pelo piloto; �O sistema deverá interromper a queda do aeromodelo.
Diagrama de Sequência
Protocolo de Comunicação
Atan 2(a, b) A B ngulo Quadrante 100 45º 1º -100 135º 2º 100 -45º 4º -135º 3º -100
Algoritmo de Kalman kal. Data. set. PDot(0, Q_angle - kal. Data. get. P(0, 1)-kal. Data. get. P(1, 0)); kal. Data. set. PDot(1, - kal. Data. get. P(1, 1)); kal. Data. set. PDot(2, - kal. Data. get. P(1, 1)); kal. Data. set. PDot(3, Q_gyro);
Algoritmo de Kalman float float C_0 PCt_1 E K_0 K_1 = = = 1; C_0 * kal. Data. get. P(0, 0); C_0 * kal. Data. get. P(1, 0); R_angle + C_0 * PCt_0; PCt_0 / E; PCt_1 / E;
Algoritmo de Kalman kal. Data. set. P(0, 0, kal. Data. set. P(0, 1, kal. Data. set. P(1, 0, kal. Data. set. P(1, 1, kal. Data. get. P(0, 0) kal. Data. get. P(0, 1) kal. Data. get. P(1, 0) kal. Data. get. P(1, 1) - K_0 K_1 * * t_0); t_1);
Algoritmo de Kalman angle_m = atan 2( accel. Eixo. Medido, accel. Eixo. Referencia); float angle_err = angle_m - kal. Data. get_angulo(); kal. Data. set_angulo(kal. Data. get_angulo()+ (K_0 * angle_err));
Algoritmo de Kalman eixo. X = KEixo. X. kalman(sensor. get. Accel. X(), sensor. get. Accel. Z(), sensor. get. Gyro. X()); eixo. Y = KEixo. Y. kalman(sensor. get. Accel. Y(), sensor. get. Accel. Z(), sensor. get. Gyro. Y());
Programa simulador
Programa simulador
Programa embarcado
Programa embarcado public float get. Posicao. Profundor(int posicao){ float angulo. Servo; if(posicao > 90 || posicao < - 90) angulo. Servo = 0; else{ angulo. Servo = ((map(posicao, 90/sens. Profundor, centro. Servo. Profundormax. Profundor, max. Profundor+centro. Servo. Profundor))*reverso. Profun dor); } if(angulo. Servo-centro. Servo. Profundor > max. Profundor) angulo. Servo = max. Profundor+centro. Servo. Profundor; else if(angulo. Servo < centro. Servo. Profundor-max. Profundor) angulo. Servo = centro. Servo. Profundor-max. Profundor; return angulo. Servo; }
Operacionalidade da Implementação �Centro de Gravidade
Operacionalidade da Implementação �Diagrama de ligação sem o mecanismo
Operacionalidade da Implementação �Diagrama de ligação com o mecanismo
Operacionalidade da Implementação �Montagem no aeromodelo
Resultados
Resultados FMA Direct Sampaio (2006) Este Projeto Sofre Interferência de nuvens X Não necessita GPS para funcionar X Dispositivo é acionado automaticamente X Calcula a posição exata do aeromodelo sem interferência de meios externos Interrompe a queda do aeromodelo X X X
Conclusão
Extensão �Medir velocidade aerodinâmica; �Botões de controle; �Armazenar log; �Verificação antes do voo.
Demonstração
- Slides: 35