Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Calibración Precisa de Servos con Arduino UNO y Shield Adafruit PWM

Componentes y suministros

Arduino UNO ×1
Shield Adafruit PWM Servo Driver ×1
Tornillo M3 ×8
Arandela M3 ×8
Convertidor DC-DC Step-down LM2596 ×1
Filamento PLA Rojo ×1
Filamento PLA Blanco ×1
Transportador de 180° transparente ×1
Potenciómetro rotativo genérico ×1
Servomotor 9g ×1

Herramientas necesarias

Aplicaciones y servicios en línea

Sobre el proyecto

En una publicación anterior en Hackster, mostré un banco de pruebas para comparar servos del mismo lote, demostrando que enviar la misma señal PWM a servos distintos produce diferencias significativas en su posición final.

¿Por qué no usar las librerías de servo existentes para Arduino?

Los servos 9g son baratos y no diseñados para precisión, pero quiero exprimir su rendimiento para un robot caminante, necesitando comportamiento más predecible y preciso.

¿Cómo controlar servos hobby con mayor precisión?

Construí un dispositivo de calibración que combina dos conceptos simples:

  1. Alinear el servo con el centro de un transportador para medir su posición angular.
  2. Conectar un potenciómetro a una entrada analógica del Arduino para controlar la posición del servo ajustando el valor PWM mientras giro el eje del potenciómetro.

Usé el Monitor Serial del IDE para leer el valor PWM y anotarlo manualmente. Diseñé en Autodesk 123D un soporte impreso en 3D que sujeta potenciómetro, transportador, servo, Arduino, shield Adafruit y fuente de alimentación.

Construcción del dispositivo

Imprimí las piezas y las uní con tornillos y arandelas M3. Los agujeros de montaje están ajustados a mis componentes; otras piezas pueden requerir modificaciones.

Electrónica: pin central del potenciómetro a A0, los otros a 0V y 5V. Shield PWM sobre Arduino. Convertidor buck LM2596 (ajustado a 5V salida desde 9V entrada). Servo 9g en el primer slot del shield. Subí el sketch al Arduino.

Girando la perilla superior izquierda controlo el servo, y el Monitor Serial muestra el valor PWM para cada ángulo.

¿Qué me dice el dispositivo?

Coloqué el brazo del servo en su límite horario, ligeramente más allá de 180° en el transportador. Luego giré el potenciómetro hasta alinear el brazo con 0°, anoté el PWM. Repetí cada 10° hasta 180°.

Los resultados muestran una relación fuertemente lineal entre PWM y ángulo. Para mi servo: PWM = 2.35 × Ángulo + 159.4.

Ahora tengo dos opciones para control preciso:

Ambos métodos mejoran notablemente la precisión. Calibrar cada servo lleva tiempo, pero vale la pena para mi proyecto.

Nota: Al sacar el servo del dispositivo, debe mantenerse el brazo en la misma posición, ya que la calibración depende de su montaje.

Mejoras para la próxima versión

Conclusión

Los servos hobby son baratos e imprecisos, pero para muchas aplicaciones son suficientes. Este banco de calibración me permite obtener mayor precisión y repetibilidad, esencial para mi robot caminante.

Código

Sketch para dispositivo calibrador de servos (C/C++)

#include <Adafruit_PWMServoDriver.h>
#define analogIn A0
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
int inputValue = 0;
int tmpPwmValue = 0;

void setup() {
  Serial.begin(9600);
  pwm.begin();
  pwm.setPWMFreq(60);
}

void loop() {
  inputValue = analogRead(analogIn); // 0-1024
  // Servo min/max PWM típicos: 100-612
  int pwmValue = (int)(100 + (inputValue / 2));
  pwm.setPWM(0, 0, pwmValue);
  if (pwmValue != tmpPwmValue) {
    Serial.print("Potenciómetro = ");
    Serial.print(inputValue);
    Serial.print(", PWM = ");
    Serial.println(pwmValue);
  }
  tmpPwmValue = pwmValue;
  delay(15);
}

Piezas personalizadas y envolventes

Repositorio de piezas para calibrador de servos: https://github.com/jeremylindsayni/ServoCalibrator

Proceso de manufactura

  1. Seguimiento Facial Pan/Tilt en Tiempo Real en Raspberry Pi – Guía Práctica
  2. Walbi: Robot Bípede Estable con Arduino y Servos LX-16A
  3. Brazo Robótico IoT de 5 Grados de Libertad con Arduino Yun y Control Blynk
  4. Ácido poliláctico (PLA) en impresión 3D: Guía completa para profesionales
  5. PLA vs ABS vs Nylon: Cómo Elegir el Filamento Adecuado para Impresión 3D
  6. PLA vs ABS en Impresión 3D: Diferencias Clave y Cuándo Usar Cada Uno
  7. PLA: ¿Es realmente reciclable y biodegradable?
  8. ¿Se disuelve el PLA en agua? Condiciones, absorción y cómo hacerlo impermeable
  9. ¿Puede el Filamento PLA Conducir Electricidad? Variantes Conductivas y Desafíos de Impresión
  10. Entendiendo la Conductividad del PLA: Propiedades Eléctricas del Filamento de Impresión 3D
  11. Cambio a accionamientos DC: alternativa fiable a servos AC en control de movimiento industrial