Пример #1
0
    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]
Пример #2
0
 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
Пример #3
0
 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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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]