Eu tenho alguns servos de hobby ( Power HD 1501MGs ) e gostaria de poder controlá-los (via um Arduino) para que eles sigam o ângulo que eu defino ou os coloque no modo 'corrida livre', onde a carga os levará aonde quer que vá.
Isso é possível, ou vou acabar arrancando as engrenagens?
Meu primeiro pensamento é simplesmente matar o poder do servo, mas a força necessária para movê-los nesse estado é mais do que eu gostaria.
Se possível, estou observando uma alteração de hardware ou posso fazê-lo em software?
Respostas:
O que você está perguntando não será muito fácil com um servo RC padrão.
O que você está pedindo é um servo com tração traseira. IE, que você pode girar livremente aplicando um torque externo. Certamente é possível criá-los, e eles são usados em muitos robôs, mas a maioria dos servos RC requer torque considerável para acioná-los de volta. Eu os chamaria de semi-backdrivable.
O que impede você de voltar a dirigi-los? Duas coisas:
Fricção: Em primeiro lugar, fricção na corrente de engrenagem e no motor. Os servos RC são sempre reduzidos; a saída gira mais lentamente que o motor. Obviamente, isso significa que, quando você tenta dar marcha à ré, precisa girar o motor muito rapidamente. Qualquer atrito ou desgaste no motor será sentido dezenas de vezes na saída.
Atual: algo surpreendente nos motores elétricos é que, se você curto os terminais, eles se tornam mais difíceis de girar. A rotação do motor gera uma corrente elétrica que funciona contra a sua rotação. Os componentes eletrônicos no interior do servo podem permitir que corrente suficiente flua, mesmo quando desligados, para impedir visivelmente a reversibilidade. No passado, eu notei que alguns motores de passo grandes, mesmo quando não estão engrenados, são quase impossíveis de voltar quando conectados a equipamentos não energizados. Mas quando você os desconecta, eles podem ser girados livremente.
Portanto, uma maneira de melhorar a dirigibilidade traseira é impedir o fluxo de corrente. A maneira óbvia de fazer isso é desconectar completamente o motor de seus componentes eletrônicos. Mas isso é difícil, mesmo usando FETs, porque os diodos dentro dos FETs podem permitir que a corrente flua. No entanto, você poderia usar um relé, que realmente desconectaria o motor. Você só teria que usá-lo em um dos terminais do motor.
Servo-controladores 'adequados' (como o ESCON da Maxon) na verdade contêm um controlador de corrente que pode impedir ativamente o fluxo de corrente aplicando a tensão correta nos terminais do motor. Substituir os componentes eletrônicos do servo por algo capaz de controlar a corrente pode realmente ajudar.
O que você deve fazer: Abra o servo, retire o motor do motor e monte-o novamente. Quão fácil é dirigir de volta agora? Se for fácil, pode ser possível fazer o que você deseja. Se ainda for muito difícil para a sua aplicação, você terá que escolher um servo diferente ou criar o seu. Faça um com um único estágio de engrenagem para que o atrito da engrenagem seja reduzido o máximo possível e use a eletrônica de acionamento com um circuito de controle de corrente para garantir fluxo zero de corrente.
fonte
Pergunta interessante.
A primeira opção que eu investigaria seria cortar a energia, como você sugeriu (talvez controlar um MOSFET no software para trocar a energia).
Outra abordagem mais complicada pode ser monitorar o consumo atual do servo para detectar quando ele está sob uma carga pesada. Quando você quiser entrar no modo "corrida livre", peça ao seu software que tente mover continuamente o servo para uma posição que resulte no menor consumo atual. Isso não resultará inteiramente em um servo de "execução livre", pois haverá alguns movimentos instáveis do servo enquanto o software tenta encontrar a posição "correta", mas pode funcionar dependendo da sua aplicação.
Você não precisaria modificar seus servos para monitorar o consumo atual. Uma placa como esta da SparkFun ficará entre o servo e sua fonte de alimentação (você precisa de um deles por servo) e emitirá uma tensão analógica (que você pode ler em um pino ADC do microcontrolador) que corresponde à corrente:
Imagem do SparkFun
fonte
Geralmente, esses tipos de servos de hobby não são feitos para rotação contínua e geralmente incluem uma parada mecânica. Cuidado, o que descrevi abaixo é uma maneira infalível de nunca obter uma operação de circuito fechado real, mas, em vez disso, tornará o servo apenas contínuo.
Na maioria das vezes, você pode fazer uma pesquisa rápida on-line por "Modificação contínua para x servo", mas descreverei o processo geral aqui.
Agora, o envio de um comando "central" para o servo deve impedir que ele se mova, enquanto o envio de um comando positivo ou negativo deve fazer com que ele gire continuamente em uma direção ou outra. A velocidade de rotação deve ser proporcional à "distância" do centro do comando enviado.
Se você quiser restaurar a operação do servo no seu servo modificado recentemente, poderá adicionar algum tipo de codificador para fechar novamente o loop.
Como alternativa, você pode consultar o servo da série Dynamixel , que permite operações contínuas e servidas, e inclui algum suporte ao Arduino.
fonte
Não faça, em vez disso, arranjar alguns motores decentes e conduzi-los através de uma ponte-h, como você encontrará nesta proteção do motor .
fonte