terça-feira, 16 de junho de 2015

Usando um Arduino para conduzir ser barco

Para esse projeto foi usado  um micro controlador Arduino Uno, recebendo dados de uma bussula eletrônica HMC5883L. Temos ainda 6 micro botões para entrada de dados, dois relês para acionar o motor e um pequeno LCD  de 2 linhas por 16 colunas para exibição da direção planejada, direção navegada e desvio de rota. O diagrama 1 exibe os componentes inicialmente escolhidos para esta montagem.

Componentes

Para o visor, o módulo shield LCD Keypad 16x2 foi uma solução rápida e perfeita. Em uma única placa já temos o LCD e 6 botões de controle e o melhor de tudo, basta encaixar sobre o Arduino para funcionar.
LCD Keypad Shield

Além disso, esse módulo controla de forma inteligente e prática através de uma única porta analógica (A0) seus 5 botões e deixa as outras portas para uso mais nobre. Cada botão pressionado envia uma tensão diferente para a porta A0, identificando assim a tecla pressionada.

Cada botão pressionado produz uma tensão diferente na porta analógica A0 do Arduino
Desta forma foi possível atribuir a cada botão as seguintes funções:
  • Ao pressionar o botão "Novo Rumo" o conjunto assume a proa atual do barco como rumo a seguir. 
  • Os botões +1, -1, +10 e -10 permitem corrigir a rota em um ou em dez graus, para cima ou para baixo. 
  • O botão "Reset" cancela o programa e libera o piloto para uso manual.
Funções dos Botões

Os relês foram substituídos por um módulo shield já com os dois relês e ainda circuito de proteção. A corrente típica de acionamento esta entre 15 a 20mA e seus contatos podem trabalhar com até 10 Amperes.
Módulo 2 Reles
Para obter a inversão de rotação do motor, os reles foram ligados como uma "Ponte H", observe que o motor só recebe energia quando o estado dos reles forem opostos.


Ponte H com 2 relês para inverter a rotação do motor
Para o acionamento da Roda de Leme, foi escolhido um motor 12V x 1 Ampere, com conjunto redutor de velocidade. Ele gira a 80RPM e possui um torque de 11Kgf a 0,01m, mais que suficiente para acionar meu leme.

Motor 12V x 80RPM x 1A
Por último, temos um módulo Sensor Magnetômetro HMC5883L que funciona como um bússola eletrônica de grande sensibilidade e precisão.
Módulo HMC5883L - Bússola eletrônica de 3 eixos


Atenção:

Este é um projeto que irei desenvolver quando tiver algum tempo disponível. Seu potencial é enorme, porém esta parado no momento, mesmo assim consegui uma grande evolução em relação ao filme acima, como por exemplo a comunicação com um GPS, seguir uma rota nele traçada e a parte mais difícil que foi a compensação de erro que ocorre quando a bússola inclina. Como o código ainda esta todo fragmentado em diversas funções especializadas mais com muito a evoluir, fica inviável sua publicação.




20 comentários:

  1. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  2. Boa noite, Edson! Muito interessante sua ideia. Tenho um veleiro e gostaria de montar um piloto automático menos caro do q os do mercado. Vc pode dar alguma dica sobre o program? Obrigado.

    ResponderExcluir
  3. Ola amigo, no mesmo pier que estou em Paraty tem um veleiro Hakuna Matata, sera que somos vizinhos? Acredito que em breve retornarei neste projeto, já com um protótipo real instalado no barco. A parte de software, microcontroladores, sensores, comunicação com GPS esta pronta, resta fazer algumas partes mecânicas de acionamento. Uma coisa digo com certeza: seu custo sera muito abaixo dos pilotos existente e sua eficiência igual ou melhor. É só esperar para ver. Grande abraço
    Edson - Veleiro Biçço Preto

    ResponderExcluir
    Respostas
    1. Tomara q tenha alguém ai. Hoo galera como vocês estão fazendo pra embarcação definir a proa pelo gps? Tipo como é algoritmo pro sistema determinar o rumo. Vocês estão usando arctang pra achar o angulo azimute? Eu estou fazendo um sistema q utiliza navegação por waypoints entao preciso saber como fazer o sistema calcular o angulo de um ponto A pra um ponto B. Ajudem please

      Excluir
  4. Boa noite, Edson! Muito interessante sua ideia. Tenho um veleiro e gostaria de montar um piloto automático menos caro do q os do mercado. Vc pode dar alguma dica sobre o program? Obrigado.

    ResponderExcluir
    Respostas
    1. Uma boa ideia é aprender como se calibra a bússola, tente entre outros o site: http://hobbylogs.me.pn/?p=17

      Excluir
    2. Tomara q tenha alguém ai. Hoo galera como vocês estão fazendo pra embarcação definir a proa pelo gps? Tipo como é algoritmo pro sistema determinar o rumo. Vocês estão usando arctang pra achar o angulo azimute? Eu estou fazendo um sistema q utiliza navegação por waypoints entao preciso saber como fazer o sistema calcular o angulo de um ponto A pra um ponto B. Ajudem please

      Excluir
  5. O meu Hakuna é um Velamar 22 e fica aqui em Brasília. Tenho uns amigos aí em Parati q têm MJs 38. Os componentes c base na sua ideia já chegaram. Estou estudando o funcionamento de cada parte. Qualquer dica é bem vinda. Um abraço.

    ResponderExcluir
    Respostas
    1. Outra coisa super importante é a comunicação com o GPS: https://guysherman.com/2012/07/18/arduino-and-nmea/

      Excluir
  6. como anda seu projeto, estou tentando montar um.

    ResponderExcluir
  7. E como vão os meus "irmãos de armas".
    RabadakPilot: projecto suspenso por uns tempos. A vida dá voltas e a disponibilidade mental e temporal deixa de ser a mesma. A paixão do Arduino levou-me para projectos divergentes mas o objectivo do RabadakPilot continua em pé. Agora, sem necessidade de rudder feedback. Introduzi um algoritmo P.I.D. para manter o rumo desejado.

    ResponderExcluir
    Respostas
    1. Tomara q tenha alguém ai. Hoo galera como vocês estão fazendo pra embarcação definir a proa pelo gps? Tipo como é algoritmo pro sistema determinar o rumo. Vocês estão usando arctang pra achar o angulo azimute? Eu estou fazendo um sistema q utiliza navegação por waypoints entao preciso saber como fazer o sistema calcular o angulo de um ponto A pra um ponto B. Ajudem please

      Excluir
  8. Este comentário foi removido pelo autor.

    ResponderExcluir
  9. Este comentário foi removido pelo autor.

    ResponderExcluir
  10. Tomara q tenha alguém ai. Hoo galera como vocês estão fazendo pra embarcação definir a proa pelo gps? Tipo como é algoritmo pro sistema determinar o rumo. Vocês estão usando arctang pra achar o angulo azimute? Eu estou fazendo um sistema q utiliza navegação por waypoints entao preciso saber como fazer o sistema calcular o angulo de um ponto A pra um ponto B. Ajudem please

    ResponderExcluir
    Respostas
    1. Se calhar não precisa. Estude um pouco de GPS e NMEA e verá que a informação de posição e próximo waypoint e próximo heading, está lá (entre muitas outras).

      Excluir
  11. Faltou um componente. Um potenciometro para o sensor de leme que seria o feedback para evitar que o motor continuasse forçando o final do curso do leme. E tambem como para informar ao sistema o ponto zero do leme. O software precisará implementar algum tipo de controle PID para poder ajustar as diversas condicoes e evitar a oscilação "hunting"

    ResponderExcluir
  12. Interessante o vosso projeto, vc tem a biblioteca de aplicação?
    Caso vc queira em compartilhar algumas informações, tenho algumas.
    Grato
    Fernando

    ResponderExcluir
  13. Harrah's Cherokee Casino & Hotel - MapyRO
    Harrah's 충청남도 출장샵 Cherokee Casino & 김제 출장샵 Hotel is 울산광역 출장샵 a five-star hotel and 부산광역 출장샵 casino located in the beautiful Great Smoky Mountains of Western North Carolina. Located on 고양 출장샵 185 acres

    ResponderExcluir