Best way to track a HS lift

Hello,

My team currently has a lift and it need to go down to a specific position in order to pick up a goal. Currently, I use spinFor(x, degrees). This works pretty well, but we ended up getting knocked out of the elimination rounds, because our auton didn’t lift our lift far enough down to pick up a goal. I assume that this was caused by our lift not starting in the same spot, or slop in the gears.

Currently, our lift has a low strength shaft in the motor driving a high strength shaft on a 1:5 gear ration. My question is, what is the best way to track the position of the lift?

I would like to use a potentiometer, but vex doesn’t make high strength potentiometers. If I put it on the low strength shaft, that won’t account for any slop. Has anyone encountered and solved this issues before? Thanks in advance.

the rotation sensor is compatible with HS shafts, and it appears to have absolute angle functionality (like a potentiometer) in addition to its relative encoder-like function.

you could also use something like a limit switch to detect if the lift is at a certain position. Or you could have some sort of hardstop on the bottom of the lift, and code it so the lift goes down to what it thinks is the bottom (based on motor encoders) and then tries to press down farther for a short time to make sure it is really firmly against this hardstop.

18 Likes

I second the rotation sensor one. Its absolute angle works like a charm. I’ve never had to retune it.

3 Likes

There is a way to make a HS to LS conversion, you use a HS shaft collar and put half it onto the axle, then on the other side you use a Metal axle insert, then you just put a LS axle in there and tighten the HS shaft collar. In the end it should look something like this.
image

Another way is to do a second gear of the same size on the opposite side of the drive gear as the driven gear for the lift. This would basically make for you 5:1:5. You then put a pot on the new gear and to your code there will be no difference. I ran that on my TT traybots lift and it worked very well.
AB42ED4B-2BD0-40A7-9775-E7F22FEB4818

10 Likes

I use the same thing, but if you want to be really precise about the amount the motor turns, there is a sensor that sense the exact amount a shaft/axle turns.

With this you can use a .spin(speed, pct) until the shaft encoder reads it hit the ideal position.

The new rotation sensor, if you can get them, accommodates a HS shaft.
https://www.vexrobotics.com/276-6050.html?q=&locale.name=English

Edit: did not see @Xenon27 's post above

1 Like

Aside from adding a sensor, you could improve your consistency greatly by using spinTo instead of spinFor.

spinFor tells the motor to do a relative move starting from wherever the motor was when the function is called. This can lead to error building op over time (in your case making the lift slightly lower each time.)

spinTo tells the motor to move to an exact position relative of the zero position of the motor, and will not cause error over time assuming no gears are skipping. The zero position of the motor is set to the position the motor was in when the program started, but it can be reset at any time to the current position by calling resetPosition, or set with an offset by calling setPosition. This could be done manually on the controller in case of gears slipping or improper setup, or you could do as @Xenon27 suggested and use the spin function with low power setting to push down into a hard stop and then call resetPosition after a short pause.

2 Likes