![]() |
High speed encoder with slotted / flat end... can't find one.
We've got fairly tight requirements. In order to improve our shooter, we're increasing the number of counts our encoder returns.
Right now we have a bourns 128 count with 1/4 slotted shaft input. What we're looking for is a 512 count with 1/4 slotted shaft input at reasonable cost. With 128 counts per revolution, we see around 7000 counts per second. 512 gets up to 28,000 or so per second. My understanding is that 40,000 per second is the cRio's limit, so I'm happy getting to 3/4 of it. Also note that the encoder will have to be fairly robust to handle the speeds (3000 rpm+) that our shooter runs. We've looked but can't find something in stock that meets these requirements. Does anyone else have an off-the-shelf idea? I understand we could gear the encoder we have now upwards to get the appropriate counts, but we direct drive the encoder to minimize noise and would like to stay that way. We don't have the ability for a drop-over or code wheel style encoder due to mounting real-estate. |
Re: High speed encoder with slotted / flat end... can't find one.
Does it have to have a slotted or flat end?
If it is okay, I've used both the S1 and S5 encoders before from us digital. Your method of calculating and/or filtering velocity could possibly have a much larger impact on control (we ran a 6-tick encoder all season), curious, what are you currently doing? I certainly agree with your logic that more resolution is better though (we're switching to a higher count encoder at IRI for the same reason). |
Re: High speed encoder with slotted / flat end... can't find one.
We are using the S5 encoder at 32 CPR. It has worked fine all year for us. Only problem we had was when testing different wheels/coatings we ended up destroying one after inserting/pulling it out of a tight hole in the shooter shaft about 25 times, which is pretty understandable.
|
Re: High speed encoder with slotted / flat end... can't find one.
we have our shooter logic in a 10 ms timed loop (not a waited loop).
We calculate the rate based on 3 loops worth of data. Each loop we drop the oldest data point and add a new one. Then we average those 3 loops of data and send that into our velocity PID as our actual speed. (I suppose, looking at this now, we really should just be looking at the rate over 9 loops or 90ms, and get rid of the average. It's a bit redundent. For our 'enable to shoot' logic, we use an 8 sample average of rate fed into an IIR filter with a .5 constant. Please, feel free to tell us what we can improve =). I'm an mechanical engineer masquerading as a controls engineer, and systems engineering was always one of my most hated classes :lol: |
Re: High speed encoder with slotted / flat end... can't find one.
Are you using 4x sampling to get the max from your Bourns?
The quoted CPR is based on using only one of the following: 1) rising edge ACounting each and every one of them gives you 512 ticks per revolution with a "128cpr" encoder. |
Re: High speed encoder with slotted / flat end... can't find one.
We're using a 50CPR US Digital S5 encoder. We switched over to this from the S4's based on recommendation from our friends on the Poofs. We are extremely happy with the S5 (particularly the ball bearing version), and will only be using that encoder for applications similar to our shooter wheel in the future.
-Brando |
Re: High speed encoder with slotted / flat end... can't find one.
If you use 4x sampling and you're not using C++, be aware of this: http://www.chiefdelphi.com/forums/sh....php?p=1122730 |
Re: High speed encoder with slotted / flat end... can't find one.
Quote:
|
Re: High speed encoder with slotted / flat end... can't find one.
Given a 128 CPR encoder running at approx 3280 rpm (per post#1), there will be approx 70 counts every 10 ms. If a 10ms timed loop is used and the rate is computed by reading the raw sample count and dividing by sample time, a 1-count jitter will equal approx 1/70 of 3280, or 47rpm jitter. Using this processing method and decoding at 4x instead of 1x should reduce the jitter, although perhaps not by a factor of 4 (because of the tolerances of the edge locations). |
Re: High speed encoder with slotted / flat end... can't find one.
What kind of ± resolution on the RPM are you looking to achieve? And at what frequency do you want to know the current RPM of the shooter?
I would suggest creating an Excel document to calculate how various changes to the CPR and sampling time interval affect the resolution of the shooter speed output. Depending on what you are looking for, you may be able to achieve your desired results without hardware changes. For example, with a 128 CPR encoder (and 1x decoding) sampling over a 100ms time interval, you can achieve an RPM resolution of 4.6875rpm per encoder count, while sampling over only a 30ms window yields a resolution of 15.625rpm per encoder count. |
Re: High speed encoder with slotted / flat end... can't find one.
We used a US Digital S5 250CPR, worked great.
-Brian Qty Mfr Part Number Price Description Usage 1 US Digital S5-250-250-NE-S-B $70.65 S5 series, 250 CPR, 1/4" Shaft, No Index, Single Ended, Ball Bearing Shooter RPM |
Re: High speed encoder with slotted / flat end... can't find one.
Quote:
That means my rpm may vary from about 2674 to 2619 (single wheel) In retrospect, that means that the 30ms time frame with the 128 encoder we'd been trying to use takes up a huge chunk (30%+) of our tolerance. 5% seems like a more reasonable number. Which means that a 512 count encoder should get us fairly close to having a measurement error of 5% over 30ms. Obviously I'm trying to minimize calculation (delay) time. The fewer cycles required to get an accurate reading means that much less 'lag' between a change in the system and your response to that change. Where is the sweet spot, based on shooter momentum and motor update rate? Heck if I know... |
Re: High speed encoder with slotted / flat end... can't find one.
Quote:
Quote:
First thing I would like to mention from a previous time is that we had a problem with our encoder where the vibrations of the shooter caused the encoder itself to rupture the casing and then caused it to lose counts at higher speeds as the centripital force of the encoder wheel lost contact during certain phase intervals. We had to tape the outer casing down tight to keep this problem to a minimum, and then needed to use a priority averager to erase this symtom. The priority averager looks like this: Code:
class Priority_AveragerCode:
void KalmanFilter::Reset()And the typical averager Code:
// A templated averager, make sure the type being averaged can handle the +, -, and / functions![]() Where the cyan line is the encoder reading trying to match the magenta ramp velocity. Hope these ideas may help out. |
Re: High speed encoder with slotted / flat end... can't find one.
Quote:
|
Re: High speed encoder with slotted / flat end... can't find one.
Quote:
|
| All times are GMT -5. The time now is 11:10. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi