Questão:
Como calibrar motores NXT para percorrer a mesma distância?
nhinkle
2012-01-20 06:30:18 UTC
view on stackexchange narkive permalink

Os motores incluídos com o NXT não são todos criados iguais - quando recebem o mesmo nível de potência de entrada, eles nem sempre percorrem a mesma distância ou giram na mesma taxa.

Eu medi isso criando um pequeno programa para girar dois motores na mesma velocidade e medir sua rotação. Os resultados mostraram diferenças de mais de 100 graus em menos de um minuto de condução.

Existe alguma maneira de calibrar mecanicamente os motores , ou contabilizar facilmente no programa a diferença em seus poderes uma vez que tenha sido determinada? Dado que o NXT pode detectar a distância que cada motor girou, há alguma maneira de fazer com que ele ajuste automaticamente a velocidade de um dos motores ao detectar que está "ficando para trás"? (Observe que estou usando o LabVIEW 2011 para programar isso, mas aceitaria uma resposta que é apenas um conceito de código, se pudesse ser potencialmente implementado no LabVIEW.)

quantos anos tem seus motores? Eu descobri que há um período de 'burn-in' em que quanto mais você os usa, mais próximos dois motores se parecem.
@enthdegree os motores têm pelo menos 3 anos. Estou trabalhando em um projeto para uma turma de uma universidade que ensina programação básica e a plataforma NXT faz parte da turma. Não tenho certeza da idade dos motores específicos que estou usando, mas eles já usam a plataforma NXT há algum tempo.
Quatro respostas:
Sebastian Wahl
2012-01-22 02:03:24 UTC
view on stackexchange narkive permalink

Você não pode calibrar os motores, nem mecanicamente nem em software. No entanto, existem vários métodos no software para considerar isso.

O firmware NXT padrão contém um modo de sincronização que tenta manter os dois motores alinhados. No NXC você pode fazer isso usando a função OnFwdSync assim: OnFwdSync (OUT_AC, 75, 0); o primeiro parâmetro é os motores a sincronizar, o segundo é a potência e o terceiro define a diferença em velocidade entre os motores (usado para o tribot).

Este artigo explica como fazer o mesmo no RoboLab: Como funciona a sincronização do motor NXT no ROBOLAB?

No NXT-G acho que a sincronização está ativada por padrão no bloco de movimentação, corrija-me se estiver errado.

Não sei como fazer isso no LabView. No entanto, ouvi dizer que há alguns blocos para fazer isso na paleta "NXT I / O» NXT Native I / O »Output", tente olhar lá.


Você pode fazer seu próprio controlador observando o valor de rotação. Calcule a diferença e defina a velocidade assim:
  Motor A = potência + peso * diferençaMotor B = potência - peso * diferença  

O peso é como Se a diferença deve afetar a velocidade do motor, você precisará experimentar um pouco para encontrar um bom valor aqui. Você também pode querer levar o limite de 100% na conta. Se a potência de um motor ultrapassar 100%, faça o seguinte:

  if (Motor A > 100) Motor B = Motor B - (Motor A - 100) if (Motor B > 100) Motor A = Motor A - (Motor B - 100)  
Não estarei no trabalho até terça-feira, mas quando estiver, irei olhar e ver se há alguma função que pareça fazer isso corretamente no LabVIEW. Se não, terei que escrever o meu próprio, conforme você sugeriu. Obrigado pela ajuda!
Philo
2012-01-20 16:50:45 UTC
view on stackexchange narkive permalink

A diferença de velocidade não pode ser evitada. Mesmo se os próprios motores fossem cuidadosamente emparelhados, diferenças de atrito nos eixos ou desequilíbrio de peso do robô resultariam em incompatibilidade de velocidade. Não estou acostumado com LabVIEW, mas o firmware NXT tem uma forma de sincronizar dois motores, esta funcionalidade deve estar disponível no LabVIEW.

nhinkle
2012-01-27 03:07:27 UTC
view on stackexchange narkive permalink

Depois de examinar um pouco a paleta NXT IO no LabVIEW, encontrei algumas funções que sincronizam os motores enquanto dirigem o robô. Os VIs "drive distance" e "direção on" sincronizarão os motores de forma adequada para fazer o robô dirigir em linha reta.

functions palette

O "motor ligado" e "motor reverso "blocos, que são as opções padrão se você não descer na lista completa, não sincronize os motores. Como tal, para que os motores funcionem juntos, deve-se usar os VIs "direção ligada" ou "distância de direção".

Clinton Blackmore
2012-01-29 09:14:50 UTC
view on stackexchange narkive permalink

Este é um método simples para ajudá-lo a combinar seus motores da melhor forma possível: http://www.techbrick.com/Lego/TechBrick/TechTips/NXTCalibration/

Obrigado, eu vi isso quando estava pesquisando isso. A turma para a qual estou trabalhando já começou a usar seus motores, então, para fazer isso, todos teriam que desmontar seus robôs, o que é tarde demais para fazer. Vou sugerir isso ao instrutor para a aula do próximo ano.


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...