Você está na página 1de 3

CURSO BÁSICO DE AUTOMAÇÃO E ROBÓTICA COM KIT ARDUINO – Exp.

12 – Página 1 de 3

EXPERIÊNCIA #12 – Servo Motor


Objetivo: Entender o funcionamento de um servo motor e controlar sua posição através de um
potenciômetro

Introdução:

Para a realização do experimento, vamos utilizar um servo motor, como o descrito pela Figura 12.1.
Através do datasheet do componente obtemos alguns detalhes:
- Tensão de operação: +5V;
- Torque : 1.8 kgf·cm ;
- Angulação: 0o a 180o.

Figura 12.1 – Micro Servo Motor 9g (<http://migre.me/qLaJ4>. Acessado em 10/07/2015).

O servo motor possui uma três conexões:


- Vcc (fio vermelho): alimentado por 5V do Arduino;
- PWM (fio laranja ou amarelo): controlado por uma saída PWM do Arduino;
- GND (fio preto ou marrom): ligado ao GND do Arduino.

Para simplificar o uso do servo motor, será utilizada a biblioteca <Servo.h> para Arduino.

Material Necessário:

- Potenciômetro;
- Placa Arduino Uno R3;
- Protoboard;
- Fios condutores (jumpers);
- Servo Motor.
CURSO BÁSICO DE AUTOMAÇÃO E ROBÓTICA COM KIT ARDUINO – Exp. 12 – Página 2 de 3

Procedimentos Experimentais:

1)Monte o circuito mostrado na Figura 12.2. Para alimentar o servo, recomenda-se utilizar uma fonte
externa de +5V para não correr o risco de queimar a placa Arduino.

Figura 12.2 – Ligação do servo motor ao Arduino (Cortesia: http://fritzing.org).


CURSO BÁSICO DE AUTOMAÇÃO E ROBÓTICA COM KIT ARDUINO – Exp. 12 – Página 3 de 3

2) Na interface de programação de Sketches do Arduino, insira e compile o programa 12.1 com a placa
conectada ao seu computador através da porta USB.

//Exp_12– Servo Motor

#include <Servo.h>

Servo myServo; // cria um objeto do tipo Servo

const int pinoPotenciometro = 0; // pino A0 analógico para o leitura do potenciômetro


int anguloServo; // valor da leitura do porta

void setup() {
myServo.attach(9); // indica o pino digital 9 para o controle do servo
Serial.begin(9600);
}

void loop() {
int x = analogRead(pinoPotenciometro); // lê valor do potenciômetro de 0 a 1023
anguloServo = map(x, 0, 1023, 0, 179); // transformar o intervalo em 0 - 180
myServo.write(anguloServo); // escreve o valor do potenciômetro no servo
Serial.println(anguloServo);
delay(50); // espera 50ms após o servo realizar o movimento completo
}

Programa 12.1 – Código em linguagem C utilizado na experiência de “Servo Motor”. As linhas iniciadas
por “//” não são lidas pelo compilador, e por isso são utilizadas como comentários.

3) Analisar o que ocorre com o servo, quando se altera bruscamente o estado do potenciômetro. A
transição de ângulos é suave? O que você pode fazer para melhorar isso?

Para o Diário de Bordo:

1)Registre no seu Diário de Bordo, quais modificações tem que ser feitas no programa para que a
transição entre os ângulos do servo sejam suaves.

Você também pode gostar