Como posso modificar um servo de hobby de baixo custo para rodar 'livremente'?


15

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?


3
Os servos de hobby não são realmente adequados para robótica robusta, e os servos de hobby modificados são ainda piores. Você não vai gostar do que recebe se fizer isso. Compre um motor DC de redutor acessível e uma pequena ponte H para acioná-lo; ele será muito mais robusto e você ficará muito mais feliz. Você pode construir uma ponte H a partir de um circuito L298 a um custo muito baixo.
Jon Watte

11
Acho que minha próxima pergunta aqui será 'o que é uma ponte h?' (Mas eu vou experimentar o Google em primeiro lugar!)
Khrob

Respostas:


13

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.

backdrivability

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.

Maxon ESCON

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.


A resposta do SimpleCoder também é excelente.
Khrob

7

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:

insira a descrição da imagem aqui

Imagem do SparkFun


@Khrob: Por favor, veja minha edição
Chris Laplante

Bom - já encomendei um monte deles!
Khrob

@Khrob: Bom, deixe-nos saber como eles funcionam! (E por favor, não me culpe se ele não funciona;))
Chris Laplante

@Khrob: Além disso, nota que, dependendo de como as correntes pequeno você está medindo, você pode precisar de uma placa mais sensível: sparkfun.com/products/8883
Chris Laplante

11
Começarei barato e subirei!
Khrob #

5

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.

  • Determine se o servo tem uma parada física. Nesse caso, você terá que abrir o servo e removê-lo (eu recomendo a ferramenta Dremel).
  • Você deseja encontrar o "centro" do mecanismo de feedback.
    • Conecte o servo ao seu Arduino e envie um comando "central" (geralmente PWM 127).
    • Encontre o mecanismo de feedback (normalmente um potenciômetro) e apare-o até que o servo não se mova.
    • Cole o potenciômetro no lugar ou meça a resistência e substitua o potenciômetro por um resistor de valor definido.
  • Remonte o servo.

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.


Eu estou bem com a existência de um limite mecânico para o movimento, mas essa seria uma boa maneira de estendê-lo ainda mais para ter uma rachadura na configuração do pêndulo invertido! Eu olhei as coisas do Dynamixel, e é muito legal, mas vale mais do que espero gastar nisso.
Khrob

Minha impressão foi de que o OP queria iniciar algo em movimento dirigindo um servo e depois deixá-lo "inoperante" sem energia até que naturalmente parasse de inércia. Não conheço nenhum design de servo (contínuo ou não) que permita que esse efeito aconteça.
Crake

@ Crake, eu concordo, acredito que respondi à pergunta errada, mas vou deixar isso para trás, pois já fiz o trabalho: p. IIRC, os servos Dynamixel devem ter uma configuração de "costa".
Mjcarroll 23/10/12

@mjcarroll Sim, acho útil mencionar como modificar um servo para rotação contínua, já que essa é uma tarefa comum para projetos de robôs baratos. Estou curioso para saber se os servos Dynamixel usam o algoritmo de medição de corrente descrito na resposta do SimpleCoder, buscando constantemente minimizar a corrente ajustando o PWM, ou se eles têm uma embreagem física para desengatar o servo motor do eixo de acionamento.
Crake

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.