5 votos

El servo se agita en posiciones específicas, ¿por qué?

Tengo un Pololu Micro Maestro, y es genial. Pero cuando le digo a los servos que se muevan a posiciones específicas, a veces hace un ruido parecido a un pitido. Esto sólo ocurre en posiciones específicas. No es porque intente hacerlo ir más lejos de lo que puede, también ocurre cuando se posiciona alrededor del centro.

Esto ocurre cuando uso un portátil para controlar los servos a través de una aplicación escrita en .NET

Sólo he probado a controlarlos a través de mi propia aplicación o del panel de control de Maestro.

¿Hay alguna forma de evitarlo?

Espero que entendáis lo que quiero decir. Gracias

3voto

John R. Strohm Puntos 1559

La señal de control del servo R/C es un tren de pulsos. Hay dos parámetros que describen un tren de pulsos: el ancho del pulso (PW) y el intervalo de repetición del pulso (PRI). El PW es lo que controla la posición del servo. Es crítico y debe ser estable. El PRI no es tan crítico, al menos con los servos R/C: generalmente estarán contentos con un PRI entre 20 y 50 ms, y no les importa si varía un poco. (También verás PRF, para la frecuencia de repetición de pulsos, normalmente en los sistemas de radar. El PRI 20-50 ms corresponde a una PRF de 50 a 20 Hz).

Cualquier tipo de inestabilidad en el ancho de pulso (PW) hará que el servo "zumbe", ya que persigue la señal de control. Dicha inestabilidad puede ser provocada por el ENORME consumo de corriente de un servo en movimiento, si la fuente de alimentación en el CIRCUITO DE CONTROL tiene una capacidad de sobrecarga insuficiente. (Un servo estándar en movimiento controlado puede consumir fácilmente 250 mA. Un servo en movimiento puede consumir picos de medio amperio. Sí, esto es por experiencia).

La inestabilidad en el PRI no suele ser un problema para un servo R/C.

Lo primero que haría es colgar un condensador de 250 uF directamente en los cables de alimentación del servo. Lo segundo que haría es medir la señal de control, disparando en el flanco de subida, y mirando los rangos del problema para ver si el tiempo en el flanco de bajada está variando en absoluto.

Cualquiera que esté planeando jugar con servos debería empezar por cablear un 555 y un inversor de un transistor, generando la señal de control del servo completamente en hardware, y jugar con esto. Ver un servo sentado ahí, zumbando, viendo como el amperímetro de tu fuente de alimentación va por todos lados, registrando picos de medio amperio, es INSTRUCTIVO. Domar esa bestia lo es aún más. Nota: Este circuito también demostrará la tolerancia del servo a la variación del PRI: el generador de pulsos 555 más simple para este propósito variará el PRI como varía el PW.

2voto

RelaXNow Puntos 1164

¿Es el portátil el que realiza el control en bucle cerrado? Si es así, probablemente se deba a que se intenta hacer un control en tiempo real en un sistema operativo que no es en tiempo real. He medido que Windows se va a comer durante unos 100ms cada vez sólo porque se ha movido el ratón. Si tus iteraciones de control son más rápidas que eso, ese retraso hará que las cosas sean inestables.

Si el portátil sólo está enviando comandos de alto nivel a un controlador dedicado que está haciendo el control real, entonces es difícil adivinar lo que está pasando. ¿Cómo se produce la señal de retroalimentación de posición? Si es de un pote, podría estar rayando.

2voto

hunterp Puntos 139

Nuestra experiencia con los servos de control remoto de modelos y las tarjetas Pololu es que algunos servos tienen posiciones que son ruidosas.

Es el servo, no el controlador. Cambie el servo si debe tener un mejor rendimiento.

1voto

John R. Strohm Puntos 1559

Si se trata de un servo R/C convencional, utiliza un potenciómetro para detectar la posición del eje y desarrollar la señal de error interna que acciona el motor. Los potenciómetros pueden ensuciarse. Podría intentar operar con cuidado el servo y rociar el potenciómetro con una solución limpiadora de contactos.

O prueba con otro servo.

Dependiendo de la matemática de su ley de control en su PC (.NET -> controlador de PC), podría tener una inestabilidad matemática que se muestra en los comandos al servo.

1voto

Jordan S. Jones Puntos 1023

Es un solo PIC haciendo más canales PWM de los que tiene temporizadores. Lo bien que consiga hacer esto dependerá totalmente de lo que haga el programa en el PIC. Para este diseño, yo iría con el temporizador para medir la longitud de los pulsos, las interrupciones para hacer la conmutación de la salida, y software de sondeo para el USB y la serie para que no pueda interrumpir la sincronización de las salidas del servo. Muchas otras combinaciones tendrán interferencias entre la sincronización de los canales del servo o las actualizaciones externas. Puede ser que las posiciones específicas que estás viendo coincidan con los latidos del USB.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X