8-bit word per pulse output USB-6009

I need to generate a 8-bit word and a strobe pulse in Matlab via a usb-6009. How do I do that? Any help is appreciated!


To answer my own question:

Connect the wires to the digital pins p0.0 - 0, 7 (each represents a bit) and an additional to p1.0 (strobe bit).

MATLAB code:

OID = digitalio ('nidaq', 'Dev1');
AddLine (dio, 0:7, 0, 'Out'); %8 lines on port 0

AddLine (dio, 0, 1, 'Out'); Strobe % on port 1

sendthisvalue = 23;

binvec = [dec2binvec(sendthisvalue,8), 0]; % the 8-bit word and the ILO first strobe set to 0

putValue (Dio, binvec);

binvec (9) = 1; bit set strobe 1%

putValue (Dio, binvec);

Initially, I used two separate "putvalue' instructions, set up the word of 8 bits, and then another for the bit of strobe, but the flash has not been received. That doesn't seem to work, it's if I include both the 8-bit word and the value of bit of strobe in each 'putvalue' statement, as in the code above.

Tags: NI Hardware

Similar Questions

  • Time output USB-6009

    Hello guys,.

    I am trying to create a simple VI to generate two outputs analog square with USB-6009. Each output supplies a LED and it is necessary that single LED shines at the time - so when Out0 is active, Out1 is zero and the other way around.

    To get started, I created a VI in which the goods are made manually by Boolean and it works fine (square v1.vi of signal).

    But I need the output to switch automatically after the amount of time given (I needn't of high frequencies, at about 1 Hz). To do this, I changed "square wave v1.vi" in "square wave v2.vi" and set the Structures of the case in an another While loop which would be timed by the wait function (ms). The idea was that the loop internal would turn the output rate of frequency while the outer loop would ensure a continued implementation of the programme. But the reality is very different and my low level of competence (this is my first VI) let me down. Could you please help me out of this? I appreciate all the advice.

    To summarize: The VI must be continuously running program that generates two dependent signals with adjustable amplitude and opposite phases (Out0, when active, Out1 is zero and vice versa.). Signals must be switched automatically to the given frequency.

    Here's a simple flip-flop - while time the loop runs, the Boolean line connected to the digital output passes from true to False to True... with the schedule determined by the time you put in waiting for him (note that you can have regardless of the different times for the true = on and False = off case).  Of course, the life of signal (represented by 'Digital output') 'inside' this loop - you have to put the 1 point 1Line DAQmx VI write digital Boolean inside the loop, or find a way (for example, a queue) to get the data between the inside and outside.

  • How to measure the digital output of the linear actuator on USB-6009?


    I am a new user of Labview and need help to measure a digital input signal.

    I have an actuator Bimba Original line electric with a motor continuous integrated with encoder, drive and the controller. The drive has a programmable digital output that I put as a tachometer output that emits pulses of square wave 100 per turn of the engine. I put the engine to make a total of 56 rev in 22 dry. I want to measure the speed of motor rotation labview real-time and synchronize it with a few other analog input signals. I wired the actuator for the USB-6009 case as shown below.

    I opened the test i/o digital USB-6009 Panel and fix all the lines of port 0 as inputs. However, when I click on start and run the actuator, p0.0 led flashes, as indicated below.

    Shouldn't the led blink in response to revolutions of engines?

    I want basically to collect the drive pulse signals and convert them in rpm on labview.

    ahsan2 wrote:

    I have it wired correctly?

    It would help if you do not attach the HIGH signal.  Remove the + 5V in the circuit.

  • OR USB-6009 with op-amp to amplify the analogue output


    I use an NI USB-6009 data acquisition to send a signal to a proportional pressure regulator which varies the pressure of pneumatic system. Unfortunately, the controller of pressure requires a signal of order analog 0 - 10V and the 6009 can 0 - 5V.

    So I thought I'd build a small circuit with a gain of 2 to amplify the signal. See photos attached to a schema and the picture of the installation. The 741 operational amplifier is powered by a 24V DC power supply. 24V is a bit on the side high to the op-amp but I have this supply already built in and (using a supply of laboratory bench) the circuit works exactly the same in 12-18 v.

    Bascially, with voltages of entry of 5 up to 2 volts, the circuit behaves perfectly. The output is just the input multiplied by two.

    However, the output is never less than 3.9 volts (ish), regardless of the input voltage.

    Can anyone suggest a solution (or know where else to ask)? I really need to be able to control my production within the range of 1 - 10V.

    Thank you very much. John

    Yes, a LM358 should work.  You will not be able to get all the way up to 0 v, but it should get you up to 0, 5V or almost.  The LM358 is a dual op amp, then you will not be able to deposit into the same outlet as your 741.  You can probably get away with leaving half disconnected unused.  (Which is not true of all double operational amplifiers).


  • USB-6009 slow output signals using SignalExpress - error 200077

    We have a Council of USB-6009 and Signal Express version 3.5.0

    We want to generate low-frequency, analog and digital outputs to simulate some slow movement process.

    We have created the signals and their generated as output, put when we RUN the project, we get error 200077, which seems to indicate that we must use On Demand distribution of signals.

    If we choose On Demand, then the generate DAQmx says we have a missing entry.

    So, what method should be used with the slow USB-6009 to generate box (.01Hz and slower) analog and digital outputs?

    These are 2 of the projects, we tried - using On Demand, N samples, continuous, internal, and external triggering etc..

    Thanks adavance for your help...

    Welcome to the forums of Steve,

    I have good news for you.  I played a bit with the sweep and actually got a code facing up to generate a slow signal.  I went and tested it with the 6009 and he was able to run without any errors.  I joined here, but if you have to open (or anyone else in the future), here are some screenshots of how it works.  If this works, feel free to make the forum as resolved while others can locate a solution a little easier in the future.

    Scan Configuration:

    DAQmx Config:

  • Current output digital USB-6009

    Hi, I'm trying to increase the voltage output digital device USB-6009. I read a few topics on the use of a relay, but I couldn't get it.

    I was thinking of using power 5V on the map because there current 200mA on it, but when I use it with open-collector output, it cannot change the relay. When I measure the current between

    5V and ground: 200 ma,

    5V output, I read a value around 30-40 my.

    Why can I not use this 200mA with output? It is the Relay that I use.

    If this is not possible, can I use an external power supply 5V (with more current) and a digital output to pass the baton without damage the 6009?

    Outputs digital of the USB-6009 confined to 8.5 my. Your relay coli requires much more than that. Even if the power source can provide enough current for the relay, digital output can not put.

    The solution is to use a buffer of extermal. The ULN2003 can switch currents up to 500 my and voltage up to 50 V while being controlled by digital output.


  • Using the NI USB-6009 case to generate a 12VDC output and output current of 300mA


    I use the OR-USB-6009 my power supply for a 12VDC with drive current of 300 solenoid my. Initially, I used a non reverse Op-amp circuit and Inverter circuit operational amplifier to get the + 12V and - 12V output but I could not get the current I required. Should I use a transistor?

    Please find attached photos. Any input would be appreciated.

    Thank you


    Well, really depend on your piercing circuit.  But I used most systems use the transistor to set the voltage of the device to 0V.  So when your DIO is high, the output is actually 0V (low).  So using a converter chip, your release of the DIO will be sort of the output circuit.  If you get the right IC, then the inverter will give you also a few extra current to drive your transistor.

  • USB-6009 software simultaneous timed output analog

    Ladies and gentlemen,

    I worked on a LabVIEW interface to a potentiostat I designed and built. I'm not very experienced with LabVIEW, but do they have experience with a variety of other languages (I had originally intend to use an FPGA for this, but he has been asked to write a LabVIEW VI first) programming.

    The goal:

    I want to output a voltage (initially consisting of ramps) signal and measure the voltage with an operational amplifier configured as an ammeter of feedback (using resistance feedback and voltage value to calculate current) connected to an electrochemical cell. The resistance of feedback is selected by using an automatic selection function (although I wrote a version prior to manual control) as TTL values using the DAQ Assistant to select relevant MUX channel outputs. I then try to save the data in a spreadsheet.

    The problem:

    I use an acquisition of data USB-6009, and I know that there is a hardware clock. Read all about him seemed obvious, the best way to the waveform of the output voltage used DAQmx package to define a function of writing in a loop that is clocked by the software. The problem I have is that I can't synchronize the output to the input with reliability and I have also some errors related to resources DAQ being reserved (error 50103). I think the way to solve this would be to convert every equivalent DAQmx DAQ Assistant and try to group their execution - this is where I fall. I tried to write a simple VI who shared a loop clocked by the software to read and write but had problems related to the value of min HAVE (error 200077).

    General issues:

    How I begin the process of read/write (with a Boolean switch) is very weak and doesn't feel not robust. Ideally, I would like to some form of indicator to warn the user when the read/write process is running and when it ended.

    My error handling is terrible, but I find no big thing to read about the basics.

    I use only a sequence of no and I think I should have more.

    Once I hit the beginning, VI requires the file name for the worksheet - at first, I was afraid that data would be entered correctly, but I think it's okay because the file is generated and then changed. It would be better if the user asked for the name of the file once completed the data collection.

    Any suggestion or help would be greatly appreciated. Thank you in advance.

    Sincere greetings,


    The hardware supports timed 6009 entry analog. Even with the 1Samp mode, your code could be simplified with a single task and several channels (dev1\ai0:1). Then use Nchan 1Samp.

  • Implementation of multiple digital outputs with a box USB-6009

    Hi all

    I write the code to implement a USB-6009 multiple digital channels, digital outputs independent.  I have configured the function of "DAQmx create Channel" to create 'a channel for each line', but I can't understand how to access and control these channels separately.  Pointers would be greatly appreciated.

    Thank you!

    I thought about it.  Never mind.

  • output of a wave in U8 using NiDAQ USB-6009


    guys im trying to output a sine or square wave in U8 format using NI Daq USB 6009, I'm a kind of a release, but I don't know if the law or the not.please help me check, am doing some kind of a blunder that correct me please im fairly new to labviw.

    I'm waveform.vi Resample dt varied my value of th also.but requirement what outputs does not match with the value/s enter the loop.

  • Configuration of the digital output in the USB-6009

    I have a card for the acquisition of data USB 6009. It seems that him when DAQ card is turned on, it is always default to digital output of 'High' or 'floating '. I want to default to 'low '. Is there some setting I want to 'program' the hardware DAQ to have all the outputs low when it is powered on the value? Right now I have manually enter MAX and adjust the level 'low '. Thank you very much for your help.


    Yes, it's low of 820 ohms. Unfortunately, the way in which the system is built, it is the only choice you have without having to build external circuits such as SnowMule suggested.


    Thanks for pointing the USB-6000. Finally a real, if limited, the DAQ hardware.  Nevermind, he was only 4 DIO lines.


  • inputs and outputs analog digital usb 6009

    I'm having a problem with my USB 6009 in labview programming.  I try to read continuously from the analog inputs while having an event focused on digital output within the same program/vi.  Basically, I need to taste all the time the analog inputs while having an event defined by the user (button control) to signal the digital inputs to turn on then after awhile.  The event of digital output must be independent of the analog sampling system.  I was throwing the "error already allocated resource" in most of the vi, I wrote to try to achieve.  What is programmatically possible with usb 6009?  I am at my wits end trying to do this and any help would be greatly appreciated (by myself and my boss).  Thanks in advance for your answers.


  • Output analog, the USB-6009 case - can I use DAQmxWriteAnalogScalarF64?

    I just got a NI USB-6009 and I try to use the outputs analog simple.

    I'm running on a Mac, so I'll try to use the API OR-DAQmx Base 3.2 C (downloaded from here: http://joule.ni.com/nidu/cds/view/p/id/1078/lang/en).  This is the most recent version of NOR-DAQmxBase, I could find.

    I try to do continuous analog output on the 6009, which does not have a built-in clock.   I was hoping to do the sync software and just new output values when I want to.

    I can't get an output of database to work.  Other messages and the example of Windows files, (e.g., National Instruments/NOR-DAQmx Base/examples/ao/MultVoltUpates-SWTimed.c) it seems that the best thing to do would be to use the DAQmxWriteAnalogScalarF64 function.

    However, this is not in the Mac version of the C API of NIDAQmxBase.  There is actually an entry for this in the NIDAQmxBase.h file, but it is commented out.  Anyone know why?  Is it possible to use this function for the analog output on request on Mac?

    Thank you.


    I have NEITHER-DAQmx Base installed 3.2 on a 10.4.11 system.  One of the examples files 'genVoltage.c' calls DAQmxBaseWriteAnalogF64.  I was able to compile and run this example with a USB-6009.

    The DAQmxBaseWriteAnalogF64 function would work for you?

    My guess is that, since you can write a scalar value with DAQmxBaseWriteAnalogF64, DAQmxBaseWriteAnalogScalarF64 becomes superfluous.  The example provided with the installation shows how to write a unique value (i.e. scalar.).  I pasted the code of OR below.

    int main (int argc, char * argv [])


    Task settings

    Int32 error = 0;

    TaskHandle taskHandle = 0;

    char errBuff [2048] = {'\0'};

    Channel settings

    Char [] = "Dev1/ao0" chan

    float64 min = 0.0;

    float64 max = 5.0;

    Sync settings

    uInt64 samplesPerChan = 1;

    Writing data parameters

    float64 data = 3.25;

    pointsWritten of Int32;

    float64 timeout = 10.0;

    DAQmxErrChk (DAQmxBaseCreateTask("",&taskHandle));

    DAQmxErrChk (DAQmxBaseCreateAOVoltageChan(taskHandle,chan,"",min,max,DAQmx_Val_Volts,));

    DAQmxErrChk (DAQmxBaseStartTask (taskHandle));

    DAQmxErrChk (DAQmxBaseWriteAnalogF64(taskHandle,samplesPerChan,0,timeout,DAQmx_Val_GroupByChannel,&data,&pointsWritten,));


    If (DAQmxFailed (error))

    DAQmxBaseGetExtendedErrorInfo (errBuff, 2048);

    If (taskHandle! = 0) {}

    DAQmxBaseStopTask (taskHandle);

    DAQmxBaseClearTask (taskHandle);


    If (DAQmxFailed (error))

    printf ("error in DAQmxBase: %s\n",errBuff); ")

    return 0;


    Hope this helps!

  • NI USB-6009 digital outputs are active when connected to a PC - I'm not that

    I have a small problem:

    All outputs digital NI USB-6009 module become active when the module is connected to a PC when no VI is running.

    As soon as I start my VI, which controls the module, all the outputs are disabled (now inactive).

    How can I achieve this, outputs are inactive if the module is connected to a PC with no program running?

    johanneshoer wrote:

    I have a small problem:

    All outputs digital NI USB-6009 module become active when the module is connected to a PC when no VI is running.

    As soon as I start my VI, which controls the module, all the outputs are disabled (now inactive).

    How can I achieve this, outputs are inactive if the module is connected to a PC with no program running?

    The USB-6008/6009 case has a pull-up internal (4.7 kOhm) resistance. This causes the outputs digital on the device to have a startup logic high State. t is not recommended to use some sort of resistance of menu drop-down. However, what you can do is add octal buffer like the 74HC541 stamp and a digital output to control the sorting of the 74hc541 state mode. Connect the OAS and CEO input signal. A Summit on the pins of the latter will be sorting the output of the buffer State. Therefore, no output signal will be present until you pull the stems of low control. The USB-6008/6009 case have a 5 volt output (200mA max), you can use the buffer.

  • Pull-up external USB-6009. digital output (open collector) allows onboard external + 2.5 V output?

    Pull-up external USB-6009. digital output (open collector) allows onboard external + 2.5 V output?


    I want to config output digital USB-6009 to + 2.5 V above and 0 V digital output low. I know I can config USB-6009 digital output open collector with resistance to pull-up external, that can be applied with + 2.5 V power source.

    My question is: can I use USB-6009 Board + 2.5 V output as the current source of resistance to pull-up? What resistance is a good number for the resistance to pull-up, if I can use this configuration?

    Thank you much for the help.


    Hi Cathy,.

    The digital USB 6008 front-end server looks like this:

    So, there is actually an internal pullup to 5V 4.7 kOhm resistance when the device is configured to open collector.

    If you want to display 0 to 2.5 V, I would look in a resistance of polarization of 4.7 kOhm between c and ground (according to the rest of your tour).

    Best regards

Maybe you are looking for