Nuevo: Generar tren de pulsos de longitud X con salida PWM

  • 6 Respuestas
  • 5279 Vistas

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Nuevo: Generar tren de pulsos de longitud X con salida PWM
« : octubre 28, 2014, 15:03:26 pm »
Buenas tardes Mariano,

Te comento, analizando tu aplicación (ver mensaje) decidí que lo mas optimo es agregar una nueva característica para el PWM: la generación de un tren de pulsos de X longitud.

De esta manera, no necesitas conectar las entradas para contadores y medirlos.
Simplemente especificas cuantos pulsos necesitas y la placa se encarga sola de generarlos.

Las nuevas funciones son:

  • PwmTrainInit(): Inicializa el generador de tren de pulsos para PWM, llamar una sola vez.
  • PwmTrainStart(Channel, DutyCycle, Pulses): Genera en canal PWM "Channel" un tren de pulsos de longitud "Pulses" (máximo 65535) con un "DutyCycle" especifico (por ejemplo 500 -> 50.0 %).
  • PwmTrainStop(): Detiene el generador de pulsos para usar el PWM con normalidad (llamar si no lo usamos mas).

Entonces, para usarlo a modo de ejemplo podrías utilizar el siguiente código.

En primera etapa, inicializar PWM para el generador de tren de pulsos:

// Configurar PWM para una frecuencia de 250 Hz (podes utilizar 20000 para 20 KHz).
PwmFreq(250)

// Asegurarse que salidas PWM tiene duty-cycle 0%. Puede configurarse una sola salida PWM también.
PwmDC(PWM1|PWM2, 0)

// Habilitar el generador de tren de pulsos.
PwmTrainInit()


En otra parte de programa, por ejemplo cuando desees generar el tren de pulsos usas:

// Generar 10 pulsos en salida PWM1 con un DutyCycle del 50.0%.
PwmTrainStart(PWM1, 500, 10)


En este punto la placa generará 10 pulsos. Tener en cuenta que los pulsos tomarán
el tiempo de 10 * 1/freq segundos para la generación. Pero la función retorna inmediatamente ya que se
hace en segundo plano la generación.

Nota: Es posible utilizar el otro canal (PWM2 en este caso) como PWM común si solo seteamos el DutyCycle, ej: Poner PWM2 a 70.0 % con PwmDC(PWM2, 700).

Para utilizar estas nuevas funciones, debes:

  • Actualizar el firmware de la STX8081 a la versión 201, ver link.
  • Copiar el archivo: pwm.inc que te adjunto en este mensaje en el <directorio de instalación StxLadder>\slicetex\StxLadder\pawn\include\stx8081, que puede ser por ejemplo: C:\Program Files\slicetex\StxLadder\pawn\include\stx8081. Quizas necesites permisos de administrador.

Nota: La próxima versión de StxLadder (la versión 1.6.1) contendrá los cambios efectuados para no tener que copiar el archivo pwm.inc.

Si necesitas un ejemplo completo en Pawn, avísame.

En el próximo mensaje te muestro algunas imágenes del tren de pulso obtenidos con el Osciloscopio.

Espero que te sirva.
« Última Modificación: noviembre 01, 2014, 18:24:07 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re: Nuevo: Generar tren de pulsos de longitud X con salida PWM
« Respuesta #1 : octubre 28, 2014, 15:16:11 pm »
En este mensaje te adjunto algunas imágenes tomadas con el osciloscopio cuando se utiliza
el generador de tren de pulsos con el PWM y un DutyCycle = 50.0%.

En todas las imágenes se alimento una resistencia con 12VCC para el PWM y las puntas del osciloscopio en PWM+ y PWM-.

IMÁGENES:

  • TEK0000: Resistencia de 22 ohms, 20 KHz, tren de 10 pulsos.
  • TEK0001: Resistencia de 22 ohms, 250 Hz, tren de 10 pulsos.
  • TEK0002: Resistencia de 180 ohms, 250 Hz, tren de 10 pulsos.
  • TEK0003: Resistencia de 180 ohms, 20 KHz, tren de 10 pulsos.
  • TEK0004: Resistencia de 180 ohms, 250 Hz, tren de 5 pulsos.
  • TEK0005: Resistencia de 180 ohms, 250 Hz, tren de 1 pulsos.

Notar como en la imagen TEK0003 esta deformada un poco la onda a 20 KHz de frecuencia, esto se debe porque la resistencia de carga es un poco elevada y no permite evacuar rápidamente al transistor del PWM la corriente. Comparar con la onda para la resistencia de 22 Ohms y misma fecuencia ver imagen TEK0000. Al ser una carga menor, lo corriente se evacua mas rápidamente.
« Última Modificación: noviembre 01, 2014, 18:26:02 pm por Soporte »
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

MarianoC

  • Aprendiz
  • **
  • Mensajes: 61
Re: Nuevo: Generar tren de pulsos de longitud X con salida PWM
« Respuesta #2 : octubre 28, 2014, 18:40:44 pm »
Hola, acabo de probar y anda perfecto, ahora mi pregunta es, como configuro el Duty-Cycle ya que este puede ir variando de un momento a otro en base a mi necesidad?

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re: Nuevo: Generar tren de pulsos de longitud X con salida PWM
« Respuesta #3 : octubre 28, 2014, 19:35:51 pm »
Queres cambiar el DutyCycle del tren de pulsos ?.

No sabia.... Ok, te modifico el PwmTrainStart() para que puedas especificar el Duty de cada tren.

Te aviso cuando tengamos la actualización lista.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

MarianoC

  • Aprendiz
  • **
  • Mensajes: 61
Re: Nuevo: Generar tren de pulsos de longitud X con salida PWM
« Respuesta #4 : octubre 29, 2014, 09:36:49 am »
si en muchos casos necesito variar el duty del tren de pulso  dentro del rango de 0% a 100%...
Quedo a la espera de la actualización.
Muchas Gracias.
Sds.

Soporte

  • Global Moderator
  • Experto
  • *****
  • Mensajes: 2324
  • Soporte Técnico
Re: Nuevo: Generar tren de pulsos de longitud X con salida PWM
« Respuesta #5 : octubre 29, 2014, 16:03:12 pm »
Buenas tardes,

En el archivo adjunto te paso la actualización de firmware para la función modificada:

PwmTrainStart(Channel, DutyCycle, Pulses): Genera en canal PWM "Channel" un tren de pulsos de longitud "Pulses" (máximo 65535) con
un 'DutyCycle' especifico (un valor común es 500 -> 50.0 %).

También actualiza el archivo "pwm.inc" adjunto como explique en el primer mensaje.

Estamos a disposición.
SOPORTE TÉCNICO

Slicetex Electronics
www.slicetex.com

MarianoC

  • Aprendiz
  • **
  • Mensajes: 61
Re: Nuevo: Generar tren de pulsos de longitud X con salida PWM
« Respuesta #6 : octubre 31, 2014, 16:22:07 pm »
Muchas gracias...ya he realizado algunos ensayos y responde correctamente a la cantidad de pulso que yo establezco a través de la función que desarrollaron
Nuevamente gracias.
Sds... ;D ;D