Curso rápido de arduino

Motores tipo servo e de passos

Anderson M. Amaral

Agosto - 2017

Introdução

Brushed DC Brushless DC Stepper

Motor DC escovado

Motor DC

Motor DC

Utilizando um motor DC

Servo motor

Servo motor

Servo motor

Servo

Servo

Biblioteca Servo

Exemplo

#include <Servo.h>
Servo myservo;  // Armazena as informações do servo
int pos = 0;    // Variável global para manipular a posição

void setup() {
  myservo.attach(9);  // Indica que o servo está no pino 9
}

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // Vai de 0 a 180 graus em passos de 1 grau
    myservo.write(pos);                 // Nova posição
    delay(15);                          // Aguarda um tempo para o servo atingir a posição final
  }
  for (pos = 180; pos >= 0; pos -= 1) { // Move-se no sentido inverso ao anterior
    myservo.write(pos);
    delay(15);
  }
}

Exercícios

  1. Use um botão para parar o movimento no exemplo anterior
  2. Controlar a orientação do servo usando um potenciômetro
  3. Controlar a orientação do servo usando dois botões, um para movimentação no sentido horário e outro no anti-horário
  4. Considere agora que o servo está na posição 0. Ao acionar um botão, o servo deve ir para o maior ângulo com uma velocidade controlada pelo potenciômetro.

Motor de passos

Motor de passos aberto Bobinas num motor de passo unipolar

Biblioteca Stepper

Exemplo

#include <Stepper.h>

const int stepsPerRevolution = 500;
Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);

int stepCount = 0;         // number of steps the motor has taken

void setup() {
  Serial.begin(9600);
  myStepper.setSpeed(25);
}

void loop() {
  // step one step:
  myStepper.step(1);
  Serial.print("steps:");
  Serial.println(stepCount);
  stepCount++;
  delay(50);
}

Exercícios

  1. Controlar a posição do motor de passos usando dois botões, um para movimentação no sentido horário e outro no anti-horário.
  2. Quantos graus o motor gira a cada passo? Nota: depende da configuração das engrenagens de redução...