2017-03-04 8 views
1

저주파 디지털 신호가 켜지거나 꺼지는시기를 결정하려고합니다. 전환을 정확하게 결정할 수 있으면 시간을 측정하고 시간을 측정 할 수 있습니다.C#에서 펄스의 on 및 off 시간 측정

신호가 0.5Hz에서 5Hz 사이에서 작동합니다. 약 30ms마다 샘플을 얻습니다. 이는 일반적으로 전환이 발생했지만 전환이 발생하는 동안 변경되는 부동 소수점 값입니다. 불행히도 전환은 순간적이지 않습니다. 값이 변하는 2 ~ 3 개의 샘플이 있고 때때로 샘플간에 샘플 값이 동일하지 않은 경우 항상 약간의 지터가 있습니다.

많은 샘플을 채취하고 정렬하여 평균을 구하고 평균 이하의 값을 평균값으로 표시하고 평균값에 대한 평균값을 나타 내기 위해 시도했습니다. 99 샘플의 평균이 50 번째 샘플이어야하므로 일종의 효과가있었습니다. 불행히도 현실 세계에서는 항상 ON 또는 OFF 상태에서 완벽한 평균값의 양쪽에서 49 개의 값을 얻을 수있는 것은 아닙니다.

그래서 이동 평균 또는 지수 평균을 사용해야하는 것은 무엇입니까? DFT? FFT? 이전 샘플을 다음 샘플과 비교해 보았습니다. 거의 비슷합니다. 그러나 전환이 발생했다고 말하는 정확한 가치를 얻는 데 여전히 문제가 있습니다.

예가 될 것이다 : 장치 "알 수없는"상태

시료는 다음과 같다 :

  • S0 - 45.1156987295826
  • S1 - 45.1156987295826
  • S2 - 67.7942377495463
  • S3 - 67.7942377495463
  • S4 - 60.9886569872958
  • ,515,
  • S5 - 49.4682395644283
  • S6 - 45.1156987295826

S0와 S1이 OFF 상태에 있고 S2 및 S3이 ON 상태에 있지만 있는지 매우 간단하다 OFF 상태 향해 S4와 S5 경향 S4와 S5 중 어느 상태에 속합니까?

감사합니다, 더그 (참고로, 데이터는 내가 시뮬레이션 매우 매우 빠르게 전환 장치를 사용하고이 깨끗한 결코)

당신은 시간을 일정하게 약 0.5로, 로우 패스 필터를 시도 할 수 있습니다
+0

우리가 도울 수없는 신호 (idealy plot)를 보여줍니다 .... – Spektre

+0

@Spektre : 합법적 인 입력 신호의 정의가 어느 한 플롯 (또는 두 개)이 표시 할 수있는 것과 너무 다를 수있는 경우 음모가 그다지 도움이되지 않습니다 (오도 된 수 있음). – hotpaw2

+0

감사합니다. 음모가 도움이 될 수 있습니다. 나는 gen one을 시도 할 것이다. – AeroClassics

답변

1

몇 초 동안 지터를 제거하십시오. 그런 다음 각 발화의 가장 가파른 부분에 대한 로우 패스 필터 결과의 1 차 미분에서 피크를 찾습니다. 필요한 경우 첫 번째 차이 샘플간에이 피크를 보간 (2 차 또는 3 차)합니다.

잡음 "jitter"의 대략적인 크기를 선험적으로 알고있는 경우 오탐 (false positive)을 방지하기 위해이 지터보다 높은 임계 값을 사용해야 할 수도 있습니다.

연속 근사값 : 임의의 임계 값을 설정할 수도 있습니다. 그 다음 결과 전이 결정을 검토하여 신호 정의 기준 (0.5에서 5 Hz 사이의 모든 펄스 폭 또는 대부분의 펄스 폭)을 충족하는지 확인하십시오. 조건이 충족되거나 최대화 될 때까지 임계 값을 위아래로 조정하십시오. 작동하는 전환 임계 값 범위를 찾으면 가장 큰 잡음 내성을위한 중간 값을 선택하십시오.

+0

나는이 +1에 부딪 쳤지 만 제안을 이해하기 위해 노력하고 있습니다.하지만 대답은 여기에 있습니다. 나는 오늘 K- 평균 클러스터링을 시도했지만 여전히 도움이된다고 확신하지 못했습니다. 어쩌면 추세 분석이 올바른 접근법 일 수도 있지만 데이터 포인트는 거의 없습니다. 원래 게시물에 데이터 예제를 추가하겠습니다. – AeroClassics