# Multifunction DAQ

cancel
Showing results for
Did you mean:

## generate wave voltage output (Python)

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
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.timing.cfg_samp_clk_timing(rate = rate_outcfg, sample_mode = AcquisitionType.CONTINUOUS) #, samps_per_chan = num_samples)

stream.write_many_sample(voltage_fin, timeout = 10.0)

SAW ()