Apalrd's CVT/EVT

More in my attempt to fully utilize the differentials…

This is my EVT (Electronically Variable Transmission) based drivetrain.

I started with an attempt to build a working CVT using two differentials based on a LEGO design, but found that it relied on a friction peg to hold a 1:1 ration and then ‘slip’ to 1:5 under load, and when I did all of the math it wasn’t actually changing torque ratio but just diverting power to slipping the friction peg.

My second design was technically an EVT, but I called it an IVT (infinitely variable transmission). This design used 4 motors input to 2 nodes of a differential to drive the wheels, with the entire setup duplicated on each side. The first 2 images in the album are of this design, and the Modkit code ‘IVT-0.mk4v.txt’ is for this design. I math’d the gear ratio for this, it’s in the PDF.

My third design is also an EVT, but with only 3 motors. One motor is dedicated to each side, and the third is used to change the ratio of the other two. Because of the torque ratios between motors, and because torque is split left/right with this design, I need the same motor torque into the center shaft as I do on each side (since I only need 1/2 as much as the primary motor), so all are geared 1:1 into the differential. The output speed will be a 2:1 (faster) ratio from the side motor to the wheels when the center shaft is locked, and a 3:1 (faster) ratio from the side motor to the wheels with the center shaft is driven backwards. In software, the center shaft is the average of the two sides, so this is entirely automatic. The Modkit code ‘EVT-0.mk4v.txt’ is for this design. It is also included in the PDF.

Link to the album:

Pic of the first design:

Pic of the second design:

Also, a PDF going through how to calculate gear ratios with differentials, using the ‘lever method’. It also works for planetary and other multi-node gearsets, but I only explain it in the case with 3 nodes equally spaced.

IVT-0.mk4v.txt (12.9 KB)

EVT-0.mk4v.txt (12.6 KB)

BasicDifferentials.pdf (5.25 MB)



I’ve read your post and looked at the linked photos and .pdf. Unfortunately, I cannot look at your code until school starts and I have computer Internet access again. (Right now I only have my phone and can’t convert the file extension to open it in Modkit — as a .txt. it’s a nightmare to decode!) Can you e me a couple of screen shots to my gmail?

Either way, I am impressed. The build is pretty clean, and the use of the differential features is great.

I really like the visual explanation in the .pdf, too. Can I give you the credit and share this with my fifth graders?

Meanwhile, I think I’ll have to give my students an actual vex differential to manipulate while I talk through the ratios, else it will take a LOT of additional explaining (i.e. that you can have two inputs spinning in opposite directions on the same side). I’ve only shown them a few very basic examples of how the two sides can spin at different speeds and in different directions. This would be a perfect next step. Also, the lever analogy is great. I have not seen this analogy before, and I definitely like it.

One comment on the build… Might not be necessary, but I would consider (if you intend to use this build) switching to all metal shafts or else adding some structure to stabilize the plastic axle ends coming from the motors. A few standoff connectors coming from the outer 2x beams and a small 2x2 plate with the axle in the center hole would not add much weight. I realize that with the gears so close to the plate, the axles should not have much, if any play, but I do find that these shafts will flex under heavy load and cause the gears to drift out of plane and occasionally slip. Just a thought.

On a totally different note (not concept, but function), I was tinkering with increasing the gear ratio on my formula bot and adding a clutch and shifter to the code. I think I can get a 5:1 ratio using the three motors linked similarly to how I have them currently without increasing the overall size of the build by much - as it is, I really like the sleek, tight design I have now. I’m curious, because I like how you think, what you see as the advantage of a build like yours to simply changing the velocity of the motors in the code? In my build, I would still have the same amount of power (3 motors), a 5:1 ratio, and the code would be much simpler. Tag, you’re it!


The lever analogy came to me from people who design planetary automatic transmissions, they put 2-4 levers (some linked into 4 or 5 node levers) into designs. It works equally well for the differential in this case and it’s the best way I have to visualize what’s happening. Feel free to use it if you want.

In the 4-motor IVT I did change the speed ratios in code, there are several modes for this. However, when both motors spin forwards (for ratios between 0:1 to 2:1), torque applied from the output reacts off the center node and pushes the far node ‘up’ (higher speed), so the far node acts as a generator (torque direction is opposite of the rotational direction). In this case the total power input into the system from the battery is the same, but the center motor needs to work 2x as hard - some of the power is coming from the side motor, instead of the battery. This doesn’t work out very well, so the side motor always has to be reversed to the center motor, limiting the ratios from 2:1 and up, depending on the reverse ratio (5:1 in my case). If the reverse ratio is 2:1 (faster), the maximum ratio would be 4:1 and both motors would split the torque equally, which is ideal for identical motors.

Under load and with separate motors per side, there isn’t a huge benefit to changing the motor speeds in software. The real benefit is sharing the third motor between sides, since it allows all 3 motors to power the drivetrain, or to mix motors between functions (like sharing power with a lifting device). EVTs are normally used as motor-mixing transmissions, with the dedicated motor controlling the output while using some power from a non-dedicated motor.

How does the torque work out for this type of system?
For example, using VexIQ motors, if we direct drive the Left Input and then 1:1 drive the Carrier (36:36), we would technically sum the torque at the Right output. But, it seems that the torque from the Left/Carrier is reflected to the other Left/Carrier. So what is the true torque at the Right output?

We are trying to decide if, given 2 motors per side, we should use a 36:12 gearing per wheel, or use the above differential. Which would give us bets low end torque while maintaining speed ratio of 3:1?

Using the lever analogy, torque is in fact reacted off the center node.

So the sum of the torque at both sides will always equal the torque at the center.

If both motors are input into the differential (side and center) at the same speed in the same direction, the resulting output (other side) will be 1:1 to both motors. But, if a load is applied to the output, it will reflect off of the center motor and push the side input motor ‘upwards’, accelerating the motor. With IQ smart motors, this motor will essentially freewheel at it’s max RPM with all of the load handled by the center motor. If you could force it to control RPM, it would act as a generator to maintain the 1:1 speed ratio. Total energy into the system is conserved, but the central motor will handle way more than it’s share.

That is why I reverse the side input motor. This results in a high gear ratio (2:1 and up), but both motors are handling the torque. By changing the gear ratio of the side input motor you can change how much torque it receives, and by changing the speed relative to the center motor you can change the gear ratio.`For 2 dedicated motors per side, the ratio changing motor would need to be geared 2:1 (faster!) to balance the outputs of the side and center motors. This would result in 2:1 to 4:1 variator range. I also built one with 3:1 up gearing, which results in 2:1 to 5:1 variator range.

Remember, power is still conserved. If you reduce the speed of the side motor to change the ratio, you are reducing the power input into the system! At 2:1 the second motor isn’t contributing any power (RPM = 0), so you’re down to a single motor’s torque at 2:1 ratio and the second motor is still drawing electrical energy to hold position. So if you would like to push, using a fixed gearing would be better.

Basically, to increase the gear ratio you are adding additional power. If you are just trying to mix motors and not share them, it is better to use fixed gearing.

I deemed this acceptable, since I am sharing the side motor to both the left and right side (3 motors total, instead of 4, 2 per side). So, to go faster, I am adding 50% more power input to gain 50% more speed, with the same torque under all cases. The shared motor doesn’t have to hold much at 0 rpm since it’s only stationary when turning, and the two sides should oppose each other anyway. The center motor speed is calculated from the average of the two side speed targets.

3:1 is very fast for an IQ robot, are you sure you need to drive that fast?

1 Like