UNVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E ... · Palavras-chave: lançador de projetil,...

37
UNVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS ENGENHARIA DA COMPUTAÇÃO Daniel Cardoso de Morais LANÇADOR DE PROJÉTEIS CONFIGURÁVEL E AUTOMATIZADO Orientador: Maurício Perretto Curitiba, 2015

Transcript of UNVERSIDADE POSITIVO NÚCLEO DE CIÊNCIAS EXATAS E ... · Palavras-chave: lançador de projetil,...

UNVERSIDADE POSITIVO

NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS

ENGENHARIA DA COMPUTAÇÃO

Daniel Cardoso

de Morais

LANÇADOR DE PROJÉTEIS

CONFIGURÁVEL E

AUTOMATIZADO

Orientador: Maurício Perretto

Curitiba, 2015

RESUMO

A física mecânica clássica é uma área da ciência muito importante para o cotidiano. O estudo

desta área possibilitou inúmeros benefícios e facilidades a sociedade, como o entendimento do

movimento de planetas a até a fabricação de automóveis. Por ser uma área de extrema importância,

é crucial poder transmitir aos estudantes esta matéria com os melhores recursos possíveis, tanto na

teoria quanto na prática.

Um dos assuntos da física mecânica clássica é o estudo de movimento de projéteis. Este

assunto está presente em nosso cotidiano diariamente, como por exemplo em uma pacífica partida

de basquete, onde o atleta tem como principal objetivo acertar uma bola dentro de um arco,

posicionado em uma distância bem acima de sua altura, ou também em um hostil campo de batalha,

aonde um atirador de elite precisa acertar seu alvo a uma grade distância. Em ambos exemplos, os

indivíduos precisam utilizar seu senso de orientação para conseguir seus objetivos: O atirador de elite

precisa posicionar sua arma em uma determinada posição, considerar a força da gravidade no projétil

e efetuar o disparo. Já o atleta, para acertar uma cesta de 3 pontos, além de mirar e considerar a

gravidade, precisa também exercer uma força na bola suficiente para atingir a altura e distância da

cesta.

Visando auxiliar um estudante de física a entender essas situações, este projeto tem como proposta a construção de um lançador de projéteis configurável e automatizado, com o intuito de melhorar a visualização prática das Leis de Newton, no qual o usuário interage com um sistema, informando-o dados como ângulo vertical e força. O sistema automaticamente apontará o lançador para o ângulo desejado, calculara e aplicara a força no projétil. Ao mesmo tempo, o sistema calculara informações como velocidades, altura e distância a ser alcançada pelo projétil até o momento estacionário. Estes dados são mostrados ao usuário assim que o mesmo inserir o ângulo e a força desejada no sistema. Assim que o projétil sair do lançador, sensores são usados para detectar o instante do lançamento do projetil e da chegada a uma base. Com isso, tem-se o tempo de deslocamento do projétil, que também será informado pelo sistema.

Palavras-chave: lançador de projetil, automatizado, configurável, movimento de projétil, mecânica

clássica.

ABSTRACT

The classic mechanical physics is a very important area of science to everyday life. The study

of this area allowed us countless benefits and well-being to society. Because it is an area of extreme importance, it is crucial to transmit students the subject with the best possible resources, both in theory and in practice.

One of the classical mechanics of physics area is the projectile motion study. This subject is

present in our daily lives every day, such as in a peaceful basketball game where the player aims to hit a ball into a hoop, positioned at a distance well above its height, or also in a hostile camp Battle, where a sniper needs to hit the target at a great distance. In both instances, both individuals needs to use their sense of direction to achieve their goals: The sniper needs to position his weapon in a certain position, considering the force of gravity in the projectile and make the shot. The athlete in order to hit a 3-point basket, as well as aim and consider gravity, must also exert a force on the ball enough to reach the height and distance of the basket.

Aiming to help a physics student to understand these situations, this project proposes the

construction of a automatic and configurable projectile launcher, in order to improve the practical view of Newton's Laws, in which the user interacts with a system, inputting data such as vertical angle and strength. The system automatically would point the launcher to the desired angle, calculate and apply the force on the projectile. At the same time, the system will calculate information such as speed, time and distance to reach by the projectile until the stationary time. These data will be displayed to the user as soon as it enter the angle and the desired force in the system. Once the projectile out of the launcher, sensors are able to detect the instant of release of the projectile and the arrival at a base. With this, we will have the bullet travel time, which will also be displayed by the system

Keywords: projectile launcher, automatized, configurable, projectile motion, classical mechanics.

SUMÁRIO

1 INTRODUÇÃO .................................................................................................................................... 5

1.1 OBJETIVO GERAL ....................................................................................................................... 5

1.2 OBJETIVOS ESPECÍFICOS ......................................................................................................... 6

2 FUNDAMENTAÇÃO TEÓRICA ........................................................................................................ 7

2.1 TRABALHOS SIMILARES.......................................................................................................... 10

3 ESPECIFICAÇÃO TÉCNICA ............................................................................................................. 13

3.1 ANÁLISE DE REQUISITOS ...................................................................................................... 15

3.2 RESTRIÇÕES .............................................................................................................................. 16

3.3 DESCRIÇÃO DAS PARTES COMPONENTES E INTERFACEAMENTO ENTRE SISTEMAS

17

4 DESENVOLVIMENTO ..................................................................................................................... 18

4.1 HARDWARE ............................................................................................................................... 18

4.2 SOFTWARE ................................................................................................................................ 24

5 TESTES E RESULTADOS ............................................................................................................... 25

4.2 TABELA DE CUSTOS .................................................................................................................. 24

6 CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS ............................................................... 26

7 BIBLIOGRAFIA ................................................................................................................................. 27

Apêndice A ................................................................................................................................................ 29

Anexo A .................................................................................................................................................... 37

5

1 INTRODUÇÃO

Por definição, segundo (HALLIDAY; RESNICK; WALKER, 2007.p70), “um projétil é

uma partícula que se move em um plano vertical com velocidade inicial 𝑉0⃗⃗⃗⃗ ⃗ e com uma aceleração

constante, igual a aceleração de queda livre 𝑔 , dirigida para baixo”.

O movimento de projéteis é uma forma de movimento na qual um objeto ou partícula

(chamados de projétil) é arremessado próximo a superfície da terra e se move ao longo de um

caminho curvilíneo, sob influência apenas da ação da gravidade (desprezando a resistência do ar),

ou seja, a única força significante que atua no objeto é a força da gravidade, na qual atua de cima

para baixo, causando uma aceleração em direção ao solo.

A definição acima pode parecer confusa para um estudante de física iniciante sem uma

demonstração prática do seu significado. Por este motivo, muitas empresas responsáveis por

desenvolver equipamentos educacionais resolveram fabricar produtos que auxiliem professores a

ensinar o movimento de projéteis aos alunos. Porém, muitos destes equipamentos são manualmente

configurados e possuem um custo relativamente alto. Com base nisso, este trabalho foi

desenvolvido para construir um lançador de projéteis automatizado e configurável, sem a

necessidade de operar o lançador manualmente.

1.1 OBJETIVO GERAL

Este projeto destina-se ao desenvolvimento de um lançador de projéteis automatizado e

configurável por computador, sem a necessidade de operar manualmente, com o intuito de

demonstrar e comparar dados de lançamento de projéteis com a teoria.

6

1.2 OBJETIVOS ESPECÍFICOS

1. Pesquisa sobre as opções atuais disponíveis no mercado; como estas opções foram desenvolvidas;

estudar os fundamentos da mecânica clássica;

2. Projeto e desenvolvimento de uma plataforma de lançamento integrada a uma métrica angular;

construção de uma base de recepção do projétil; implementar sensores capazes de mensurar a

intensidade do lançamento, o ângulo e de fim de curso; desenvolvimento de um sistema

microntrolado que capture estas informações e opere o lançador;

3. Desenvolvimento de uma interface de comunicação serial entre o lançador e um computador

pessoal;

4. Desenvolvimento de um software que receba como informações força e ângulo de lançamento;

desenvolvimento de firmware embarcado no microcontrolador responsável por manipular o lançador

e enviar dados ao computador; mostrar as informações de lançamento;

5. Calibração e testes do sistema.

7

2 FUNDAMENTAÇÃO TEÓRICA

A física (do grego antigo: φύσις physis "natureza") é a ciência que estuda a natureza e seus

fenômenos em seus aspectos mais gerais. Analisa suas relações e propriedades, além de descrever

e explicar a maior parte de suas consequências. Busca a compreensão científica dos

comportamentos naturais e gerais do mundo ao redor, desde as partículas elementares até o universo

como um todo (MAXWELL, 1878) (FEYNMAN, 1963). Ela também é uma das disciplinas

acadêmicas mais antigas, talvez a mais antiga através da inclusão da astronomia (KRUPP, 2003).

A física é uma das ciências mais fundamentais. Cientistas de todas as disciplinas usam as

ideias da física, incluindo químicos que estudam a estrutura de moléculas, paleontólogos que

tentam reconstruir como os dinossauros andavam e climatologistas que estudam como atividades

humanas afetam a atmosfera e oceanos. Física é a base para todas as engenharias e tecnologias. Ela

é uma ciência experimental. (YOUNG;FREEMAN, 2014).

Os resultados de anos de pesquisa dos nossos antepassados físicos podem ser vistos

diariamente: quando acendemos uma lâmpada, quando assistimos televisão, quando usamos um

automóvel para nos locomover, quando aquecemos um alimento em um micro-ondas. Nenhuma

destas facilidades existiria se os nossos ascendentes não tivessem dedicado suas vidas para estudar

os fenômenos que a natureza nos proporciona.

A física hoje pode ser dividida em cinco ramificações teóricas, com uma em especial,

chamada mecânica clássica. A mecânica clássica é o estudo de movimento de corpos (incluindo o

caso especial no qual corpos se mantem em repouso) em conformidade com os princípios gerais

inicialmente declarados pelo Sir Isaac Newton, em sua publicação Philosophiae Naturalis

Principia Mathematica (1687), frequentemente conhecida como Principia. A mecânica clássica foi

o primeiro ramo da física a ser descoberto e é base na qual todos os outros ramos da física se

fundamentam (FITZPATRICK, 2006).

Este projeto baseia-se na teoria de movimento de projéteis, um caso especial de movimento

de corpos. Por definição, um projétil é um objeto no qual apenas a força atuante é a gravidade. Há

8

vários exemplos de projéteis. Um objeto solto livremente do repouso é um projétil (dado que a

influência da resistência do ar é desprezível). Um objeto que é arremessado verticalmente para cima

também é um projétil. O mesmo objeto se lançado para cima com um certo ângulo com a horizontal

também é um projétil. Um projétil é qualquer objeto que uma vez arremessado ou largado, continua

em movimento pela inércia e é apenas influenciado pela força gravitacional para baixo

(HENDERSON, 2015).

A Figura 1 ilustra o comportamento de um projétil, onde o objeto é lançado com uma

velocidade inicial Vyo e Vxo. Em certo ponto, Vy se torna igual a zero devido a força da gravidade,

porém Vx continua com sua velocidade inicial mantida. Conforme o tempo passa, a velocidade em

Vy se torna negativa (contra o sentido do eixo Y) e o módulo de sua velocidade aumenta.

Figura 1 – Um projétil

Fonte: (WAYNE,2015)

Como o intuito deste trabalho é a realização de um lançador de projéteis, é necessário o

conhecimento básico de alguns fundamentos da mecânica clássica, como:

Força e movimento

Energia cinética

Energia potencial e conservação de energia

Neste trabalho, estes fundamentos da física são discutidos superficialmente, ou seja, sem

grande aprofundamento de suas origens e definições. Cabe ao leitor uma pesquisa externa caso

deseje mais informações.

9

Para a construção de um lançador, é necessário pensar no seu objetivo principal: o

lançamento de um objeto. Para isso, é necessário aplicar uma força 𝐹 neste objeto, mostrada pela

equação 1:

𝐹 = 𝑚. 𝑎 (1)

sendo m a massa do objeto e 𝑎 a aceleração deste objeto.

Como este projeto abordará o uso de um sistema de molas, também devemos mencionar a

força que uma mola exerce sobre um objeto, chamada Lei de Hooke, demonstrada na equação 2:

𝐹 = −𝑘. 𝑑 (2)

sendo k a constante elástica da mola e 𝑑 o deslocamento (ou compressão) da mola.

A energia total de um sistema ideal consiste na soma da energia cinética com a energia

potencial, mostrada pela equação 3:

𝐸 = 𝐾 + 𝑈 (3)

onde K é a energia cinética e U é a energia potencial.

A energia potencial de uma mola é dada pela equação 4:

𝑈𝑒𝑙 =

𝑘. 𝑥2

2

(4)

onde k é a constante elástica e x o deslocamento (ou compressão) da mola.

Com a força aplicada, o objeto adquire energia. A energia de um objeto em movimento é

chamada de energia cinética, e é representada na equação 5:

𝐾 =

𝑚. 𝑣

2

2

(5)

onde v é a velocidade em que se encontra o objeto.

10

Em um sistema ideal (sem perdas), toda a energia potencial elástica é transformada em

energia cinética para o objeto, representada pela equação 6:

𝑘. 𝑥2 = 𝑚. 𝑣2 (6)

A altura máxima que o projétil deve atingir é dado pela equação 7:

ℎ =

𝑣02𝑠𝑒𝑛2(𝜃)

2𝑔

(7)

sendo 𝑣0 a velocidade inicial do projétil, 𝜃 o ângulo de lançamento e g a aceleração da

gravidade.

A distância máxima que o projétil deve atingir é descrita pela equação 8:

𝑑 =

𝑣02

𝑔𝑠𝑒𝑛(2𝜃)

(8)

2.1 TRABALHOS SIMILARES

Um trabalho acadêmico muito próximo deste proposto é o da Figura 2, chamado P5643, onde

os autores desenvolveram um lançador de projéteis no qual o usuário consegue configurar o ângulo

de lançamento em 4 posições (0º; 30º; 45º; 60º), assim como a distância a ser comprimida na mola

(entre 0 – 30mm). O posicionamento e o disparo são feitos manualmente, enquanto que a

compressão da mola é feita por um ajuste manual a um potenciômetro, no qual é enviada a

informação a um servo-motor, que realiza a compressão da mola. A distância comprimida da mola

é mensurada através de um sensor de distância de ultrassom. Em um display de LCD, é retornado

essa distância da mola comprimida assim como instruções de uso do lançador. Foi utilizado uma

placa microcontrolada Parallax BS2 para operar o lançador e os autores estimam um preço de

USD$220,30 para o produto completo.

11

Figura 2 – Lançador de projéteis P5643

Fonte: (CHEN; COX; CUNNINGHAM, 2012)

Em se tratando de produtos comerciais, duas outras opções podem ser destacadas. Na Figura

3, a empresa responsável desenvolveu um lançador pneumático chamado VPL. Com uma métrica

angular configurável (entre 0 e 70 graus) e um botão de controle capaz de controlar a velocidade de

disparo, este lançador é capaz de lançar o projétil a uma distância de 2,5 metros. Ao invés de utilizar

molas no lançamento, utiliza-se ar pressurizado. O disparo é feito acionando um botão. É necessário

pressurizar o lançador com uma bomba de ar manual. O ajuste do ângulo é feito manualmente.

Sensores embutidos capturam a velocidade de saída do projétil do lançador que é mostrada em um

equipamento separado. O custo inicial é de USD$407.

Figura 3 – Lançador pneumático VPL

Fonte: (Vernier Software & Technology, 2015)

12

Na figura 4, há um exemplo de um produto mais simples, aonde todo o processo de lançamento é

manual. Não possui sensores ou circuitos e seu custo é de USD$51,75.

Figura 4 – Lançador simples

Fonte:(ABRA Electronics Corp, 2015)

13

3 ESPECIFICAÇÃO TÉCNICA

O objetivo principal deste projeto é o desenvolvimento de um lançador de projéteis que opere

de uma forma completamente automatizada, sem a necessidade de operá-lo manualmente. Por meio

de uma interface de computador, o usuário será capaz de sugerir um ângulo de lançamento e a força

a ser aplicada no projétil. Neste momento, a interface disponibilizará algumas informações pré-

calculadas (teóricas) do lançamento baseado no ângulo e força selecionado pelo usuário, como altura

máxima a ser atingida e distância máxima até a chegada. Uma base de recepção será colocada de

modo a receber o projétil e calcular o tempo de viagem, mostrando esta informação ao usuário. Com

esses dados, pode ser feita a comparação dos cálculos teóricos com os resultados obtidos. A figura 5

representa uma visão em blocos do projeto proposto, no qual o usuário passa comandos para o

computador, que tratará e validará os dados, transformando-os em instruções ao microcontrolador.

O microcontrolador por sua vez controlará o lançador com o ângulo e força cedidos pelo usuário e

sensores serão responsáveis por verificar a situação do lançador. Depois, o lançador dispara o projétil.

Assim que o projétil atingir a base, um outro sensor captará a chegada do objeto na base e o

microcontrolador calculará o tempo de trajeto. Esta informação é repassada ao usuário através da

interface no computador.

Figura 5 – Visão em blocos

Fonte: Elaborada pelo autor

O projeto utiliza molas, motores, sensores ópticos, chave fim de curso, microcontrolador,

ponte H e componentes básicos de eletrônica.

Desta forma, pode se dizer que o lançador apresenta as funcionalidades de prover uma

interface com o usuário para selecionar ângulos e forças, fornecer dados teóricos de pré-lançamento

e mostrados ao usuário, comprimir a mola de maneira autônoma, ajustar o ângulo de maneira

autônoma, disparar o projétil de maneira autônoma, possuir uma base de recepção do projétil, cálculo

do tempo de viagem do projétil até a base mostrados ao usuário e restauração da posição inicial após

o lançamento.

14

A figura 6 mostra a imagem do protótipo desenvolvido.

Figura 6 – Lançador desenvolvido

Fonte - Elaborada pelo autor

A figura 7 é a base de recepção do projétil, feita com um sensor de fim de curso.

15

Figura 7 – Base de recepção Fonte: Elaborada pelo autor.

3.1 ANÁLISE DE REQUISITOS

Para capturar o ângulo de lançamento, foi utilizado um sensor tipo chave ótica para

localizar a posição aonde o lançador se encontra apontado. A figura 8 mostra o sensor ótico

e a leitura que ele faz da estrutura dentada (no caso, se encontra a 90°).

Figura 8 – Sensor e estrutura

Fonte: Elaborada pelo autor

16

A calibração do ângulo foi feita com um medidor de nível juntamente com um

transferidor, onde pode ser vista na figura 17 do apêndice. Realizando as medidas de ângulo

nos limites máximo e mínimos, a precisão em cada pulso dado pelo sensor ótico é de

aproximadamente 1,631 graus, ou seja, a resolução da estrutura angular é de 1,631 graus

por pulso do sensor.

O mesmo sensor foi utilizado para capturar a quantidade de giros necessários no motor

para gerar uma certa compressão. Para mensurar a quantidade de giros, o sensor captura a

quantidade de pulsos que uma roda dentada presa ao eixo do motor fornece. A figura 9

mostra a roda utilizada.

Figura 9 – Roda dentada

Fonte – Elaborada pelo autor

Esta roda foi acoplada à uma barra rosqueada de ½ polegada, com um passo de 13 fios por

polegada de acordo com a especificação do fabricante. Isto significa um passo aproximado de

1,953846 milímetros por rotação. Como a roda dentada gera 28 pulsos no sensor por rotação,

significa que a cada pulso a mola é comprimida aproximadamente 0,07 mm. Isto é, nossa resolução

de compressão da mola é de 0,07mm por pulso.

3.2 RESTRIÇÕES

O projeto possui as seguintes restrições mecânicas:

O ângulo máximo de disparo é de 80 graus e o mínimo é de 25 graus

A força mínima a ser aplicada no projétil é de 15 Newtons e máxima de 80 Newtons

17

O projétil deve ter 43 mm de diâmetro no máximo

Os cálculos de velocidade, distância e altura foram baseados na massa de uma bola de golfe

(45g)

Embora até o momento não ter sido encontrado um projeto com as mesmas funcionalidades, o

custo deste projeto terá como foco um valor próximo de R$1000 (sem incluir mão-de-obra). Este

valor tem como base a comparação com os outros modelos citados na seção 2.1.

3.3 DESCRIÇÃO DAS PARTES COMPONENTES E INTERFACEAMENTO ENTRE

SISTEMAS

O projeto apresenta o lançador construído com um cano de PVC contendo um sistema de

compressão de mola no seu interior. Um motor 12V DC em uma extremidade do tubo é responsável

pela compressão, e uma barra rosqueada é acoplada a este motor e é responsável por movimentar um

embolo, que por sua vez é responsável pela compressão da mola. Um sensor do tipo chave óptica

faz a leitura do movimento do motor. Na outra extremidade do tubo, localiza-se uma trava elétrica

automotiva, com a finalidade de disparar o projétil.

O lançador, por sua vez, fica acoplado a uma estrutura de vidro elétrico automotivo, no qual

possui um motor 12V DC responsável pelo ajuste do ângulo da estrutura. Sensores de chave óptica

fazem a leitura do passo dessa estrutura. Ambos motores estão conectados a um módulo de ponte H

utilizando um circuito integrado L298N, capaz de fornecer até 2 ampères por canal. A figura 18 do

anexo mostra esta ponte H. Por sua vez, a ponte H também está conectada a um microcontrolador

Atmel Atmega328p. O microcontrolador, alimentado com 5V, é responsável pelo controle de todo

o lançador. Ele, controla os motores (pela ponte H), o acionamento da trava elétrica, a contagem de

pulsos vindos dos sensores e também recebe/envia dados de/para o computador pessoal por meio de

comunicação serial.

Um circuito integrado FTD232RL foi utilizado para comunicar serialmente com um

computador pela interface USB. Todo conjunto acima é preso a uma estrutura de madeira. Uma

bancada dobrável serve para manter a estabilidade do conjunto aonde o lançador é preso. Por final,

uma base com um contato fim de curso responsável por detectar a chegada do projétil.

18

4 DESENVOLVIMENTO

4.1 HARDWARE

Inicialmente, foi necessário definir o tipo de mecanismo e lógica a ser utilizado para disparar

um projétil. Depois de muitos esboços, foi decidido utilizar um sistema com molas e motores para

fazer um lançador automatizado.

Para ter um caminho inicial definido, foi decidido utilizar uma bola de golfe como projétil.

Suas características são:

45g de massa

42,7 mm de diâmetro

Partindo deste princípio, foi pensado uma estrutura capaz de permitir a entrada desta bola

como seu diâmetro máximo. Com isso, foi decidido utilizar um tubo PVC de alta pressão de 50mm

(Externo), com um diâmetro interno de aproximadamente 43mm. Por consequência, foi projetada o

uso de uma mola que possua 40mm de diâmetro externo no máximo justamente para entrar no tubo.

A mola também foi projetada para poder fornecer força o suficiente para dispara a bola de golfe a

uma distância de 8 metros através da utilização da equação 8, sendo d = 8m; g = 9,81 m/s² e, para

atingir o valor máximo, 𝑠𝑒𝑛(2𝜃) = 1, o ângulo deve ser de 45°, então a velocidade inicial 𝑣0 é de

aproximadamente 8,8589 m/s

Com este valor de velocidade inicial, consegue-se obter a quantidade de energia cinética que

a bola adquire nesta velocidade pela equação 5, sendo m = 0,045g e v = 8,8589 m/s, a energia

cinética da bola é aproximadamente igual a 1,7658 Joules.

Utilizando a teoria que toda a energia é transformada, este projeto parte do princípio que

toda a energia potencial da mola é convertida em energia cinética na bola de golfe, utiliza-se a

equação 6. A mola precisaria fornecer uma energia de 1,7658 Joules.

19

Como a mola ainda não estava com todas suas características definidas, foram feitas

simulações para obter uma mola compatível com os requerimentos. Através da equação 9, é possível

obter a constante elástica da mola (k):

𝑘 =

𝑑4𝐺

8𝐷3𝑁𝑎

(9)

Onde:

d = diâmetro do arame

G = Módulo de elasticidade transversal

D = Diâmetro médio da espira

Na = Número de espiras ativas

Utilizando a planilha de cálculo da figura 10, foi possível estimar uma mola para ser utilizada

no projeto. Esta planilha calcula as propriedades de uma mola com várias dimensões que são

fornecidas pelo usuário.

Figura 10 – Printscreen de planilha de cálculo de molas

Fonte: (BALLES, 2015)

Ao mesmo tempo, foi adquirida uma mola com as seguintes características:

2,5 mm de diâmetro de arame

20

40 mm de diâmetro externo

23 espiras (21 ativas)

300 mm de comprimento livre

Estima-se que o metal utilizado na mola tenha sido de aço mola SAE 5160, que possui o

mesmo módulo de elasticidade transversal que o aço mola ASTM A 227. Com estas características,

a mola consegue fornecer até 4,1 Joules (83,9N).

Foi desenvolvido um sistema para a compressão da mola, na qual a mesma se encontra

soldada entre dois êmbolos metálicos. Uma barra roscada de meia polegada atravessa o embolo

inferior. Conforme a barra roscada gira, o embolo inferior sobe, comprimindo a mola. A figura 11

mostra o conjunto.

Figura 11 – Conjunto Mola/Êmbolos/Barra

Fonte: Elaborada pelo autor

A barra foi acoplada a um motor DC 12V em sua extremidade. A leitura do giro da barra foi

feita por sensores chave ótica. Em seguida, todo o conjunto foi preso a uma estrutura de vidro

21

elétrico automotivo por meio de braçadeiras de plástico. A captura do ângulo também foi feita com

sensores chave ótica e todo o processo de aquisição se encontra na seção 3.1.

Foram utilizados resistores de 1k Ohm para limitar a corrente que alimenta os emissores e

10k Ohms para limitar a corrente no fototransistor. Além disto, foi colocado capacitores de 100 nF

para remover oscilações de tensão que ocorreram durante a leitura do sensor. Os sensores então

foram conectados ao microcontrolador Atmega328p que, por meio de interrupções, conta o número

de pulsos gerados. A trava elétrica, responsável pelo disparo é acionada pelo microcontrolador

usando 5V no Gate do transistor mosfet DFF2N60. Os motores são conectados diretamente a um

módulo de ponte H L298N, que se encontra na figura 18 do apêndice. O microcontrolador controla

estes motores através desta ponte H. O microcontrolador está configurado para operar em uma

frequência de 12MHz. A figura 12 representa o esquemático de todo o circuito elétrico usado no

projeto.

Figura 12 – Esquemático do circuito

Fonte: Elaborada pelo autor

22

O microcontrolador foi programado na linguagem C utilizando para desenvolvimento o

software Atmel Studio 6. Para a comunicação com o computador e a gravação do firmware no

microcontrolador, foi utilizado um conversor de USB para serial FT232R e o software para a

gravação do firmware foi o FTISP.

O código fonte do microcontrolador se encontra no Apêndice.

A figura 13 representa o fluxograma do firmware programado no microcontrolador e

ilustra o comportamento apresentado pelo sistema. O primeiro passo é referente a configuração de

portas internas e externas, aonde o microcontrolador configura quais portas serão responsáveis por

certas operações, como interrupções, PWM e timers. Em seguida, o microcontrolador fica em

standby a espera de uma transmissão serial contendo o ângulo e força como dados. Sendo feita a

transmissão serial, o motor angular é acionado e só para quando chegar no ângulo desejado. Logo

após, o motor de compressão da mola é acionado e também só para quando chegar a força de

compressão desejada. Os sensores óticos enviam pulsos para o microcontrolador para saber se a

posição atual do ângulo e da força são as desejadas e é desta maneira que o microcontrolador

aciona ou para os motores. Se o projétil não foi disparado, a trava elétrica é acionada e o projétil é

disparado. O microcontrolador então aciona o timer para contar o tempo em que o projétil demora

para atingir a base e então a trava é desativada e o tempo de trajeto é enviado serialmente ao

computador. Em seguida, os motores são acionados reversamente e reutilizam a lógica de

configurar o ângulo e força com o intuito de restaurar a posição inicial do lançador.

23

Figura 13 – Fluxograma do firmware

Fonte – Elaborada pelo autor

E a figura 14 é a placa de circuito desenvolvida

Figura 14 – Placa de circuito

Fonte: Elaborada pelo autor

24

4.2 SOFTWARE

O software presente no projeto foi desenvolvido em linguagem Java, podendo operar em

qualquer plataforma desde que contenha os drivers e a configuração corretamente configurados. Para

o desenvolvimento do software, foi utilizada a IDE Eclipse Mars. Como a linguagem Java não possui

muitos recursos para comunicação serial nativamente, foi utilizado uma biblioteca externa chamada

RXTX. A figura 15 representa o fluxograma do software desenvolvido, onde o usuário executa o

programa de lançamento passando como parâmetros o ângulo e força desejados. Se o ângulo não

estiver entre 80 e 25 graus radianos e a força não estiver entre 15 e 80 Newtons, o programa fornece

uma mensagem de erro e termina sua execução. Caso contrário ele calcula e mostra a velocidade,

distância de alcance e altura máxima do projétil baseados apenas nos dados de entrada, ou seja,

aplicando-se diretamente os dados nas equações. Em seguida, o computador envia serialmente os

dados já tratados para o microcontrolador. Após isto, o software fica a espera de uma transmissão do

microcontrolador contendo o tempo de trajeto do projétil. Recebendo este dado, o mesmo é mostrado

na tela e encerra-se o programa.

Figura 15 – Fluxograma do software

Fonte: Elaborada pelo Autor A figura 16 mostra a execução do software, passando os parâmetros de lançamento e mostrando os dados teóricos de disparo. No apêndice encontra-se o código fonte do software.

25

Figura 16 – Tela do software Fonte – Elaborada pelo autor

5 TESTES E RESULTADOS

O ajuste do ângulo, da força aplicada na mola e o disparo foram completamente autônomos.

Depois do projétil atingir a base de recepção, o lançador retorna a sua posição inicial com sucesso,

assim como descomprime a mola corretamente.

Através de testes aplicando duas quantidades de força e dois ângulos diferentes, foi

mensurada a distância horizontal real no qual o lançador conseguiu atingir. Para a captura desde

dado, foi utilizado uma mesa que possuísse a mesma altura da origem do lançamento do projétil. A

bola de golfe foi coberta com carvão e conforme a bola acertava a mesa, media-se a distância do

local acertado até a origem do lançador.

A tabela 1 mostra os dados de lançamento teóricos (aplicados diretamente nas equações) e

também o resultado prático, assim como a diferença percentual entre os dois.

Tabela 1 – Resultados do lançamento

Fonte: Elaborada pelo autor

O resultado mostra que a distância percorrida pelo projétil foi em média 87,33876% menor

que o valor teórico calculado. Isto se deve a vários fatores, como perdas de energia devido ao atrito,

calor e som. Más o principal motivo de tanta disparidade foi o uso de um êmbolo de ferro preso ao

fim da mola, que possui uma massa muito maior que o projétil. Isto significa que boa parte da

energia que deveria ser transferida ao projétil foi utilizada para empurrar o êmbolo e sobrou pouca

energia para o projétil. Outro fator foi que a mola não estava com seu movimento completamente

livre no interior destes êmbolos.

5.1 TABELA DE CUSTOS

A tabela 2 mostra a relação de materiais utilizados no produto final e seus respectivos preços,

assim como o custo total.

26

Materiais Custo

2x Grampo sargento R$ 32,00

2x Sensores tipo chave ótica R$ 5,00

Bancada de apoio R$ 135,00

Barra roscada 1m 1/2 polegada R$ 27,50

Bateria 12V R$ 50,00

Bola de golfe (usada) R$ 3,00

Braçadeira nylon 300mm R$ 17,00

Contato fim de curso R$ 50,00

Conversor USB -> Serial FTDI232RL R$ 25,00

Driver ponte H L298N R$ 15,00

Estrutura de vidro elétrico com motor 12V R$ 100,00

Microcontrolador Atmega328p R$ 15,00

Mola 300 x 2,5 x 40 mm R$ 12,00

Motor DC 12V de limpador de para-brisa (Usado) R$ 50,00

Organizador de fios R$ 13,50

Parafusos R$ 4,50

Placa de circuito impresso R$ 10,00

Resistores e capacitores R$ 2,00

Tubo PVC 1m 50mm R$ 28,00

Tubo PVC Redutor 100mm->75mm R$ 13,00

Tubo PVC Redutor 75mm->50mm R$ 7,00

Total R$ 614,50 Tabela 2 – Custos do projeto

Fonte: Elaborada pelo autor

6 CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS

O objetivo principal deste projeto, como citado na seção 1.1, era criar um lançador de

projéteis completamente automatizado, sem a necessidade de o usuário manusear o lançador. O

projeto mostrou-se completamente funcional, cumprindo seus objetivos e com problemas em

transferir a energia da mola ao projétil, causando uma grande disparidade entre os dados calculados

com os dados mensurados.

Os resultados dos lançamentos, nos quais indicam uma diferença média de 87% com o valor

teórico, nos mostram que o projeto pode ter várias melhorias para aperfeiçoar sua performance nos

lançamentos. Soluções como:

Substituição do êmbolo superior (ferro) por um material mais leve, como plástico ou

alumínio

Uso de um tubo maior para evitar pressurizações e atritos internos

Uso de uma ponte H capaz de fornecer mais do que 2 ampères de corrente

Uso de equipamentos de precisão especializados

27

Alinhamento de toda a estrutura

Assim como é possível melhorias estéticas no lançador e uma interface gráfica no software.

7 BIBLIOGRAFIA

ABRA Electronics Corp. PTPROJ Visual Scientifics Projectile Launcher. Disponível em <

https://abra-electronics.com/science/physics-en/mechanics-acceleration-trajectories/ptproj-visual-

scientifics-projectile-launcher-ptproj.html>. Acesso em: nov.2015.

BALLES, A.C.. Material de ensino utilizado em sala de aula. 2015

Chen, P.C.; COX, J.; CUNNINGHAM, G.. P5643 Projectile Launcher.2012. New York, NYU

School of Engineering, Mechatronics term project. Disponível em <

http://engineering.nyu.edu/mechatronics/projects/ME5643/Fall2012/P5643%20Projectile%20Lau

ncher/ME%20Term%20Project.pdf/> Acesso em: nov.2015.

FEYNMAN, R.P., LEIGHTON; R.B.; SANDS, M.. The Feynman Lectures on Physics. [S.l.:

s.n.], 1963. I-2 p. vol. 1.

FILIPEFLOP COMPONENTES ELETRÔNICOS EIRELI. Motor dc com driver ponte H L298N.

Disponível em < http://blog.filipeflop.com/motores-e-servos/motor-dc-arduino-ponte-h-

l298n.html> Acesso em: nov 2015

FITZPATRICK, R.. What is classical mechanics? Disponível em:<

http://farside.ph.utexas.edu/teaching/301/lectures/node3.html />. Acesso em: nov.2015.

HALLIDAY, D.; RESNICK, R. ; WALKER, J. Fundamentos de física volume 1. 8ª edição. Rio

de Janeiro: LTC Livros Tecnicos e Científicos Editora S.A. 2009. 349p

HENDERSON, T.. Vectors - Motion and Forces in Two Dimensions - Lesson 2 - Projectile

Motion -What is a Projectile? Disponível em:<

http://www.physicsclassroom.com/class/vectors/Lesson-2/What-is-a-Projectile/> .Acesso em:

nov.2015

28

KRUPP, E.C.. Echoes of the Ancient Skies: The Astronomy of Lost Civilizations. Dover

Publications. 2003

MAXWELL, J.C.. Matter and Motion. [S.l.]: D. Van Nostrand, 1878. 9 p.

VERNIER SOFTWARE & TECHNOLOGY. Vernier Projectile Launcher. Disponível em <

http://www.vernier.com/products/sensors/vpl/>. Acesso em: nov.2015

WAYNE, T..Motion in a plane (Projectile Motion). Disponível em <

http://www.mrwaynesclass.com/projectile/reading/index08.html/> . Accesso em: nov.2015

YOUNG, H.D. et al. University Physics with Modern Physics Technology Update. 13.ed.

Pearson Education. 2014

29

Apêndice A

Figura 17 – Calibração do ângulo Fonte: Elaborada pelo autor

/* * GccApplication1.c * * Created: 23/08/2015 21:20:36 * Author: Daniel Cardoso de Morais */ #ifndef F_CPU #define F_CPU 12000000UL // 12 MHz clock speed #endif #define BAUDRATE 9600 #define UBRR_VALUE ((F_CPU / (BAUDRATE * 16UL)) - 1) //The formula that does all the required maths #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <stdlib.h> #include <string.h> volatile unsigned int initialState = 0; volatile unsigned int angle; volatile unsigned int force; volatile unsigned int timerOverflow = 0; volatile unsigned int int0_counter = 1; volatile unsigned int int1_counter = 1; volatile uint8_t portCHistory = 0xFF; // default is high because the pull-up static void serial_init() { /* Set the baud rate */ /*UBRR0H = (unsigned char) (bittimer >> 8); UBRR0L = (unsigned char) bittimer;*/ UBRR0 = UBRR_VALUE; // Set frame format to 8 data bits, no parity, 1 stop bit UCSR0C |= (1<<UCSZ01)|(1<<UCSZ00); //enable transmission and reception

30

UCSR0B |= (1<<RXEN0)|(1<<TXEN0); /* set the framing to 8N1 */ UCSR0B |= 1 << RXCIE0; //UCSR0C = (3 << UCSZ00); /* Engage! */ //UCSR0B = (1 << RXEN0) | (1 << TXEN0); return; } unsigned char serial_read() { // Wait for byte to be received while( !(UCSR0A & (1 << RXC0))){}; // Return received data return UDR0; } static void serial_write(unsigned char c) { while ( !(UCSR0A & (1 << UDRE0)) ) ; UDR0 = c; } int main(void) { DDRB = 0x00; PORTB = 0xFF; DDRD = 0x00; PORTD = 0xFF; DDRC = 0x00; PORTC = 0xFF; //PB0 for Force motor -, PB1 for electric lock DDRB |= (1 << DDB0) | (1 << DDB1); PORTB &= ~((1 << PORTB0) | (1 << PORTB1)); //PD7 for Force motor +, PD2 and PD3 for interrupts. DDRD |= (1 << PD7); PORTD &= ~((1 << PD2) | (1 << PD7) | (1 << PD3)); //External Interrupts config EIMSK = (1 << INT1) | (1 << INT0); //Interrupções para os leitores ópticos EICRA = (1 << ISC10) | (1 << ISC00); //Interrupção para o fim de curso, PC4 PCICR = (1 << PCIE1); PCMSK1 = (1 << PCINT12); DDRD |= (1 << PD6) | (1 << PD5); //PD5, PD6 are outputs, PWM ports for angle PORTD &= ~((1 << PD6) | (1 << PD5)); TCCR0A |= (1 << WGM00) | (1 << COM0A1) | (1 << COM0B1); TCCR0B |= 1 << CS00; TIMSK1 |= (1 << TOIE1); // Enable overflow interrupt serial_init(); sei(); while (1) { } } ISR(USART_RX_vect) {

31

static char launchParams[32]; char buffer[10]; unsigned int i = 0; static unsigned int rxCounter = 0; char ReceivedByte; ReceivedByte = UDR0; // Fetch the received byte value into the variable "ByteReceived" launchParams[rxCounter] = ReceivedByte; rxCounter++; if(ReceivedByte == ';'){ angle = atoi (strtok(launchParams, ",;")); force = atoi (strtok(NULL, ",;")); itoa(angle,buffer,10); while(buffer[i] != '\0') { serial_write(buffer[i++]); } serial_write('\r'); serial_write('\n'); itoa(force,buffer,10); i = 0; while(buffer[i] != '\0') { serial_write(buffer[i++]); } serial_write('\r'); serial_write('\n'); OCR0B = 200; //launchParams[rxCounter++] = '\0'; rxCounter = 0; } //UDR0 = ReceivedByte; // Echo back the received byte back to the computer } ISR (INT0_vect) { char buffer[10]; int i = 0; //volatile unsigned char test; itoa(int0_counter,buffer,10); while(buffer[i] != '\0') { serial_write(buffer[i++]); } serial_write((unsigned)'\r'); serial_write((unsigned)'\n'); if (int0_counter >= angle){ OCR0A = 0; //Desativa os PWMs do motor angular OCR0B = 0; _delay_ms(7000); if(initialState == 0){ PORTD |= (1 << PORTD7); //Ativa o motor de força para comprimir a mola. } else{ PORTB |= (1 << PORTB0); //Ativa o motor de força para descomprimir a mola. } int0_counter = 1; return; } int0_counter++; } ISR (INT1_vect) { char buffer[10]; int i = 0; //volatile unsigned char test;

32

itoa(int1_counter,buffer,10); while(buffer[i] != '\0') { serial_write(buffer[i++]); } serial_write((unsigned)'\r'); serial_write((unsigned)'\n'); //_delay_ms(1); if (int1_counter >= force){ PORTB &= ~(1 << PORTB0);// Para o motor de força PORTD &= ~(1 << PORTD7); // Para o motor de força if(initialState == 0){ PORTB |= (1 << PORTB1); // Aciona a trava elétrica, lançando o projétil TCCR1B |= (1 << CS12); //Inicia o contador do lançamento com prescale de 256. } int1_counter = 1; return; } int1_counter++; } ISR (TIMER1_OVF_vect) { timerOverflow++; /*int i = 0; float tempo = 0; char *mensagem = "Esta mensagem deve aparecer a cada 1,39811 segundos...\r\n"; while(mensagem[i] != '\0') { serial_write(mensagem[i++]); }*/ } ISR (PCINT1_vect) { //static volatile unsigned int interruptPredicate = 0; uint8_t changedbits; changedbits = PINC ^ portCHistory; //XOR para verificar quais portas mudaram portCHistory = PINC; if(changedbits & (1 << PINC4)) { if ( (portCHistory & (1 << PINC4)) == 0 && (initialState == 0)){ initialState = 1; char buffer[32]; int i = 0; unsigned int tcnt_value = 0; //unsigned char sreg; /* Save global interrupt flag */ //sreg = SREG; /* Disable interrupts */ cli(); /* Read TCNT1 */ tcnt_value = TCNT1; /* Restore global interrupt flag */ //SREG = sreg; sei(); //Stops timer 1 TCCR1B = 0; //double tempoTotal = (timerOverflow * 1.39811) + (tcnt_value * 0.000021333333); itoa(tcnt_value,buffer,10); while(buffer[i] != '\0') { serial_write(buffer[i++]); } serial_write((unsigned)','); itoa(timerOverflow,buffer,10); i = 0; while(buffer[i] != '\0') { serial_write(buffer[i++]);

33

} serial_write((unsigned)';'); PORTB &= ~(1 << PORTB1); //Desativa a trava elétrica _delay_ms(10000); OCR0A = 200; //Começa a retornar os motores na posição original return; /*sprintf(buffer, "%10.10f", tempoTotal); i = 0; while(buffer[i] != '\0') { serial_write(buffer[i++]); } serial_write((unsigned)'\r'); serial_write((unsigned)'\n');*/ } //PCINT12 changed } }

Código fonte do firmware

package Morais.RXTX; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; /* * @(#)SimpleWrite.java 1.12 98/06/25 SMI * * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. * * Sun grants you ("Licensee") a non-exclusive, royalty free, license * to use, modify and redistribute this software in source and binary * code form, provided that i) this copyright notice and license appear * on all copies of the software; and ii) Licensee does not utilize the * software in a manner which is disparaging to Sun. * * This software is provided "AS IS," without a warranty of any kind. * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND * ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE * SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS * BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, * INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, * HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING * OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN * ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * * This software is not designed or intended for use in on-line control * of aircraft, air traffic, aircraft navigation or aircraft * communications; or in the design, construction, operation or * maintenance of any nuclear facility. Licensee represents and * warrants that it will not use or redistribute the Software for such * purposes. */ /*import java.io.*; import java.util.*;

34

import gnu.io.*; public class SimpleWrite { static Enumeration portList; static CommPortIdentifier portId; static String messageString = "Hello, world!\n"; static SerialPort serialPort; static OutputStream outputStream; public static void main(String[] args) { portList = CommPortIdentifier.getPortIdentifiers(); System.out.println(portList.hasMoreElements()); while (portList.hasMoreElements()) { System.out.println("inside loop"); portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portId.getName().equals("COM3")) { //if (portId.getName().equals("/dev/term/a")) { try { serialPort = (SerialPort) portId.open("SimpleWriteApp", 2000); } catch (PortInUseException e) {} try { outputStream = serialPort.getOutputStream(); } catch (IOException e) {} try { serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) {} try { outputStream.write(messageString.getBytes()); } catch (IOException e) {} } } } } }*/ import gnu.io.CommPort; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventListener; public class SimpleWrite { private InputStream in = null; private OutputStream out = null; private byte[] readBuffer = new byte[128]; private void readSerial() { try { int data; int len = 0; while ((data = in.read()) > -1) { if (data == ';') { String[] travelTime = (new String(readBuffer, 0, len)).split(","); int tcntValue = Math.abs(Integer.parseInt(travelTime[0])); int overflowValue = Integer.parseInt(travelTime[1]); double totalTraveltime = (tcntValue * 0.000021333333) + (overflowValue * 1.39811); System.out.println("Tempo de trajetória = " + totalTraveltime + " segundos."); break; } readBuffer[len++] = (byte) data; } // System.out.print(new String(readBuffer,0,len));

35

} catch (IOException e) { } } void connect(final String portName) throws Exception { CommPortIdentifier portIdentifier = CommPortIdentifier.getPortIdentifier(portName); if (portIdentifier.isCurrentlyOwned()) { System.out.println("Error: Port is currently in use"); } else { CommPort commPort = portIdentifier.open(this.getClass().getName(), 2000); if (commPort instanceof SerialPort) { SerialPort serialPort = (SerialPort) commPort; serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); this.in = serialPort.getInputStream(); this.out = serialPort.getOutputStream(); // (new Thread(new SerialWriter(out))).start(); serialPort.addEventListener(new SerialEventHandler()); serialPort.notifyOnDataAvailable(true); } else { System.out.println("Error: Only serial ports are handled by this example."); } } } /** * Handles the input coming from the serial port. A new line character is * treated as the end of a block in this example. */ private class SerialEventHandler implements SerialPortEventListener { @Override public void serialEvent(final SerialPortEvent event) { switch (event.getEventType()) { case SerialPortEvent.DATA_AVAILABLE: readSerial(); break; } } } /** */ // OutputStream out; public void serialWrite(final byte[] data) { try { this.out.write(data); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(final String[] args) { /* * try { (new SimpleWrite()).connect("COM3"); } catch (Exception e) { // * TODO Auto-generated catch block e.printStackTrace(); } */ SimpleWrite program = new SimpleWrite(); try { program.connect("COM3");

36

} catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } Options options = new Options(); options.addOption("a", "angulo", true, "Seleciona o ângulo desejado"); options.addOption("f", "força", true, "Seleciona a força desejado"); CommandLineParser parser = new DefaultParser(); CommandLine cmd = null; try { cmd = parser.parse(options, args); } catch (ParseException e) { // TODO Auto-generated catch block // e.printStackTrace(); System.err.println("Parsing failed. Reason: " + e.getMessage()); // System.exit(-1); } String angulo; String forca; angulo = cmd.getOptionValue('a'); forca = cmd.getOptionValue('f'); if ((angulo != null) && (forca != null)) { System.out.println("Angulo: " + angulo + " Força: " + forca); } if (Integer.parseInt(forca) < 15 && Integer.parseInt(forca) > 80) { System.err.println( "Erro: Força fora do valor permitido. Favor escolher uma força maior que 15N e menor que 80"); } else if (Integer.parseInt(angulo) > 80 && Integer.parseInt(angulo) < 25) { System.err.println("Erro: Angulo fora do permitido. Favor escolher um ângulo maior que 25 e menor que 80."); } else { // if(Integer.parseInt(angulo) < ) /* * De 90° para 21,5° (limites de ângulo) são 42 pulsos, portanto * para percorrer 68,5° necessitam 42 pulsos aprox. O que nos dá * 1,63.... graus/pulso (68,5/42) O ângulo será limitado entre 25° e * 80° por questôes de segurança; * * Constante elástica da mola = 349,65 N/M Passo da barra = 13 fios * por 1 polegada (25,4mm) = 1,9538461539mm = 0,00195...m. 28 pulsos * = 1,9538461539mm aprox. 1 pulso = 0,06978022mm aprox. Força * inicial com a mola travada =~ 11,53845N, com 3,3cm de mola * comprimida * * Massa da bola de golf = 45,93 g * */ final Double passoAngulo = 68.5 / 42; // graus/pulso final Double springConstant = 349.65; final Double initialForce = 11.53845; final Double passoBarra = 0.0254 / 13; final Double massaProjetil = 0.045; final Double gravityAcc = 9.80665; Double anguloResultante = (double) (90 - Integer.parseInt(angulo)); Double forcaResultante; Double distanciaComprimida; Double passoPorPulso; Double numberOfForcePulses; Double numberOfAnglePulses; numberOfAnglePulses = (anguloResultante) / passoAngulo; // Como o

37

forcaResultante = Integer.parseInt(forca) - initialForce; distanciaComprimida = forcaResultante / springConstant; passoPorPulso = passoBarra / 28; numberOfForcePulses = distanciaComprimida / passoPorPulso; String dataToSend = "" + Math.round(numberOfAnglePulses) + ',' + Math.round(numberOfForcePulses) + ';'; // Double energiaPotencialElastica = (springConstant * // (distanciaComprimida + 0.033) * (distanciaComprimida + 0.033))/2; Double velocidadeProjetil = Math.sqrt( (springConstant * (distanciaComprimida + 0.033) * (distanciaComprimida + 0.033)) / massaProjetil); System.out.println("Velocidade máxima do projétil: " + velocidadeProjetil + " m/s"); Double alturaMax = (Math.pow(velocidadeProjetil, 2) * Math.pow(Math.sin(Math.toRadians(Double.parseDouble(angulo))), 2)) / (2 * gravityAcc); Double distanciaMax = (Math.pow(velocidadeProjetil, 2) * Math.sin(Math.toRadians(2 * Double.parseDouble(angulo)))) / gravityAcc; System.out.println("Altura máxima do projétil: " + alturaMax + " m"); System.out.println("Distância máxima do projétil: " + distanciaMax + " m"); // System.out.println(dataToSend); program.serialWrite(dataToSend.getBytes()); // System.exit(0); } } }

Código fonte do Software

Anexo A

Figura 1 – Ponte H

Fonte: (FILIPEFLOP COMPONENTES ELETRÔNICOS EIRELI,2015)