quarta-feira, 21 de janeiro de 2015

Raspberry Pi, Motor brushless, ESC, Hélices e um futuro quadcopter parte 1


Os quadcopters também conhecidos por drones, vem se tornando bem populares. Existem diversas versões hoje que podem ser compradas, variando de poucos à milhares de dólares, entretanto acredito que são poucos os que montam o seu do zero.

À muito tempo que venho querendo também me aventurar nessa empreitada, mas devido ao alto valor das peças, era algo que eu sempre adiava. Nos dias de hoje existem opções cada vez mais baratas ( mesmo que embora a qualidade de algumas peças possa ser questionada ).

O kit apresentado na foto ( sem o Raspberry Pi obviamente ) foi comprado na Aliexpress, mas pode ser encontrado em peças separadas também na DealExtreme.

Como marinheiro de primeira viagem, irei informar o que já aprendi e realizar testes até ter o projeto final em funcionamento.

Um projeto desse tipo pode ter variadas formas e especificações. É necessário escolher quem comandará os ESCs, alguns utilizam placas com microcontroladores ARM, Arduino ou até Raspberry Pi. Alguns fazem a utilização de placas de controle de voo dedicadas como por exemplo o Ardupilot.

Minha meta é utilizar o Raspberry Pi para controlar o quad ou caso eu utilize algum microcontrolador dedicado a isso, utilizar o Raspberry Pi com a câmera oficial, para FPV e determinar outros possíveis usos.

Para que serve cada peça e onde elas se encaixam


Na foto abaixo temos um pequeno motor BLDC( Brushless DC electric motor ), mais conhecido como motor brushless ou em português, sem escovas. Ele é pequeno, mas não se engane, esse motor em questão tem quase 150W e especificação de 1000kV. Essa especificação um tanto incomum para maioria, em kV, quer dizer que ele faz 1000RPM por Volt sem carga ( em nosso caso, sem hélice ). Ao contrário do que alguns podem pensar, não é somente o eixo cilíndrico acima que irá rotacionar, mas sim toda carcaça laranja e prateada, exceto a carcaça laranja de baixo. Esses motores também contam com rolamentos, abaixo( visto da parte externa ) e acima do motor( na parte de dentro ). Na parte de baixo, o X de metal que pode ser visto na foto da capa desse post, é a base para fixar o motor, ela é fixada abaixo do motor com 4 parafusos. 

No caso da minha base de testes para ligar o motor, um pedaço de madeira, fiz 4 furos marcados anteriormente por uma caneta e passei abraçadeiras de nylon( mais conhecidas como enforca gato ou zip tie em inglês ) para fixar. É importante fixar bem o motor caso vá fazer algo parecido, seja onde for, como também fixar o objeto base em algo fixo ou realmente pesado pois cada motor desses gera cerca de 700 gramas de empuxo quando ligados no máximo.



O ESC( Electronic Speed Control ) visto abaixo, em cor amarela, é necessário para controlarmos o motor. Ao contrário de motores DC com escova, os nossos BLDCs necessitam de 3 fases( existem outros tipos com mais fases ) operando em frequências específicas cada uma para que o motor possa girar.


Uma boa fixação de tudo irá impedir o seu motor de sair cortando cabeças por aí.


Como fonte de energia utilizei uma fonte genérica, como os fios são "finos", utilizei 3 fios para 12V e 3 GND para garantir a passagem de corrente com folga. As fitas isolantes serão trocadas por termo retráteis no projeto final.


O cone abaixo, visto também na imagem do começo do post, é o fixador da hélice. Existem outros tipos de cones e também de fixadores que utilizam um anel de borracha. Na primeira imagem do post também pode ser visto 2 hélices diferentes, a comum e a reversa. É necessário a utilização de 2 hélices normais e 2 reversas( com os motores girando ao contrário ) para que o quadcopter não gire sobre si mesmo. É preciso utilizar a bucha de tamanho correto na hélice, a que fique com menos folga no eixo do motor.


Controlando o motor com o Raspberry Pi


O código de exemplo que fiz serve somente para testar um motor por vez. O ESC é controlado via GPIO, a inicialização e controle nesse caso está sendo feita de forma "manual". Inicialmente é preciso iniciar o ESC mantendo o estado em LOW por 20ms e HIGH por 1ms, um barulho típico é soado durante a inicialização. O controle da velocidade do motor é feito variando o estado HIGH de 1 a 2ms, o estado LOW permanece em 20ms.



Os fios utilizados no ESC para controle são branco e preto(gnd). O GND pode ser ligado em qualquer GND do Raspberry Pi e o preto para nosso teste foi ligado no GPIO18.

Utilizamos a biblioteca wiringPi, caso não a tenha baixe a lib utilizando o GIT:

git clone git://git.drogon.net/wiringPi

Caso não tenha o git instalado:

sudo apt-get install git-core

Entre no diretório e rode como root ou sudo:

./build

Esse comando irá compilar e instalar automaticamente a biblioteca.

Se tudo estiver certo basta então apenas compilar:

gcc codigo.c -lwiringPi -o codigo

E rodar ./codigo velocidade velocidademáxima

Exemplo:

./codigo 1200 1300

O controle do ESC/Motor via software no Raspberry Pi sem qualquer condição de tempo real, dificulta a criação de um sistema estável. Já era esperado e foi constatado nesse caso que a utilização da CPU influencia na estabilidade da velocidade de controle enviada ao ESC e consequentemente a velocidade estável do motor.

Vídeo do teste: Raspberry Pi + Motor Brushless + ESC




Projetos que já utilizaram Raspberry Pi's


Ao menos um dos projetos que encontrei, utiliza somente o Raspberry Pi para controlar tudo. O PiCopter tem uma única ligeira diferença, ele utiliza ESCs com comunicação I2C, o que parece melhor para o caso do Raspberry Pi.




Já o owenquad utiliza um Atmega( como o utilizado no Arduino ) para fazer uma ponte de comunicação entre o Raspberry Pi e os motores.




Irei postar conforme for avançando no projeto, inclusive na construção do frame, que será provavelmente de alumínio.

Atualização (30/07/2015): Ainda não tem parte dois, mas temos um outro post sobre um componente que iremos utilizar no quad: Conectando o sensor acelerômetro ADXL345 ao Raspberry Pi e demonstração em OpenGL.

Referências:
https://www.hotslots132.com/understanding-rc-brushless-motor-ratings-a-263.html

11 comentários:

  1. Podia fazer um post de como esta comprando as peças e quanto está gastando nelas para termos uma noção dos gastos, muito bom o projeto tentarei acompanhar xD

    ResponderExcluir
    Respostas
    1. Atualizei o post com a informação onde comprei o KIT. Quanto a noção de gastos eu irei sim em um futuro post fazer esse levantamento de gastos, quando tiver todas as peças. No momento só comprei 2 kits para testar os ESCs e motores.

      Excluir
    2. Vlw, a algum tempo to com vontade de tentar fazer um quadcopter ou algo do tipo mas é meio caro ne, haha, ai sempre acabo desanimando vamos ver se desta vez consigo animar de ir comprando aos poucos pra fazer um.
      Abraços e boa sorte ai! xD

      Excluir
  2. E como vai ser o controle?
    Por bluetooth???Um controle proprio?

    ResponderExcluir
  3. Dica de projeto em curso também com vídeos com tudo explicado.
    http://labs.oneoverzero.org/

    Cumps

    ResponderExcluir
  4. Olá,
    Como esta este projeto?
    Já tem a parte 2? :)

    Até mais.

    ResponderExcluir
    Respostas
    1. Olá Carlos, ainda não tem parte dois pois ainda não comprei os componentes que faltam e também não fiz o frame (a carcaça), então ainda não há previsão. O que tem relacionado é um post sobre o acelerômetro que iremos utilizar no quadcoptero: Conectando o sensor acelerômetro ADXL345 ao Raspberry Pi e demonstração em OpenGL.

      Excluir
  5. Minha idéia é utilizar uma série sensores (Giroscópio, Acelerômetro, Altímetro, proximidade) além dos motores para voo. Minha ideia é fazer um drone autônomo.
    O problema é que eu só sou programador, essa parte de eletrônica eu vou apanhar bastante.
    Uma das coisas que eu fiquei curioso. Como eu conectaria isso tudo na GPIO. será que existem entradas suficiente? poderia me dar umas dicas de onde comprar esses componentes aqui no Br?

    ResponderExcluir
    Respostas
    1. Olá Paulo, muitos desses sensores funcionam com I2C, que contém varios endereços no mesmo canal, ou seja, pela mesma entrada I2C do Raspberry Pi podem ser ligados vários sensores. Existem também algumas placas que já contém integrado vários chips, acelerometro, giroscópio e bussola que facilitam como essas aqui.
      Essa parte de sensores, se for via internet você acha geralmente em lojas que vendem arduino e no mercado livre.

      Excluir