Why not use USB 6008?

Hi,
I have an application that requires me to sample 6 AI channels at 1 kHz.
Processing every 20 ms.
I also need to output a PWM on 3 channels.
Normally I'd use PCI-DAQ cards.
e.g. a PCI-6023E and a PCI 6601 (timer/counter).
This costs about 700€.
Why shouldn't I use a NI USB 6008 (145€)
and two NI 6501 (99€).
Is there a big difference in programming and performance?
Are those devices all USB-2?
Because If I sample at 10Khz, I do not suppose that all that
data can go over a USB1-bus.
Thx !

Hi!
My observation is that a 6008 will work for you if you only need to acquire 6 channels at 1 kHz and you can handle 11 bits of resolution (to use six channels you must be in single ended mode, which losses one bit of resolution on this board). The other possible disadvantage of the 6008 is that you will have to learn to use DAQmx Base, if you haven't done so yet. However, if you are familiar with DAQmx, this should not be too difficult.
As for digital output, using two 6501's may not work for you. They will be software timed digital outputs, where it seems that you were looking for hardware timed outputs before (6601).
Both of these devices are USB 2.0 Full-Speed, which can handle this amount of data.
Good Luck with your project!
Justin

Similar Messages

  • Using USB-6008 software timimg Generate waveform

    I am using USB-6008 device. Base on it's User Guide, this device on support software-timed and maximum update rate is 150 Hz.
    By place a time delay VI for 1ms, I have a 1.660Hz sine signal. Is this wrong for place a time delay VI for software timing?
    I would like to generate a 60 Hz signal by using software-timed VI on USB-6008 device. How should I do?
    Thanks a lot.

    DephinTW,
    The update speed of the USB-6008 is largely dependent on the speed of
    you computer as well as anything else on your USB bus. If you are using
    an older computer or have other USB devices on the bus, you may not
    achieve this rate. In order to output a 60Hz signal, the minimum output
    sampling rate is 120Hz. This corresponds to an 8.3 msec. delay between
    samples. Instead of using the "Wait" VI, you should try using the "Wait
    Until Next ms Multiple" VI. Place this in parallel with your
    generation. This will synchronize the output with multiples of the PC
    clock, rather than waiting for a fixed amount of time, irrespective of
    code and USB overhead.
    Hope this helps,
    Ryan V.
    National Instruments
    Ryan Verret
    Product Marketing Engineer
    Signal Generators
    National Instruments

  • Why not use notifyall

    now I'm reading this book "Java Threads 2nd edition" by Scott Oaks and Henry Wong. Writer provide a class called BusyFlag to simulate the mutex.
    I wonder why not use notifyall() to replay notify().
    public class BusyFlag {
         protected Thread busyflag = null;
         protected int busycount = 0;
         public synchronized void getBusyFlag() {
              while (tryGetBusyFlag() == false) {
                   try {
                        wait();
                   } catch (Exception e) {
         public synchronized boolean tryGetBusyFlag() {
              if (busyflag == null) {
                   busyflag = Thread.currentThread();
                   busycount = 1;
                   return true;
              if (busyflag == Thread.currentThread()) {
                   busycount++;
                   return true;
              return false;
         public synchronized void freeBusyFlag() {
              if (getBusyFlagOwner() == Thread.currentThread()) {
                   busycount--;
                   if (busycount == 0) {
                        busyflag = null;
                        *notify();*
         public synchronized Thread getBusyFlagOwner() {
              return busyflag;
    }

    naficbm wrote:
    now I'm reading this book "Java Threads 2nd edition" by Scott Oaks and Henry Wong. Writer provide a class called BusyFlag to simulate the mutex.
    I wonder why not use notifyall() to replay notify().Looks like it should work with notifyall as well.

  • Why not use "new" operator  with strings

    why we not use new when declaring a String .because in java String are treated as objects. we use new operator for creating an object in java .
    and same problem wiht array when we declare array as well as initialize .here we are alse not using new for array
    why

    Strings aren't just treated as objects, Strings are Objects.
    As for why not using new for Strings, you can, if you want.:
    String str = "this is a string";
    and
    String str = new String("this is a string");
    do the same thing (nitty-gritty low level details about literals aside). Use whatever you like, but isn't it simpler not to type new String(...) since you still need to type the actual string?
    As for arrays, you can use new:
    int[] ints = new int[10];
    or
    int[] ints = { 0, 1, 2, 3, ..., 9 };
    But the difference here is you are creating an empty array in the first one, the second creates and fills the array with the specified values. But which to you often depends on what you are doing.

  • Why not use paper label on finished DVD project?

    I also use printed paper labels for my DVD covers
    why not use them?
    please advise?

    Hi
    The DVD get's unbalanced = Laser can't read track
    DVD are several times more sencitive than CD (not advicable to put lables on them either)
    And DVDs/CDs that are unbalanced also give more strain to the player mechanism
    that eventually stops working.
    Yours Bengt W

  • Why not use interfaces for constants?

    Hi,
    I have been getting conflicting views about why not use interfaces for constants?
    Can anyone shed some light on it?
    Piyush

    How so?
    If the constants are only used in a single classhow
    does it help to put them in a separate structute?
    (Ignoring the a type safe enumeration of course.)Well, mainly for readability. Suppose that you have a
    web application which has a servlet class
    "RedirectServlet", which takes a variable to redirect
    to a given JSP file. In the JSP files, you want to
    create forms which take this servlet as their action.
    You could of course put all these "redirect"
    constants in the RedirectServlet itself, but then
    it's kind of weird that you have to import a
    servlet in your jsp file to include these constants
    and to be able to write
    <form action="servlet/RedirectServlet?key=<%=
    RedirectServlet.HOMEPAGE %>> or so.
    Instead, you could create an interface called
    "RedirectConstants", and then your servlet
    RedirectServlet could implement this interface. Then
    your JSP can also access these constants via this
    interface.
    But then again, this is merely a matter of style, I
    fully agree that there is never a real _need_ to put
    constants in a separate structure if they're only used
    in a single class.Are you claiming that your example above is a single class?

  • What amplifier will recomended for my k-type theromocoupler using usb 6008

    I recently do a project about temperature control system using usb 6008, according to the spec, the minimum AI range is +/- 1V and the thermocouple giv the voltages in jz a mV, so what kind of amplifier will be recomamded? is there any amplifier chip set that available ?

    Analog Devices AD594/AD595 Monolithic Thermocouple Amplifiers (Type J / Type K)
    This would give you a conversion of 10mv per degree C using a single +5v supply you could get to a couple of hundred C
    I get 11 bits of resolution available for the +/- 4v range (11 because I can't see a negative supply available so we are only using one side of the differential range).
    That's a resolution of 2048 bits over 4v giving 0.001953 v per bit
    The devices above give 10 mv per degree C so you would have about 0.2 C resolution and a maximum temperature of around 450 degrees C an minimum temperature of 0 degrees C.
    The device draws about 1mW so you should have no problems with power consumption. (Hint Earth / Ground loops might be a problem).
    I should add that whilst I have used this device many hundreds of times, I have never applied it to the USB 6008.
    http://www.analog.com/en/prod/0%2C2877%2CAD594%2C00.html
    Message Edited by Conseils on 05-08-2007 08:51 PM
    Message Edited by Conseils on 05-08-2007 08:52 PM
    Attachments:
    46185785AD594_fbs.gif ‏17 KB

  • Cannot use USB 6008 in Lab VIEW... is in Devices on Comp however

    I was in class the other night, and was running a VI.  We went to lab, and without shutting down labView, my partner plugged in my USB-6008 DAQ.  SInce that time, the 6008 will not show up.  I have a message about having no supported devices.  I am using DAQmx 8.0 that came with my student version, and have reinstalled the LabVIEW 8.0 and the DAQmx 8.0  I still cannot get LabVIEW to recognize the DAQ.  When I plug it in my hardware profiles recognize that it is hooked up, but LabVIEW will not.  Also I have uninstalled it, and plugged it in, reinstalled it using the auto hardware install wizard, and still nothing on LabVIEW.  The DAQ has the flickering green LED, and works on other laptops.  Also my flash drive works correctly in all of the USBs, so I do not think that could be the problem.  I just really would like to get this to work again, but as I said the DAQ is not recognized by MAX or DAQmx inside of LabVIEW.  Any help would be greatly appreciated...
    Thanks

    Hi,
    You might want to try MSI-Blast.
    Have a look at this thread.
    http://forums.ni.com/ni/board/message?board.id=170&message.id=108288&query.id=113978#M108288
    Patrick Allen

  • Can I use USB 6008 with LabVIEW 6.1 RT?

    Hi there,
    I've been using LabVIEW 6.1 RT for my applications and so far I haven't felt the need to upgrade.
    However, I decided to try the USB 6008 and I'm learning the hard way that this device will only work with NI-DAQmx and apparently not with the latest NI-DAQ 7.4.2 (legacy)  In fact, I can't see the device in MAX 4.1
    Is there any way I can use the USB 6008 with my 6.1 RT version of LabVIEW ?  or should I send the thing back to NI ?
    I will appreciate your guidance on this issue.
    Thanks a lot,
    at

    Hi at -
    Allisso is right.  There is no way to use the USB-6008 with LV 6.1, because neither of its drivers (DAQmx and DAQmxBase) support that version of LV.  You'll have to either upgrade to a current version of LV or work with another device.  I recommend contacting your sales rep at NI for help.
    David Staab, CLA
    Staff Systems Engineer
    National Instruments

  • DC motor closed loop control through labview using usb 6008

    Hello
    i am doing a project in which i want to control the speed of a DC motor (PID control) through labVIEW 2010. I am having a DC motor, a drive unit that regulates the voltage to the motor by getting analog voltage from 0 to 3.3V ( it can be used for both directions) and i also have a NI usb 6008 board. The problem is that i can't feed the usb 6008 with the digital signal from my hall effect speed sensor. Is it posible with this setup to control the motor?? I can also try to use the pulse as analog input and trasform the frequency into rpm's. Then i am thinking of generating an analog signal to feed the motor drive. If you have any further suggestion of a probably better hardware setup would be more than helpfull to me.
    Sincerely
    Jason Chaloulos

    Hello Michael
    Thanks for the reply. I came across those topics before and all of them are trying to generate a PWM signal as output i want to use just an analog signal output so timing on the output is not that important i guess. i am struggling on getting the frequency from the digital input signal that my hall effect sensor generates. Since the maximum speed of the motor is 3000 rpm and with my tooth wheel the maximum  output frequency of the sensor will be 300Hz which i see its way less than the limitation of my ni board. Is there any tutorial documentation that might help me with this one ? Thank you in advance.
    Kind regards
    Jason

  • Rpm sensor diagram using usb-6008

    Hi All,
    Attached is my block diagram for the RPM sensor that I wan to create. What I'm trying to do is to get the analog input and do a pulse calculation within 60 seconds, and my RPM would be how many pulse * 60. I don't know whether I'm doing it right or not, but I have a feeling that I need to use the digital input rather than analog input. Any comment?
    Thanks
    Attachments:
    rpm sensor design.vi ‏70 KB

    Hello Dadsf,
    Welcome to the NI Discussion Forums!  From your post, you would like to be able to count the number of pulses from your sensor that occur during a period of time and convert this to RPM.  Let me know if I have interpreted this incorrectly.  Your USB-6008 manual indicates that the device has a built in counter that can be used to count falling edge signals.  If your sensor outputs digital signal this would be a good way to go.  You can take the number of pulses that occur over a certain period of time (perhaps between two loop iterations) to find the number of pulses per second.  The longer the period of time you acquire pulses for, the more accurate your average RPM will be.  This will be at an expense of how often the user is updated with a new RPM value.  Check out the links in my signature for some great information on how to get started with DAQmx and what all of the different terms in the DAQ Assistant mean. 
    I noticed that your DAQ Assistant was set to 1 sample on demand.  What this does is causes the USB-6008 to read a single sample from the analog input during each iteration of the loop.  I am not sure if that is the behavior you are looking for.  Another option would be to setup the task as continuous hardware timed analog input (change the Acquisition mode to Continuous Samples with you desired sample rate and the desired number of samples you would like to read at a time).  This will give you a waveform of data that should show the pulses over a period of time.  You could then count the number of pulses that occur over the length of the waveform.  This would be the equivalent of the number of pulses per second that could be converted to RPM.  This method requires a little more processing than the first method, but could give you a little better accuracy.  Post back if you need more info. 
    Regards,
    Browning G
    FlexRIO R&D

  • Using USB-6008 on LIS331 Accelerome​ter

    Hi, I am looking to monitor my project with a LIS331 using the USB-6008 dac. Would this dac unit be acceptable with this accelerometer? 

    swong46,
    I would recommend using a USB 63xx series DAQ device. You might also be interested in the USB 8452, which is a dedicated I2C and SPI device. 
    I can also put you in touch with some of our sales engineers, who would be the most knowledable about your options. Shoot me a PM if you're interested, and I can give you a number to call.
    Kyle T.
    Applications Engineering
    National Instruments

  • Why not use Jsp for  control in MVC2 ?

    hi
    i am rajendra , i am preparing interview FAQ, so please give me my Que. Ans.
    1) we are using servlet for control in MVC2 Module,then why we can not use
    Jsp for control in mvc2
    2) if we used jsp for control in mvc2 then what is disadvantage compare to if using servlet for control in mvc2
    Please give me ans. as soon as..
    Thanks.

    Are you preparing a FAQ for others or are you just cramming before an upcoming interview and someone gave you a set of questions? It looks more like the latter to me.
    If you haven't actually written any MVC based code, you won't be able to snow the interviewer. It's better to just relax, get a good night's sleep and impress them with your willingness to learn, your fit with the team and whatever real accomplishments you have to show.
    If you really want an answer to this I suggest that you try writing an MVC2 system using JSP for the controller, which is possible, and then try doing the same in a servlet, or better yet using a framework like Spring MVC or Struts to provide the servlet for you and let you concentrate on your application.

  • Apache VS Netscape Why Not Use Apache....

    Is this correct?
              I should use Netscape as a proxy server to proxy jsp and servlet requests to
              a weblogic cluster because the libproxy.so module has special functionality
              in dealing with weblogic clusters.
              I should NOT use Apache because it does not handle the in-memory replication
              of Sessions to the weblogic cluster.
              Why shouldn't I use Apache in a clustered environment?
              Thanks
              Michael Schreiber
              

                   Your assumption is correct. Currently there is no Apache plugin to
              handle session replication for a clustered environment in 4.51. You can
              use Apache's mod_proxy for simple proxying, but that will not handle
              failover or load balancing. An apache plugin for clustered setups will
              be available in Weblogic 5.0 (currently in public beta).
                                  - Mike
              Michael Schreiber wrote:
              >
              > Is this correct?
              >
              > I should use Netscape as a proxy server to proxy jsp and servlet requests to
              > a weblogic cluster because the libproxy.so module has special functionality
              > in dealing with weblogic clusters.
              >
              > I should NOT use Apache because it does not handle the in-memory replication
              > of Sessions to the weblogic cluster.
              >
              > Why shouldn't I use Apache in a clustered environment?
              >
              > Thanks
              > Michael Schreiber
              

  • Xletview: why not use sun's javaTV source code directly ?

    xletview : one emulator for viewing MHP Xlets on a PC;
    I see many difference from sun's code about the part of javaTV.
    Why the author Martin Sveden need to rewrite them and not use sun's javaTV source code directly ?
    Thank you for your any answer.
    Sorry for my horrible english.

    XleView is a fine effort, but it has its limitations. I tried using it for the GunBunny demo available in the JavaME SDK 3.0 Eary Access available in
    http://java.sun.com/javame/downloads/sdk30ea.jsp
    and I encountered some of thost limitations. What Sveden does it several tricky manipulations in a classloader for the Xlet. In particular, he translates bytecode as he loads the Xlet's classes, changing some class names, such as changing
    java.awt.Toolkit
    tto
    xjava.awt.Toolkit
    This works up to a point. This version of Toolkit usually just turns around calls java.awt.Toolkit's corresponding routine, but he deliberately he does not implement the ubiquitous
    public Image createImage(URL url)
    When I downloaded his source and tried adding ths into his code, I then encountered at runtime
    Uncaught error fetching image:
    java.lang.NullPointerException
    at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:97)
    at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:107)
    at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
    at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
    at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
    I think that this is some optimization within J2SE where they do not wait for the image to load and do the fetching in a separate thread. I do not know if there is some way to force the Sun's JVM to disable this optimization and I have not investigated furher, but I did email Svenden. I noticed that the current version of XleTView is 0.3.6 which is dated June 2004 and the web site http://www.xletview.org/ has had not news since 2005 .
    I note that Svenden provides an elegant user interface but I advise you not try to learn the API's from his classes: he makes no effort to keep his implementation separate from the API standards so, for instance, his version of HScene is
    package org.havi.ui;
    public class HScene extends Container
    implements HComponentOrdering, ImageObserver, MenuContainer, Serializable {
    whereas the real standard is
    public class HScene extends Container
    implements HComponentOrdering {
    I hate to critize such a fine effort, but it is best to keep an imlementation separate from the public API.
    I agree that having a lightweight, simple and Java feature-complete Xlet viewer running would be very helpful, especially if BD-J gains much popularity. I have found trying to work with the vendor players described at
    http://wiki.java.net/bin/view/Mobileandembedded/Blu-RayDiscHelloWorld
    to be frustrating. I tried all four mentioned and I have gotten none of them to work for me yet. These are huge downloads and the "Intro Version" of Arcsoft pointed to at the SDK 3.0 Early Access page
    http://www.arcsoft.com/products/totalmediatheatre/
    just gives a "File not found" HTML page. This forum post mentions that perhaps it was recently taken down?
    http://www.arcsoft.com/forum/forum_posts.asp?TID=1084
    I have already emailed Michael Downs of Arcsoft since he is mentioned here:
    http://wiki.java.net/bin/view/Mobileandembedded/BDJPCPlayers
    What did work for me was to take Sun's JavaTV 1.1 Reference Implementation and PowerDVD's BDJ.jar and hack/fix a few classes to get GunBunny to work within the RI's RunXlet program. This is not trivial but I will will describe:
    Download the JavaME 3.0 SDK EA and then download the correct version of PowerDVD that the SDK page points to:
    http://www.brothersoft.com/powerdvd-download-50794.html
    Download the RI binary and source of Java TV API 1.1
    http://java.sun.com/javame/technology/javatv/index.jsp
    Since I am too lazy to use anything but the latest 1.6 JRE as a runtime, I have to fix
    com.sun.tv.media.util.MediaThread
    to comment out its stop() method. This is becase stop() was deprecated and made final in J2SE 1.5
    http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Thread.html#stop()
    http://java.sun.com/j2se/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html
    Next, I had to mae a change to Sun's JavaTV implementation to keep the GunBunny demo happy by providing a ServiceContext. The RunXlet program calls SIEmulator, but that environment does not provide a ServiceContex, so I added one back in:
    com.sun.tv.receiver.SIEmulator
    private static ServiceContext svcctx = null;
    Add before every call to new AppSignalEvent() and add the svcctx as the second-to-last argument:
    if(svcctx == null){ try { svcctx = new com.sun.tv.ServiceContextImpl(); }catch (Exception e){ e.printStackTrace(); } }
    I then had to hack a few PowerDVD classes, which is evil of me. First, I had to build an empty class by the name of
    sun.util.BDJPlugin
    becuase some PowerDVD class extends it but it is not in its BDJ.jar and then I had to reverse-compile (evil!) and modify one of their internal classes to avoid a dependency on their native methods. What I ended up with was a hacked version of com.cl.bdj.helper.CUtil to avoid the native methods which access the registry where they query for registry settings but also provide a default value (which I return).
    com.cl.bdj.helper.CUtil
    private static String pGetRegistryString(long i ,String string ,String string3) {
    return string3;
    private static int pGetRegistryInt(long i ,String string ,int j) {
    return j;
    The last thing I had to do was to change com.hdccookbook.gunbunny.BaseXlet, to use the JavaTV container rather than the org.havi one:
    import javax.tv.graphics.TVContainer;
    import java.awt.Container;
    change
    // protected HScene scene;
    protected Container scene;
    public final void run() {
    // waitForPresenting();
    // scene = HSceneFactory.getInstance().getDefaultHScene();
    scene = TVContainer.getRootContainer(xletContext);
    In order to having working keys, I had to add the KeyListener interface to BaseXet and
    run(){
    addKeyListener(this);
    and then add a near duplicate of the org.dvb.event.UserEvent* stuff that is already there:
    public void keyPressed(KeyEvent e){
    switch(e.getKeyCode()){
    case KeyEvent.VK_0:
    case KeyEvent.VK_1:
    case KeyEvent.VK_2:
    case KeyEvent.VK_3:
    case KeyEvent.VK_4:
    case KeyEvent.VK_5:
    case KeyEvent.VK_6:
    case KeyEvent.VK_7:
    case KeyEvent.VK_8:
    case KeyEvent.VK_9:
    numberKeyPressed(e.getKeyCode() - KeyEvent.VK_0);
    break;
    case KeyEvent.VK_ENTER:
    enterKeyPressed();
    break;
    case KeyEvent.VK_LEFT:
    arrowLeftKeyPressed();
    break;
    case KeyEvent.VK_RIGHT:
    arrowRightPressed();
    break;
    case KeyEvent.VK_UP:
    arrowUpPressed();
    break;
    case KeyEvent.VK_DOWN:
    arrowDownPressed();
    break;
    public void keyReleased(KeyEvent e){
    // System.out.println("Released: e="+e+" code="+e.getKeyCode());
    public void keyTyped(KeyEvent e) {
    // System.out.println("Typed: e="+e+" code="+e.getKeyCode());
    It then comes up and functions, but the rendering is not very good. Again, this is complete hack. Running the Java TV 1.1 RI in a JRE 1.6 is not supported. If you try to run any of the other examples, you will discover that the XML parsing is broken in JRE 1.6 with this message:
    Parsing failed: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequence
    Exception: Invalid byte 1 of 1-byte UTF-8 sequence., file: lib\JavaTVSampleFile01.xml
    and you have to go and change the lines in
    lib\JavaTV.properties
    from
    ServiceFileHandler=com.sun.tv.receiver.ReceiverFile
    # ServiceFileHandler=SampleData_01
    to
    # ServiceFileHandler=com.sun.tv.receiver.ReceiverFile
    ServiceFileHandler=SampleData_01
    and build samples\db\SampleData_01.java and put it in your classpath along with all these other hacks.
    Nonetheless, if you want to develop a somewhat generic Xlet that uses some BD-J features, that is how you might do it. But the moment you exercise anything else in the vendor's BDJ.jar that simply doe snot work outside of their environment or invokes one of their native methods, you are again stuck.
    It would be nice if Sun would at least bother to update the JavaTV RI with the fixes I hae mentioned. Their "jmflite" implementation does not render perfecly but at least it would give the programmer something to work with without having to deal with an older JRE, etc.
    Andrew
    Edited by: AndrewMorrow on Oct 20, 2008 2:48 AM

Maybe you are looking for