Você está na página 1de 35

Arduino – MOTORES

micro servo motor SG90


motor de passo 28BYJ-48
potenciômetro 10kΩ
DIP 1
MANUFATURA AVANÇADA
Servo Motor

 Os Servo motores não pertencem a uma classe específica de motores, ou seja, eles
podem ser tanto motores CA quanto motores CC.
 Os servos são atuadores projetados para aplicações onde é necessário fazer o
controle de movimento com posicionamento de alta precisão, reversão rápida e de
alto desempenho.
 Eles são amplamente usados em robótica, sistemas automatizados, máquinas CNC e
em outras diversas aplicações.
 Os servos apresentam várias diferenças em relação aos demais tipos de motores.
Dentre estas diferenças, a principal é que os servos têm incorporado neles um
encoder e um controlador.
 Este encoder (resolver ou potenciômetro) é na verdade um sensor de velocidade
que possui a função de fornecer a velocidade e posicionamento do motor.
Tipos de Servo motores

 Pode-se classificar os servo motores em duas formas:

 Servo motores CA (corrente alternada): normalmente são usados em ambientes


industriais, pois costuma ser de elevada potência, oferece maior exatidão no seu
controle e pouca manutenção.

 e CC (corrente contínua): geralmente são usados em projetos menores, eles


possuem um custo relativamente baixo e são eficientes.
Servo motor de Corrente Contínua (CC)

 Um Servo motor CC é formado


basicamente por um pequeno
motor de corrente contínua, um
potenciômetro de realimentação,
uma caixa de engrenagens e um
circuito eletrônico para fazer o seu
acionamento, assim como é
mostrado na imagem.
Servo motor de Corrente Contínua
(CC) – princípio de funcionamento

 O servo é parecido com um motor de corrente contínua comum, onde o seu


estator é constituído por uma estrutura cilíndrica e um imã acoplado ao
interior de sua armação chamado rotor.
 Além disso a polaridade da tensão de controle é capaz de determinar o
sentido do torque desenvolvido pelo motor.
 Um servo motor de corrente contínua funciona da seguinte maneira, uma
tensão contínua de referência é regulada para um valor correspondente à
saída desejada.
 Dependendo do circuito de controle podemos gerar esta tensão usando
potenciômetro, modulação por largura de pulso (PWM) ou através de
temporizadores.
Servo motor de Corrente Contínua
(CC) – princípio de funcionamento

 Para fazer o controle do Servo motor de forma digital podemos utilizar um micro
controlador para então produzir sinais de controle com maior precisão e assim
fornecer pulsos de tensão, que são obtidos através da técnica de PWM.

 Para garantir um melhor desempenho em relação ao seu funcionamento, os


Servo motores necessitam de um sinal de realimentação que corresponde ao
posicionamento atual do servo, sendo obtido através de um sensor de posição.

 Este sensor de posicionamento é na verdade um potenciômetro interno que


fornece um sinal de tensão correspondente ao ângulo do eixo do motor.
Servo motor de Corrente Contínua
(CC) – princípio de funcionamento

 Este sinal de tensão relacionado à posição atual do motor é comparado com a


tensão desejada, ou seja, com a tensão que é obtida pela largura de pulso.

 Assim produzindo um sinal de erro com tensão positiva ou negativa.

 Se o sinal de erro for positivo, a tensão aplicada na armadura do motor faz com que
o rotor gire em uma direção.

 Porém se o erro for negativo, a tensão da armadura inverte e neste caso o rotor do
motor gira na direção oposta.

 Enquanto houver o sinal de erro o motor permanecerá girando, ou seja, o motor vai
girar até o sinal de erro ser zero.
 https://www.mundodaeletrica.com.br/o-que-e-servo-motor-e-como-funciona/
Micro servo SG90

 O Micro Servo Motor SG90 9g é um item essencial para projetos de robótica, mecatrônica e
diversos outros projetos. Na robótica, o servo motor é responsável por movimentar braços,
pernas e mãos dos robôs. No automodelismo o servo motor é utilizado para virar as rodas
dianteiras dos carrinhos e no aeromodelismo é utilizado para controlar os flaps das asas dos
aviões.

 Ao utilizar o Micro Servo Motor SG90 9g é possível controlar o giro e a posição do mesmo
através dos comandos enviados pela plataforma microcontrolada. Após o envio do
comando para que o servo altere sua posição, o mesmo verifica sua posição atual e em
seguida executa o comando girando até a posição indicada.
 https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-micro-servo-motor-sg90-9g/
Micro servo SG90

Especificações:
Peso: 9g
Dimensão: 23 × 12,2x29mm
Torque de parada: 1,8 kg / cm (4,8v)
Tipo de engrenagem: conjunto de engrenagens POM
Velocidade operacional: 0,1 seg / 60 graus (4,8v)
Tensão operacional: 4,8v
Faixa de temperatura: 0 ℃ _ 55 ℃
Largura da banda morta: 1us
Fonte de alimentação: Através do adaptador externo
comprimento do fio do servo: 25 cm
Plugue do Servo: JR (se encaixa JR e Futaba)

https://www.google.com/search?q=datasheet+servo+sg90&sxsrf=ALeKk01eQewyvvPG7TE3idz46q4DAcT1Mg:1603830963102&source=lnms&tbm=isch&sa=X
&ved=2ahUKEwj69db2z9XsAhU2DrkGHW9dCSIQ_AUoAXoECAUQAw&biw=1242&bih=568#imgrc=Q3y0UQl7fEeDEM&imgdii=4nYGLbKiLTx6xM
Programação – exercício 1 – giro de
0º a 180º - montagem

 Exercício:

 Utilizar o Micro Servo Motor SG90 9g


em conjunto com o Arduino e girar
o eixo do servo até 180º e em
seguida retornar à 0º.

 Ao ligar o servo o eixo irá retornar à


0º independente da posição em
que ele se encontra.
Programação – exercício 1 – giro de
0º a 180º - código (programa)

#include <Servo.h> //INCLUSÃO DA BIBLIOTECA NECESSÁRIA

const int pinoServo = 11; //PINO DIGITAL UTILIZADO PELO SERVO

Servo s; //OBJETO DO TIPO SERVO


int pos; //POSIÇÃO DO SERVO

void setup (){


s.attach(pinoServo); //ASSOCIAÇÃO DO PINO DIGITAL AO OBJETO DO TIPO SERVO
s.write(0); //INICIA O MOTOR NA POSIÇÃO 0º
}
Programação – exercício 1 – giro de
0º a 180º - código (programa)

void loop(){
for(pos = 0; pos < 180; pos++){ //para "pos" igual a 0, enquanto "pos" menor que 180, incrementa 1º no "pos“ até 180º
s.write(pos); //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
delay(15); //INTERVALO DE 15 MILISSEGUNDOS
}
delay(1000); //INTERVALO DE 1 SEGUNDO
for(pos = 180; pos >= 0; pos--){ //para "pos" igual a 180, enquanto "pos" maior ou igual que 0, decrementa 1º no "pos“ até 0º
s.write(pos); //ESCREVE O VALOR DA POSIÇÃO QUE O SERVO DEVE GIRAR
delay(15); //INTERVALO DE 15 MILISSEGUNDOS
}
}
Programação – exercício 2 – giro de
0º a 180º com botão -

• Exercício:
• Utilizar o Micro Servo Motor SG90 9g
em conjunto com o Arduino e girar
o eixo do servo até 180º se o botão
for acionado. Quando o botão
estiver desacionado o o motor
retornar à 0º.
• Ao ligar o servo o eixo irá à 0º
Programação – exercício 2 – giro de 0º
a 180º com botão- código (programa)
#include <Servo.h>
/*Esta biblioteca pode controlar até 12 Servos.*/ //Descrição de Uma variável 'byte' armazena
Servo m1;
//valores numéricos de 8-bit sem sinal, de 0 a 255.
/*
utilizando mais servos. Exemplo: // comando byte var = val; == var= nome da
Servo m2; -> cria nome "objeto" para indicar para variável(x) e val= o valor
biblioteca que existem mais servos conectados no
arduino // atribuído a essa variável (0).
Servo m3;
*/ //Também pode ser declarado como int x=0;

#define botao 7 //Uma variavél "int" armazena um valor de 16-bit


byte x=0;
//Isso garante um intervalo de -32.768 a 32.767
Programação – exercício 2 – giro de
0º a 180º com botão- código
(programa)
void setup() {
pinMode(botao, INPUT);
m1.attach(11); // comando attach - atrelado a biblioteca utilizada
m1.write(0); // biblioteca trabalha com valores em graus, então escreva 0º para o motor no pino 11
/* utilizando mais servos. Exemplo:
m2.attach(10); -> Indica qual pino esta conectado o servo M2
m2 conectado no pino 10
m2.write(0); -> Coloca o servo M2 na posição(ângulo) 0º.
m3.attach(9);
m3.write(0); */
}
Programação – exercício 2 – giro de 0º
a 180º com botão- código (programa)
void loop() {
x = digitalRead(botao); // ler o valor (estado) do botão e carregar na variável x
if(x==1)
{
m1.write(180);
}
if(x==0)
{
m1.write(0);
}
delay(100); // Wait for 100 millisecond(s)
}
Programação – exercício 3 – giro de
0º a 180º com potenciômetro-

• Exercício:

• Utilizar o Micro Servo Motor SG90 9g em


conjunto com o Arduino e girar o eixo do
servo proporcional ao giro do
potenciômetro.
Potenciômetro

 O Potenciômetro é um componente eletrônico que tem como função variar a resistência


elétrica. Assim como o resistor, o potenciômetro também impõe resistência elétrica em um
circuito, contudo esta resistência pode ser variada manualmente, coisa que não pode ser
feita com o resistor que já possui resistência de valor fixo. A resistência do potenciômetro
também é medida em ohms. Há diversos valores de potenciômetros no mercado,
contudo o mais comum é o de 10K (varia a resistência de 0 a 10000 ohms).
 Aplicações:
 Projetos com Arduino ou outras plataformas micro controladas em que seja necessário controlar
volume, controle de brilho em displays LCD ou controlar servo motores.
https://blogmasterwalkershop.com.br/arduino/arduino-utilizando-o-potenciometro-linear/
Programação – exercício 3 – giro de
0º a 180º com potenciômetro- código

#include <Servo.h> // inclusão da biblioteca do servo, com códigos de conversão angular prontos

#define pot A0 // denominar o pino analógico A0 como pot


Servo s1; // denominar o servo motor como s1
int angS1; // variável criada para armazenar o valor do sinal do potenciômetro
// para gerar o ângulo no motor de 0 a 180º
void setup() {
s1.attach(11); /*comando attach serve para declarar que o servo está no ligado no pino 2 do
arduino -devido a utilização de biblioteca no programa*/
angS1=0; /* comando para atribuir o valor inicial do motor em 0º*/
s1.write(angS1); /* executar o movimento para a posição 0º - comando write.*/
}
Programação – exercício 3 – giro de
0º a 180º com potenciômetro- código

void loop() {

angS1=map(analogRead(pot),0,1023,0,180); /* leitura do comando: primeiro faz a leitura do valor analógico


do potenciômetro pelo comando analogRead, e na sequencia executa o comando map que é fazer o
calculo proporcional entre 0 a 1023 (10bits do comando analógico = 2 elevado a 10) e reverter em ângulos
de 0 a 180º, após o calculo anterior atribui o resultado à variável angS1 */

s1.write(angS1); /* atribui ao motor o valor da variável angS1*/

delay(100);

}
Programação – exercício 4 – Uso de
dois micro servos

• Exercício:

• Utilizar dois Micros Servos SG90


9g em conjunto com o
Arduino e girar o primeiro eixo
do servo1 a 180º, na
sequência, girar o segundo
eixo do servo2 a 90º e voltar a
0º na mesma ordem.
Programação – exercício 4 – Uso de
dois micro servos - código
#include <Servo.h>
/*inclusão da biblioteca que pode controlar até 12 Servos.*/
void loop()
Servo ms1; // denominar o servo motor como ms1 {
Servo ms2; // denominar o servo motor como ms1 ms1.write(180); /*Escreve o valor da posição angular
que o servo deve girar*/

void setup() delay(2000);


{ ms2.write(90);
ms1.attach(3); // comando attach - atrelado a biblioteca utilizada delay(2000);
//Indica em qual pino está conectado o servo ms1 ms1.write(0);
ms2.attach(4); delay(2000);
ms1.write(0); //Coloca o servo ms1 na posição(ângulo) 0º. ms2.write(0);
ms2.write(0); delay(2000);
} }
Programação – exercício 5 – Uso de
dois micro servos com incrementos de
pulsos
• Exercício:

• Utilizar dois Micros Servos SG90


9g em conjunto com o
Arduino e girar o primeiro eixo
do servo1 a 180º, na
sequência, girar o segundo
eixo do servo2 a 90º e voltar a
0º na mesma ordem.
Programação – exercício 5 – Uso de dois
micro servos com incrementos de pulsos -
código
#include <Servo.h> void loop() for(int i=180;i>=0;i--)
{ {
Servo ms1; delay(1000); ms1.write(i);
Servo ms2; for(int i=0;i<=180;i++) delay(20);
{ }
void setup() ms1.write(i);
{ delay(50); for(int j=90;j>=0;j--)
ms1.attach(3); } {
ms2.attach(4); ms2.write(j);
ms1.write(0); for(int j=0;j<=90;j++) delay(20);
ms2.write(0); { }
} ms2.write(j);
delay(10); delay(1000);
} }
Motor de Passo

Fonte:
 O motor de passo é um dispositivo https://www.orientalmotor.com.br/t
ecnologia/comparacao-entre-
capaz de converter um sinal digital em motores-de-passo-2-fases-e-5-
fases.html
rotação, com movimentos precisos em
seu giro. O eixo de um motor de passo
gira em incrementos discretos quando
os impulsos de comando elétricos são
aplicados a ele na sequência correta.
 Devido a suas características de
controle de posicionamento com
precisão, torque, sentido e velocidade Fonte:
controláveis, são muito aplicados em http://www.rasc
unhos.eu/exerci
automações de máquinas, impressoras cio.php?id=11&t
op=93&topid=71
3D, robótica, etc.
Motor de passo

 A rotação dos motores tem várias relações diretas a estes pulsos de entrada
aplicados COMO:
 A sequência dos impulsos aplicados está diretamente relacionada com
a direção de rotação do eixo do motor;
 a velocidade de rotação do motor com a frequência dos impulsos de entrada;
 o comprimento de rotação com o número de impulsos de entrada, ou
seja, para controlar o motor de passo precisa-se aplicar tensão a cada uma das
bobinas numa sequência específica.
Motor de passo

 Um exemplo de motor de passo funcionamento é o motor de quatro passos que é dado pelo
uso de solenoides alinhados dois a dois, que quando energizados atraem o rotor fazendo-o se
alinhar com o eixo determinado pelos solenoides, causando assim uma pequena variação de
ângulo chamada de pulso

Fontes:
https://www.kalatec.com.br/
lp/motor-de-passo-
funcionamento
https://pt.wikipedia.org/wiki/
Motor_de_passo
Motor de passo – vantagens e
desvantagens
VANTAGENS:
DESVANTAGENS:
 Precisão de posicionamento;
 O torque diminui rapidamente com o
 Excelente repetibilidade; aumento da rotação;
 Ótimo controlo de velocidade, visto que a velocidade  Ocorrência de ressonância se o controle
do motor está diretamente relacionada com a do motor for inadequado e em baixas
frequência de acionamento das fases; velocidades;
 Permite que o sistema de controlo seja aberto (malha  Baixa eficiência;
aberta), pois na maioria dos casos dispensa
 Pode perder passos, portanto o uso de
realimentação;
dispositivos de realimentação quando a
 Pode manter-se imóvel sem causar danos; tarefa necessitar.
 Elevado torque de retenção e para rotações baixas;
 Dispensa a necessidade de escovas e comutadores
reduzindo a manutenção.
http://www.rascunhos.eu/exercicio.php?id=11&top=93&topid=71
Motor de passo 28BYJ-48

Datasheet do motor de passo 28BYJ-48:


 Para os exercícios em DIP1, foi usado – Modelo: 28BYJ-48
o motor de passo 28BYJ – 48 e como – Driver: ULN2003
– Tensão: 5VDC
foi visto nos slides anteriores, – Número de fase: 4
necessita de driver para conversão – Número de vias: 5
– Caixa de Redução: 1/64
dos pulsos em movimentos angulares – Diâmetro do eixo: 5mm
apropriados para controle, portanto, – Ângulo do Passo: 5,625°/64 ~ 0,088°
– Frequência: 100Hz
será usado o driver ULN2003 que – Resistência DC: 50Ω ± 7%(25℃)
contém um chip ULN2003A. – Torque: 34,3 mN.m
– Peso: 40g

Fonte: https://www.filipeflop.com/produto/motor-de-passo-driver-uln2003-arduino/
Programando o motor de passo –
informações gerais
 Ligações do driver ULN2003 ao Arduíno:
 IN1 -> pino 8 do Arduíno;
 IN2 -> pino 9 do Arduíno;
 IN3 -> pino 10 do Arduíno;
 IN4 -> pino 11 do Arduíno.
 Número de passos do motor:
 Redução de 1/64, isto significa que é possível dar uma volta completa com 4096 passos, ou
seja, apenas ~0,088° por passo (definições do fabricante). No entanto, se utilizar o valor de
4096 passos resultará em duas voltas de 360º. Deste modo, utiliza-se metade do valor.
 Velocidade do motor:
 Depende do número de passos por volta que forem definidos no programa. No exemplo
que será utilizada a velocidade máxima de 60 sem que o motor comece aos “saltos".

http://www.rascunhos.eu/exercicio.php?id=11&top=93&topid=71
Programação – exercício 6 – Uso de
motor de passo – montagem do circuito

• Exercício:

• Utilizar um motor de passo


28BYJ-48, drive Uln2003, em
conjunto com o Arduino e
girar o eixo do motor em
movimentos sequenciais de
360º no sentido horário e 360º
no sentido anti-horário.

Fonte: https://br.pinterest.com/pin/787989266039561375/
Programação – exercício 6 – Uso de
motor de passo - código
#include <Stepper.h> // inclusão da biblioteca para uso do motor de passo
const int mp = 512; // 1/4 de 2048 passos para uma volta completa
Stepper motor(mp, 8,10,9,11); // inicializa motor utilizando os pinos digitais 8,9,10 e 11
void setup() {
motor.setSpeed(60); //velocidade do motor
}
void loop() {
motor.step(2048); //gira o motor no sentido horário 360º
delay(2000);
motor.step(-2048); //gira o motor no sentido anti-horário em 360º
delay(4000);
http://www.rascunhos.eu/exercicio.php?id=11&top=93&topid=71
}
Programação – exercício 7 – Uso de
motor de passo

• Exercício:

• Utilizar um motor de passo


28BYJ-48, drive Uln2003, em
conjunto com o Arduino e girar
o eixo do motor em
movimentos sequenciais de 90º
e 120º.

Fonte: https://br.pinterest.com/pin/787989266039561375/
Programação – exercício 7 – Uso de
motor de passo - código

#include <Stepper.h> // inclusão da biblioteca para uso do motor de passo

const int mp = 512; // 1/4 de 2048 passos para uma volta completa

Stepper motor(mp, 8,10,9,11); //Inicializa a biblioteca utilizando as portas de 8 a 11 para


//ligação ao motor

void setup()
{
motor.setSpeed(70); //Determina a velocidade inicial do motor

}
Programação – exercício 7 – Uso de
motor de passo - código

void loop() {
for (int i = 0; i<=3; i++) //Gira o motor no sentido anti - horário a 90 graus (4x = 360º)
{
motor.step(-512);
delay(2000);
}
for (int i = 0; i<=2; i++) //Gira o motor no sentido horário a 120 graus(3x=360º)
{
motor.step(682);
delay(2000);
}
}

Você também pode gostar