Modulación por ancho de pulso (PWM) con NI-DAQmx y LabVIEW

Actualizado el Aug 27, 2020

Ambiente

Hardware

  • CompactDAQ Chassis
  • CompactDAQ Controller
  • Multifunction I/O Device

Software

  • LabVIEW

Controlador

  • NI-DAQmx

Sistema Operativo

  • Windows

Este documento es parte de Getting Started with NI-DAQmx Series .

Una señal de modulación por ancho de pulso (PWM) es una técnica para generar pulsos digitales para controlar un circuito analógico. Una señal PWM consta de dos componentes principales que definen su comportamiento: un ciclo de trabajo y una frecuencia. Este artículo analizará la consideración del hardware con el uso de hardware y recursos NI-DAQmx para comenzar a usar PWM con sincronización de software o hardware.

Consideraciones de hardware


La implementación de la generación PWM y el recuento de pulsos depende del hardware que esté utilizando. Los contadores son preferibles para generar salida PWM. Consulte la hoja de datos de su hardware para ver cuántos contadores están disponibles en ese dispositivo y si puede admitir PWM.

Módulos / Tarjetas:

  • Dispositivos de las series E, S, M y X: consulte el manual del usuario
  • Otros módulos digitales: compruebe si son estáticos (es decir, temporizados por software) o temporizados por hardware en el manual del usuario
  • Serie C: compruebe si sus módulos de la Serie C pueden acceder a los contadores o temporizadores en su chasis CompactDAQ (cDAQ) o en la placa posterior del controlador.

Chasis / Controlador:

  • cDAQ: consulte la cantidad de contadores en el chasis en el manual del usuario. Esta función solo está disponible en los módulos que brindan acceso a los contadores integrados del chasis.

PWM con NI-DAQmx en LabVIEW


Para implementar PWM en NI-DAQmx, asegúrese de haber investigado su hardware y las capacidades que tiene. Después de eso, puede determinar la mejor solución para su aplicación: Software Times o Hardware Timed PWM.

Modulación por ancho de pulso temporizada por software
Si su aplicación no tiene requisitos estrictos, con respecto a la velocidad y la precisión, se puede usar una salida digital con control de tiempo de software para el tren de pulsos o la generación de PWM.

Aquí hay un ejemplo en la Comunidad para implementar PWM con E / S digitales temporizadas por software.

Modulación por ancho de pulso temporizada por hardware
  • Comenzando con un ejemplo (recomendado)
    1. Inicie LabVIEW
    2. Navegue a Ayuda >> Buscar ejemplos ... que lanzará el Buscador de ejemplos de NI
    3. Confirme que está en la pestaña Examinar y navegue por las carpetas Entrada y salida de hardware >> DAQmx >> Salida de contador
  1. Haga doble clic en el ejemplo que desea utilizar
  2. NO edite este ejemplo. Cualquier cambio sobrescribirá el ejemplo original.
    1. Haga clic en Archivo >> Guardar como
    2. Elija la opción que se adapte a sus necesidades. La recomendación es elegir la jerarquía duplicada en la nueva ubicación
    3. Elija la ubicación y haga clic en Guardar
    4. Cierre el ejemplo y abra el ejemplo en la nueva ubicación
  3. Una vez que se abre la copia local del ejemplo, puede cambiar la configuración y el canal utilizado en el ejemplo.
  • Comenzando desde un diagrama de bloques en blanco
    1. Cree e inicialice un canal de salida de contador usando DAQmx Create Virtual Channel VI. Hay tres formas de definir su tarea de salida de contador en NI-DAQmx según las necesidades de su aplicación:
      • Frecuencia de pulso de CO
      • Tiempo de pulso de CO
      • Garrapatas de pulso de CO - Nota : diferentes hardware tienen diferentes bases de tiempo, ejecutar el mismo código con diferente hardware puede cambiar el ancho de pulso.
Seleccione las entradas adecuadas para Ciclo de trabajo, Frecuencia, Contador (es), Estado inactivo y Retardo inicial.
  1. Utilice el DAQmx Timing VI para configurar la duración de la generación de pulsos.
Nota: La instancia implícita debe usarse cuando no se necesita tiempo de muestra, como en tareas de contador como la generación de trenes de pulsos. Además, elija Continuo como modo de muestra.
  1. Llame al DAQmx Start VI ; este VI inicia la generación del tren de pulsos.
  2. Coloque un ciclo while para que se ejecute continuamente hasta que el usuario presione el botón Detener .
  3. Dentro del bucle while:
    1. Cree una variable local para el ciclo de trabajo. Esto se comparará con la variable de ciclo de trabajo original y la comparación actuará en el selector de la estructura del caso.
    2. Coloque una estructura de caso:
      1. True Case: Llame al DAQmx Write VI. Si se ha cambiado el ciclo de trabajo, el nuevo ciclo de trabajo se establece mediante el DAQmx Write VI.
      2. Caso falso: Conecte todas las entradas directamente a las salidas. Si no se ha cambiado el ciclo de trabajo, se ejecuta el caso falso de la estructura del caso y no se actualiza nada.
    3. Verifique si hay errores usando el VI DAQmx Is Task Done.
    4. Agregue un VI múltiple de espera hasta el siguiente milisegundo para introducir un breve retardo en el ciclo. Esto evitará que el bucle se ejecute lo más rápido posible, consumiendo recursos innecesarios del procesador.
  4. Llame al DAQmx Clear Task VI para borrar la tarea.
  5. Verifique y muestre errores usando el VI Simple Error Handler.

Nota: Esta imagen es un fragmento de LabVIEW, que incluye código de LabVIEW que puede reutilizar en su proyecto. Para usar un fragmento, haga clic con el botón derecho en la imagen, guárdelo en su computadora y arrastre el archivo a su diagrama de LabVIEW.