por msamsoniuk » 05 Abr 2007 22:55
o truque por tras de tudo eh forca e a massa. em um foguete, que eh um exemplo mais compreensivel para estudar isso, tudo comeca com um sistema de forcas:
F = thrust - m*g
onde m*g eh a massa do foguete vezes a aceleracao da gravidade e o thrust eh justamente a forca gerada pelo motor do foguete. assim, para um foguete que pesa 100kg, vc precisa de um thrust maior que 1000N para que ele consiga sair do chao (a forca gerada pelo motor sera entao maior que a forca que o prende ao chao). no caso de um foguete real, vc poderia coletar F diretamente atraves de um acelerometro: ele jah mede a forca resultante da conta acima.
obviamente quando pensamos em um sistema embarcado ou simulacao, nosso sistema deve ser dinamico, entao tem que calcular as coisas conforme elas vao ocorrendo. nesse caso, teriamos um timer periodico que permite calcular periodicamente as grandezas que descrevem a situacao atual do nosso foguete ou sua simulacao:
a = F/m
v = v + a*dt
h = h + v*dt
onde dt eh simplesmente o intervalo de tempo entre os recalculos periodicos. conforme o tempo vai passando, vc vai recalculando e atualizando os valores de a, v e h. em uma simulacao, vc vai ver o foguete ganhando velocidade e altitude.
uma coisa q chama a atencao eh que h = h + v*dt eh uma eq de reta, portanto nao descreve um movimento acelerado. porem, para intervalos dt suficientemente pequenos, vc vai ter uma sucessao de pequenas retas que se adaptam perfeitamente a curva real produzida pelo movimento acelerado do foguete. valores de dt entre 1/10 e 1/1000 de segundo permitem boas aproximacoes.
em numeros praticos, um foguete de 10 kN e massa de 100kg (supondo g=10m/s²), teria em 1 segundo os seguintes valores de a, v e h:
F = 10000N - 100kg*10m/s² = 9000N
a = 9000N/(100kg*10m/s²) = 9m/s²
v = 9m/s² * 1s = 9 m/s
h = 9m/s * 1s = 9m
no proximo intervalo de 1 segundo teriamos:
F = 10000N - 100kg*10m/s² = 9000N
a = 9000N/(100kg*10m/s²) = 9m/s²
v =9m/s + 9m/s² * 1s = 18 m/s
h = 9m + 18m/s * 1s = 27m
e assim por diante.
bom. comparando a simulacao com o ambiente real, vc vai encontrar uma serie de detalhes interessantes que podem enriquecer seu sistema. comeca com o fato de F nao ser constante. quando vc liga os motores, obviamente, o valor do thrust vai crescer de zero a um valor determinado, mas esse valor pode ser controlado conforme vc controla o combustivel enviado para os motores. outros fatores ambientais e mecanicos podem tambem fazer o thrust variar. conforme o thrust varia, fica claro que a F resultante varia, mas nao apenas isso: conforme o tempo passa, o combustivel eh consumido e a propria massa do sistema varia. alem disso, a medida que a velocidade aumenta, a resistencia do ar entra em jogo, assim, a cada interacao, precisamos calcular um valor dinamico para F, a partir de algo como:
F = thrust(t) - m(t)*g - drag(v)
de modo que, supondo que nosso foguete aumenta o thrust do motor ateh um valor fixo e ali fica ateh acabar o combustivel, ele vai variar com t (tempo absoluto desde o inicio dos calculos) e tambem a massa vai variar com t, pois conforme o combustivel eh queimado, a massa total do sistema diminui. alem disso, adicionamos o arrasto aerodinamico drag() como uma funcao da velocidade: conforme a velocidade aumenta, ela se opoe ao movimento.
obviamente, no recalculo da aceleracao teremos tambem m(t).
o resultado normal disso eh que nosso foguete comeca a ganhar velocidade e, conforme o combustivel vai sendo consumido, ele vai ganhando mais forca resultante em funcao do peso diminuir. ao mesmo tempo, ele vai perdendo forca resultante em funcao do arrasto aerodinamico. depois de determinado tempo, o combustivel acaba e a forca de arrasto aerodinamico e a gravidade acabam gerando uma resultante contraria ao movimento, que forca a desaceleracao, ateh que o foguete chegue a altura maxima e comeca a cair. durante a queda, o arrasto aerodinamico tambem atua, de modo que, a partir de uma certa velocidade, o foguete passa a cair com velocidade constante, apesar da aceleracao da gravidade.
agora, para levar isso para um motor DC a coisa pode complicar. eu jah fiz testes com motores de passo, no caso, o motor de passo acelerava ateh uma boa velocidade, entao precisava mudar de direcao. isso era complicado pq a massa do sistema fazia simplesmente o motor de passo continuar girando alem do ponto onde deveria mudar de direcao. alem disso, o motor nao conseguia vencer a inercia do sistema e simplesmente zumbia sem sair do lugar, pois em alta rotacao ele eh muito fraco e isso obrigava a usar correntes maiores e velocidades muito menores. a solucao para otimizar o sistema foi acelerar continuamente ateh metade do trajeto e entao comecar a desacelerar ateh parar totalmente no ponto final do trajeto, permitindo entao mudar a direcao e voltar a acelerar, tudo de forma suave. obviamente a velocidade maxima do sistema dependia do comprimento do trajeto, de modo q apenas em trajetos suficientemente longos era possivel acelerar a maxima velocidade. nesse caso, calcula-se o tempo em que o motor ficou efetivamente acelerando e usa-se o mesmo tempo para efetuar a frenagem, para que nao passe do ponto correto. alem da precisao, a velocidade maxima aumentou, pq mesmo ficando mais fraco, era possivel acelerar o motor ateh a maxima velocidade em que ele conseguia manter o mecanismo em movimento.
bom, sobre a implementacao interativa, alguem pode argumentar que o problema ali em cima do foguete eh resolvido em qq livro de mecanica classica, o que eh verdade, mas apenas no caso de thrust variar com o tempo. se o sistema eh dinamico e possui um operador capaz de controlar o fluxo de combustivel, o resultado do problema eh imprevisivel e eh aih que entra a solucao interativa: a cada passagem pelo loop de recalculo eh possivel alimentar o sistema com novas informacoes, de modo que a simulacao em software siga as mesmas decisoes aplicadas ao equipamento embarcado. assim, se a simulacao for suficientemente precisa, vc pode usar a propria simulacao no equipamento embarcado para q ele tome decisoes, apoiado em um numero menor de sensores externos: por ex, a partir de um simples acelerometro, vc calcula o resto e estima velocidade e posicao no simulador interno, dispensando sensores extras.
ah sim, a relacao F/m eh essencial: tal como em aeronaves de combate, cuja relacao potencia/peso determina a agilidade da aeronave, a relacao similar F/m determina a aceleracao do sistema: vc nao pode acelerar ou frenar arbitrariamente, tem q respeitar a inercia do sistema. diminuir a massa e aumentar a forca resultante melhoram a agilidade do sistema, mas claro que vc vai visualizar limites no que pode mexer.