Olá a todos,
neste post aprenderemos utilizar servos motores em nossos projetos. Servos motores são dispositivos que permitem controlarmos com precisão a posição do seu eixo. A posição do eixo de um servo é controlada com o uso do PWM, onde a largura do pulso HIGH informa a posição do servo. Existem servos que permitem a rotação de 90°, 180°e até 360°de seu eixo. Servos são muito utilizados em robôs e brinquedos de radio controle, como carrinhos e drones.
Controlaremos a posição do servo enviando comandos pela porta serial, assim quando enviarmos o caractere A o servido deslocará o eixo um grau no sentido anti-horário e ao enviarmos o caractere S o servo deslocará o eixo um grau no sentido horário.
Ao contrário dos post apresentados até o momento não será necessário a montagem de um circuito na protoboard, pois o servo utilizado nesse exemplo possui um conector que se encaixa no cabo macho-macho. Simplesmente conecte o fio do terra do servo em um pino terra (GND) do Arduino, o fio do VCC do servo no pino 5V do Arduino e o fio que sobrará em um pino digital do Arduino que suporte o uso de PMW.
Abaixo temos o esquema elétrico e o desenho elaborado no simulador:
Passaremos agora para o desenvolvimento do programa que controlará o servo. O primeiro passo é utilizarmos o comando #include para incluirmos a biblioteca Servo.h que possui o objeto e métodos para trabalharmos com servo motores. Essa biblioteca disponibiliza métodos mais simples para trabalhar com os servos, como o método write que recebe o grau que queremos o eixo do servo seja movido ao invés do comprimento do pulso.
Em seguida declare um objeto do tipo Servo para controlarmos o servo e uma variável do tipo inteiro para armazenar o ângulo que o eixo estará. Em seguida escreva na função setup a inicialização do objeto Servo com o método attach. Esse método recebe o pino que o servo está conectado. Os valores de comprimento mínimo e máximo do pulso devem ser obtidos na documentação do servo. Inicie também na função setup a porta serial.
Na função loop verifique se há caracteres para serem lidos na porta serial. Caso não exista caracteres para serem lidos o programa aguardará 300 milissegundos e terminará esse execução da função loop com o comando return.
Existindo caracteres na porta serial, estes deverão ser lidos. Quando o caractere enviado for A a variável com os graus da posição do eixo será incrementada em uma unidade e quando for enviado o caractere S essa variável será decrementada em uma unidade. Após o cálculo da nova posição ela será enviada e o eixo do servo será movimentado. Por fim a função aguarda 300 milissegundos para verificar novamente a porta serial.
Onde encontrar alguns dos componentes:
- Arduino R3 Uno
- DCcEle DCduino (clone do Arduino R3 Uno)
- Micro servo motor Tower Pro SG90
- Servo Motor padrão Futaba S3003
- Cabos do tipo macho-macho com 10cm
- Cabos do tipo macho-macho com 20cm
Obrigado pela atenção e até o próximo post!
Um comentário em “Controlando servo motores com o Arduino”