Como modificar servos motores: Duas Super Modificações
Fala, makers! Aqui quem fala é o Davi Colares e hoje vou trazer para vocês duas super modificações que vocês podem fazer em seu servo motor. Curtiu? Então vem comigo!
Obs.: Irei começar o tutorial assumindo que você entende o funcionamento básico de um servo, você pode encontrar mais informações aqui.
Rotação Contínua no Servo Motor
Se você já teve a oportunidade de usar um servo motor deve saber bem da limitação de rotação, geralmente 180º, isso acontece, pois, os servos têm seu eixo conectado a um potenciômetro e são mecanicamente impedidos de passar da angulação em que foram fabricados.
Contudo, a praticidade dos servos, tamanho reduzido e poderosa caixa de redução, fez com que surgissem formas de burlar isso. A mais simples, é apenas esquecer a placa controladora que existe dentro do servo e conectar os cabos diretamente no motor. Por ser a mais simples é também a menos prática, pois você transformou seu servo em uma caixa de redução apenas.
Modificação Inteligente
Entendendo que o servo motor funciona ajustando seu ângulo a partir do feedback que sua placa controladora recebe do potenciômetro conectado ao eixo e o valor recebido através do sinal. Podemos modificá-lo de modo a preservar a ponte H da controladora e ainda termos o recurso de controlar a velocidade.
Isso soa maravilhoso, não? Transformar seu servo motor comum em um motor com controle de velocidade, caixa de redução e ponte H, de fato isso é incrível, e o melhor… É super simples!
Desse modo, tudo que você precisará fazer é conectar o seu servo a uma placa Arduino ou similar e upar um código que faça seu eixo parar na metade da angulação máxima.
<code>#include <Servo.h> Servo myservo; // Nomeamos o nosso servo void setup() { myservo.attach(3); // Conectamos o Signal no Pino 3 } void loop() { myservo.write(90); // Enviamos metade do ângulo máximo de rotação, no meu caso 90 delay(50); // Um pouco de time para não queirmarmos nosso amigo } </code>
Agora que você calibrou seu servo, desconecte-o da placa e desparafuse o invólucro plástico. Você irá notar que o servo é constituído de uma caixa central e uma tampa superior e inferior.
Desse modo, você encontrará na parte superior: a caixa de redução, não mexa nisso agora, e embaixo: a placa controladora, motor e o potenciômetro. Com muito cuidado retire o eixo do potenciômetro do orifício em que ele está encaixado, você pode confirmar se ele está na posição correta religando o servo na sua placa com cuidado. Se o motor se movimentar, tente mexer no eixo do potenciômetro até achar a posição em que ele para. Agora você pode passar cola no eixo do potenciômetro ou apenas deixa ele distante do orifício e fechar a caixa.
E pronto! Seu motor com velocidade variável está pronto, se você mandar valores maiores de 90 ele gira para um lado, menores para o outro e quanto mais distante de 90, maior a velocidade com que ele irá girar.
Servo Motor com Feedback
Agora irei te mostrar uma modificação mais simples, mas não por isso menos importante, muito pelo contrário! Com essa modificação você poderá receber no Arduino variações externas na rotação do Servo Motor, isso significa que você pode, por exemplo, gravar movimentos para que depois a placa repita. Legal, mas como diabos faz isso?
Acima, você pode observar o funcionamento de um servo comum, a placa microcontroladora, Arduino, envia um sinal para o controlador interno do servo. Ele então ordena o servo para se movimentar até achar aquela posição e o que torna isso possível é o feedback que é enviado de volta para a placa interna. Simplificando, o motor irá girar até que o potenciômetro condiza com o valor especificado através do signal.
Sabendo disso, podemos soldar um fio diretamente no potenciômetro e assim teremos 4 fios saindo do Arduino, através do fio do potenciômetro poderemos saber o quanto o eixo do motor movimentou e avisar ao Arduino, o nosso programa poderá então replicar a mudança no servo.
<code>//O objetivo desse código é mudar gradualmente o ângulo do nosso servo e //printar no Monitor Serial #include <Servo.h> int feedbackPin = A0; int feedbackValue; // Valor que iremos receber de feecback Servo myservo; // Nomeamos nosso Servo void setup() { Serial.begin(9600); //Monitor Serial myservo.attach(3); myservo.write(0); //Setamos o motor no zero for (int servoPos = 0; servoPos <=180; servoPos = servoPos + 5){ // Aumenta de 5 em 5 myservo.write(servoPos); //Posição Servo Motor delay(1000); // Um pouco de tempo pra não queimar nosso amigo feedbackValue = analogRead(feedbackPin); //Ler valor de Feecback (A magia acontece aqui) Serial.print("Posição= "); // Escreve no monitor Serial.print(servoPos); Serial.print("\t"); Serial.println(feedbackValue); } myservo.write(0); //Setamos o motor no zero Serial.println("Finished!"); // Printamos o término } void loop() { }</code>
Assim, tudo que você precisa fazer é soldar um cabo na perna central do potenciômetro e desgastar um pouco o invólucro do servo, criando uma saída para esse quarto fio.
A gente se despede por aqui, se você gostou e quer mais artigos como esse sobre modificações e hackings de eletrônicos, comenta aí embaixo e até a próxima!