Os servomotores são amplamente utilizados em robótica, mecanismos industriais, aeromodelismo, dispensadores de alimentos, projetos de estudantes e universitários, etc. sua principal vantagem é a precisão da posição do seu eixo, de forma controlada. Neste capítulo, estudaremos como controlar servomotores com a placa micro:bit.
Servomotores são motores eletromagnéticos, cujo eixo pode ser posicionado com grande precisão em uma faixa de 0 a 180 graus. Para isso, os servomotores possuem um circuito eletrônico que consegue saber em que posição está o seu eixo. A grande maioria dos servomotores utiliza um resistor variável (potenciômetro) para saber a posição do eixo. Para controlar a posição do eixo, um pulso digital é usado conforme mostrado na figura a seguir:
Dependendo do servomotor, este pulso pode variar tipicamente de cerca de 0,4 milissegundos (400 microssegundos) a cerca de 4 milissegundos (4000 microssegundos). Na figura a seguir podemos ver a relação entre a posição do eixo e o pulso de controle:
Este pulso é tratado por um sinal PWM ou Pulse Width Modulation, que, para servomotores, normalmente tem um período de 20 milissegundos e uma frequência de 50 ciclos por segundo, conforme mostra a figura a seguir:
As principais partes que compõem um servomotor são:
- Potenciômetro
- Circuito Controlador
- Motor
- Caixa de velocidade
- Eixo
A figura a seguir mostra as partes do servomotor em forma de diagrama:
Para a conexão, os servomotores possuem 3 cabos. Um para conectar à fonte de tensão, um para conectar ao terra e outro para o sinal conforme mostrado na figura a seguir:
As tensões típicas para conectar servomotores podem variar de cerca de 3 a 9 volts. Eles vêm em vários tamanhos, dependendo da quantidade de peso que precisam mover. Consulte a ficha técnica do fabricante, para obter os dados do servomotor a ser utilizado. Para o desenvolvimento das práticas deste capítulo, observe que a tensão de alimentação do servomotor suporta 3 volts. A figura a seguir mostra um modelo de servomotores:
Para utilizar os servomotores microbit, acesse o menu: "Avançado" e na janela que foi exibida, selecione o menu: "Extensões", conforme mostra a figura a seguir:
Uma página com vários ícones aparecerá. Selecione aquele com o nome: “servo”, conforme mostra a figura a seguir:
Uma vez selecionado o ícone: “servo”, um item chamado: “Servos” aparecerá no menu de funções, conforme mostrado na imagem a seguir:
Selecione o menu: “Servos”, para começar a utilizar seus blocos, conforme mostra a figura a seguir:
Configuração do servo motor
Existem alguns blocos para configurar o servomotor, que veremos nesta seção:
Existe um bloco chamado: “set servo pulso para nós”, que permite definir a largura do pulso do servo em microssegundos. A figura a seguir mostra este bloco:
Existe um bloco chamado: “set servo range from to”, que define a possível faixa de ângulos de rotação. Normalmente esta faixa vai de: 0 a 180 graus conforme mostrado na figura a seguir:
Existe um bloco chamado: “set servo stop on neutro”, que permite definir um modo de parada. Assim, quando este bloco é acionado, ele para (para) o servomotor quando o ângulo de rotação está na posição neutra (90 graus). Este bloco é mostrado na figura a seguir:
Normalmente estes blocos são usados no início do programa. Para o desenvolvimento deste capítulo deixamos os que o compilador "MakeCode" usa por padrão.
Posicionamento do servomotor de 0 a 180 graus.
O compilador MakeCode permite acionar 3 servomotores, por padrão, nos pinos de saída: P1, P2 e P3 do placa microbit. Ao usar blocos que usam servomotores, tenha cuidado para selecionar o pino correto em que o servomotor se encontra, pois o compilador MakeCode, por padrão, seleciona o pino P0. Todos os blocos que utilizam servomotores, em seu menu suspenso, permitem selecionar o pino em que o servomotor está, conforme mostra a imagem a seguir:
Para definir o ângulo do servo, usamos um bloco chamado: “set servo angle to”, conforme mostrado na figura a seguir:
Por exemplo, se quisermos que o servomotor se posicione em 0 graus, podemos usar o seguinte programa, conforme mostrado na figura a seguir:
Quando usamos algum servo motor, o compilador “MakeCode” usa o simulador para ver como os servos se posicionariam. Na figura a seguir podemos ver o simulador, quando executa os blocos mostrados acima:
Observe como fica o programa “MakeCode”, quando utilizamos um bloco do menu: “Servos”:
Se quisermos posicionar o servomotor em 180 graus, podemos usar os seguintes blocos:
O simulador mostrará o servomotor na seguinte posição:
Assim, podemos fazer um programa onde o servomotor é posicionado em 0 graus, depois é posicionado em 180 graus e depois é posicionado em 0 graus novamente. Essas posições seriam repetidas continuamente. Os blocos para fazer isso são mostrados na figura a seguir:
Existe um tipo de servo motor que pode girar continuamente, como os motores DC convencionais, que podemos controlar com o seguinte bloco de código:
Para parar (parar) os servomotores contínuos, podemos utilizar o bloco: “stop servo”, conforme mostra a figura a seguir:
Posicionamento de 2 servomotores.
Quando são utilizados 2 servomotores, o simulador “MakeCode” apresenta uma protoboard, conforme mostra a figura a seguir:
Assim, podemos fazer os 2 servos se moverem no mesmo ângulo de posição. Este movimento é semelhante ao usado pelos olhos humanos ou para-brisas de carros. A figura a seguir mostra o programa para fazer isso:
Por exemplo, se queremos abrir portas ou janelas com servomotores, podemos usar um programa como o mostrado na figura a seguir:
Observe que em um ponto os braços dos servomotores se encontram e em outro eles se afastam. Com estes blocos é possível criar infinitas ideias, onde são necessários movimentos precisos.
Posicionamento de 3 servomotores.
MakeCode nos permite controlar e simular 3 servo motores. Na figura a seguir podemos ver o simulador da microbits e os 3 servomotores:
O programa a seguir permite controlar os 3 servomotores ao mesmo tempo:
Observe que, na placa de ensaio esquerda: em um ponto os servomotores esquerdo e central estão se afastando e os servomotores direito e central estão se movendo um em direção ao outro. Então, na protoboard à direita: o oposto é feito, o servo esquerdo e central se aproximam, enquanto o servo direito e central se afastam.
Sequências de posicionamento com servomotores.
É muito comum em alguns projetos que utilizam servo motores, a necessidade de sequências de posições dos eixos, para execução de uma tarefa específica. Por exemplo, suponha que um mecanismo precise da seguinte sequência de posições:
Crie um novo projeto. Para fazer essas sequências de posições, podemos usar um programa como o seguinte:
O programa a seguir faz a mesma coisa que o programa anterior, mas usamos um array para armazenar as posições:
Para criar uma matriz numérica, acesse o menu: “Arrays”, conforme mostra a figura a seguir:
No menu suspenso do bloco, você pode criar uma nova variável, como mostra a figura a seguir:
Demos ao array que criamos o nome: “ListPositions”, mas você pode usar qualquer outro nome. Para percorrer os elementos deste array e obter as posições, podemos utilizar o bloco chamado: “for the element of”, que se encontra no menu: “loops”, conforme mostra a figura a seguir:
Observe se no bloco: "para o elemento de", o array: "PositionsList" está selecionado.
Assim, podemos criar inúmeros projetos utilizando servomotores. Alguns projetos utilizam vários servomotores, para os quais é necessário utilizar uma placa que suporte o controle destes. Além disso, se os servomotores consumirem muita corrente, é necessário aumentar a bateria ou tirar a tensão dos servomotores de uma fonte externa. Criatividade, prática, nos ajudará muito a usar servomotores. Como última observação, é sempre recomendável consultar as características do servomotor em sua ficha técnica.