Animation of Pulleys and Belt Drive System

Introduction

            This animation provides learning of drive speed ratios and the dynamics of how the driven load affects the driving belt's sag.  Its design algorithms also show how to maintain digital integrity of the links of the belt without slippage on the pulleys.

Figures

Figure 1.  Pulleys with belt under motionless conditions.

 

Figure 2.  Pulleys with belt under driving conditions.  Note the lack of sag on the belt's top span and the doubling of sag on the belt's bottom span.

 

Math

1. Initial Layout:

We will make integer numbers of  equal length links on both free spans and on both pulleys by adjusting start angles on the left and right pulleys and by adjusting the horizontal distance between the pulleys.  In order to get integer numbers of links on the pulleys we use the following algorithm:

n b =int[ (π2 θ b ) a b l ] n s =int[ (π2 θ s ) a s l ] MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVCI8FfYJH8YrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbb a9q8WqFfeaY=biLkVcLq=JHqpepeea0=as0Fb9pgeaYRXxe9vr0=vr 0=vqpWqaaeaabiGaciaacaqabeaadaqaaqaaaOabaeqabaGaamOBam aaBaaaleaacaWGIbaabeaakiabg2da9iGacMgacaGGUbGaaiiDamaa dmaabaGaaiikaiabec8aWjabgkHiTiaaikdacqaH4oqCdaWgaaWcba GaamOyaaqabaGccaGGPaWaaSaaaeaacaGGHbWaaSbaaSqaaiaadkga aeqaaaGcbaGaamiBaaaaaiaawUfacaGLDbaaaeaacaWGUbWaaSbaaS qaaiaadohaaeqaaOGaeyypa0JaciyAaiaac6gacaGG0bWaamWaaeaa caGGOaGaeqiWdaNaeyOeI0IaaGOmaiabeI7aXnaaBaaaleaacaWGZb aabeaakiaacMcadaWcaaqaaiaacggadaWgaaWcbaGaam4Caaqabaaa keaacaWGSbaaaaGaay5waiaaw2faaaaaaa@5B11@  

(1.1)

where l is the link length, ab is the radius of the big pulley and as is the radius of the small pulley.

Then we solve the equations (1.1) for θb and θs:

θ b =π/2 n b l/(2 a b ) θ s =π/2 n s l/(2 a s ) MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVCI8FfYJH8YrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbb a9q8WqFfeaY=biLkVcLq=JHqpepeea0=as0Fb9pgeaYRXxe9vr0=vr 0=vqpWqaaeaabiGaciaacaqabeaadaqaaqaaaOabaeqabaGaeqiUde 3aaSbaaSqaaiaadkgaaeqaaOGaeyypa0JaeqiWdaNaai4laiaaikda cqGHsislcaWGUbWaaSbaaSqaaiaadkgaaeqaaOGaamiBaiaac+caca GGOaGaaGOmaiaacggadaWgaaWcbaGaamOyaaqabaGccaGGPaaabaGa eqiUde3aaSbaaSqaaiaadohaaeqaaOGaeyypa0JaeqiWdaNaai4lai aaikdacqGHsislcaWGUbWaaSbaaSqaaiaadohaaeqaaOGaamiBaiaa c+cacaGGOaGaaGOmaiaacggadaWgaaWcbaGaam4CaaqabaGccaGGPa aaaaa@559F@  

(1.2)

The math for the span between pulleys involves a quadratic equation:

δ r x = a b sin( θ b ) a s sin( θ s ) δ r y = a b cos( θ b ) a s cos( θ s ) δ x p =δ r x + ( n sp l ) 2 (δ r y ) 2 MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVCI8FfYJH8YrFfeuY=Hhbbf9v8qqaqFr0xc9pk0xbb a9q8WqFfeaY=biLkVcLq=JHqpepeea0=as0Fb9pgeaYRXxe9vr0=vr 0=vqpWqaaeaabiGaciaacaqabeaadaqaaqaaaOabaeqabaGaeqiTdq MaamOCamaaBaaaleaacaWG4baabeaakiabg2da9iaadggadaWgaaWc baGaamOyaaqabaGcciGGZbGaaiyAaiaac6gacaGGOaGaeqiUde3aaS baaSqaaiaadkgaaeqaaOGaaiykaiabgkHiTiaadggadaWgaaWcbaGa am4CaaqabaGcciGGZbGaaiyAaiaac6gacaGGOaGaeqiUde3aaSbaaS qaaiaadohaaeqaaOGaaiykaaqaaiabes7aKjaadkhadaWgaaWcbaGa amyEaaqabaGccqGH9aqpcaWGHbWaaSbaaSqaaiaadkgaaeqaaOGaai 4yaiaac+gacaGGZbGaaiikaiabeI7aXnaaBaaaleaacaWGIbaabeaa kiaacMcacqGHsislcaWGHbWaaSbaaSqaaiaadohaaeqaaOGaai4yai aac+gacaGGZbGaaiikaiabeI7aXnaaBaaaleaacaWGZbaabeaakiaa cMcaaeaacqaH0oazcaGG4bWaaSbaaSqaaiaadchaaeqaaOGaeyypa0 JaeqiTdqMaamOCamaaBaaaleaacaWG4baabeaakiabgUcaRmaakaaa baWaaeWaaeaacaWGUbWaaSbaaSqaaiaadohacaWGWbaabeaakiaadY gaaiaawIcacaGLPaaadaahaaWcbeqaaiaaikdaaaGccqGHsislcaGG OaGaeqiTdqMaamOCamaaBaaaleaacaWG5baabeaakiaacMcadaahaa Wcbeqaaiaaikdaaaaabeaaaaaa@7CDF@  

(1.3)

where δxp is the horizontal distance from the center of the small pulley to the center of the big pulley and nsp is the previously chosen number of links in the free spans.

 

 

2. Motion:

Here the idea is to save a copy of the stationary belt and then have the moving belt segment morph gradually into the stationary segment as it arrives there. In order to achieve this, it is simpler to save several iterations of each link position in an array so that the link can be stepped sequentially to an exact and repetitive position.

  

The code to move a single segment along the belt path is shown below where i represents the integral link step number, n is the total number of links, m is the number of the current link being advanced, j is the discrete step number and there are njs steps for each full link advancement.

//i is the current value of advancement;

int k= i % n;

//advance all ellipses by len/njs from their stored positions

for(int m=0;m<n;m++)

       {//m is the link number being advanced

              int kmMod=(k+m) % n;

              ellipse em=eList[m];

              int index=njs*kmMod+j % njs;//2D data array, pA, index

              em.x=pA[index][0];

              em.y=pA[index][1];

              em.angle=pA[index][2];

            }

            j++;

       if(j % njs==0) i++;