Início
/
Projetos Arduino
/
Projetos Squids
/
Intermediário
/
I19 - Como controlar um micro servo motor 9g com potenciômetro - Arduino
I19 - Como controlar um micro servo motor 9g com potenciômetro - Arduino
Angelo Luis Ferreira | 22/12/2022
Acessos: 3.110
Intermediário - Projeto 19
Girar o eixo do servo motor usando um potenciômetro e o Arduino
Objetivo
O objetivo deste projeto é mostrar como controlar o ângulo de rotação do eixo de um micro servo motor 9g SG90 pelo potenciômetro, usando a plataforma Arduino. O projeto consiste em girar o eixo do servo entre 0º e 180º de acordo com o ângulo de rotação do eixo do potenciômetro.
Definições
Micro Servo Motor: é um micro atuador eletromecânico que apresenta rotação do seu eixo proporcional ao comando emitido por um sinal digital, que pode ser por um microcontrolador, como pela placa Arduino, por exemplo. Portanto, com um micro servo motor é possível controlar a posição e a velocidade de rotação do seu eixo com precisão. Por estas características, os servos motores são muito utilizados em projetos de robótica e mecatrônica.
Observações:
a. Diferente dos motores tradicionais de corrente contínua, o eixo do servo motor só tem movimento rotativo quando recebe um comando para atualizar a sua posição.
b. O eixo do servo motor não gira continuamente como os demais motores de corrente contínua, mas sim até a uma posição especificada por um comando enviado.
c. O servo motor é portanto um atuador rotativo para controle de posição, que atua com precisão e velocidade controlada a partir de um comando emitido por um microcontrolador.
O micro servo motor é composto pelos seguintes componentes principais:
a. Atuador: formado por um motor de corrente contínua (a maioria) em conjunto com um sistema de engrenagens integradas responsável pela redução da velocidade e aumento de torque. Os servos trabalham com atuadores de até 180º de liberdade de giro (que é o que vamos utilizar neste projeto), mas existem modelos que trabalham com até 360º de liberdade de giro.
b. Encoder: sensor para medir a posição atualizada do eixo.
c. Controlador e circuitos complementares: São circuitos de controle do servo motor responsáveis para corrigir a posição e velocidade do atuador, com base nos comandos recebidos e na posição informada pelo encoder.
Micro Servo Motor 9g SG90: Este micro servo motor específico é bastante utilizado em projetos com Arduino, por ser compacto, de baixo custo, de boa qualidade e de baixo peso (9g). Ideal portanto, para aplicações em projetos robóticos, aeromodelismo e projetos eletrônicos em geral que utilizam sistemas microcontrolados.
Acessórios: um cabo de 3 pinos referente a alimentação e controle 3 tipos de braços (cruzetas) com parafusos de fixação.
Obs.: Neste projeto poderá ser utilizado qualquer tipo de braço de acionamento. Também não é necessário fixá-lo com parafuso, basta encaixá-lo no eixo do servo e em qualquer posição desejada.
Especificação:
Modelo |
SG90 |
Tensão de Alimentação |
3,0 - 6,0V |
Corrente de Operação |
0,1 - 1,2A |
Temperatura de Operação |
-30 ~ 60ºC |
Conector |
JR (Universal) |
Comprimento do cabo |
24,5cm |
Liberdade de giro |
180º |
Velocidade a 4.8V |
0,12 seg/60º (sem carga) |
Torque a 4.8V |
1,2 kg-cm |
Torque a 6V |
1,6 kg-cm |
Dimensões |
32 x 30 x 12 mm |
Peso |
9g |
ATENÇÃO: Este servo motor pode necessitar de mais potência do que existe disponível por padrão em uma porta USB. No caso do motor trepidar ou falhar, conecte uma alimentação externa de uma bateria, por exemplo, para alimentar apenas o servo motor. A utilização de uma fonte de alimentação externa é quase sempre necessária quando se utiliza mais de um micro servo motor 9g SG90 conectados no mesmo Arduino.
Aplicação
Para fins didáticos e projetos com robótica, aeromodelismo, automodelismo, nautimodelismo, automação de processos e controles eletromecânicos em geral.
Componentes necessários
Referência
|
Componente
|
Quantidade
|
Imagem
|
Observação
|
Jumpers |
Kit cabos ligação macho / macho |
1 |
|
|
Micro Servo Motor |
Micro Servo 9g SG90 |
1 |
|
Voltagem de Operação 3,0 - 7,2V Ângulo de rotação 180 graus Velocidade 0,12 seg/60Graus (4,8V) sem carga Torque 1,2 kg.cm (4,8V) e 1,6 kg.cm (6,0V) Temperatura de Operação -30C ~ +60C Tipo de Engrenagem Nylon Tamanho cabo 245mm Dimensões 32 x 30 x 12mm Peso 9g
(datasheet)
|
Potenciômetro |
Potenciômetro 100K |
1 |
|
Você poderá usar valores diferentes do potenciômetro, entre 1K a 100K
A tensão resultante do potenciômetro aumenta quando giramos o eixo do componente no sentido do polo negativo para o polo positivo
|
Arduino UNO |
Arduino UNO R3 |
1 |
|
Você poderá utilizar uma placa Arduino UNO original ou similar
|
Montagem do Circuito
Conecte os componentes como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. O Arduino deve estar totalmente desconectado da fonte de energia enquanto você monta o circuito. Veja a simulação no link Controlando o eixo do servo motor com potenciômetro.
Atenção
1. A montagem do módulo micro servo motor 9g SG90 deve seguir a configuração abaixo:
- Cabo marrom (ou preto em algumas marcas) - Deve ser conectado ao pino GND do Arduino ou ao polo negativo de uma fonte de alimentação externa
- Cabo vermelho - Deve ser conectado a um pino 5V do Arduino ou ao polo positivo de uma fonte de alimentação externa
- Cabo laranja - Deve ser conectado a um pino digital do Arduino configurado como saída. No projeto, utilizamos o pino 9 do Arduino.
1.1. Utilieze "jumpers" macho-macho para fazer as conexões com o Arduino.
2. Observe que o potenciômetro foi montado como um divisor de tensão, onde utilizamos os 3 terminais do componente. Desta forma, o potenciômetro funciona como um divisor de tensão que pode ser lido pelo IDE do Arduino através do conversor analógico digital (ADC ou DAC em inglês). Girando o eixo do polo negativo (GND) para o polo positivo (Vcc) aumentamos o valor da tensão, e ao contrário, diminuiremos o valor da tensão e portanto diminuiremos a velocidade de rotação do motor.
2.1. O potenciômetro utilizado no projeto é um componente mecânico analógico, e por este fato o terminal "b", veja a imagem acima, deverá estar conectado à uma porta analógica do Arduino. No nosso exemplo, conectamos o potenciômetro na porta analógica A0 do Arduino.
2.2. O conversor analógico-digital (frequentemente abreviado por conversor A/D ou ADC) é um dispositivo eletrônico capaz de gerar uma representação digital a partir de uma grandeza analógica, normalmente um sinal representado por um nível de tensão ou intensidade de corrente elétrica. O Arduino UNO (microcontrolador ATmega328) possui um conversor analógico digital interno de 10 bits de resolução (210 = 1024), ou seja, podendo variar seus valores entre 0 e 1023.
3. A imagem abaixo mostra a montagem do nosso projeto:
Usando a biblioteca servo.h
1. Para controlar um servo motor com o Arduino é necessária a utilização da biblioteca Servo. Essa biblioteca nativa já vem instalada no IDE do Arduino e portanto não há a necessidade de mais nenhuma instalação.
1.1. A biblioteca Servo suporta até 12 motores na maioria das placas Arduino e 48 no Arduino Mega.
ATENÇÃO: Nas placas Arduino, exceto a Mega, o uso da biblioteca desabilita a funcionalidade analogWrite() (PWM) nos pinos 9 e 10, haja ou não um servo motor nesses pinos. Na placa Mega, até 12 servos podem ser usados sem interferir a funcionalidade PWM e quando o uso for de 13 a 48 motores a biblioteca desabilita a funcionalidade PWM nos pinos 11 e 12.
1.2. A biblioteca Servo não possui comando específico para controlar a velocidade do servo motor. Para isso, você pode controlar usando via programação (delays, PWM) ou instalando alguma outra biblioteca que permite controlar alterações na velocidade do motor por comando próprio.
2. Para obter mais informações sobre a biblioteca servo acesse o link: biblioteca Servo
3. Repositório GitHub: Ir para o repositório GitHub
Código do Projeto (Sketch)
1. Faça o download e abra o arquivo projetoI19.ino no IDE do Arduino: DOWNLOAD - projetoI19.ino
Se preferir, copie e cole o código abaixo no IDE do Arduino.
/*******************************************************************************
*
* I19 - Controlando o micro servo 9g SG90 com potenciômetro e Arduino
* 26/12/2022
* http://squids.com.br/arduino
*
*******************************************************************************/
#include //inclui biblioteca para controle do servo motor
// criar instancias
Servo servo; // cria o objeto "servo" para controle do servo motor
// variáveis e constantes globais
const byte potpin = A0; // define pino analógico A0 do Arduino conectado ao potenciômetro
int valor; // variável para armazenar o valor lido no pino analógico A0
void setup() {
servo.attach(9); // define pino digital 9 do Arduino conectado ao servo
}
void loop() {
valor = analogRead(potpin); // lê o valor analógico do potenciômetro (entre 0 e 1023)
valor = map(valor, 0, 1023, 0, 180); // relaciona o valor do potenciômeto com o ângulo do servo (valor entre 0 e 180º)
servo.write(valor); // ajusta a posição do eixo do servo de acordo com o valor lido no potenciômetro
delay(15); // espera 15ms para o servo alcançar a posição
}
Vídeo
Como o projeto deve funcionar
1. Ao iniciar o programa o eixo do micro servo se mantém estático na última posição em que o Arduino foi desligado.
2. Ao girar o potenciômetro do polo negativo para o polo positivo, o eixo do servo vai até 180º da posição inicial.
3. Ao girar o potenciômetro do polo positivo para o polo negativo o eixo do servo retorna até a sua posição inicial de 0º.
Desafios
Com base neste projeto, resolva o seguinte desafio: Desafio 98
O anúncio abaixo ajuda a manter o Squids Arduino funcionando
Comentários