🛠 Piloter un servo moteur avec le PWM et un potentiomètre
Objetivos
Controlar un servomotor con la biblioteca Servo en un pin PWM del Micro (3, 5, 6, 9, 10, 11 o 13) y comandarlo mediante un potenciómetro, gestionando correctamente la alimentación: el Micro se alimenta por Vin (7-12 V) o por USB, y el pin 3V3 solo proporciona 50 mA.
Material
- 1 Arduino Micro
- 1 servomotor tipo SG90/MG90S (señal naranja, +5V rojo, GND marrón)
- 1 potenciómetro de 10 kΩ en A0 (cursor hacia A0, extremos a 5V/GND)
- Alimentación externa de 5 V para el servo si hay varios servos, o Vin de 7-12 V en el Micro; GND común obligatorio
Código completo
// Servo sur broche PWM 9, commande par potentiometre sur A0.
#include <Servo.h>
const uint8_t KNOB = A0;
const uint8_t PIN_SERVO = 9; // broche PWM : 3,5,6,9,10,11,13
Servo monServo;
void setup {
monServo.attach(PIN_SERVO); // signal PWM 50 Hz
Serial.begin(9600);
}
void loop {
int brut = analogRead(KNOB); // 0..1023
uint8_t angle = map(brut, 0, 1023, 0, 180);
monServo.write(angle);
Serial.println(angle);
delay(20);
}
Verificación esperada
El brazo del servo sigue al potenciómetro entre 0 y 180 grados, sin tirones. En el final del recorrido, el servo zumba ligeramente y luego se calla una vez mantenido el ángulo.
Errores frecuentes
- Alimentar un servo grande directamente desde el 5 V del Micro conectado por USB: los picos de corriente hacen reiniciar la placa (el fusible USB se corta a 500 mA); usar una alimentación separada con GND común.
- Olvidar el GND común entre el servo y el Micro: el servo vibra o no se mueve.
- Conectar el servo al 3V3: este pin está limitado a 50 mA, insuficiente.
- Usar un pin no PWM para la señal: la biblioteca Servo funciona también en otros pines, pero mantenerse en un pin PWM simplifica la resolución de problemas.
- Esperar una señal analógicaWrite clásica: el Servo emite pulsos calibrados, no mezclar con analogWrite en el mismo pin.
Otros tutoriales para esta placa
- Faire clignoter la LED embarquée (et comprendre les LED TX/RX)
- Lire un bouton avec une résistance de pull-up interne
- Lire un capteur analogique sur le convertisseur 10 bits
- Transformer le Micro en clavier USB (HID) avec bouton de sécurité
- Pont Serial vers Serial1 : passerelle USB vers TTL
- Sortir des sentiers : registres AVR et interruption externe
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinoclavier-auto-tape.inoArduinosouris-cercle.inoArduinotelecommande-media.inoArduinobouton-clic-souris.inoArduino