NI-DAQmx 및 LabVIEW를 사용한 펄스 폭 변조(PWM)

업데이트 됨 Apr 1, 2021

환경

하드웨어

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

소프트웨어

  • LabVIEW

드라이버

  • NI-DAQmx

운영 체제

  • Windows

이 문서는 NI-DAQmx 시작하기의 일부입니다.

펄스 폭 변조(Pulse Width Modulation, PWM) 신호는 아날로그 회로를 제어하기 위해 디지털 펄스를 생성하는 기술입니다. PWM 신호는 동작을 정의하는 두 가지 주요 구성 요소는 듀티 사이클과 주파수입니다. 이 기사에서는 소프트웨어 또는 하드웨어 타이밍과 함께 PWM 사용을 시작하기 위해 NI-DAQmx 하드웨어 및 리소스를 사용할 때 하드웨어 고려 사항을 살펴 봅니다.

하드웨어 고려 사항


PWM 생성 및 펄스 카운팅의 구현은 사용중인 하드웨어에 따라 다릅니다. 카운터는 PWM 출력을 생성하는데 선호됩니다. 해당 장치에서 사용할 수있는 카운터 수와 PWM 지원 여부를 확인하려면 하드웨어의 데이터 시트를 참조하십시오.

모듈/카드:

  • E, S, M 및 X 시리즈 장치 – 사용 설명서 참고
  • 기타 디지털 모듈 – 사용자 설명서에서 정적 (예 : 소프트웨어 타임) 또는 하드웨어 타임인지 확인
  • C 시리즈 -C 시리즈 모듈이 CompactDAQ(cDAQ) 섀시 또는 컨트롤러의 백플레인에서 카운터 또는 타이머에 액세스 할 수 있는지 확인하십시오. 온보드 카운터 액세스를 위한 cDAQ 모듈 지원

섀시/컨트롤러 :

  • cDAQ – 사용자 설명서에서 섀시의 카운터 수를 확인하십시오. 이 기능은 섀시 온보드 카운터에 대한 액세스를 제공하는 모듈에서만 사용할 수 있습니다.
 

LabVIEW에서 NI-DAQmx를 사용한 PWM


NI-DAQmx에서 PWM을 구현하려면 하드웨어의 기능을 먼저 확인하십시오. 그런 다음 애플리케이션에 가장 적합한 솔루션으로 소프트웨어 타이밍(Software Timed) 또는 하드웨어 타이밍(Hardware Timed) PWM 중에 결정할 수 있습니다.

소프트웨어 타이밍 펄스 폭 변조
애플리케이션에 속도 및 정밀도와 관련하여 엄격한 요구 사항이 없는 경우 펄스 트레인 또는 PWM 생성을 위한 소프트웨어 타이밍 제어와 함께 디지털 출력을 사용할 수 있습니다.

다음은 소프트웨어 타이밍 디지털 I/O로 PWM을 구현하기위한 커뮤니티의 예입니다. Software Timed Pulse Width Modulation

하드웨어 타이밍 펄스 폭 변조
  • 예제로부터 시작(권장)
    1. LabVIEW 시작
    2. 도움말 >> 예제 찾기...로 이동하면 NI 예제 탐색기가 시작됩니다.
    3. 탐색 탭에 있는지 확인하고 하드웨어 입력과 출력 >> DAQmx >> 카운터 출력 폴더를 탐색하십시오.
  1. 사용하려는 예제를 두 번 클릭하십시오.
  2. 이 예제를 편집하지 마십시오. 모든 변경 사항은 원래 예제를 덮어 씁니다.
    1. 파일 >> 다른 이름으로 저장을 클릭하십시오.
    2. 필요에 맞는 옵션을 선택하십시오. 새 위치에 계층구조 복제를 선택하는 것이 좋습니다.
    3. 위치를 선택하고 저장을 클릭하십시오.
    4. 예제를 닫고 새 위치에서 예제를 엽니다.
  3. 예제의 로컬 사본이 열리면 예제에 사용된 구성 및 채널을 변경할 수 있습니다.
  • 빈 블록 다이어그램에서 시작
    1. DAQmx 채널 생성 VI를 사용하여 카운터 출력 채널을 생성하고 초기화합니다. 어플리케이션 요구에 따라 NI-DAQmx에서 카운터 출력 태스크를 정의하는 세 가지 방법이 있습니다.
      • CO 펄스 주파수
      • CO 펄스 시간
      • CO Pulse Ticks- 참고 -하드웨어마다 시간 기반이 다르므로 동일한 코드를 다른 하드웨어로 실행하면 펄스 폭이 변경 될 수 있습니다.
주기 점유율, 주파수, 카운터, 유휴 상태초기 지연에 대한 적절한 입력을 선택합니다.
  1. DAQmx 타이밍 VI 를 사용하여 펄스 생성 기간을 구성하십시오.
참고 : 펄스 트레인 생성과 같은 카운터 태스크와 같이 샘플 타이밍이 필요하지 않은 경우, 암시적 인스턴스를 사용해야 합니다. 또한 샘플 모드로 연속 샘플을 선택합니다.
  1. DAQmx 시작 VI를 놓습니다. 이 VI는 펄스 트레인 생성을 시작합니다.
  2. 사용자가 정지 버튼을 누를 때까지 계속 실행되도록 While 루프 를 배치합니다.
  3. While 루프 내부 :
    1. 주기 점유율에 대한 로컬 변수를 만듭니다 . 이것은 원래 듀티 사이클 변수와 비교되며 비교는 케이스 구조의 선택자에서 작동합니다 .
    2. 케이스 구조 배치 :
      1. 참 케이스 : DAQmx 쓰기 VI를 호출합니다. 주기 점유율이 변경된 경우 새로운 주기 점유율은 DAQmx 쓰기 VI를 사용하여 설정됩니다 .
      2. 거짓 케이스 : 케이스 구조의 모든 입력을 출력에 직접 연결합니다. 듀티 사이클이 변경되지 않은 경우 케이스 구조의 거짓 케이스가 실행되고 아무것도 업데이트되지 않습니다.
    3. DAQmx 태스크 완료? VI를 사용하여 오류를 확인하십시오.
    4. 다음 ms 배수까지 기다림 VI 를 추가하여 루프에 짧은 시간 지연을 도입합니다. 이렇게하면 루프가 최고속도로 실행되어 불필요한 프로세서 리소스가 소모되지 않습니다.
  4. 태스크를 지우려면 DAQmx 태스크 지우기 VI를 호출하십시오.
  5. 단순 에러 핸들러 VI를 사용하여 에러를 확인하고 디스플레이합니다.

참고 : 이 이미지는 프로젝트에서 재사용 할 수있는 LabVIEW 코드가 포함 된 LabVIEW 스니핏입니다. 스니핏을 사용하려면 이미지를 마우스 오른쪽 버튼으로 클릭하고 컴퓨터에 저장한 다음 파일을 LabVIEW 다이어그램으로 드래그하십시오.