< >
  • Cost-Effective DAQ Boards For Distributed Acoustic Sensor DAS

Cost-Effective DAQ Boards For Distributed Acoustic Sensor DAS


DAQ Board Designed for distributed fiber optic acoustic sensing systems, the DAQ board features a high speed sampling rate of 250 MSps, dual channel and pulse-triggered outputs, and built-in IQ demodulation algorithms.

Model:GY-DAQ-2480
Tags: DAQ DAS 250M DAQ built-in IQ DAS Capture Card
Contact:face Huang Email: Hqy@ybphotonics.com
WhatsApp: +8613427781756 Web | App
Get a Quote Manual: Download>>

Product Info


Introduction

Data Acquisition Card for Distributed Acoustic Fiber Sensing (DAS) with Pulse Output sends TTL pulses directly to the AOM driver, eliminating the need for an additional pulse generator and greatly reducing system complexity.

The DAQ card has a 250MSps sampling rate suitable for DAS systems with 80M acousto-optic modulators (if your AOM is 200M, we recommend choosing our higher sampling rate version of the DAQ YB-DAS-1000-DAQ). The built-in IQ demodulation algorithm allows direct acquisition of amplitude data, which effectively reduces computational complexity.

This is a PCIe x8 Lane, dual channel, 14bits respectively rate high speed data acquisition card with 250MSps sampling rate. high performance FPGA chip on board with rich multiplier and RAM resources. The driver has good compatibility and supports several versions of Windows as well as CentOS and Ubuntu. Supports X86 and ARM platforms (tested on Nvidia Jetson AGX Orin Module).


Parameters

ItemValue
Channel Number2
Sampling Rate250MSps
Sampling Mode14bits dual-channel synchronized real-time sampling
Coupling MethodDC-coupled
Input Impedance50Ω
Input Voltage Range2Vpp
Bandwidth0-100MHz analog bandwidth
Settable Bias±1V bias programmable to fully utilize ADC range
SFDRUp to 88dBc
Trigger Output PulseSupport
PCIEPCIe2.0 x8 high-speed transmission interface
Demodulation AlgorithmBuilt-in fiber optic sensing demodulation algorithm


Power Supply and Power Consumption

  • Power supply: 12V, 0.6A
  • Power consumption: 12W (Max)

Temperature range

  • Operating temperature: -20 ~ 60 ° C
  • Storage temperature: -40~85°C

Mechanical Dimensions

  • 182.8mm(L)x126mm(W)x26.9mm(D)

daq-20250401122554.png


Interface definitions

  • PCIe interface: for data transmission and parameter setting
  • 10Gb optical port: reserved
  • Ch1: Acquisition channel 1
  • Ch2: Acquisition channel 2
  • Trig-in: external trigger, 3.3V input
  • Trig-out: internal capture trigger output, 3.3V/5V selectable

daq_20250401122727.jpg


Test results

Raw signal curve
daq_20250401124819.jpg

Amplitude-phase signal

daq-20250401125216.jpg
PZT single-frequency signal demodulation, restoring 500Hz sine excitation signals

daq_20250401125531.jpg




Interface Function Call Description

The GY-DAQ-2480 features built-in IQ demodulation capabilities, designed for balanced detector-based DAS systems. It supports both single-channel and dual-channel IQ demodulation. When using the uploaded raw data or single-channel demodulation function, the maximum number of points per frame (sampling points per trigger pulse) reaches 130,048. At a spatial resolution of 0.4m under a 250-meter fiber sampling rate, this corresponds to a maximum sensing range of 130,048 × 0.4m = 52.019 kilometers. Data volume can be reduced by lowering the resolution.


API Interface Description

We provide the API in the form of a dynamic link library (.dll file) that you can call in your favorite programming language (e.g. python, C++, java or libview). Here is a description of the 2 more important functions.

int DasCardSetDataSel(int sel)

  • Function description

The digital down-conversion function has already been done on the board, so that the collected data can be demodulated by digital I/Q. The sel parameter is used to select the corresponding data type in the read demodulation algorithm.

20240216001.jpg

  • Function parameter
daq_20250401124242.jpg

Raw and phase data are parsed as signed 16-bit data (short), while amplitude data are parsed as unsigned 16-bit data (unsigned short); phase data are fixed-point data, and need to be divided by 8192 to normalize to within ±π during demodulation.


Programming DEMO Example

# -*- coding: utf-8 -*-

import numpy as np
import time
from ctypes import *

import sys, win32api, os

def usleep(microseconds):
    start_time = time.perf_counter_ns()
    end_time = start_time+(microseconds * 1000)  # 因为是纳秒,所以要乘以1000
    while time.perf_counter_ns() < end_time:
        pass

dll = cdll.LoadLibrary("DasCardLib.dll")
if __name__ == '__main__':

    samples = 8192       #采样点数8192
    seg_num = 100        #每次读取100段数据
    pulse_frq = 10000    #脉冲频率10000
    pulse_width = 100    #脉冲宽度100ns
    data_sel =  1        #通道1幅度相位数据
    pulse_num = 10       #写脉冲数目10
    resolution = 1       #设置分辨率0.4m

    ret = dll.DasCardOpen()       #打开采集卡
    print(ret, 'open card!')

    ret = dll.DasCardSetResolution(c_int(resolution))    #设置采样分辨率
    print(ret, 'DasCardSetResolution')
	
    ret = dll.DasCardSetSampleNum(c_int(samples))        #设置采样点数
    print(ret, 'DasCardSetSampleNum')    

    ret = dll.DasCardSetPulseFrq(c_int(pulse_frq))       #设置脉冲频率
    print(ret, "DasCardSetPulseFrq!")
    
    ret = dll.DasCardSetPulseWidth(c_int(pulse_width))   #设置脉冲宽度
    print(ret, "DasCardSetPulseWidth!")
    
    ret = dll.DasCardSetDataSel(c_int(data_sel))         #设置数据源
    print(ret, "DasCardSetDataSel!")
    
    ret = dll.DasCardSetPulseNum(c_int(pulse_num))       #设置写脉冲数目
    print(ret, "DasCardSetPulseNum!")
    
    ret = dll.DasCardSetTest(c_int(0))                   #设置DAC数据
    print(ret, "DasCardSetTest!")
    
    
    ret = dll.DasCardStart()               #开展采样
    if(ret==-1):
        print(ret,"card initialization failed!")
    else:
        print(ret,"card initialied successfull!")
        

    
    
    buf = (c_int16*samples*seg_num*2)()   #分配读取缓存,原始数据和单通道解调为c_int16*samples*seg_num*2,双通道解调为c_int16*samples*seg_num*4
    count = 0
    tlast = time.time()
    
    try:
        while(True): 
            size = dll.DasCardQueryFifo()       #查询缓存数据量
            if size >=samples*seg_num*4:        #如果缓存数据够需要读取的数据量,读取缓存数据,否则继续查询
                # print(size.value, 'cache')
                ret = dll.DasCardReadFifo(buf, c_int(samples*seg_num*4))   #读取100个脉冲的缓存数据
                if ret==False:
                    print(size, 'read error')
                    continue
                else:
                    # 读取成功,处理数据
                          
                    # 统计脉冲触发频率
                    count = count + 1
                    if count>=100:
                        tcurrent = time.time()
                        print("pulse_freq:",100*seg_num/(tcurrent-tlast))
                        tlast = tcurrent
                        count = 0
                    
                
            else:
                usleep(10)       #缓存数据不足,休眠10us
                
    except KeyboardInterrupt:
        print("exit")    
        
    
    
    dll.DasCardStop()       #停止采集
    dll.DasCardClose()      #关闭采集卡
    print("close")


Related content


Product Inquiry

Leading manufacturer of photodetector modules and fiber optic sensing system modules