def maxaddendum(self): sa1 = 0.3 sa2 = 0.3 b = 0.20 * self.transmission.m x1 = 0 xmax = 3 xmin1 = self.transmission.gear_one.xmin xmin2 = self.transmission.gear_two.xmin xmin = max([xmin1, xmin2]) xsum = self.transmission.xsum while abs(sa1 - b) >= 1e-10 and abs(sa2 - b) >= 1e-10: x1 = (xmax + xmin) / 2 x2 = - x1 + xsum dy = xsum + 0.5 * ( self.transmission.gear_one.z + self.transmission.gear_two.z) - self.transmission.aw / self.transmission.m da1 = self.transmission.m * (self.transmission.gear_one.z / cos(radians( self.transmission.gear_one.beta)) + 2 * self.transmission.gear_one.profile.ha_p + 2 * x1 - 2 * dy) da2 = self.transmission.m * (self.transmission.gear_two.z / cos(radians( self.transmission.gear_one.beta)) + 2 * self.transmission.gear_one.profile.ha_p + 2 * x2 - 2 * dy) # da1 = self.transmission.gear_one.da # da2 = self.transmission.gear_two.da sp1 = self.transmission.m * (pi / 2 + 2 * x1 * tan(radians(self.transmission.alpha))) sp2 = self.transmission.m * (pi / 2 + 2 * x2 * tan(radians(self.transmission.alpha))) d1 = self.transmission.gear_one.d d2 = self.transmission.gear_two.d db1 = self.transmission.gear_one.db db2 = self.transmission.gear_two.db alfae1 = acos(db1 / da1) alfae2 = acos(db2 / da2) sa1 = da1 * (sp1 / d1 + involute(self.transmission.alpha) - involute(degrees(alfae1))) sa2 = da2 * (sp2 / d2 + involute(self.transmission.alpha) - involute(degrees(alfae2))) if min([sa1, sa2]) - b > 0: xmin = x1 else: xmax = x1 if x2 < xmin2: x1 = abs(xmin2) self.transmission.gear_one.x = x1 self.transmission.gear_two.x = x2 self.transmission = Transmission(transmission=self.transmission) if self.transmission.epsilon_alpha <= 1.2: break # print(self.transmission.epsilon_alpha) # print(sa1) # print(sa2) return [x1, xsum - x1]
def __aw(self): inv = involute(self.pinion.data['alpha_t']) + 2 * (self.pinion.data['x'] + self.wheel.data['x']) / ( self.pinion.data['z'] + self.wheel.data['z']) * tan( radians(self.pinion.data['alpha_n'])) alpha_wt = arcinvolute(inv) a = ((self.pinion.data['z'] + self.wheel.data['z']) * self.pinion.data['m_n']) / ( 2 * cos(radians(self.pinion.data['beta']))) aw = a * cos(radians(self.pinion.data['alpha_n'])) / cos(radians(alpha_wt)) return aw
def __aw(self): inv = involute(self.pinion.data['alpha_t']) + 2 * ( self.pinion.data['x'] + self.wheel.data['x']) / ( self.pinion.data['z'] + self.wheel.data['z']) * tan( radians(self.pinion.data['alpha_n'])) alpha_wt = arcinvolute(inv) a = ((self.pinion.data['z'] + self.wheel.data['z']) * self.pinion.data['m_n']) / ( 2 * cos(radians(self.pinion.data['beta']))) aw = a * cos(radians(self.pinion.data['alpha_n'])) / cos( radians(alpha_wt)) return aw
def __calculate(self, gear_one, gear_two, rpm_in, rpm_out): if gear_one.m is not gear_two.m: raise Exception("the modulus of the two gears most be equal") else: self.m = gear_one.m if gear_one.alpha is not gear_two.alpha: raise Exception("the pressure angle of the two gears most be equal") else: self.alpha = gear_one.alpha self.alpha_t = gear_one.alpha_t self.u_real = gear_two.z / gear_one.z self.u = rpm_in / rpm_out self.u_error = abs(1 - (self.u_real / self.u)) * 100 inv = involute(gear_one.alpha_t) + 2 * (gear_one.x + gear_two.x) / (gear_one.z + gear_two.z) * tan( radians(gear_one.alpha)) self.alpha_wt = arcinvolute(inv) self.a = ((gear_one.z + gear_two.z) * gear_one.m) / (2 * cos(radians(gear_one.beta))) self.aw = self.a * cos(radians(gear_one.alpha)) / cos(radians(self.alpha_wt)) self.epsilon_alpha = (0.5 * ( sqrt(gear_one.da ** 2 - gear_one.db ** 2) + sqrt(gear_two.da ** 2 - gear_two.db ** 2)) - self.a * sin( radians(self.alpha_wt))) / ( pi * gear_one.m * cos(radians(gear_one.alpha_t)) / (cos(radians(gear_one.beta)))) self.epsilon_beta = gear_one.b * sin(radians(gear_one.beta)) / (gear_one.m * pi) self.epsilon_gama = self.epsilon_alpha + self.epsilon_beta self.v = rpm_in * gear_one.d * pi / 60000 self.ft = 1000. * self.p * 60000 / (pi * gear_one.d * rpm_in) if self.ka * self.ft / gear_one.b < 100: self.fmt = 100 else: self.fmt = self.ka * self.ft / gear_one.b # self.xsum = ((gear_one.z + gear_two.z) * (involute(radians(self.alpha_wt))-involute(radians(self.alpha_t))))/(2*tan(radians(self.alpha))) self.xsum = gear_one.x + gear_two.x self.gear_one = gear_one self.gear_two = gear_two
def __calculate(self, gear_one, gear_two, rpm_in, rpm_out): if gear_one.m is not gear_two.m: raise Exception("the modulus of the two gears most be equals") else: self.m = gear_one.m if gear_one.alpha is not gear_two.alpha: raise Exception("the pressure angle of the two gears most be equals") else: self.alpha = gear_one.alpha self.alpha_t = gear_one.alpha_t self.u_real = gear_two.z / gear_one.z self.u = rpm_in / rpm_out self.u_error = abs(1 - (self.u_real / self.u)) * 100 inv = involute(gear_one.alpha_t) + 2 * (gear_one.x + gear_two.x) / (gear_one.z + gear_two.z) * tan( radians(gear_one.alpha)) self.alpha_wt = arcinvolute(inv) self.a = ((gear_one.z + gear_two.z) * gear_one.m) / (2 * cos(radians(gear_one.beta))) self.aw = self.a * cos(radians(gear_one.alpha)) / cos(radians(self.alpha_wt)) self.epsilon_alpha = (0.5 * ( sqrt(gear_one.da ** 2 - gear_one.db ** 2) + sqrt(gear_two.da ** 2 - gear_two.db ** 2)) - self.a * sin( radians(self.alpha_wt))) / ( pi * gear_one.m * cos(radians(gear_one.alpha_t)) / (cos(radians(gear_one.beta)))) self.epsilon_beta = gear_one.b * sin(radians(gear_one.beta)) / (gear_one.m * pi) self.epsilon_gama = self.epsilon_alpha + self.epsilon_beta self.v = rpm_in * gear_one.d * pi / 60000 self.ft = 1000. * self.n * 60000 / (pi * gear_one.d * rpm_in) if self.ka * self.ft / gear_one.b < 100: self.fmt = 100 else: self.fmt = self.ka * self.ft / gear_one.b # self.xsum = ((gear_one.z + gear_two.z) * (involute(radians(self.alpha_wt))-involute(radians(self.alpha_t))))/(2*tan(radians(self.alpha))) self.xsum = gear_one.x + gear_two.x self.gear_one = gear_one self.gear_two = gear_two
def maxaddendum(self): sa1 = 0.3 sa2 = 0.3 b = 0.20 * self.transmission.m x1 = 0 xmax = 3 xmin1 = self.transmission.gear_one.xmin xmin2 = self.transmission.gear_two.xmin xmin = max([xmin1, xmin2]) xsum = self.transmission.xsum while abs(sa1 - b) >= 1e-10 and abs(sa2 - b) >= 1e-10: x1 = (xmax + xmin) / 2 x2 = -x1 + xsum dy = xsum + 0.5 * (self.transmission.gear_one.z + self.transmission.gear_two.z ) - self.transmission.aw / self.transmission.m da1 = self.transmission.m * ( self.transmission.gear_one.z / cos(radians(self.transmission.gear_one.beta)) + 2 * self.transmission.gear_one.profile.ha_p + 2 * x1 - 2 * dy) da2 = self.transmission.m * ( self.transmission.gear_two.z / cos(radians(self.transmission.gear_one.beta)) + 2 * self.transmission.gear_one.profile.ha_p + 2 * x2 - 2 * dy) # da1 = self.transmission.gear_one.da # da2 = self.transmission.gear_two.da sp1 = self.transmission.m * ( pi / 2 + 2 * x1 * tan(radians(self.transmission.alpha))) sp2 = self.transmission.m * ( pi / 2 + 2 * x2 * tan(radians(self.transmission.alpha))) d1 = self.transmission.gear_one.d d2 = self.transmission.gear_two.d db1 = self.transmission.gear_one.db db2 = self.transmission.gear_two.db alfae1 = acos(db1 / da1) alfae2 = acos(db2 / da2) sa1 = da1 * (sp1 / d1 + involute(self.transmission.alpha) - involute(degrees(alfae1))) sa2 = da2 * (sp2 / d2 + involute(self.transmission.alpha) - involute(degrees(alfae2))) if min([sa1, sa2]) - b > 0: xmin = x1 else: xmax = x1 if x2 < xmin2: x1 = abs(xmin2) self.transmission.gear_one.x = x1 self.transmission.gear_two.x = x2 self.transmission = Transmission(transmission=self.transmission) if self.transmission.epsilon_alpha <= 1.2: break # print(self.transmission.epsilon_alpha) # print(sa1) # print(sa2) return [x1, xsum - x1]