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

5

Tengo un Pololu Micro Maestro, y es genial. Pero cuando le digo a los servos que se muevan a posiciones específicas, a veces emite un pitido. Esto solo sucede en posiciones especificas. No es porque estoy tratando de hacerlo ir más lejos de lo que puede, sino que también sucede cuando se coloca alrededor del medio.

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

Solo he intentado controlarlos a través de mi propia aplicación o del panel de control maestro.

¿Hay alguna manera de evitar esto?

Espero que ustedes entiendan lo que quiero decir. Gracias

    
pregunta Moulde

6 respuestas

3

La señal de control del servo R / C es un tren de pulsos. Hay dos parámetros que describen un tren de pulsos: ancho de pulso (PW) e intervalo de repetición de pulso (PRI). 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 de R / C: generalmente estarán contentos con un PRI en cualquier lugar de 20 a 50 ms, y no les importa si varía algo. (También verá PRF, para la frecuencia de repetición de impulsos, generalmente en sistemas de radar. PRI 20-50 ms corresponde a PRF de 50 a 20 Hz).

Cualquier tipo de inestabilidad en el ancho de pulso (PW) hará que el servo "zumba", 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 sobretensión insuficiente. (Un servo estándar en movimiento controlado puede dibujar fácilmente 250 mA. Un servo "vibrante" puede dibujar picos de medio amperio. Sí, esto es por experiencia).

La inestabilidad en el PRI generalmente no es un problema para un servo R / C.

Lo primero que haría es colgar alrededor de un condensador de 250 uF directamente a través de los cables de alimentación del servo. La segunda cosa que haría es medir la señal de control, activarse en el flanco ascendente y observar los rangos de problemas para ver si el tiempo en el flanco descendente varía EN TODO.

Cualquier persona que esté planeando jugar con servos debe comenzar por conectar un 555 y un inversor de un solo transistor, generando la señal de control del servo completamente en el hardware y jugando con esto. ES INSTRUCTIVO ver a un servo sentado allí, zumbando, ver cómo se alimenta el amperímetro de su fuente de alimentación por todo el lugar y registrar picos de medio amperio. Domar esa bestia es aún más. Nota: este circuito también demostrará la tolerancia del servo de PRI variable: el generador de pulsos 555 más simple para este propósito variará PRI a medida que varíe PW.

    
respondido por el John R. Strohm
2

¿La computadora portátil está haciendo el control de bucle cerrado? Si es así, probablemente se deba a intentar controlar en tiempo real un sistema operativo que no sea en tiempo real. He medido que Windows salió a almorzar durante unos 100 ms a la vez solo porque se movió el mouse. Si sus iteraciones de control son más rápidas que eso, ese retraso hará que las cosas sean inestables.

Si la computadora portátil solo está enviando comandos de alto nivel a un controlador dedicado que está haciendo el control real, entonces es difícil adivinar qué está pasando. ¿Cómo se produce la señal de realimentación de posición? Si es de una olla, podría estar picando.

    
respondido por el Olin Lathrop
2

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

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

    
respondido por el Tim Williscroft
1

Es un PIC único que hace más canales PWM de los que tiene temporizadores. Lo bien que logre hacerlo dependerá completamente de lo que haga el programa en el PIC. Para este diseño, iría con el temporizador para medir la duración del pulso, las interrupciones para hacer el cambio de salida y polling software para el USB y la serie, de modo que no pueda interrumpir el tiempo de las salidas servo. Muchas otras combinaciones tendrán interferencia entre la sincronización de los canales de servo o las actualizaciones externas. Es posible que las posiciones específicas que está viendo coincidan con los latidos del corazón en el USB.

    
respondido por el Yann Vernier
1

Si su servo oscila con la amplitud del tamaño de un paso del codificador, entonces verifique que la función denominada "algo de banda muerta" se use correctamente. Si no está habilitado, entonces, su servo siempre tiene la posibilidad de alcanzar un punto incierto cerca de la posición N y N + 1 del codificador, o N-1. Servo intenta eliminar el error más pequeño de 1 paso y sobrepasa un paso más, o el codificador tiene sensibilidad al ruido o la luz del campo magnético y sigue cambiando de idea entre N y N + 1.

La lectura incierta es inevitable en cualquier compilación, no importa cuán buenas y caras sean las piezas. Para solucionarlo, la configuración del PID debe ignorar los errores de posición menores o iguales a 1 paso del codificador.

    
respondido por el user924
1

Si este es 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 impulsa el motor. Los potenciómetros pueden ensuciarse. PUEDE intentar una cirugía cuidadosa en el servo y rociar la olla con una solución de limpieza por contacto.

O prueba con otro servo.

Dependiendo de la matemática de su ley de control en su PC (.NET - > PC controller), es posible que tenga una inestabilidad matemática que aparezca en los comandos del servo.

    
respondido por el John R. Strohm

Lea otras preguntas en las etiquetas