My brother, Lucas, was in town and he told me about a recent video covering a beltless CVT transmission. As a student who created a CVT for his senior design project, he was very excited to share the video with me.
What we are solving for is essentially a classical four bar linkage which has been demonstrated by radcli14 before but ours has a little twist to it. What makes this special is the second bar (B) is not a fixed length but instead a dependant variable of the input angle. Also, the angle of the third bar (θ3) is a function of the angle of bar B.
I am using Sympy to perform the calculations and Manim for the animation
The red line is our “chain”. Bar A is not rotating at a constant velocity. This is because it the “input” is to be attached to an elliptical gear which meshed with another gear about point A causing θ1 to change in speed depending on the angle of the lobe at the given point in time. The reason why we used an elliptical gear will be discussed later on.
There are two guides that helped me with the rest of the setup:
We will use θi and ωi as the input angle and velocity for the first lobed gear and have θ1 and ω1 represent the second lobed gear as a function of the input one.
Our velocity constraint is not very useful at the moment since it is composed of some dependant variables we do not know the values for. The variables it is composed of are
{lb˙,lb,ω1,ω2,θ1,θ2}
We can see that the expressions are linear in ω1, ω2 and l˙b. If we select ω2 and lb˙ to be dependent, we can solve the linear system Ax¯=b¯ for those variables using the technique shown in Solving Linear Systems. First we define a column vector holding the dependent variables:
Lets plot the linkages to see what they look like. I am solving the system for every 1/30th of a revolution.
Lets verify the length of our chain is calculated correctly by plotting lB, the length of the arc between P3 and OF (the green line and the orange line from the previous plot)
Of course we won’t use just of these systems or else we would have output torque that varies wildly resulting in a bumpy ride. What we can do is chain multiple systems together with an offset so thy take turns providing torque.
The linage with the maximum angular acceleration will be the one contributing to the whole, so we can just plot the max of the 4 systems
This line os not perfectly flat as desired, but it is much better without the elliptical input gears.
There are different things to optimize. The first optimization is to use an elliptical gear set (yes, strange, but it seems to help) on the input drive. This was my brother, Lucas’s, idea.
I didn’t even go into optimizing the different length and positions of the linkages. Ideally, it would be optimized across the full range of the adjustable linkage (lA in our case).
If it wasn’t for Jason K. Moore’s excellent online book over Learn Multibody Dynamics, I don’t think I would have been able to get as fas as I did.
All of the source code can be found here. I used python for the math and took a symbolic approach the the solution. Lucas did the same thing in Matlab and took a vectorized approach.