Arduino Nano - Servo Motor

Este tutorial ensina você a usar o Arduino Nano para controlar um servo motor. Em detalhes, vamos aprender:

Hardware Necessário

1×Official Arduino Nano
1×Alternatively, DIYables Nano V3.0 Development Board
1×Cabo USB A para Mini-B
1×Servo Motor
1×Fios Jumper
1×(Opcional) Conector de Alimentação DC
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para Arduino Nano
1×(Recomendado) Placa de Expansão Breakout para Arduino Nano
1×(Recomendado) Divisor de Alimentação para Arduino Nano

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.

Sobre o Servo Motor

Um servo motor é um componente capaz de girar seu eixo, normalmente entre 0° e 180°. Ele é comumente utilizado para controlar a posição angular de um objeto.

Pinagem do Servo Motor

O servo motor tem três pinos:

  • O pino VCC (geralmente vermelho) deve ser conectado ao VCC (5V)
  • O pino GND (geralmente preto ou marrom) deve ser conectado ao GND (0V)
  • O pino de Sinal (comumente amarelo ou laranja) recebe o sinal de controle PWM de um pino do Arduino Nano.
servo motor pinout

Arduino Nano - Servo Motor

Alguns dos pinos do Arduino Nano podem ser programados para produzir um sinal PWM. Podemos conectar o pino de sinal do servo motor a um desses pinos e programá-lo para gerar uma saída PWM. Isso nos permitirá controlar o servo motor.

Graças à biblioteca Servo do Arduino Nano, controlar um servo motor é fácil. Não precisamos entender como os servo motores funcionam nem como gerar sinais PWM. Tudo o que precisamos é aprender a usar a biblioteca.

Diagrama de Ligação

The wiring diagram between Arduino Nano and Servo Motor

This image is created using Fritzing. Click to enlarge image

Por simplicidade, o diagrama de ligação acima é usado para testes ou fins educacionais, e para um servo motor com torque pequeno. Recomendamos fortemente usar uma fonte de alimentação externa para o servo motor na prática. O diagrama de ligação abaixo mostra como conectar o servo motor a uma fonte de alimentação externa.

The wiring diagram between Arduino Nano and servo motor external power supply

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Nano e outros componentes.

Por favor, não se esqueça de conectar o GND da fonte externa ao GND do Arduino.

Como Programar o Servo Motor

  • Inclua a biblioteca:
#include <Servo.h>
  • Crie um objeto Servo:
Servo servo;
  • Se você tiver mais de um servo motor, basta declarar objetos Servo adicionais:
Servo servo1; Servo servo2;
  • Atribua o pino do Arduino Nano que se conecta ao pino de sinal do servo motor. Como exemplo, use o pino 9:
servo.attach(9);
  • Por fim, controle o servo motor até o ângulo desejado. Por exemplo, 90°
servo.write(90);

Código Arduino Nano

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino Nano pin D9 connected to the signal pin of servo motor Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object } void loop() { for (pos = 0; pos <= 180; pos += 1) { // rotate from 0 degrees to 180 degrees // in steps of 1 degree servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // rotate from 180 degrees to 0 degrees servo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 10ms for the servo to reach the position } }

Passos Rápidos

  • Conecte o Arduino Nano ao seu computador usando um cabo USB.
  • Abra a Arduino IDE, selecione a placa e a porta corretas.
  • Copie o código e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para compilar e fazer upload do código para o Arduino Nano.
How to upload code to Arduino Nano
  • Confira o resultado: O servo motor gira nos sentidos horário e anti-horário.

Explicação do Código

Confira a explicação linha por linha contida nos comentários do código-fonte!

Como Controlar a Velocidade do Servo Motor

Utilizando as funções map() e millis(), podemos ajustar a velocidade de um servo motor de maneira constante sem impedir a execução de outro código.

/* * Este código de Arduino Nano foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano/arduino-nano-servo-motor */ #include <Servo.h> #define SERVO_PIN 9 // Arduino Nano pin D9 connected to the signal pin of servo motor Servo servo; unsigned long MOVING_TIME = 3000; // moving time is 3 seconds unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(SERVO_PIN); move_start_ms = millis(); // start moving // TODO: other code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.write(angle); } // TODO: other code }

Vídeo

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!