VELOCITY AND ACCELERATION OF CONNECTING ROD CRANK MECHANISM IN PYTHON
Before you start coding i highly recommend watch this video to understand how this code work
import matplotlib.pyplot as plt
from numpy import *
from ipywidgets import interactive
def f(theta,c,cR): # creating a function that give angle to crank c = crank radius  cR = connecting rod length
    g = plt.figure(figsize=(20,20))
    ax = g.add_subplot(311)
    ax2 = g.add_subplot(312)
    ax3 = g.add_subplot(313)
    omega =20 # crank speed in radians per second
    xa= 0 # starting point of x cordinate of crank
    ya = 0 # starting point of y cordinate of crank
    xb = c*cos(radians(theta)) # ending/starting point of x cordinate of crank/connecting rod
    yb = c*sin(radians(theta))  # ending/starting point of y cordinate of crank/connecting rod
    xc = xb + sqrt(cR**2-yb**2) # ending x cordinate of connecting rod
    yc =0 # ending y cordinate of connecting rod
    ax = g.add_subplot(311)
    x =([xa,xb,xc]) 
    y =([ya,yb,yc])
    plt.xlabel ('distance in meter')
    plt.ylabel('distance')
    plt.title('connecting rod mechanism in python')
    ax.plot(x,y)
    print('distance of piston from crankshaft is ',xc)
    #plt.axis('equal') #make length  x and y coordinate equal
    ##VELCOITY GRAPH PLOTTING 
    ax2 = g.add_subplot(312)
    t = linspace(0,theta,360)
    n = cR/c
    velocity = omega*c*(sin(radians(t))+(sin(2*radians(t)))/(2*n)) # formula from page 524 rs khurmi theory of machine
    ax2.plot(t,velocity)
    plt.title('Velocity graph')
    plt.xlabel('theta')
    plt.ylabel('velocity')
    #plt.axis('equal')
    #print("velocity of crank at ",theta," is ", velocity)
    ##ACCELERATION GRAPH PLOTTING 
    ax3 = g.add_subplot(313)
    t = linspace(0,theta,360)
    n = cR/c            # ratio of connecting rod length / crank radius
    acceleration = omega**2*c*(cos(radians(t))+(cos(2*radians(t)))/(n)) # formula from page 525 rs khurmi theory of machine
    ax3.plot(t,acceleration)
    plt.title('Acceleration graph')
    plt.xlabel('theta')
    plt.ylabel('acceleration')
    #plt.axis('equal')
    #print("acceleration of crank at ",theta," is ", acceleration)
    #print('velocity at particular angle is ',velocity)
interactive_plot = interactive(f,theta=(0,360),c = (0,0.7),cR = (0.5,1))
interactive_plot
for better understanding of code watch this video
 
 
 
0 Comments
if you are not getting it then ask i am glad to help