Dynamic Duty Cycle Change for PWM

Hello savvy LabView people out there!
I am trying to do PWM for servo control using LabView.
I have been able to manually move my servo with this: http://www.ni.com/white-paper/2991/en
My goal is to automate the servo position as a sinuisoidal movement, and to do so,
I need to automate the duty cycle to oscillate in 5%~10% automatically over time.
I have looked into some stuff as:
http://forums.ni.com/t5/Counter-Timer/PCI-6602-PWM-GENERATION-Dynamic-sine-duty-cycle/td-p/1522442
But it was not too helpful, as I was also getting Error -200301.
I want to be able to move the servo position at ~10Hz, if that is important, and the square wave freq. for the
servo signal (PWM) has to be 50Hz.
Any help? Thank you!
Attached is what I am trying to do. The sine motion of the servo is (supposed to be) actually paired up with
an analog output from a BNC-2120 board. The servo control part is separated on the top portion.
Solved!
Go to Solution.
Attachments:
ServoTest3.vi ‏110 KB

Is something like this for the PWM look like what you had in mind?
(see attached)
This works, but I need something that responds faster.
For example, the PWM needs to be at 50Hz, which means the loop delay should be able to
go as low as 20ms
In the picture, it is currently 200ms, and this does not run. I found that with 50Hz, the minimum
delay that the Error 200301 doesn't pop up is with 500ms delay, at which point the
accuracy of PWM duty cycle in each period is compromised.
Is there a way to have the loop delay be as low as ~20ms?
Attachments:
Servo.jpg ‏52 KB

Similar Messages

  • Read duty cycle of a PWM with DAQ

    Hi,
    I am doing a test system and I have several signals that control motors. They use PWM with a max frequency of 5 kHz.
    I would like to know if with a USB DAQ or a PCI DAQ for example PCI-DIO96 could I meassure the duty cycle of these PWM signals. I mean I need to meassure with 10kHz at least.
    Which are the read frequency of these systems?
    Due to the high number of I/O to test I am also thinking of using Compact-RIO with different I/O modules. What do you think?
    Thanks in advance

    If your PWM frequency is 5 kHz and you want to measure duty cycle to 1%, then you need timing resolution of 2 microseconds or faster.
    The USB-6343 has hardware timed DIO at up to 1MHz, so it might be suitable.  There are other devices with hardware timed DIO at rates of 10 MHz or faster as well.
    Before you buy, determine how often you need to measure the duty cycle to make sure the data transfer can keep up.  USB can sometimes be a bottleneck.
    Lynn

  • Problem to measure 0% and 100% duty cycle of a PWM.

    Hi,
    I am using counters of USB-6341 to measure duty cycle of PWM just by following the example 'Meas Duty Cycle-Buffered-Finite.vi'. It works almost all the time. However, when the duty cycle of a input pwm is 0 or 100%, the DAQ can't read anything, in another word, it can't measure 0 or 100% duty cycle.
    How to modify that?
    Thank you very much :-)
    Nan

    That's the thing about PWMs, you never really know if the PWM is 0% or 100%.
    Let's say we have a 50% duty cycle, at 1/2Hz.  So low for 1 second, high for one second right?  What if we run at 1/20Hz, so low for 10 seconds high for 10 seconds.  Or is this a 0% duty cycle for 10 seconds, and a 100% for 10 seconds?
    A true PWM read will never be 0% or 100% it will just keep waiting until the trigger is seen, and recalculate the frequency and duty cycle of it.  The solution to your problem is for you to define a duration to watch for a change, and if one isn't seen, then you can define 0% or 100% appropriatly.
    So I would recommend taking your duty cycle like you normally are, and then at the same time watch the digital signal for however long you want, if the digital line does not change state, then output 0% if it is low and 100% if it is high and ignore what ever duty cycle you read.  But if the digital line does change state, then use the read duty cycle as the actual value.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • How to generate a pwm whose duty cycle has to be varied depending on the frequency of the input trigger??

    Sir/madam,
    I am quite new to the Labview FPGA module. 
    I am currently working on an application where i have to generate a pwm to control the ON time duration . The pwm ON time depends on the frequency of an input signal.I want to retrieve the ON time value from a lookup table which contain the duty cycle values for the pwm at different frequencies of the input.This input also has to work as a trigger. The input is pulsed and the trigger has to generate the pwm at every rising edge. I am using a PCI 7831R-  RIO series. I am urgently in need of some help and i have hardly a  couple of weeks before i meet the deadline.
    I am trying hard to learn the basics from the shipping examples but not able to quite make my vi work. 
    Kindly lend a helping hand and i would be very grateful to anybody who can help. Thanks a lot in advance.
    Do ask in case of any clarifications required. I  think i have explained my problem quite well. 

    Hello Manu,
    You can refer 
    Developing a PWM Interface using LabVIEW FPGA or PWM Output with LabVIEW FPGA
    How this helps.
    Best Regards, 
    Hardik Asawa
    AE
    National Instruments  
    Message Edited by Hardik Asawa on 05-05-2010 12:46 AM

  • Measuring PWM duty cycle with Analog Input

    Hello folks,
    I have a NI 9205 module and was wondering if there was a way to measure the duty cycle of a PWM signal that I am generating with a separate microcontroller?  I have found a lot of examples with Digital inputs but not analog.. Is this possible?
    Thank you,
    Bob

    Hi Robert,
    I'm not sure what that error is, try searching for it.
    If you want to measure a PWM signal you would usually use a counter input.  A counter is a dedicated piece of hardware that is used to measure digital signals.  Since the NI 9205 is an analogue device and it doesn't have any counters onboard, you will not be able to select counter input.
    I would recommend you get the right tools for the job and buy a digital acquisition device with an onboard counter.  It will make reading PWM much easier for you.  The NI 6008 has a counter onboard and is only £99.  It will also offload processing from software to hardware since you don't have to calculate duty cycle.
    If you still want to use analogue post back and we can look into why its not working for you.  Tips to start you off: Voltage is the correct setting and  Look in the manual and make sure you have connected it like you have configured it (differential, RSE, NRSE page 14)
    Lewis Gear CLD
    Check out my LabVIEW UAV

  • How can I measure a 0% or 100% duty cycle signal ?

    I want to measure the duty cycle of an input signal using a counter of a 6030-E board.
    I work with a PXI Rack under Labwindows/CVI.
    My program already works properly for duty cycle between 1% and 99%, but it is not able to detect 0% duty cycle (ie : signal to ground), nor 100% duty cycle (ie : signal to power supply).
    The problem is I don't understand how the counter works in such a situation (it cannot detect any edge, as long as the signal is continuous 0V or continuous 12V).
    Please have a look on the following code :
    1- First, the counter is configured
    // Reset Compteur
    i_Status = GPCTR_Control(iDevice, iCptID, ND_RESET);
    //Definition du type de mesure du compteur (mesure temps impulsion)
    i_Status = GPCTR_Set_Application (iDevice, iCptID, ND_SIMPLE_PULSE_WIDTH_MSR);
    //Definition de la vitesse d'echantillonage (20 Mhz)
    i_Status = GPCTR_Change_Parameter(iDevice, iCptID, ND_SOURCE, ND_INTERNAL_20_MHZ);
    //Definition du signal a mesurer (defaut)
    i_Status = GPCTR_Change_Parameter (iDevice, iCptID, ND_GATE, ND_DEFAULT_PFI_LINE);
    // initialisation du compteur
    i_Status = GPCTR_Change_Parameter(iDevice, iCptID, ND_INITIAL_COUNT, 0);
    // Preparation du compteur avant de l'armer
    i_Status = GPCTR_Control (iDevice, iCptID, ND_PREPARE);
    2- Then, every 10 ms, the value of the counter is read, so that I can calculate the duty cycle...
    i_Status = GPCTR_Watch(iDevice, iCptID, ND_COUNT, ul_val_cpt);
    3- ...and the counter is armed again for the next reading
    i_Status = GPCTR_Control(iDevice, iCptID, ND_ARM);
    When duty cycle changes from x% to 0% or 100%, the counter always keep the value corresponding to x%.
    Even if I reset the counter between each measurement, it keeps this value ! I don't understand how it is possible.
    How can I know that the counter didn't see any edge, and so that duty cycle is 0% or 100% ?
    Thank you in advance for your help !
    FraB

    Hi,
    Just have a look at this link, it can be interesting for you...
    http://forums.ni.com/ni/board/message?board.id=40&message.id=2161&requireLogin=False
    Regards
    DD

  • Custom square wave duty cycle in signal express

    Hey everyone,
      I am using an USB X Series Multifunctional DAQ Model 6361, with labview signal express 11 on windows7 (version 9.3.5) and I am trying to figure out if i can change the duty cycle of a square wave.  I need to have one period be at 75% duty cycle and another 25% or something along these lines.
    thanks!
    Adam 

    Hi Adam,
    I believe another Applications Engineer has corresponded with you concerning this issue already. If you are looking to generate a truly custom square wave where the duty cycle changes from one period to the next then you will need LabVIEW as this functionality is not supported in SignalExpress. 
    Using the Analog Output along with the Create Analog Signals options will allow you to specify one fixed duty cycle for your square wave, but this will remain constant throughout the generation. 
    Regards,
    James D.
    Applications Engineer
    National Instruments

  • Duty Cycle measurement

    Hello all,
    I am attempting to Measure and output duty cycle to a device. I don't have the device in my possession so I have my hardware hooked up to each other. I have NI 9472 output card hooked to a NI 9423 input card. I have found these 2 examples of how to adjust duty cycle and how to read duty cycle. They work great, but the reading of the duty cycle is oppesite of the outputing of the duty cycle. For example if I set my output duty cycle to 60% the reading is 40%. If I set my duty cycle to 30% it reads that it is 70%. I looked thru the block diagram to see if the input was looking for the resting signal to be low or hi. Being a new user it might be right in front of me. Can some one take a peak at them and tell me anything? Thank you.
    Attachments:
    Modify Duty Cycle while running.vi ‏31 KB
    Meas%20Duty%20Cycle%20Cont%20LabVIEW%208.2[1].vi ‏31 KB

    Hey greentea2,
    You can try taking your waveform data and adding a replica of itself to the end of the data using the Append Waveform VI, so that you have multiple cycles of data to send into the Timing and Transition Measurements Express VI or the Transition Measurements VI for calculating the rise time.  I've attached a picture that shows a simple example of this using a sine wave.
    If your data does not complete a full cycle that comes back to a similar starting low point, then this example may not work for you or give you the right value.  If that is the case, then please respond with a picture of what your waveform looks like, so we can determine how to manipulate it.
    Hope this helps,
    Attachments:
    Append Replica Wave Form Data.png ‏28 KB

  • Is it possible to measure duty cycle of 6 pwn simultaneously using pci6624 board?

    Hi
    in my application i need to measure duty cycle of 6 pwm signal simultaneously  .
    Is it possible to measure duty cycle of 6 pwn simultaneously using pci6624 board?

    Here's what I mean...
    However, it only sends one command at a time. You didn't say if your servo controller requires all 4 commands at once. If so, then you can remove the case structures and concatenate all 4 slider values into one string.
    Message Edited by LabViewGuruWannabe on 11-15-2007 01:05 PM
    Attachments:
    SliderEvents-FP.PNG ‏31 KB
    SliderEvents.vi ‏36 KB
    SliderEvents-BD.PNG ‏63 KB

  • Dynamic duty ratio update in every cycle in PWM

    Hi All,
    I am a LabVIEW newbie working on generating PWM signal. I have to generate a PWM signal such that its duty ratio and in effect the pulse width should change in every cycle based on the values stored in an excel sheet. I have downloaded a ni example and trying to modify it but not with much success. I am using NI PCI 6132 and BNC 2110 in my setup.
    I have read examples about generating PWM based on dynamic duty ratio by manual control using 1,2 counters but have not found anything which updates the duty ratio in every cycle.
    For an example I am attaching a csv file containing 4 duty ratio values and the vi. My aim is to generate 4 pulses with the duty ratio stored in the csv file and then stop the execution of the program. For the starters I am keeping the frequency as 1 Hz. I know the vi is not proper and I am working on it, but I thought to get some suggestions in the meanwhile.
    Thank you very much for your help.
    Solved!
    Go to Solution.
    Attachments:
    retriggerable_pwm.vi ‏32 KB
    dutyratio.csv ‏1 KB

    The 6132 counters can't do what you are asking.  Using this hardware you would need to build the appropriate digital output array based on your desired times and use a buffered digital output task:
    Newer STC3-based hardware (e.g. PCIe-6320) is capable of buffered counter outputs:
    There are a few downsides to using the digital output method that may or not be an issue for your application:
    1.  It requires a much larger buffer (1 byte per sample compared to 8 bytes per period).  If you need high timing resolution and need to output a long sequence of pulses you might not be able to write the entire buffer at once.
    2.  More data needs to be streamed across the bus (also 1 byte per sample compared to 8 bytes per period).  Might be an issue if you are running concurrently with other streaming applications.
    3.  Less timing resolution (10 MHz max output frequency on the 6132 compared to 100 MHz counter output timebase on an X Series).
    Best Regards,
    John Passiak
    Attachments:
    DigOutputArray.vi ‏26 KB

  • I want to store the data form the PWM and the value of the changing duty cycle into a file simultaneously and continually

    i want to store the data form the PWM and the value of the changing duty cycle into a file simultaneously and continually but having problem.Please can anyone help out.
    Attachments:
    data.vi ‏60 KB

    Hello,
    Have you looked at the "Write Binary File.vi" and "Read Binary File.vi" examples?
    They give you a good clue as how to write and read arrays to and from binary files.
    For your data it means that you could put the two data items to write in an array and write the array to file, for the read its important to in what sequence the number were written to file.
    Kind regards,
    André
    Regards,
    André
    Using whatever version of LV the customer requires. (LV5.1-LV2012) (www.carya.nl)

  • Changing duty cycle for PXI 5422

    Hi
    I am using the PXI 5422 as a standard function Generator to generate a square wave. However I want to change its duty cycle.
    I know it is possible to do that because the niFGEN (.exe) has the provision for changing the duty cycle of a square wave.
    However I could not find a niFGEN function which would allow me to do that.
    Any response will be appreciated.
    Thanks,
    Nishad

    Hi Nishad -
    There is a property called Duty Cycle High that you can set on-the-fly.  It only works for square waves.
    Message Edited by David S. on 07-27-2007 10:17 AM
    David Staab, CLA
    Staff Systems Engineer
    National Instruments
    Attachments:
    fgen2.png ‏2 KB

  • Measuring the changing duty cycle of PWM waveform

    I need to measure the changing duty cycle of PWM waveform.
    conditions:
    1. the period is fixed.
    2. but the duty cycle is changing.
    goal:
    measure the every duty cycle of a period in the waveform.
    Can you please give me a help?
    Thank you in advance.
    the waveform image is attached.

    You need to provide more specific information.
    What is the period? What is the minimum, maximum, and resolution of the PWM signal? What is the time scale in your image?
    How are you measuring or generating the signal you show in the image?
    What should the output look like? An array of duty cycles expressed as percentage? Some kind of plot on a graph?
    How long will this measurement last?
    Lynn

  • How can I vary a PWM´s duty cycle inside a while loop?

    Hi,
    I'm using the "Generate Pulse Train.vi" to generate pwm signals in counters 0 and 1 in order to drive a DC motor both ways.
    The problem is, I need to control the movement of the dc motor with my PI controller which is inside a while loop. I've tried letting the "generate pulse train.vi" outside the while loop, but the problem is, it only changes the value of the duty cycle when the loop is stopped. I also tried putting it inside the loop, but then it doesn't even work.
    So, how can I vary a PWM´s duty cycle inside a while loop?
    I'm attaching the VI with the PI controller.
    Thanks for your help!
    Guilherme
    Attachments:
    controleValvula.vi ‏332 KB

    Here's some code I threw together a while back to change a duty cycle on the fly. It generates a fixed 5KHz or 25KHz frequency depending on laser selection, then allows duty cycle to be changed continously. Maybe you can use the premise of it for your application.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    "It’s the questions that drive us.”
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    Attachments:
    Pulse_Width_Modulator.llb ‏197 KB

  • TO change the Duty Cycle(DAQmxSetCOPulseDutyCyc)

    I have an application that uses Pulse Width Modulation (PWM) to control the speed of a motor. Thus, it requires that I change the duty cycle of my square wave. My continuous pulse is being generated on the output of my counter. When I use the function "DAQmxSetCOPulseDutyCyc" to update the duty cycle when the task is run, the changes aren't reflected. What is the problem? thanks in advances!
    cinzia

    Masa-
    Kevin is correct. Unfortunately, there is little we can do to change this behavior in DAQmx. There are only two options:
    1) change which property updates the pulse train value, which would leave you with the same issue you are currently having if you have a situation where the frequency needs to change but not the duty cycle, or
    2) add a third property that would be a "switch" command. This option would add more work for users, as a third property would have to be called.
    One other thing you might trying using instead of the properties (assuming you are using DAQmx 7.2 or later) is the DAQmxWriteCtrFreqScalar() method. This write method added in DAQmx 7.2 allows you to update the frequency on-the-fly without having to use the properties.
    I
    hope this helps!
    gus....

Maybe you are looking for

  • How can I verify my Apple ID if I don't have access to my old email?

    Apple asks me to verify my ID by clicking on the comfirmation email that it just sent, only the email in question doesn't exist anymore.  I mean, if I had a magic letter opener that swiped electronic mail in rogue-like fashion, these things would not

  • Extended withholding Tax in ECC6

    Hi All We have activated extended withholding tax in IDES ECC6.Have completed all the stuff from IMG, while assigning Tax code to Vendot Master, we are not finding the 'WHTType' and 'Liable'  field ready to input. These two fields are disable. Furthe

  • Wert     SRT: Plain SOAP: Reliable messaging (RM) configured, but no Message ID and no WSRM assertion provided.

    Hi All, Im trying to call this Webservice in SOAP UI and Im getting this error. The webservice , I Need to use is: BusinessPartnerSUITEBulkReplicateRequest_In http://es-workplace.sap.com/socoview(bD1lbiZjPTAwMSZkPW1pbg==)/render.asp?id=84B45EB7B18A11

  • 1.5.4 Query Builder Bug?

    I was testing the Query Builder with SQL developer version 1.5.4. It seems to have problems when trying to add the same table twice to the query. Example was to use the employees table from HR schema to create a query showing employees and managers.

  • Process Order fields

    Hello I'm basically new to PP-PI and could anyone explain me the process flow. 1.when we create process order what the fields  Total quantity, Delivered and Expected Yield Variance means. 2. should we do confirmation of process order to get in to pro