quarta-feira, 30 de outubro de 2013

Flight Controller +


Pessoal, nesse post vou mostrar como configurar o Multiwii para um quadricoptero em X utilizando a plaquinha IMU GY-80 de acordo com o meu projeto.

Para começar vamos precisar do compilador para o arduino, o mais prático é o oferecido pelo site oficial do arduino em: 
O código fonte do projeto Multiwii pode ser encontrado em:
http://code.google.com/p/multiwii/downloads/list (esse teste foi realizado com a versão 2.2).

Depois de fazer os downloads, instalar o IDE e descompactar o código do projeto, basta abrir o arquivo "MultiWii.ino" pela IDE do arduino e todos os arquivos do projeto vão abrir em várias abas. 

O primeiro passo é fazer a configuração do projeto. Para isso será necessário ir até a aba do arquivo "config.h" e habilitar algumas definições.


Em "SECTION 1 - BASIC SETUP" escolha o tipo do multi-rotor, basta remover o comentário // do define e deixar como abaixo

#define QUADX

Ainda na mesma seção procure por "Combined IMU Boards" e remova o comentário da GY-80 para habilitar os sensores.

#define GY_80 // Chinese 10 DOF with L3G4200D ADXL345 HMC5883L BMP085, LLC

Agora em "SECTION  4 - ALTERNATE CPUs & BOARDS" procure por "Aux 2 Pin" e remova o comentário para ativar o AUX2 no pino 12 do arduino (essa configuração é necessária para utilizar o AUX2 no layout que desenvolvi).

#define RCAUXPIN12

Pronto, as configurações necessárias para testar os código já estão feitas. Agora vou mostrar umas configurações opcionais.

Em "SECTION  2 - COPTER TYPE SPECIFIC OPTIONS" procure por "ARM/DISARM". Nessa configuração é possível ligar os motores com um comando no stick do Yaw ou no do Pitch.

Definindo:

#define ALLOW_ARM_DISARM_VIA_TX_YAW

O multi-rotor vai ligar os motores quando o stick do throttle/yaw for colocado todo para baixo e para direita e desligar quando for colocado para baixo e para esquerda.

Definindo:

#define ALLOW_ARM_DISARM_VIA_TX_ROLL

O multi-rotor vai ligar os motores quando o stick do pitch/roll for colocado todo para baixo e para direita e desligar quando for colocado para baixo e para esquerda.

Na mesma seção em "Cam Stabilisation" é possível ligar o controle para os servos do gimbal.

Definindo:

#define SERVO_MIX_TILT

O gimbal vai funcionar como no sistema SUPER SIMPLE GIMBAL (SSG) que achei genial e pretendo montar esse para o meu quad. Mais sobre esse sistema basta ler esse tópico:
http://www.rcgroups.com/forums/showthread.php?t=1793759 (No tópico fala que é para placa KK2 mas essa versão do Multiwii já tem suporte, eu testei esse modo :D).

Definindo:

#define SERVO_TILT

Os servos vão funcionar do modo tradicional para o gimbal.
Caso não for usar o gimbal, basta deixar as duas definições comentadas.


Abaixo segue uma imagem com as especificações para ligar os ESCs e os receptor.


Também tive que fazer um cabo para ligar os pinos A4 e A5 do arduino no circuito. Usei um pedaço de cabo flat de pc.


Lembrando que foi necessário remover o jumper para isolar a alimentação do arduino e do receptor, no caso eu utilizei outra fonte de energia para o receptor. Quer uma explicação? leia isso:


Com o jumper removido, agora segue o vídeo com o teste feito na minha placa controladora de voo.



Até

quarta-feira, 23 de outubro de 2013

Flight Controller

Finalmente a controladora de voo ficou pronta, abaixo segue as imagens.


Chequei todas as conexões da placa para ter certeza que as ligações iriam ficar corretas como no layout. Em seguida, passei esmalte preto para dar um melhor visual (não sei se ficou melhor hehe) e então soldei os componentes. Como dá para ver, o Arduino Pro Mini e a GY-80 encaixaram perfeitamente nos sockets =]
Depois de ter tudo conectado, liguei o FTDI no arduino e fiz upload dos códigos para testar os sensores, felizmente tudo correu bem. O próximo passo foi fazer o upload do código do projeto Multiwii e realizar alguns testes. No segundo post sobre a minha controladora vou detalhar mais como fiz as configurações do código, as ligações e os testes.

Por enquanto é isso.

Até

terça-feira, 15 de outubro de 2013

Layout Flight Controller

Pessoal, comecei a bolar o layout da minha controladora de voo. Baixei um programa free chamado PCBartist, ele é bem legal pois você pode ter certeza das medidas de distância entre conectores e componentes. Comecei a fazer as conexões da minha plaquinha IMU de acordo com o que aprendi e as conexões para ESCs e Receptor seguindo os diagramas do projeto Multiwii.

Eis o meu layout:


Abaixo segue a imagem da placa de fenolite com o layout feito a mão. (Esse layout está um pouco diferente, pois acabei fazendo umas melhorias depois que a placa já estava corroída e esse foi o segundo modelo que fiz então estava sem saco para fazer mais uma :P)


Deu um pouco de trabalho, mas como a impressão pelo PCBartist tem o tamanho real, então basta colocar o papel impresso sobre a placa de fenolite e marcar os pontos onde vão ser perfurados, assim dá para ter uma noção das distâncias. Para quem quer facilidade, existe um papel vendido no mercado livre (aqui e aqui) que ao utilizar o ferro de passar sobre o papel térmico e esse sobre a placa, assim o layout é transferido.

Abaixo segue a placa já corroída no percloreto de ferro. Ficou até legal!


Logo vou colocar os conectores ai venho postar o resultado final.

Até

segunda-feira, 14 de outubro de 2013

Testando Arduino e Sensores

Pessoal, desde que recebi as placas do Arduino Pro Mini, FTDI e sensores (GY-80) comecei a fazer alguns testes antes de colocar o código do projeto Multiwii. Agora vou mostrar como são feitas as conexões entre esses circuitos.

Para fazer os testes vão ser necessários o driver para o FTDI que pode ser encontrado em http://www.ftdichip.com/Drivers/VCP.htm e a IDE para programar o arduino que pode ser encontrado em http://arduino.cc/en/Main/Software#toc1. Para quem não sabe IDE é sigla para Integrated Development Environment que é um ambiente onde é possível desenvolver códigos, compilá-los e no caso dessa IDE é possível fazer o upload do arquivo binário direto na memória do CI (Circuito Integrado) do arduino que é o Atmega328-P.

Abaixo segue a imagem das minhas placas Arduino Pro Mini e FTDI com as ligações destacadas:
Como pode ser visto a ligação vai ficar assim:

Arduino           FTDI
----------------------
DRT   <--->   DRT
TX      <--->   RX
RX      <--->   TX
VBUS <--->   5V
CTS    (não ligar em nada)
GND   <--->   GND

DRT serve para colocar o Arduino Pro Mini no estado de update de firmware.
TX e RX são para comunicação.
VBUS e GND são para alimentação, quando o FTDI for ligado no USB ele vai energizar o arduino por meio do pino VBUS. Nunca ligue o arduino em outra fonte de energia quando ele estiver ligado ao FTDI.

Abaixo segue um código simples para testar o seu arduino e FTDI:

int inByte = 0;
int led = 13; //Utilizando pino 13 que tem um LED integrado

void setup()
{
  Serial.begin(9600);
  while (!Serial) {
    ;
  }

  pinMode(led, OUTPUT); //Colocando o pino 13 em modo de saída
}

void loop()
{
  if (Serial.available() > 0)
  {
    inByte = Serial.read();
    if (inByte == 49) //Número 1 no teclado
    {
      digitalWrite(led, HIGH); //Pino 13 em high (energizado)
      Serial.println("Ligado"); //Manda o texto pelo FTDI 
    } 
    else if (inByte == 50) //Número 2 no teclado
    {
      digitalWrite(led, LOW); //Pino 13 em low (sem energia) 
      Serial.println("Desligado"); //Manda o texto pelo FTDI
    }
    delay(30); 
  }  
}

Depois de fazer o download da IDE, é necessário fazer algumas configurações iniciais:
  1. Abra a mesma, vá ao menu Tools > Board e selecione "Arduino Pro Mini (5V, 16 MHz) /w Atmega328" caso esse seja seu arduino;
  2. Agora vá ao menu Tools > Serial Port e selecione a porta COM criada pelo driver do FTDI. Se não sabe qual escolher, você pode testar todas (acredito que não tenha muitas) ou procurar no gerenciamento do computador. Basta ir ao "Menu Iniciar" usar o botão direito do mouse na opção "Computador", escolher "Gerenciar", clicar no menu em "Gerenciador de dispositivos", depois procurar em "Portas (COM e LPT)". Você deve encontrar "USB Serial Port (X)" onde X é a porta COM procurada.
Feito as configurações, agora cole o código na tela da IDE e depois clique no botão "Upload" (Botão com uma seta para direita). Se não ocorrer nenhum erro, agora basta ir ao menu Tools > Serial Monitor ou pressionar Ctrl+Shift+M para abrir o serial monitor onde será possível enviar os comandos e ver o retorno.
Agora aperte os números 1 ou 2 na caixa de texto e pressione enter. O LED integrado do arduino deve acender ou apagar de acordo com o seu comando =D

Agora vamos para a ligação e teste dos sensores. O arduino e o sensores se comunicam através de barramento I2C (Inter-Integrated Circuit), onde o arduino age como mestre e o GY-80 como escravo. Esse barramento de comunicação é interessante por permitir que vários dispositivos sejam ligados no mesmo, cada qual tem um número de identificação para comunicação direta. Abaixo segue a imagem da minha placa GY-80 e as ligações em destaque. Só lembrando que a placa GY-80 já tem suporte no código do Multiwii...

Como pode ser visto as ligações ficaram assim:

Arduino           GY-80
------------------------
A4     <----->   SDA
A5     <----->   SCL
5V     <----->   VCC_IN
GND <----->   GND

Apenas com essas ligações vai ser possível ler os dados dos sensores na GY-80, no entanto eventualmente podem ocorrer alguns erros nas leituras devido a oscilações ocorridas quando nenhum dado esta passando pelo barramento. Para corrigir o problema é necessário fazer um pull-up com resistores de 2,2k Ohms ligados entre o A4/A5 e o 5V do arduino (para entender mais sobre isso leia pull-up de resistores). Dessa forma, quando a placa GY-80 não estiver comunicando com o arduino, os valores das saídas SCL/SDA vão estar em high, ou seja, vão estar energizados e não mais oscilando.

Agora que as ligações estão corretas, mantenha o FTDI também conectado ao arduino. É só testar os códigos do link abaixo. Esses são fornecidos junto com o pacote de instruções da placa, mas tive que fazer alterações, pois uma biblioteca antiga de comunicação I2C estava sendo usada. Quando fizer o upload do código, abra o "Serial Monitor" para ver os resultados. 

Link dos códigos de teste:

Link dos datasheets:


Por enquanto é isso.

Até

Corrida de multi-rotor

Pessoal, encontrei esse vídeo que parece uma corrida de multi-rotores ou uma tentativa hehe. De qualquer jeito o vídeo é bem legal.




Até

quinta-feira, 10 de outubro de 2013

Guia Básico

Pessoal, comecei a escrever um artigo que vou postar em partes. Nele eu vou falar sobre o que aprendi acerca dos multi-rotores utilizados no aeromodelismo.

O link para o artigo é esse: http://www.quad.marksr.com.br/p/guia-basico-parte-1.html

Também fiz um menu similar ao do arquivo do blog que permite fácil acesso a cada tópico do artigo, ele está na lateral direita do blog.


É isso,

até

sexta-feira, 4 de outubro de 2013

Carregador de Baterias

Fotos do carregador Turnigy Accucell 6, eu já tinha recebido ele há um tempo, mas ainda não tinha usado para carregar, então ele ainda estava na caixa. O carregador e outros itens chegaram no segundo pacote que pedi pela HobbyKing.



Pelo que entendi, o melhor modo para carregar baterias LiPo com mais de uma célula é o balanceamento. Carregando dessa forma a bateria vai ter maior vida útil.

Para balancear LiPo 3S você deve pressionar as setas para mudar os menus até encontrar 'LiPo BATT' em seguida pressione 'Enter'.




No menu 'LiPo BATT' pressione as setas até encontrar o menu 'LiPo BALANCE'. Agora você deve saber a taxa de carga da sua bateria. Como assim taxa de carga?? Eu deveria explicar isso nos guias que estou tentando escrever, mas como não terminei ainda vou explicar aqui mesmo.

Para começar existem três coisas devem ser verificadas ao escolher um bateria LiPo:
  • Primeiro - a quantidade de células, sabendo esse valor dá para calcular a tensão total da bateria, como cada célula tem 3,7V então basta multiplicar pela quantidade de células. Nas baterias essa quantidade vem representada por um número seguido de um 'S';
  • Segundo - a taxa de descarga da bateria, essa é representada com um número seguido de um 'C'. Não se enganem, esse 'C' não tem relação com a unidade coulomb, provavelmente essa letra vem da palavra charge do inglês que significa 'carga'. Esse número é relacionado com a quantidade de Amperes hora (Ah) fornecidos pela bateria, ou seja, uma bateria com 2650mAh (como a minha), pode fornecer 2,65 Amperes (A) continuamente no período de 1 hora. Porém, em um quadricoptero (tomando como base os motores que comprei) cada motor vai puxar em torno de 12A no máximo. Como saber se a bateria vai aguentar fornecer isso?? Agora que é necessário saber o valor de descarga da bateria, o máximo de amperes que uma bateria LiPo fornece é a quantidade de 'C' vezes a carga que ela armazena. Ex: A bateria em questão com 2650mAh ou 2,65Ah com 25-50C pode fornecer continuamente 25C*2.65Ah que é igual a 66,25A (claro que consumindo essa quantidade de amperes a carga vai acabar em muito menos tempo que 1 hora), então esse valor está dentro do necessário para os quatro motores que vão requerer 48A em sua máxima potencia. O outro valor é a taxa de descarga máxima 50C que seria 132,5A para essa bateria, é preciso tomar cuidado para nunca chegar nem passar dessa quantidade, pois a bateria vai estragar ou pode entrar em combustão;
  • Terceiro - a taxa de carga. É o que queria falar desde o começo... A taxa de carga funciona como a taxa de descarga, mas esse valor é muito menor, o mais comum é que seja 1C então uma bateria de 2000mAh pode ser carregada em no máximo 1C*2Ah que é igual a 2A. Vi recomendações que não carregar ao máximo prolonga a vida útil da bateria, então uns 0,7C estaria bom. No caso da minha bateria que tem tecnologia nano-tech, então a taxa de carga dela chega em 5C, no entanto eu não passo de 2C até porque esse carregador não carrega mais que 6A. Em 2C essa bateria seria carregada a 5,3A.

Agora que já esta explicado como calcula a taxa de carga em amperes, vamos voltar para o menu do carregador. No menu 'LiPo BALANCE' pressione 'Enter' e com as setas defina o valor em amperes para carregar a bateria. Pressione 'Enter' novamente e defina tensão total. Então para começar a carregar basta segurar o botão 'Enter' até o carregador apitar e pedir uma confirmação. Para confirmar pressione 'enter'. Se as conexões estiverem corretas o carregamento vai ser iniciado, caso contrário o carregador vai acusar um erro.


Pensando em poder carregar minhas duas baterias juntas, comprei esse adaptador para carregar duas baterias LiPo 3S. Funciona assim, basta ligar o plug de balanceamento das baterias no adaptador, depois no adaptador é só ligar o plug XT60 no carregador e o plug de balanceamento(fake) também no carregador. Não tem como errar esses plugs porque eles só encaixam do lado correto. Os plug de saída de tensão das baterias ficam sem ligar em nada mesmo... Em seguida é ligar o carregador e carregar as baterias como uma LiPo 6S. Lembrando que as duas baterias devem ser idênticas.


Para carregar as baterias em segurança, também comprei esse pacote protetor, eu carrego e guardo as baterias dentro dele. É sempre bom prevenir, pois vi casos que essas baterias LiPo entraram em combustão quando carregando. Acredito que os carregadores foram a causa.


Por fim, tive que fazer um adaptador para o plug da minha bateria que é HXT e no carregador vem um XT60, pois esqueci de comprar um pronto. Para encaixar no XT60, usei dois conectores fêmea de 3.5mm, ficou uma beleza, basta tomar cuidado para não ligar invertido :D



Por enquanto é isso.

Até