Servo motor com giro contínuo.
É de comum conhecimento que os servos motores, famosos por sua precisão não desempenham o giro completo, retendo-se apenas (em alguns casos) ao giro de 180 graus. Dessa forma, para permitir a volta completa ao servo é necessário seguir alguns procedimentos.
1- Iniciamos o nosso procedimento de alteração do motor desparafusando a caixa externa do servo com auxílio de uma chave estrela e retiramos a tampa superior que cobre o conjunto de engrenagens
2- Após retirada a tampa, verificamos a posição de cada engrenagem e as memorizamos para que no processo de remontagem todo o sistema funcione perfeitamente. (para nos ajudar podemos tirar uma foto);
3- Retiramos todas as engrenagens do conjunto e devemos prestar atenção naquela engrenagem que possui em sua estrutura uma pequena trava de giro impedindo que ela dê uma volta completa, então utilizando um alicate de corte, tiramos com cuidado a trava tendo a preocupação de não danificar os dentes da engrenagem;
4- Completado o passo 3, abrimos a tampa de baixo da caixa externa do servo motor (como podemos ver na imagem do passo 1) afim de retirarmos o potenciômetro. Após retirado, devemos soltar os 3 fios que ligam o potenciômetro à uma pequena plaquinha, denominada placa controladora (obs.: devemos soltar a extremidade dos fios que estão presos ao potenciômetro e não os que estão soldados à plaquinha), feito isso, vamos agora retirar uma pequena trava interna dele com o alicate de corte para o potenciômetro poder fazer um giro de 360 graus;
5- Agora com um multímetro, nós devemos medir a resistência entre os 2 lados do potenciômetro afim de ter a mesma resistência equivalente de cada lado, aí você se pergunta: “Como eu faço isso?” Então vou tentar explicar mais claramente.
O potenciômetro é um componente eletrônico que possui 3 terminais, por isso ele é conhecido também como “Trimpot”. Esse componente eletrônico tem como finalidade ser um resistor de resistência variável onde ao girar um eixo central eu vou determinar uma certa resistência equivalente, então com o auxílio de um multímetro, eu vou colocar um dos dois fios (fio preto) que partem do multímetro, no terminal central do potenciômetro e o outro fio (fio vermelho) no terminal de uma extremidade e assim ver qual valor de resistência apareceu no visor do multímetro, feito isso eu vou repetir a experiência só que agora colocando o fio vermelho no outro terminal do potenciômetro e verificar se eu tive o mesmo valor de resistência para o outro lado, se eu não tive, deverei girar o eixo central até que eu consiga igualar os valores para os dois terminais, e assim eu vou saber qual o valor dos resistores que eu vou utilizar para substituir o potenciômetro.
6- Agora que sabemos o valor da resistência que vamos usar, pegamos 2 resistores (ou associação destes) de resistência igual ou próxima da indicada e os soldamos nas extremidades dos fios que foram desprendidos do potenciômetro no passo 4 de forma semelhante à imagem abaixo e colocamos o potenciômetro (agora sem sua trava de giro) no seu local inicial.
7- Após terminado todos os passos descritos anteriormente devemos isolar o circuito eletrônico afim de que não tenhamos maus-contatos entre os componentes resultando num mau funcionamento do motor.
8- Sendo assim, devemos organizar as engrenagens e repô-las como estavam dispostas inicialmente, depois organizar o circuito eletrônico na parte de baixo do servo de forma que consigamos parafusar e fechar toda a caixa externa do servo motor, e assim teremos um servo motor desempenhando giro contínuo.
Código para Calibrar os Servos:
#include
Servo myservo1; // create servo object to control a servo
Servo myservo2;
char comando;
int valorDeLuminosidade;
int pos=83;
void setup()
{
myservo1.attach(8); // attaches the servo on pin 9 to the servo object
myservo2.attach(9);
pinMode(10, OUTPUT);
Serial.begin(9600);
//myservo1.write(70);
//fmyservo2.write(100);
}
void loop()
{
valorDeLuminosidade = analogRead(0);
//Serial.println(valorDeLuminosidade);
comando = Serial.read();
if (comando == 'f') {
myservo1.write(pos);
myservo2.write(pos);
pos=pos+1;
Serial.println(pos);
} else if (comando == 'e') {
myservo1.write(pos);
myservo2.write(pos);
pos=pos-1;
Serial.println(pos);
}
}
Ou