본문 바로가기
학부 자료/DSP(MCU)

[ADC] Analog to Digital Converter, 입력신호와 샘플링 주파수 변조 테스트, Multiple case tests

by jackMK 2024. 3. 14.

ADC(Analog to Digital Converter)

이번 포스팅에서 다룬 ADC Test는 입력신호 주파수와 샘플링 주파수를 확인하고, 정확한 샘플링 타이밍에 계산한 값이 입력되는지 확인한다.

 

ADC는 아날로그 신호를 디지털로 변환하고, PWM 모듈은 주기적 신호를 생성하여 특정 속도(샘플링 주파수)로 ADC 변환을 트리거하며, GPIO핀은 외부 모니터링을 통해 출력핀으로 사용한다.

 

▶ ADC(아날로그-디지털 변환기):

  • ADC는 아날로그 신호(이 경우 입력 사인파)를 마이크로컨트롤러에서 처리할 수 있는 디지털 값으로 변환한다.
  • ADC는 트리거 소스(이 경우 ePWM2)에 의해 결정된 특정 속도로 입력 신호를 샘플링하고 아날로그 전압 레벨을 디지털 표현으로 변환하도록 구성된다.
  • 제공된 코드에서 ADC는 ePWM2 모듈에 의해 트리거되는 입력 신호(ADCINB0 채널)를 샘플링된다.

 

▶ PWM(펄스 폭 변조):

  • PWM은 디지털 신호의 듀티 사이클을 변화시켜 아날로그와 유사한 신호를 생성하는 데 사용되는 기술이다.
  • 이 코드에서 ePWM2는 ADC 변환을 트리거하는 데 사용되는 주기적 신호를 생성합니다. ADC의 샘플링 속도를 제어하기 위해 PWM 신호의 주기와 듀티 사이클을 구성할 수 있다.
  • PWM 신호는 ADC 샘플링 프로세스를 트리거하여 샘플이 일정한 간격으로 수집되도록 한다.

 

▶ GPIO(범용 입력/출력):

  • GPIO 핀은 마이크로컨트롤러가 외부 디지털 장치 또는 표시기와 상호 작용할 수 있는 수단을 제공한다.
  • 코드에서 GPIO 핀(GPIO13)은 버퍼 쓰기 작업을 나타내는 데 사용된다. 데이터가 ADC 버퍼에 기록될 때마다 상태전환한다.
  • 버퍼 쓰기 작업을 관찰하고 데이터가 올바르게 캡처되고 있는지 확인하기 위해 GPIO 핀을 외부에서 모니터링할 수 있다.

 

 

Part 1. ADC Test Setting

ADC Buffer

  • ADC Buffer에 데이터가 기록될 때마다 토글 되는 디지털 출력 핀
  • 이 핀의 상태는 ADC Buffer가 데이터를 제대로 수신하고 있는가와 ADC 결과가 메모리에 쓰여졌는지를 나타냄.

 

 

 ADC Input Signal

  • ePWM2에 의해 트리거된 ADCINB0 채널에서 샘플링하도록 ADC-B를 구성
  • 따라서 ADC는 입력 신호 주파수의 아날로그 신호를 캡쳐함.

  • ADC 결과는 Buffer에 저장
  • bufferIndex의 오버플로를 방지하기 위해 관리

 

 

 ADC Sampling Frequency Setting

  • .TBPRD = 𝒙 - 1;  →  TBCLK/(𝒙 + 1) = Sampling Frequency

 

 

▶ Test Value

※ 𝑻𝑩𝑷𝑹𝑫=  (𝑒𝑃𝑊𝑀 𝐶𝑙𝑜𝑐𝑘 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦)/(𝐷𝑒𝑠𝑖𝑟𝑒𝑑 𝑃𝑊𝑀 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦)  −1

*ePWM Clock Frequency : MCU Frequency, ePWM 모듈을 구동하는 클록

 

총 4가지 경우의 테스트 조건이 있지만 첫번째 케이스의 경우만 진행 상황을 자세히 설명하고,

나머지 3가지 경우는 생략하겠습니다.

 

그리고 가장 마지막에 나오는 영상은 Case 4의 샘플링 주파수를 사용했고 입력신호 주파수를 실시간으로 변경해보며 ADC 수행을 확인하는 과정입니다.

 

Part 2. Test Case 1

▶ ADC Sampling Value
𝑰𝒏𝒑𝒖𝒕 𝑺𝒊𝒈𝒏𝒂𝒍 𝑭𝒓𝒆𝒒𝒖𝒆𝒏𝒄𝒚 :10𝑘𝐻𝑧
𝑰𝒏𝒑𝒖𝒕 𝑺𝒊𝒈𝒏𝒂𝒍 𝑷𝒆𝒓𝒊𝒐𝒅 :0.1𝑚𝑠𝑒𝑐

𝑺𝒂𝒎𝒑𝒍𝒊𝒏𝒈 𝑭𝒓𝒆𝒒𝒖𝒆𝒏𝒄𝒚(𝑷𝑾𝑴):20𝑘𝐻𝑧
𝑺𝒂𝒎𝒑𝒍𝒊𝒏𝒈 𝑷𝒆𝒓𝒊𝒐𝒅(𝑷𝑾𝑴):0.05𝑚𝑠𝑒𝑐

∴ 𝑆𝑎𝑚𝑝𝑙𝑖𝑛𝑔 𝑇𝑖𝑚𝑖𝑛𝑔 : 0.05𝑚𝑠𝑒𝑐 / 50𝜇𝑠𝑒𝑐 

 

 

▶ Input Signal

WaveForm으로 생성한 Sin파

 

 

▶ Input Signal Check

생성한 신호가 핀에 제대로 입력되는지 확인

 

 

▶ GPIO13 PIN Measurement

 

  • 코드 상에서 PWM 주파수는 20kHz로 설정되어 있다. 그리고 ADC는 PWM 신호에 의해 트리거 된다.

 

  • SOCASEL = 2로 설정되어 있으며, 이는 카운터 주기의 시작 부분에서 트리거 됨을 의미한다.

 

  • 즉, ADC는 PWM 주기가 시작될 때 트리거 된다. (PWM 주기마다 한번씩 ADC 샘플링을 수행한다)
  • 결론적으로, PWM 주파수가 20kHz로 설정되어 있지만 ADC가 PWM 신호의 시작 부분에서만 트리거 되기 때문에 실제 ADC 샘플링 주파수는 PWM 주파수의 절반인 10kHz이다.

 

 

▶ CCS Debugging Mode Graph Properties

  • ADC에서 처리된 아날로그 사인파 신호의 디지털 캡처
  • 입력 신호가 50kHz이기 때문에 주기는 0.1msec
    즉, 매 1msec 마다 10개의 사이클

 

 

▶ CCS Debugging Mode (Video)

Case 1

 

 

 

Part 3. Real-time variation of the input signal frequency with a sampling frequency of 1Mhz

입력신호 주파수 변화 : 500kHz → 250kHz → 100kHz → 50kHz

 

이전 포스팅에서 설명드렸던 나이퀴스트 샘플링 이론에 따라,

샘플링 주파수가 입력신호 주파수보다 클수록 정확하게(부드럽게) 샘플링하는 것을 볼 수 있습니다.

 

감사합니다.


loading