취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

시간 정확성에 대해 질문드립니다.

해결 완료!
솔루션으로 이동
Highlighted

안녕하세요.

NI-USB 6343를 사용하고 있고, 현재 카운트 작업에 관련해서 공부를 하고 있습니다.

 

저는 카운트가 측정할 시간을 줄 때, 기다림(ms)함수를 사용하고 있습니다. 

johndoe_student_0-1594176636575.png

delay은 카운터 전 잠시 대기하는 시간이라 크게 중요하지 않고,

dwell은 카운터 작업을 진행할 시간을 의미합니다. 1이면 1000이 곱해져 1000ms동안 측정하게 됩니다. 

 

그런데 1000hz에 대해 1000ms=1초 동안 측정한 값이

1000,1001,1002,1003 정도로 오차가 발생합니다.

(신호발생기를 오실로스코프로 측정하면 1000.9hz로 일정합니다.)

 

1.기다림함수는 랩뷰가 동작하는 os(혹은 랩뷰가 돌아가는 컴퓨터의 cpu)에서 시간을 받아와서 동작하는 걸로 알고 있습니다.

  이 부분에서 정확하지 않아 약간의 오차가 발생하는 것으로 생각하고 있는데,

  카운터 task 시작 > 1초 대기 > 카운터 read 에서 정밀한 1초(오차가 0.1ms이하)를 측정할 수 있는 방법이 있을까요? 

  *RTOS나 FPGA는 각각 윈도우, USB-6343 환경이라 사용이 불가능할 것 같습니다.

 

2. 제가 고려해본 방법은 

  10Mhz의 신호는 1백만번 카운트가 1초이므로, 99백만 9999번 혹은 1백만1번과 1개 차이는 1ppm차이가 됩니다.

  따라서 task를 시작하고, 온도브클락(10Mhz)이 1백만번 카운트되면,  카운트 read하는 방식이  가능할까요?

  하지만 USB-6343이 (1)온보드클락을 카운트를 하고 정확한 (2)카운트가 되면 외부에서 들어오는 신호의 카운트를 멈추는 (3)동작을 하는게 가능한지, 또한 이러한 작업이 진행상 (4)지연시간이 거의 없는지 궁금합니다. 

 

감사합니다.

  

0 포인트
1/6 메시지
490 조회수
Highlighted

먼저 질문의 카운트 방식은 읽는 시점에 따라 틀려집니다.

 

해결 방법으로는 카운터를 2개 사용합니다.

하나는 지금의 카운트를 하는 것이고 다른 하나는 1초 간의 펄스를 생성하는 것으로 만듭니다.

이것을 처음의 Gate로 활용하는 방법입니다.

카운터의 Gate  활성화 또는 외부에 AND Logic 회로를 추가하는 방법입니다.

 

지정된 시간만 입력을 허용함으로 해서 정확한 시간 측정 방법이 되겠습니다.

 

다른 하나는 Analog Input 을 활용하는 방법입니다.

카운터 입력을 Analog 입력으로 연결하고 DAQmx Analog Finite Input 을 통해 1초간의 데이타를 읽은 후 파형분석 프로그램을 통해  Edge 를 Count 하는 겁니다.

 

 

2/6 메시지
447 조회수
Highlighted

답변 감사합니다.

 

말씀하신

"다른 하나는 1초 간의 펄스를 생성하는 것으로 만듭니다. 이것을 처음의 Gate로 활용하는 방법입니다."

의 의미를 정확히 알 수 있을까요?

 

제가 이해한 의미는,

두번째의 카운터를 출력 작업을 만듭니다. 예를들어 1000hz의 출력 카운터를 만들어서 timing setting을 1000으로 합니다. 1000hz에서 1000번의 카운트가 되면 정확히1초입니다(0.5ms오차). 완료되었다는 신호를  첫번째 카운터의 읽는 시점의 트리거?로 줍니다. 

로 이해했습니다. 

 

이 때 gate가 

 
 

gate.PNG

하드웨어적 gate (= ctr0/PFI9) 번 인지 잘 모르겠습니다. 

 

단순히 랩뷰에서만 두번째 카운터를 출력해서 정해진 갯수를 카운트하면 랩뷰내에서 첫번째 카운트를 읽는 함수에 신호를 주는것인지

아니면 USB-6343하드웨어적으로 선을 연결해서, OUT 핀에서 GATE핀으로 연결해야하는지 알 수 있을까요?

 

+저는 SRC가 신호를 받을 때 쓰는 핀으로만 사용했고, OUT은  카운터신호를 나가게만 하는 역할인지 알았는데 PFI0(ctr2의 SRC)로 카운터출력이 가능하다는걸 처음알았습니다. 혹시 GATE 핀의 역할을 알 수 있을까요?

 

 

 

0 포인트
3/6 메시지
437 조회수
Highlighted

Counter 2번은 1초 폭을 가진 펄스를 생성하여 Counter 1번의 Gate 역할을 하는 것을 말합니다.

Counter1의 Gate 활성화에 대해 NI 사이트에서 찾아 봤으나 못 찾았습니다. 프로퍼티를 찾아 봤으나 안보입니다.

 

그래서 Counter2의 1초 폭의 신호 출력과 측정 신호와 AND 하여 Counter1의 Source에 연결합니다.

AND 한다는 것을 실제 TTL Logic IC를 사용한다는 의미입니다. 7408 Logic IC가 실제 AND 회로입니다.

 

측정신호 AND Counter2의 출력 -> Counter1의 입력.

 

즉 정확한 시간(1초간)만 측정신호를 Counter1에 입력하여 실시간 OS가 아닌 곳에서 읽는 시간에 따른 오차를

없애는 방법입니다.

 

Analog 입력으로 1초간 입력하여 파형 분석하는 것도 마찬가지 방법입니다.

 

4/6 메시지
417 조회수
Highlighted
솔루션
주제 작성자 johndoe_student이(가) 승인함

Gate Pin의 용도는 측정 방식에 따라 다르게 사용되어 집니다.

 

Count Edge  에서는 Pause 기능을 하는군요.

 

실제 장비가 없으므로 예제는 시험해 보지 못했습니다.

한번 해보고 답변 부탁 드립니다.

 

예제: LV2012 이후

필요 장비 : Counter 기능을 가지는 DAQ Device

 

 

 

5/6 메시지
413 조회수

답변 감사드립니다.

첨부해주신 코드를 통해 100hz의 신호로 확인해본결과 

johndoe_student_0-1594609149157.png

에 대해 100의 카운터 값을 정상적으로 출력합니다.

1chan을 Nsample을 읽은뒤 마지막 배열값을 출력하는 방식과 하드웨어 타이밍을 섞어 

johndoe_student_1-1594609553279.png

 

와 같이 내부타임베이스클럭과 카운트할 펄스갯수(위 사진에서는 둘이 동일해서 1초만 가능하나 곱하기의 출력으로 바꿔주면 됩니다)로 

마지막 내부타임베이스클럭을 카운트했을때, 측정하고 싶은 펄스의 갯수를 출력하는 코드를 만들 수 있었습니다.

감사합니다.  

 

 

0 포인트
6/6 메시지
404 조회수