03-20-2011 11:12 AM
I have a disk that spins at around 3000rpm. Every time this disk spins one revolution it generates a pulse. I want to take 100 samples from that pulse (every 3.6 deg). To do this I want to split the pulse into 100 sub-pulses, I want the time between each of these sub-pulses (samples) to be constant however the speed of the disk can vary by 3 or 4 rpm. This means that I cannot tell exactly how long one rotation of the disk will take. Therefore I cannot have a set sample rate because in order to get the same time difference between each sub-pulse I would need to dynamically change the number of samples to take according to the rpm of the disk. The data I want to acquire is from four pressure sensors on NI-9237, cRIO 9114. I am using LabView FPGA.
Any help, direction or some other ways that you would to do this will be much appreciated. I am fairy new to LabView :). I also hope that I have post in the right section.
Solved! Go to Solution.
03-20-2011 12:27 PM
Hi ashvin,
When I first read your post, it seemed one approach might be to over-sample (sample at a much higher rate), then synthesize the "sub-pulses".
This leads to a couple of questions:
1) It sounds like you need to sample @ ~300kHz (3000 * 100) while the max sampling rate of the NI-9237 is 50kHz(?)
2) It's tempting to think you can infer pressure at an angular position based on data collected in the time-domain - but you can't!
If the disk speed varies during a rev, then angle/time is also varying, so data collected on a constant time interval must represent different angular changes per sample. I don't think it's possible to know exactly what the pressure is at specific angular-intervals.
If you could sample at, say, 5MHz, and collected, say, 1680 samples between major-pulses, then you could approximate the pressue every 3.6 degrees by:
raw_sample_index = sample_index * 1680/100. Note 1680samples implies ~2976rpms
Sample# Index_of_Raw_Sample
0 0
1 17 (16.8 )
2 33 (32.6 = 2*16.8)
3 50 (50.4 = 3*16.8)
etc...
Cheers!
03-20-2011 01:03 PM
Hi tbd
Thank you for your quick reply to my question. The max sampling rate of the NI-9237 is indeed 50kS/s. I will try your suggested approach. It seems a good solution to my problem. Thanks a lot for you help.
Cheers
Ashvin
03-20-2011 02:47 PM
3000 rpm is 50 rps
50 rps * 100 samples per rev is 5000 samples per second
the acquisition rate of the module you call out is fixed rate. you will need to oversample
the approach will be dependant on how much speed variation you actually have. if the rev to rev variation is large, there isn't much you can do to accurately sample at angular position. if the speed variation is small, it will be possible to measure and adapt to actual speed relatively easily.
03-20-2011 04:27 PM
Hi
with reference to the pulse is it a short duration or revolution duration?
Either way I would consider using a shaft encoder and a 9411 module.
This would cater for either type of 'pulse'.
Just thinking outside the box.
Xseadog
03-20-2011 04:38 PM
thanks for your comment stu. I don't think the rpm will vary a lot.
03-20-2011 04:40 PM
I know using a shaft encoder will do the job but can't put one there. Thanks for your suggestion xseadog.
03-21-2011 01:40 AM
With reference to your pulse profile:
Has it a constant dynamic range? Does the rotation just strech the pulse length?
What size physical parameters are you working with?
PS
Its the questions that drive us
xseadog
03-21-2011 02:45 AM
03-21-2011 05:09 AM
So now you saying that it rotates at 3002.5rpm +/- 2.5 rpm.
What is the torque load?
Physical dimensions of the shaft etc.
Does the pulse have a max voltage? Does it attain the max voltage each time?
I am unable to determine if you mean you have a digital pulse created by the shaft rotation (ie an index pulse)
or a pressure pulse caused by the effect of the shaft rotation !
xseadog