Sei sulla pagina 1di 6

ANALISIS DEL SISTEMA BIELA MANIVELA (EXCNTRICO), MEDIANTE PYTHON

_____________________________________________________________________________ OBJETIVOS

_______________________________________________________________________
Generar un cdigo que pueda fcilmente analizar el comportamiento del sistema Biela Manivela (excntrico), con respecto a datos ingresados por el usuario. Buscar condiciones limite dentro del sistema analizado. Generar un grfico en el que se muestre la relacin de los siguientes parmetros [ ]y[ ]

__________________________________________________________________________ CALCULO DE LAS ECUACIONES PARA EL SISTEMA: _____________________________________________________________________________

Lo primero que debemos hacer para conseguir las ecuaciones que nos llevaran al anlisis completo del sistema es, conseguir las posiciones de . Para eso buscamos las relaciones geomtricas entre X y Y que nos puedan ayudar.

Despejando , obtenemos: ( Luego buscamos una relacin para X: )

Ahora podemos derivar estas ecuaciones para obtener las velocidades:

Derivamos una vez ms para obtener las aceleraciones:

PROGRAMACIN: Lo primero que debemos hacer antes de codificar la informacin es plantear el funcionamiento del cdigo. Para esto haremos una lista de procesos a realizar hasta la obtencin de las grficas. Ingresar todos los datos de entrada. Verificar si existen singularidades o situaciones crticas que no permitan el desarrollo del programa. Calcular sucesivamente las posiciones, velocidades y aceleracin, mientras van siendo almacenadas en vectores. Utilizar los vectores de informacin para graficar la relacin entre los distintos parmetros de salida con nuestro parmetro de entrada . Para el desarrollo que planteamos, necesitamos integrar 2 librera a nuestro cdigo, estas son: Matplotlib.py y Math.py. Con estas libreras dispondremos del uso total de las funciones matemticas como de las funciones de ploteo.

El cdigo obtenido es el siguiente:


import matplotlib.pyplot as plt import math ##valores de entrada y declaracin de varibles. N = input('Limite de Theta = ') V = input('velocidad = ') A = input('Aceleracin = ') E = input('Altura de Excentricidad = ') theta = [math.radians(x) for x in range(N + 1)] theta_1 = [V + A*(x) for x in range(N + 1)] theta_2 = [A for x in range(N + 1)] phi = [] phi_1 = [] phi_2 = [] x = [] x_1 = [] x_2 = [] R = input('Radio de Manivela (nmero con punto flotante) = ') L = input('Longitud de Biela (nmero con punto flotante) = ') def limites(): if (R+L)**2 - E**2 < 0: print '=======================================' print 'Erro, resultado imaginario en (R+L)^2 - E^2' ok = 0 elif E+L < R: print '===============================' print 'Error, E+L tiene que ser mayor a R' ok = 0 elif L-R < E: print '=================================' print 'Error, el sistema sufrira una ruptura' ok = 0 else: ok = 1 return ok ##algoritmo def posiciones(): for i in range(len(theta)): phi.append(math.asin((R*math.sin(theta[i]) - E)/(L))) x.append(R*math.cos(theta[i]) + L*math.cos(phi[i]) - math.sqrt((R+L)**2 - E**2)) return phi, x def velocidades():

for i in range(len(theta)): phi_1.append((R*math.cos(theta[i])*theta_1[i])/(L*math.cos(phi[i]))) x_1.append(-R*math.sin(theta[i])*theta_1[i] - L*math.sin(phi[i])*phi_1[i]) return phi_1,x_1 def aceleraciones(): for i in range(len(theta)): phi_2.append((R*math.cos(theta[i])*theta_2[i] - R*math.sin(theta[i])*theta_1[i]**2 + L*math.sin(phi[i])*phi_1[i]**2)/(L*math.cos(phi[i]))) x_2.append(-R*math.cos(theta[i])*theta_1[i]**2 - R*math.sin(theta[i])*theta_2[i] L*math.cos(phi[i])*phi_1[i]**2 - L*math.sin(phi[i])*phi_2[i]) return phi_2,x_2 def graf(): plt.figure(1) plt.subplot(211) plt.plot(theta, phi, 'ro', theta, phi_1, 'go', theta, phi_2, 'bo') plt.xlabel('Theta') plt.ylabel('[Phi], [Phi_1], [Phi_2]') plt.grid(True) plt.subplot(212) plt.plot(theta, x, 'ro', theta, x_1, 'go', theta, x_2, 'bo') plt.xlabel('Theta') plt.ylabel('[X], [X_1], [X_2]') plt.grid(True) return plt.show() ok = limites() if ok == 1: phi, x = posiciones() print 'Posiciones Calculadas !!!' phi_1, x_1 = velocidades() print 'Velocidades Calculadas !!!' phi_2, x_2 = aceleraciones() print 'Aceleraciones Calculadas!!!' graf() else: print 'vuelva a correr el programa y re-ingrese los datos corregidos'

____________________________________________________________________________________________

RESULTADO GRFICO: ___________________________________________________________________________________ El xito del cdigo se ve reflejado en la precisa y entendible creacin de las grficas que se pretendan. Primera grfica, utilizando los siguientes datos: Limite de Theta = 360 Velocidad = 1.0 Aceleracin = 0.0 Altura de la excentricidad = 3.0 Radio de Manivela = 10.0 Longitud de Biela = 40.0

Se puede apreciar la posicin negativa de en el instante cero. La relacin de 4 veces la longitud de la biela con respecto a la manivela, genera una grfica limpia y de buena relacin entre las variables del sistema. Podramos decir que esta relacin de idealismo de mantiene tambin para le caso de la Biela Manivela (excntrica). El recorrido del embolo o punto de amarre de la biela, sigue siendo el mismo que en el caso standard, pues el tope de x se dan en -20, lo cual indica el doble del radio de la manivela.

_____________________________________________________________________________ BUGS: _____________________________________________________________________________ Los bugs encontrados en el programa fueron las singularidades o puntos lmites estructurales para un sistema de rotacin completo, o un sistema que permitiese el giro completo de la manivela. Los puntos fueron puestos en el programa para no llegar a errores, si no, para que el usuario pueda re-ingresar los datos e intentar de nuevo un anlisis con valores correspondientes al tipo de anlisis de giro completo.

def limites(): if (R+L)**2 - E**2 < 0: print '=======================================' print 'Erro, resultado imaginario en (R+L)^2 - E^2' ok = 0 elif E+L < R: print '===============================' print 'Error, E+L tiene que ser mayor a R' ok = 0 elif L-R < E: print '=================================' print 'Error, el sistema sufrira una ruptura' ok = 0 else: ok = 1 return ok

Esta funcin verifica que no se caiga en singularidades o valores lmite del sistema. El valor ok, simplemente se toma como un nmero booleano, el cual da permiso al programa para continuar con el resto del programa. Como se puede ver, las 4 condiciones encontradas se encuentran condicionadas. Haciendo de ok cero cuando estas son incumplidas.

Potrebbero piacerti anche