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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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”:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

Para parar (parar) os servomotores contínuos, podemos utilizar o bloco: “stop servo”, conforme mostra a figura a seguir:

 


| Clique na imagem para ampliar |

 

 

 

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:

 


 

 

 

 


| Clique na imagem para ampliar |

 

 

Por exemplo, se queremos abrir portas ou janelas com servomotores, podemos usar um programa como o mostrado na figura a seguir:

 


 

 

 

 


| Clique na imagem para ampliar |

 

 

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:

 


 

 

 

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

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:

 


| Clique na imagem para ampliar |

 

 

 

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:

 


| Clique na imagem para ampliar |

 

 

 

 

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.