|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools |
Rating:
|
Display Modes |
|
|
|
#1
|
||||
|
||||
|
pic: Encoder Noise
|
|
#2
|
|||||
|
|||||
|
Re: pic: Encoder Noise
How many samples did you set the FPGA to average?
|
|
#3
|
||||
|
||||
|
Re: pic: Encoder Noise
Is this with the bot on the ground, or supported on blocks? If there is no load on the drivetrain then this seems pretty normal. We've been able to attribute this to backlash and the accompanying rattle within the drivetrain. With a "real" load the measurement should be more well-behaved since the masses are 10x-100x larger and the backlash-induced rattle goes away. Overdamping of the measurement (by cranking up the number of averages) brings it's own set of problems.
|
|
#4
|
||||
|
||||
|
Re: pic: Encoder Noise
This was on blocks. I am using 50 for the config timer. I have not tried it on the ground yet but plan on doing that this weekend. Thanks for the advice
|
|
#5
|
|||||
|
|||||
|
Re: pic: Encoder Noise
Did you try with a sample count somewhere around 10? We did this last night and our smoothed graph looks similar to yours, so you might not be gaining anything by having 40 more samples. The more samples you average the slower the system reacts to changes.
|
|
#6
|
||||
|
||||
|
Re: pic: Encoder Noise
How fast is the encoder shaft spinning (RPM) ?
|
|
#7
|
|||||
|
|||||
|
Re: pic: Encoder Noise
Ours were spinning at about 7k RPM max speed, I'll try to remember to grab a picture of our data next meeting, but that's not for another week.
|
|
#8
|
|||
|
|||
|
Re: pic: Encoder Noise
What is the "config timer encoder block"?
|
|
#9
|
|||||
|
|||||
|
Re: pic: Encoder Noise
I believe its the setting that sets how many samples you want the FPGA to average when it reports the encoder rate. In java it would be the setSamplesToAverage() method for the Encoder class.
|
|
#10
|
||||
|
||||
|
Re: pic: Encoder Noise
The Configure Timer VI for encoders in LabVIEW sets both the number of samples to average (setSamplesToAverage(int)) as well as the max period before the FPGA interprets the encoder as "stopped" (setMaxPeriod(double)).
|
|
#11
|
||||
|
||||
|
Re: pic: Encoder Noise
I was asking the OP, but that's OK. What exact model encoder were you spinning at 7K RPM ? And how were you decoding it ?
|
|
#12
|
|||||
|
|||||
|
Re: pic: Encoder Noise
Quote:
We are using these and we were decoding in 4x with 10 samples being averaged. Last edited by notmattlythgoe : 06-20-2014 at 03:26 PM. |
|
#13
|
||||
|
||||
|
Re: pic: Encoder Noise
Quote:
What is the complete part number of the part you're using (including CPR, bearing type, etc)? Were you reading counts from the FPGA and dividing by elapsed time, or reading the rate from the FPGA? Please post code if you have it. @jhersh: (if you are following this thread) would there be any advantage, tolerance-wise, to change the sample size to an even multiple of 4 (say 12 or 8) so that the averaging would always take place over an integer number of cycles? Last edited by Ether : 06-20-2014 at 05:19 PM. |
|
#14
|
|||||
|
|||||
|
Re: pic: Encoder Noise
Quote:
We were reading the rate from the FPGA. I'l post some code when I get a chance. |
|
#15
|
||||
|
||||
|
Re: pic: Encoder Noise
Your S4 is less than half the CPR of the OP's and has ball bearings. So the two are not comparable. What works for you won't necessarily work for the OP.
At 7K RPM you are exceeding the speed the FPGA could handle if your S4 were at max tolerance for quadrature phase error: Code:
Welcome to RLaB. New users type `help INTRO'
RLaB version 2.1.05 Copyright (C) 1992-97 Ian Searle
RLaB comes with ABSOLUTELY NO WARRANTY; for details type `help warranty'
This is free software, and you are welcome to redistribute it under
certain conditions; type `help conditions' for details
>
> format(5);
>
> CPR = 120 # cycles per rev (single channel)
120
>
> EPRS = 2*CPR # edges per rev (single channel)
240
>
> EPRQ = 2*EPRS # edges per rev quadrature (both channels)
480
>
> RPEQ = 1/EPRQ # angular distance (revs) between cross-channel edges
0.0020833
>
> per = 261/40e6 # FPGA sampling period, seconds
6.525e-006
>
> RPS = RPEQ/per # maximum revs per sec
319.28
>
> RPM = RPS*60 # maximum RPM (revs per minute)
19157
>
> # angular distance (revs) between cross-channel edges
> # with "typical" tolerance:
>
> RPEQ_TYP = (90-10)/90*RPEQ
0.0018519
>
> RPM_TYP = RPEQ_TYP/per*60
17029
>
>
> # angular distance (revs) between cross-channel edges with "max" tolerance:
>
> RPEQ_MAX = (90-60)/90*RPEQ
0.00069444
>
> RPM_MAX = RPEQ_MAX/per*60
6385.7
>
>
> # RPM with no tolerance, typical tolerance, and max tolerance:
> RPM
19157
> RPM_TYP
17029
> RPM_MAX
6385.7
>
>
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|