sexta-feira, 1 de julho de 2016

Pré-apresentação

Depois de um longo período sem postagens, voltamos com a pré-apresentação do projeto. Lembre-se que o projeto ainda não está pronto e a apresentação final será mais dinâmica e com melhor conteúdo.
Essa não será a aparência final do equipamento!


Como é possível notar, foi utilizado um PC para alterar a posição dos motores. Isso se deve ao fato de que ainda utilizamos o software de testes que escrevi. Nele é possível alterar o ângulo de cada servomotor conectado ou todos de uma vez, por meio de comunicação serial com o computador. 
Depois, como é óbvio, utilizaremos um software adequado (já estou escrevendo), amigável e automatizado, que funcionará utilizando apenas o LCD e o teclado matricial de 16 teclas (sem conectar-se a um PC). Mais sobre ele posteriormente. 

Abaixo, uma imagem do painel de controle remoto (ainda fata fixar o LCD e o botão de ligar/desligar, além de alguns cabos):

sábado, 23 de abril de 2016

Diário de bordo 6# - Uma palavra sobre programação

O Arduino, assim como qualquer computador, necessita ser programado para que seja, de alguma forma, útil. Utilizaremos, neste projeto, a linguagem de programação "padrão" do Arduino, que é baseada nas linguagens C e C++. Os exemplos neste post serão, para se assemelhar ao que veremos mais à frente (em posts futuros), em linguagem C (mais sobre linguagens de programação adiante).

É, certamente, difícil introduzir todos os conceitos básicos sobre programação em um pequeno post; para que não se torne exaustivo ler este post, serei breve.

Computadores não compreendem linguagens humanas; tudo o que realmente compreendem traduz-se em instruções passadas em "linguagem de máquina", baseada em operações com binários. Computadores são, de certa forma, complexas e poderosas calculadoras. Normalmente utilizam-se linguagens de programação para criar softwares para computadores: escreve-se o código em linguagem legível para humanos, que depois é "traduzido" para a "linguagem de máquina". C é uma das mais conhecidas e amplamente utilizadas linguagens de programação, apesar de ser consideravelmente antiga (criada em 1972, na AT&T Bell Labs por Dennis Ritchie).

Programas (softwares) são, basicamente, algorítimos --  conjunto de instruções que devem ser seguidas de forma lógica para atingir algum objetivo. Pode-se, por exemplo, considerar uma receita de bolo um simples algorítimo:
"Pegue os ingredientes x, y e z, misture-os e leve o resultado ao forno (dentro de um recipiente); a cada 10 minutos verifique se está pronto e, caso esteja, remova-o do forno imediatamente".
Praticamente qualquer processo lógico pode ser descrito por um algorítimo. 

Podem ocorrer bugs, erros de programação que fazem com que determinado programa não funcione como esperado. A remoção de bugs é uma das partes mais importantes do processo de desenvolvimento de softwares, podendo custar muito tempo. Normalmente, são identificados com o uso do programa, seja em testes ou não.

Veja um exemplo de algorítimo extremamente simples, escrito em linguagem C, que verifica e informa ao usuário se dado número é negativo ou então positivo ou igual a zero:

Este código, por exemplo, pode (possivelmente) ser compreendido por alguém que nunca programou antes com relativa facilidade. Ele, claramente, é "traduzido" à linguagem de máquina para ser executado. Certamente, seria absurdamente mais custoso desenvolvê-lo em linguagem de máquina (prática incomum na maioria das situações). Por motivos óbvios, programas mais complexos demandam algorítimos maiores e complexos, dificultando sua compreensão por inexperientes e, em alguns casos, até mesmos por experientes programadores. Por este motivo, costumeiramente, documenta-se o código de diversas formas, até mesmo dentro do próprio código-fonte, por meio de comentários -- trechos demarcados, ignorados pelo compilador e que, portanto, não se transformam em instruções em linguagem de máquina e têm como objetivo informar (aos humanos) sobre o que é feito em determinado trecho. Observe um exemplo de comentário "em C":

Apenas uma observação: as cores servem apenas para facilitar a visualização. A coloração é adicionada automaticamente pelo editor utilizado, mas sem modificar o arquivo que contém o código (não são armazenadas nele informações sobre a coloração do mesmo).

Pretendemos disponibilizar todo o código fonte escrito para o projeto, conforme for produzido (em linguagem C). 


sexta-feira, 22 de abril de 2016

Diário de bordo 5# - Servomotores

Como dito, agora falaremos mais sobre a escolha dos servos.

Servomotores são motores que recebem, além da "alimentação", um sinal elétrico que determina a posição (rotação) de seu eixo. É composto por um motor elétrico junto a uma caixa de redução, fazendo com que o torque seja ampliado. Além do motor elétrico, possui uma estrutura de controle, que recebe o sinal elétrico e, utilizando-se de sensores, faz o que é devido para que o eixo fique na posição especificada, mesmo que seja feita alguma força contrária (claro, dentro das capacidades do mesmo).

Um dos servomotores de corrente contínua (DC) mais baratos e comuns é o Towerpro Sg90. Dentro da categoria dos "microservos", é ideal para aplicações que não demandem torque muito alto. Ele tem, entretanto, uma desvantagem: suas engrenagens são de nylon, conferindo menor durabilidade se comparado com aqueles que utilizam engrenagens metálicas. A seguir, suas especificações (de acordo com o vendedor):

  • Torque: 1,2 kgf*cm @ 4,8 V
  • Rotação total: 180°
  • Tempo para rotacionar 60° sem carga:  ~0,12 s 
  • Alimentação: 3,0 a 7,2 V
Ainda não decidimos o material que será utilizado para a construção do lançador (conjunto de motores e rodas), mas estimamos que a massa a ser erguida pelo servomotor seja de, aproximadamente, 100 gramas (lançador) mais a massa da barra ("rampa") de alumínio, de 15 gramas (digamos que a barra tenha 15 cm). Desconsideraremos a massa da bolinha, que é ínfima e consideraremos a barra de alumínio como um corpo homogêneo. Utilizaremos a "fórmula" M=F*L*cos(α) (tenha em mente que o torque promovido pelo servo é de 1,2 kgf*cm). É conveniente não utilizar as unidade do S.I. nessa situação: utilizaremos kgf*cm ao invés N*m para o torque.
    1,2 > 0,1*L+0,015*7,5
    L   < 10,875 cm
Ou seja, 100 gramas devem estar a menos de 10,875 cm do eixo de rotação para que o servomotor possa ergui-los. Os 100 gramas representam, no caso, o conjunto de motores e rodas (lançador). Conclui-se que o Sg90 é suficiente para o nosso projeto. Utilizaremos três deles: um para movimentar o braço em Y, outro para movimentar a base em X e mais um para liberar a bolinha quando necessário.

*Para escrever a explicação sobre o que é servomotor, me baseei em um artigo da Wikipédia.

    

quinta-feira, 21 de abril de 2016

INFORMAÇÃO AOS COORDENADORES

Por meio deste, informamos aos Coordenadores da mostra científica que necessitaremos de acesso à rede elétrica para a exposição de nosso projeto. Requisitamos, portanto, uma tomada para ligarmos nosso equipamento.

Diário de bordo 4# - Mudanças no projeto

Após uma pequena pausa para as avaliações bimestrais (A2), voltamos ao projeto com algumas novidades.
Foi constatado que seria mais fácil e simples fazer o lançamento das bolas "de cima para baixo" ao invés do que era planejado ("de baixo para cima"). Assim, eliminamos alguns problemas anteriores:
  • Não utilizaremos o atuador solenoide para fazer com que a bola chegue ao lançador; a gravidade o fará, visto que a bola seguirá trajetória descendente ao invés de ascendente e, portanto, o lançador ficará abaixo do alimentador. Observe a ilustração:
  • O custo do projeto foi reduzido e a funcionalidade continua a mesma
  • O "gatilho"/interruptor (citado em post anterior) não é mais necessário, pois não haverá mais o atuador solenoide. O "gatilho" aumentava significativamente a possibilidade de falha no lançamento, uma vez que este poderia travar ("emperrar") ou, simplesmente, não ser acionado devidamente.
  • Seria bem mais complicado, neste caso específico, fazer com que a bola chegasse ao lançador: com uma mesa pequena, o ângulo entre a superfície da mesma e a rampa de lançamento (onde localizar-se-ia o lançador ) seria extremamente grande. No novo "modelo", a gravidade fará com que a bola dirija-se diretamente ao lançador "sem necessidade de ajuda".
Foi decidido que utilizaremos três servos ao invés de dois, como havia sido citado. Um deles será utilizado para liberar as bolinhas do cano (carregamento) de bolinhas; funcionará como um "alçapão", logo abaixo do orifício inferior do cano. Aliás, os servos não serão do modelo MG90S, pois, após realizar cálculos, foi constatado que os do modelo Sg90 serão suficientes, além de serem mais baratos (será discorrido mais sobre o assunto no próximo post).

Agora, em relação aos preços. Encontramos os equipamentos por valores mais baixos e, portanto, os gastos foram reduzidos. Disponibilizaremos (mais à frente) um sumário do que foi adquirido e o custo total do projeto.

Cogita-se a possibilidade de utilizarmos alumínio para a fazermos rampa de lançamento, visto que este é um material leve, resistente e fácil de trabalhar, além de possuir custo relativamente baixo. Utilizaríamos, no caso, uma régua escolar de alumínio, que custa cerca de R$ 4,00. Não definimos se é a melhor opção.

Para a demonstração de nosso protótipo, pretendemos utilizar bolas de tênis de mesa, em uma "quadra" construída para o projeto. Não estamos certos se a apresentação final será assim, visto que temos espaço limitado e seria complicado simular uma mesa de "pingue-pongue" com o espaço que nos será conferido. Nos informaremos mais e decidiremos a melhor alternativa. Talvez façamos uma "quadra" em escala reduzida.

Foi realizada uma breve análise (sem muita precisão) de um jogo de tênis de mesa, em busca de respostas para a questão do ângulo com o qual a bola deve incidir sobre a mesa para que seja simulado um "rebatimento" real. Talvez comentemos mais depois.

sábado, 2 de abril de 2016

Diário de bordo 3# - O equipamento

Falamos um pouco sobre o projeto em si; agora falaremos sobre o equipamento que pretendemos utilizar.

Antes de tudo, uma lista do que utilizaremos:
  • Fonte de alimentação de computador
  • Botão/interruptor
  • Fios e cabos
  • Jumpers
  • 1 Placa compatível com Arduino Uno
  • 2 micro servos (modelo a determinar)
  • 1 Atuador solenoide
  • Madeira
  • Parafusos (e relacionados)
  • PVC (a determinar)
Agora, falemos sobre:

    Fonte de alimentação de computador
        Melhor alternativa barata para o projeto. Fontes de alimentação ATX fornecem tensões de +3.3V, +5V, +12V, -5V e -12V (DC); fonte AT fornecem +5V, +12V, -5V e -12V (DC). A grande "variedade" no fornecimento de tensões faz delas muito flexíveis. Além disso, comparado ao necessário para o nosso projeto, apresentam alta potência e boa confiabilidade. Ambas as especificações (AT e ATX) permitem a utilização de botões para o acionamento delas (ATX não foi projetada para que um botão fosse ligado diretamente, entretanto, é algo facilmente contornável). 
        Custo: Para nós, R$ 0.00, entretanto, uma usada adequada ao projeto custa, aproximadamente, entre R$ 15.00 e R$ 30.00.

    Botão/interruptor
        Qualquer botão/interruptor que fique ativado "permanentemente". Utilizaremos, possivelmente, um botão retirado de um gabinete AT (botão para fonte AT que, em nosso caso, pode ser adaptado para funcionar com fonte ATX se optarmos por utiliza-la) .
        Custo: Para nós, R$ 0.00, entretanto um novo e adequado ao projeto custa aproximadamente R$ 5,00.
    
    Fios e cabos
        Variados. Não sabemos exatamente quais tipos utilizaremos.

    Placa compatível com Arduino Uno
        Ótima para o nosso projeto. Possui compatibilidade total com o Arduino Uno oficial. Comentaremos mais sobre o Arduino em um post futuro. Acompanha pinos (adaptador macho - macho) e cabo USB para conexão com o computador.
        Custo: R$ 37,00 + Frete

    Micro servos
        Permitem controlar facilmente a posição de algo conectado ao seu eixo; possui equipamento eletrônico embutido que faz com que volte à posição especificada, mesmo se for forçado (desde que não ultrapasse suas capacidades). O modelo escolhido (de acordo com o torque e "velocidade") foi o micro servo MG90S. Comentaremos mais depois.
        Custo: R$ 31,90 * 2 (Frete grátis)

    Atuador solenoide
        Ainda não decidimos se é realmente a melhor opção. Se optarmos por ele, (possivelmente) será comentado sobre ele em um post futuro
         

sexta-feira, 1 de abril de 2016

Diário de bordo 2# - Esboço do projeto

Como mencionado anteriormente, utilizaremos  a plataforma Arduino como base para nosso projeto.
Arduino é um plataforma de prototipagem "open source" (projeto aberto à comunidade), de forma que qualquer um pode criar sua própria versão derivada dela (obedecendo à licença, evidentemente). Utilizaremos, para a redução de custos, uma placa ("Arduino") não oficial.
 
O equipamento será composto por uma base giratória (eixo X) e um braço também giratório (eixo Y); a angulação de ambos será controlada utilizando-se de servo-motores, que permitem o ajuste fino de posição. No braço, haverá um tubo ou outro artefato para conduzir a bola até o ponto de onde será lançada. 

Para impulsionar a bola, utilizarmos um conjunto de dois motores ligados a rodas que giram a uma velocidade constante, como é feito com carrinhos em algumas pistas de brinquedo. Haverá também um atuador solenoide para direcionar a bola até as rodas, que será ativado por um "interruptor sensível"  (fabricado por nós mesmos, utilizando materiais “domésticos”), fechando o circuito quando uma bola “pôr” seu peso sobre ele. O lançador e o atuador serão presos ao braço. Observe a imagem a seguir (gatilho não representado, mas ficará logo à frente do atuador solenoide):
Apesar de não termos testado os métodos para lançamento de bola descritos no post anterior, provavelmente utilizaremos o "método dos discos" : simplesmente, um conjunto de duas rodas opostas (uma em frente à outra) que, girando em sentidos contrários, lançará a bola. Mesmo adicionando o fator rotação, provavelmente a alteração na trajetória (em dadas circunstâncias) será desprezível. Os motores terão torque alto o suficiente para girar com, aproximadamente, a mesma taxa de rotações por minuto, independentemente da angulação (considerando as angulações que serão utilizadas). Em uma situação onde o braço do lançador está a uma grande angulação (em relação à superfície da quadra) a força peso do projétil não deve influenciar tanto. 

Ao ligar o a fonte de alimentação, ou seja, ao ligar o sistema, os motores do lançador começarão a girar e assim continuarão até que o equipamento seja desligado, visto que não há necessidade de controlá-los (a não ser ligar e desligar). Observe o diagrama (não-técnico) a seguir (cinza=neutro; amarelo=controle):