Hey Guys,
im using Python with an NI USB-6366. My task ist to create a voltage with a waveform (sine and saw). Both should have an offset, frequency and amplitude that can change according to your own settings. I am using a oscilloscope to view my results. I already createt a few saw waveforms but they all had a way to high frequency. If i changed the frequency to something lower, the output would not generate the whole wave. There might be a problem with my clock timing but i am not sure.
My 2nd problem is that the waves i generate dont generate continuously. They generate just a few times (only generate with a high frequency).
My Code:
# Continuous write single channel
from re import I
import numpy as np
import matplotlib.pyplot as plt
import time
import nidaqmx
from nidaqmx.stream_writers import (AnalogSingleChannelWriter)
from nidaqmx import constants
from nidaqmx.constants import AcquisitionType
import math
#variables
global rate_outcfg
global counter_limit
global voltage
global stream
global counter
global v_inc
global i
num_samples = 4294967295
rate_outcfg = 500
len_list = 101
v_inc = 0.01
task = nidaqmx.Task()
counter = 0
i = 0
offset = 0
amplitude = 3
#Voltage list
voltage = np.empty((len_list,))
voltage [:] = -v_inc
while counter < len_list:
voltage[i:] = voltage[i:] + v_inc
counter = counter + 1
i = i+1
voltage_fin = voltage[:] * amplitude + offset
#voltage = np.array([0.2, 0.4, 0.6, 0.8, 1])
#voltage = np.array([0, 0.5, 1, 1.5, 2, 2.5, 3])
print(voltage_fin)
def SAW ():
task = nidaqmx.Task()
task.ao_channels.add_ao_voltage_chan("Dev1/ao0")
task.timing.cfg_samp_clk_timing(rate = rate_outcfg, sample_mode = AcquisitionType.CONTINUOUS) #, samps_per_chan = num_samples)
stream = AnalogSingleChannelWriter(task.out_stream, auto_start=True)
stream.write_many_sample(voltage_fin, timeout = 10.0)
nidaqmx.Task.start()
SAW ()
task.close()
Sorry for my bad english (not mother tongue).
all the help is greatly appreciated.
Best reagrds,
Jo_dkt