¿Cómo obtener la frecuencia PWM y la duración de cada pulso?

5

Tengo un ATmega8 y comencé a trabajar en el servomotor HS-645MG. ¿Qué frecuencia funciona con el HS-645MG? ¿Cómo obtengo la frecuencia de PWM y la duración / duración de cada pulso? ¿Hay un cálculo?

    
pregunta Dana Sorani

2 respuestas

16

Los servos modelo de control de radio (RC) utilizan un PPM de modulación de posición de pulso.

Hay cierta confusión sobre la terminología. Algunas personas lo llaman Modulación de ancho de pulso (PWM). Es muy comprensible, porque el ancho del pulso codifica la información. Además, el hardware del temporizador utilizado para generar una señal PWM también se puede utilizar para crear una señal PPM.

La frecuencia PPM base para un servo RC es 50Hz, es decir, una señal al servo cada 20 ms. Los servos de modelo son bastante tolerantes a los errores en este momento, y 15-25 ms pueden funcionar, incluso aunque 5 ms sea compatible con algunos.

Cuando el pulso varía en anchura, el servo barrerá entre 0 y 180 grados. Hay una cierta variación en la duración recomendada del pulso de PPM, intente entre 1 ms y 2 ms, y si eso no da 180 grados, intente de 0,5 ms a 2,5 ms. Es posible que tengas que hacer algunos experimentos para hacerlo bien.

Un pulso largo de 1.5 ms ordenará al servo a la posición 'central', 90 grados.

Puedes obtener una versión simple de esto usando demoras. Si la longitud de la posición del pulso se mide en microsegundos y se almacena en pos , este código Arduino impulsará el servo

int servoPin = 9;   // pin attached to servo
int pos = 1500;     // initial servo position 

void setup() {                
  pinMode(servoPin, OUTPUT);     
}

void loop() {
  digitalWrite(servoPin, HIGH);   // start PPM pulse
  delayMicroseconds(pos);         // wait pulse diration
  digitalWrite(servoPin, LOW);    // complete the pulse
    // Note: delayMicroseconds() is limited to 16383µs
    // see http://arduino.cc/en/Reference/DelayMicroseconds
    // Hence delayMicroseconds(20000L-pos); has been replaced by:
  delayMicroseconds(5000-pos);   // adjust to 5ms period
  delay(15);                      // pad out 5ms to 20ms PPM period
}

ADVERTENCIA: este código se ha compilado, pero no se ha probado.

Nota: delayMicroseconds() es limitado a 16383µs .
Por lo tanto, demora los microsegundos (20000L-pos); fallará, y ha sido reemplazado por dos retrasos: delayMicroseconds(5000L-pos); para retrasar una duración conveniente, seguido de un
co% de delay(15); .
Algunos servos están contentos con un ciclo más corto, por lo que pueden funcionar bien si se elimina el delay(15);

Este diagrama podría ayudar:

PPMvsPWM
LadiferenciaentrePPMyPMWpuedeparecerbastantesutil.Sinembargo,elanchodelpulsoPPMdirectamentecodificalainformacióndeposición.Sisecambiaelanchodelpulso,significaunaposicióndiferente.ElhardwarePWMsepuedeusarparagenerarunaseñalPPM,peroesonosignificaquePPMsealomismoquePWM.

Editar:@Adam.at.Epsilonescribióunaexplicaciónclarayconcisaenloscomentariosacontinuación:

  

PPMcodificainformaciónsoloenelanchodepulsopositivo,mientrasquePWMcodificainformaciónentodoelciclodetrabajo

Dichodeotramanera,unaseñalPWMcodificaunaratio.Senecesitaelratiodeonaoffparaobtenertodalainformación;ensolonoessuficiente.

PPMnocodificaunaproporción.Laduraciónactivadelaseñal(puedeserpositivaonegativa)eslacodificacióndeunaposición'absoluta',yladuraciónmuertadelaseñal(sentidoopuestoalaparteactiva).)essolo'completareltiempo'.Laduracióndedeadpuedevariarsignificativamentesincambiarelsignificadodelainformaciónenlaseñal.Porejemplo,algunos'servosdigitalesdepasatiempo'puedenfuncionardemaneraconfiableconladuraciónmuertadelaseñalquevadesdeaproximadamente5mshastamásde20ms,unfactordel400%.Sinembargo,semoveráconuncambioenladuracióndelaseñalactivadel1%.

UnaseñalPWMestípicamenteunapotenciade"codificación". Piense en la señal PWM como una fracción de la potencia total. Cuanto más de un ciclo esté encendido (y cuanto menos esté apagado), mayor será la fracción de la potencia total. Todo el ciclo es del 100%, el 60% (y por lo tanto el 40%) es el 60% de potencia, el 0% y el 100% es el 0% de potencia, etc.

Como ejemplo concreto, PWM podría estar ejecutándose a una frecuencia de 200Hz o un período de 5 ms. Un 50%, o 0.5, de la señal de potencia máxima estaría encendida durante 2.5 ms, y apagada durante 2.5 ms.

Ese pulso de 2,5 ms puede ser decodificado por un servo RC que espera una señal PPM de 180 grados, por ejemplo.

Cambie la frecuencia a 1000Hz y, por lo tanto, el período se convertirá en 1 ms. La señal del 50% ahora sería de 0.5 ms y de 0.5 ms. Esa señal PWM todavía codifica la misma información de potencia del 50%.

Sin embargo, el servo RC que espera un pulso PPM decodificará ese ancho de pulso como una posición diferente, y cambiará su posición o "abandonará" y no podrá rastrear la señal.

    
respondido por el gbulmer
3

El HS-645MG es un servo "analógico", por lo que debe mantener la frecuencia del pulso ( tasa de repetición) entre 30Hz y 60Hz.

El circuito en un servo analógico incluye un generador de pulsos interno cuya anchura está controlada por el potenciómetro de retroalimentación (que está conectado al eje de salida). Compara este pulso de referencia con el pulso de comando entrante, produciendo un pulso de 'error' cuyo ancho es proporcional a la diferencia entre la posición ordenada y la posición actual del servo. Este pulso de diferencia se "estira" para producir un pulso más largo que alimenta al motor en la dirección requerida. El motor luego gira el eje de salida y el potenciómetro de retroalimentación hasta que el pulso de referencia interno coincide con el pulso de comando entrante.

El pulso de diferencia se estira para aumentar la cantidad de tiempo que el motor se enciende entre los pulsos de comando. Si la frecuencia del pulso de comando es demasiado alta, entonces el motor será sobrecargado y sobrepasará su posición objetivo. ¡Esto hará que el servo se mueva y posiblemente se queme!

las frecuencias más bajas son seguras, pero el servo responderá más lento. Incluso puede reducir la frecuencia a cero (sin pulsos) y el servo no activará su motor en absoluto (esto es útil para reducir el consumo de energía cuando se mantiene una posición).

El HS-645MG está especificado para un recorrido de salida de 90 ° cuando está controlado por un ancho de pulso de 1.05ms a 1.95ms. Sin embargo, su circuito analógico aceptará un rango más amplio, y el límite real se establece mediante paradas mecánicas en ~ 180 ° con un ancho de pulso de aproximadamente 0,6 ms a 2,4 ms.

PPM vs PWM

Los

Servo pulsos son una forma de PWM, pero la información se codifica solo en el ancho del pulso (nominalmente de 1 ms a 2 ms, con '50% 'a 1,5 ms). Esto es equivalente a PWM 'normal' con una relación de 5% ~ 10% a 50Hz.

PPM (Pulse POSITION Modulation) se usa entre el transmisor y el receptor para enviar comandos para varios servos a través de un solo cable. El primer impulso marca el inicio de una trama, el siguiente impulso es el final del servo canal 1 y el inicio del canal 2, etc. Esto continúa hasta que se envían todos los canales, luego se requiere un espacio de al menos 2,5 ms para marcar el final del marco. Los pulsos son típicamente alrededor de 0,4 ms de ancho. Si la velocidad de fotogramas es de 50 Hz y cada canal puede ser de hasta 2 ms, entonces se pueden enviar de forma fiable un máximo de 8 canales durante la trama de 20 ms. Antes de enviarse a los servos, este flujo de pulsos debe decodificarse en pulsos PWM individuales de 1 ~ 2 ms, con la frecuencia de repetición igual a la velocidad de fotogramas de la señal PPM.

La mayoría de los sistemas de control de radio del modelo actual utilizan PCM en el aire, y es posible que no tenga ninguna señal PPM interna. Sin embargo, todos los receptores reproducen la señal PWM de 1 ~ 2 ms que se requiere para controlar un servo estándar. Algunos pueden enviar los pulsos de servo a una velocidad de cuadro más alta (por ejemplo, 11 ms) y luego usted debe usar servos 'digitales' que pueden procesar correctamente la frecuencia más alta.

    
respondido por el Bruce Abbott

Lea otras preguntas en las etiquetas

Comentarios Recientes

Esa es una pregunta bastante fácil de hacer, porque el Phrenal ActiveGate 400 suministra pulsos PWM y DC dependiendo de su frecuencia, duración y relación mOmega. Si bien esos valores se anuncian como distintos por un espacio claro y largo, en realidad se imprimen convenientemente en el acto. Considere la misma resistencia y el diagrama de temporización de un segundo que el anterior y comience a calcular el retraso en tiempo real entre los tipos de pulso indicados que define de lo que es capaz PWM. En la imagen... Lees verder