CP Voltage 샘플링 방법 정리

CP 전압은 PWM에 따라 전압차가 발생하며, PWM High 시그널인 상태에서 전압을 정확히 읽어야 한다.

CP는 1KHz PWM을 방출하며, PWM Duty 비율에 따라 충전 전류가 결정되며, PWM 방출되는 상태에서 ADC로 읽은 CP 전압은 PWM 상태에 따라 차이가 발생한다.

 

ADC DMA Continus Mode를 Enable 할 경우, PWM 상태와 관계없이 무조건 읽기 때문에 CP 전압은 PWM High/Low에 따라 다르게 읽히게 된다.

 

ADC DMA Continus Mode를 Disable 시키고 ADC DMA 시작 시점을 TIM3 트리거(Rising Edge)로 설정한 경우에는 1회 샘플링을 완료하면 DMA가 자동 종료되어 PWM High 전체 구간의 샘플링이 되지 않는 문제가 있다.

 

이를 보정하기 위해 ADC 1회 샘플링 시간을 계산하여, 샘플링에 필요한 최소시간 보다 큰 타이머을 생성하여 이것을 ADC DMA 트리거로 설정하면 1회 샘플링만 실행하고 ADC DMA가 종료되는 문제를 해결할 수 있다. 역시 경험치 많은 사람의 조언은 항상 옳다... ㅎㅎ;

 

여기서 ADC 1회 샘플링 시간은 ADC Clock / (12bit + Sampling Time)으로 계산하면 대략 6.xx us 나오기 때문에 트리거 사용할 타이머는 100KHz로 생성하여 10us 마다 트리거 되도록 설정하면 1ms 동안 100회 샘플링이 가능하다.

트리거로 사용할 타이머를 더 높게 설정하면 7us마다 발생시킬 수 있으나, 10us 충분히 CP 상태를 정확히 읽을 수 있고, 계산하기도 쉽기 때문에 10us를 설정하는 것을 권장하여 100KHz 타이머로 트리거를 설정하였다.