Xcopter – Configuração da Controladora (parte 3)

2 de Agosto de 2015

controller_mpng

Configuração do buzzer

Neste terceiro artigo sobre a controladora vou explicar como configurar o suporte para o buzzer. Um dos constrangimentos será alterar o código fonte para suportar a lógica negativa que o transístor NPN existente na placa do buzzer introduz e que aumenta a quantidade de linhas de código.

Os ficheiros a serem alterados são o ArduCopter/config.h, ArduCopter/defines.h e ArduCopter/leds.pde. Editar os ficheiros com a ferramenta do compilador Arduino (ou outra) e fazer as alterações de acordo com as indicações descritas em baixo. Ter em atenção que com a adição de novas linhas em alguns dos ficheiro, as linhas de referência indicadas mudam de sítio.

ArduCopter/config.h

Linha 82 antes:

#define PIEZO_PIN AN3

Linha 82 depois:

#define PIEZO_PIN 46

Linha 270 antes:

#define COPTER_LED_1 AN4 // Motor or Aux LED

Linha 270 depois:

#define COPTER_LED_1 AN2 // Motor or Aux LED

Linha 271 antes:

#define COPTER_LED_2 AN5 // Motor LED

Linha 271 depois:

#define COPTER_LED_2 AN3 // Motor LED

Linha 272 antes:

#define COPTER_LED_3 AN6 // Motor or GPS LED

Linha 272 depois:

#define COPTER_LED_3 AN4 // Motor or GPS LED

ArduCopter/defines.h

Linha 374 antes:

#define AN5 59 // direct GPIO pin, default as analog input, next to SW2

Linha 374 depois:

#define AN5 46 // direct GPIO pin, default as analog input, next to SW2

Linha 400 antes:

#define PIEZO_PIN AN3

Linha 400 depois:

#define PIEZO_PIN 46

ArduCopter/leds.pde

Adicionar as seguintes linhas na linha 49 para inverter a lógica na altura da inicialização da controladora:

if (g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER) {
 digitalWrite(PIEZO_PIN,HIGH);
 }

e deve ficar da seguinte forma:

[...]
pinMode(COPTER_LED_7, OUTPUT); //Motor or GPS LED
pinMode(COPTER_LED_8, OUTPUT); //Motor or GPS LED
if (g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER) {
 digitalWrite(PIEZO_PIN,HIGH);
 }
if (!(g.copter_leds_mode & COPTER_LEDS_BITMASK_BEEPER)) {
 piezo_beep();
 }
[...]

Linha 296 antes:

digitalWrite(PIEZO_PIN,HIGH);

Linha 296 depois:

digitalWrite(PIEZO_PIN,LOW);

Linha 302 antes:

digitalWrite(PIEZO_PIN,LOW);

Linha 302 depois:

digitalWrite(PIEZO_PIN,HIGH);

O código está pronto para ser compilado e carregado na controladora como anteriormente explicado. Sugiro que antes de se fazer esta operação e caso já se tenha estado a configurar e a calibrar os parâmetros APM, se faça um backup da configuração utilizando a opção para o efeito do Mission Planner disponível nas configurações avançadas (Advanced Params). Esta operação pode facilitar a reconfiguração caso se percam os dados por alguma razão.

O buzzer deverá ser ligado na porta 46 da controladora tendo em atenção qual o pino que deve ligar à saída de sinal, aos 5V e à massa. Agora quando se for armar a controladora o buzzer deve apitar 2 vezes quando se dá a indicação de armar e poucou depois de fazer as calibrações iniciais apita mais 2 vezes. Quando desarmar deverá apitar 1 vez mas deve ser também confirmado com o LED da controladora qual o estado.

Assim encerra esta parte do artigo sobre a configuração do firmware MegaPirateNG para suportar o buzzer. Espero que tenha sido útil e que mesmo que não se pense utilizar o buzzer se fique a perceber um pouco melhor como realizar pequenas alterações ao código. Dada a complexidade e funcionalidades implementadas na APM não é fácil fazer alterações mas a bem dizer, este firmware já inclui quase tudo o que se pode querer para controlar um multicopter.

Xcopter – Configuração da Controladora (parte 2)

7 de Julho de 2015

controller_mpng

Preparação do Código

Nesta segunda parte vou dar continuidade ao artigo anterior e mostrar as configurações necessárias para suportar a minha controladora. É necessário editar dois ficheiros, o ArduCopter/APM_Config.h e também o libraries/AP_HAL_MPNG/RCInput_MPNG.cpp que se encontram no directório do código fonte. Pode editar-se utilizando a ferramenta de compilação adaptada do Arduino ou então um editor de texto como o Notepad++.

No primeiro ficheiro configura-se o suporte geral do firmware para o modelo da controladora, o protocolo do GPS e o formato da frame. Aproveito também este ficheiro para desabilitar algumas funcionalidades que não uso ou não são suportadas pela controladora como o logging, o gimbal ou o disparar de cameras fotográficas, no fim até se poupa algum espaço na memória.

O segundo ficheiro permite escolher o tipo de codificação dos dados vindos do receptor e alterar a sequência de entrada das ligações. Como no meu caso eu queria manter a compatibilidade com MultiWii escolhi as opções indicadas mas pode ser qualquer outra desde se que se mantenha a coerência e funcione.

Como é fácil de encontrar e perceber as alterações a fazer neste dois ficheiros deixo aqui o resumo das mesmas para cada um deles. Todas as outras opções devem ser deixadas comentadas ou como estão.

Ficheiro ArduCopter/APM_Config.h

#define MPNG_BOARD_TYPE MULTIWII_PRO_EZ3_BLACK
#define GPS_PROTOCOL GPS_PROTOCOL_UBLOX
#define FRAME_CONFIG QUAD_FRAME
#define LOGGING_ENABLED DISABLED // disable dataflash logging to save 11K of flash space
#define MOUNT DISABLED // disable the camera gimbal to save 8K of flash space
#define CAMERA DISABLED // disable camera trigger to save 1k of flash

Ficheiro libraries/AP_HAL_MPNG/RCInput_MPNG.cpp

#define SERIAL_PPM SERIAL_PPM_DISABLED
#define RC_MAPPING RC_MAP_MULTIWII

Depois de editar os ficheiros é gravá-los e na ferramenta de compilação carregar no botão “Verify”. Se tudo estiver correcto estamos em condições de instalar o novo firmware na controladora carregando na tecla “Upload”. Em seguida é proceder com a configuração do APM:Copter tal como indicado na página “First Time Setup” da documentação oficial e ler também os artigos do blog sobre o assunto.

A controladora está nesta altura pronta para os primeiros voos de teste e afinações como indicado na página “First Flight with Copter“. No próximo artigo vou falar dos outros ficheiros e das alterações feitas para suportar o buzzer sendo que o processo é em tudo semelhante ao que foi feito até aqui.

Resumo dos Links

First Time Setup: http://copter.ardupilot.com/wiki/initial-setup/

First Flight with Copter: http://copter.ardupilot.com/wiki/flying-arducopter/

Xcopter – E aumenta a temperatura

5 de Julho de 2015

IMG_20150704_121806

Ultimamente tenho tido algumas coisas para acrescentar ao blog e esta é mais uma delas. No último Sábado fui até ao local do costume fazer uns voos e ajudar a eliminar o stress. Durante a primeira bateria andei devagar de um lado para o outro embora tenha tido uma pequena situação com a árvore do costume e com uma cerca, nada mais aconteceu.

Nas duas situações o Xcopter estava longe e torna-se difícil ter a noção real das distâncias. No caso da árvore se calhar não estava tão perto como pensava mas antes que perdesse o controlo preferi puxar o Xcopter. Em relação à cerca pensava que estava mais longe dela mas mesmo assim decidi levantar um pouco o Xcopter e ainda bem que o fiz como verifiquei depois no video.

Na paragem para trocar a primeira bateria verifiquei como é normal a temperatura dos ESCs e da base dos motores. Desta vez estavam bem quentinhos, não queimava os dedos mas nitidamente a temperatura era acima do normal. Coloquei a segunda bateria e esperei uns minutos no chão para arrefecer os componentes antes de levantar voo de novo.

Aos 7 minutos da segunda bateria aterrei para verificar a temperatura dos ESCs e da base dos motores que estavam bem quentinhos, quase queimavam os dedos. Os motores de trás estavam um pouco mais quentes que os da frente. Acabei por prolongar a paragem técnica e esperar que os ESCs e motores baixassem de temperatura antes de levantar de novo para acabar a bateria.

A temperatura do ar estava um pouco alta mas nada de especial, uns 26 graus que são perfeitamente aceitáveis para voar sem que os componentes eléctricos devam sofrer aquecimento excessivo. Já estava à espera que com o aumento de temperatura ambiente os ESCs e motores trabalhassem mais quentes desde que passei para 4S mas não tanto.

Creio que está na altura de encontrar novos motores que estejam preparados para 4S e que trabalhem de forma mais eficiente. Com a troca até sou capaz de ganhar em autonomia e ter menos vibrações no conjunto. A dúvida que agora se coloca é que motores escolher, vou ter de procurar e tentar aconselhar-me com quem possa ajudar.

Deixo também um video onde se pode ver andorinhas a andar à volta do Xcopter e sem se atrapalharem com a intrusão. Os animais normalmente estão habituados a lidar com elementos estranhos, afinal de contas ao contrário do que se chegou a pensar, os passáros não chocam com as torres eólicas.

Xcopter – Algo aconteceu…

2 de Julho de 2015

IMG_20150423_101330

Há voos que não tenho nada de particular a assinalar mas desta última vez algo aconteceu. Já tinha gasto a primeira bateria e o alarme LiPo estava a apitar senão quando ao me aproximar para aterrar e quando virava a “traseira” para mim, o Xcopter deixa de reagir aos comandos. Faz uns movimentos bruscos e continuo sem conseguir fazer nada com os comandos.

Alterno entre modos de voo rapidamente (estava a voar em modo Stabilize) e lá consigo ter uma reacção qualquer mas mesmo assim nas várias tentativas que fiz, não conseguia aterrar. Numa das tentivas ia-me espalhando mas mesmo mesmo antes de bater com força consigo que suba rapidamente (acho que ainda tocou ao de leve no chão).

Faço mais umas tentativas para aterrar e as tantas está a descer a uma velocidade rápida mas aceitável, deixei-o aterrar por ele e lá ficou. Não percebi o que aconteceu, já vi o video e a telemetria obtida por Bluetooth mas continuo sem pistas. Com um pouco de receio voei a segunda bateria mas nada aconteceu, voou sem problemas. Está aqui um mistério…


Seguir

Get every new post delivered to your Inbox.