EXPLORAÇÃO TÉCNICA

Explorando o Controle de Servo com Potenciômetro e LEDs Indicadores

Integração de entradas analógicas e saídas mecânicas com feedback visual em tempo real.

Neste exercício, vamos explorar o controle de um servo motor utilizando um potenciômetro, com um sistema de feedback visual baseado em LEDs para indicar a posição do servo. O objetivo é ajustar a posição de 0° a 180° e utilizar LEDs para sinalizar em qual zona de operação o motor se encontra.

Mecânica do Sistema

O potenciômetro atua como um divisor de tensão, enviando um sinal analógico (0 a 1023) ao Arduino. Este valor é processado e convertido em um ângulo, que define a posição do servo via sinal PWM (Modulação por Largura de Pulso).

Funcionamento do Sistema

  • Entrada Analógica: Leitura da resistência variável do potenciômetro no pino A0.
  • Mapeamento de Dados: Conversão da escala de 10 bits (0-1023) para a escala angular (0-180°).
  • Feedback Visual:
    • LED Verde: Ativo entre 0° e 90° (Posição Inicial/Intermediária).
    • LED Vermelho: Ativo entre 91° e 180° (Posição Extrema).

Materiais

  • Arduino UNO & Protoboard
  • Servo Motor SG90
  • Potenciômetro 10kΩ
  • LEDs (Verde e Vermelho)
  • Resistores de 220Ω

Conexões Chave

  • Potenciômetro: (VCC-5V/GND-GND) - Pino Analógico A0
  • Servo Motor (Sinal):(VCC-5V/GND-GND) - Pino Digital 2
  • LED Verde (Ânodo): Pino Digital 8
  • LED Verde (Cátodo): GND com um resistor de 220Ω
  • LED Vermelho (Ânodo): Pino Digital 10
  • LED Vermelho (Cátodo): GND com um resistor de 220Ω
  • VCC / GND: Barramentos de 5V e Terra

Protótipo em Operação

Protótipo Servo e Potenciômetro

Lógica de Programação

Baixar Código (.INO)

#include <Servo.h>  // Biblioteca para controlar o servo motor
 
// Definição dos pinos
#define servo1 2   // Pino do servo motor
#define LED_VD 8   // LED verde (indica início)
#define LED_VM 10  // LED vermelho (indica final)
#define POT A0     // Pino do potenciômetro
 
Servo s1;
 
int leituraPot = 0;  
int angulo = 0;      
 
void setup() {
  Serial.begin(9600);
  pinMode(LED_VD, OUTPUT);   
  pinMode(LED_VM, OUTPUT);   
  pinMode(POT, INPUT);       
  s1.attach(servo1);         
}
 
void loop() {
  leituraPot = analogRead(POT);  // Lê de 0 a 1023
  angulo = map(leituraPot, 0, 1023, 0, 180); // Mapeia para 0-180
 
  s1.write(angulo);  // Move o servo
  
  Serial.print("Ângulo: ");
  Serial.println(angulo);  
 
  if (angulo <= 90) {
    digitalWrite(LED_VD, HIGH);  
    digitalWrite(LED_VM, LOW);   
  } else {
    digitalWrite(LED_VM, HIGH);  
    digitalWrite(LED_VD, LOW);   
  }
 
  delay(50);  
}
                    

Considerações sobre a Montagem

A maioria dos módulos de sensor IR possui um pequeno potenciômetro (trimmer) azul. Ele serve para ajustar a sensibilidade ou o alcance da detecção. Se o seu sensor estiver sempre detectando "obstáculo", tente girar o potenciômetro para calibrar a distância de acordo com a luz ambiente do laboratório.