하드웨어 스펙 뿐만 아니라, 기본 코드에도 문제가 있습니다.
DAQ 와 저장 코드가 한 루프에 있고, 타이밍 코드까지 있으니 당연히 제 속도가 안날 겁니다.
생산자 소비자 루프 같이 Queue 기반의 구조로 가져가야 제대로 된 속도가 날 겁니다.
08-07-2024 08:48 PM - 편집 08-07-2024 08:53 PM
13107200 / 256 / n (n=....31) 로 지정되어 있습니다. n=31 일 때 1652Hz 입니다. 다음은 1,706.67Hz, n=1이면 51.2kHz 입니다
이 때, 13.1072Mhz 는 제품에 장착되어 있습니다.
이런 류의 제품은 일반적으로 FFT 를 하기 위해서(FFT 조건이 샘플 개수가 2^n 개가 필요) 51.2kS/s 와 같은 샘플속도로 설정되어 있습니다.
1초 간격으로 수집하여 FFT 로 분석하면(1초는 1Hz 분석 해상도를 위해서 필요한 최소 데이터 개수) 그래서 지정된 샘플 속도로 사용하셔야 합니다.
만약 0.001 을 원하신다면, 외부에서 클럭을 넣어줘야 하는데 2가지 방법이 있습니다.
(1) 샘플클럭 넣어주기
- 외부에서 1kHz 짜리 샘플클럭을 넣어주면 됩니다.
파형발생기 등을 사용하여도 되고, 다른 DAQ 카드 (NI 9205 등과 같은)의 샘플클럭을 공유해도 되고, NI DAQ 카운터로 생성해도 됩니다.
(2) 샘플클럭 타임베이스 넣어주기
- 외부에서 클럭을 계산해서 타임베이스를 넣어주면 됩니다.
예를 들어, 7,936,000 Hz 를 넣어주면 1000를 사용할 수 있습니다.
그런데....
지금 사용하시는 cDAQ 가 1 solt 짜리 (9181?) 로 보입니다. 그래서 외부 클럭을 넣어줄 수 있는 핀이 없습니다.
따라서 최소한, cDAQ-9185 샤시가 필요합니다.
이 샤시는 PFI0 핀이 1개가 있어서 여기에 타임베이스를 넣거나 샘플클럭을 넣을 수 있습니다(펑션 제너레이터 사용)
이후에 아래 그림과 같이 바꿔주시면 됩니다.
안녕하세요. 본 제품은 9181이 맞습니다. 따라서 샘플링 속도를 1000으로 맞추기로는 힘들 것 같다고 판단하여 dt의 값이 0.000508로 나타나는 1969로 맞추었습니다. 측정 파일에 쓰기 함수를 사용하여 1초간 1969개의 샘플을 취득한 결과 dt의 값으로 인해 엑셀에서는 00:00:00.001부터 각 두 개의 값이 측정될 뿐만 아니라 (이것은 소숫점 표기 개수의 문제 같습니다.) 엑셀에서의 1열 (시간)은 제대로 뜨지만 클릭해 보면 모두 12:00:00 AM으로 뜨는 문제가 발생합니다. 도움 주시면 감사하겠습니다!
저는 단지 데이터를 측정하고 이를 엑셀 파일에 저장하기만 하면 되기 때문에 새로운 코드를 짜서 엑셀 파일 1열엔 시간, 2,3,4열엔 X Y Z 데이터를 기록하고 싶습니다. 아래에 말한 것과 같은 문제점이 생겨 정확한 측정을 하지 못하고 있는데 도움을 주시면 감사하겠습니다. 답변 감사합니다!
파일을 첨부하였습니다.
확인 부탁 드립니다.