2015년 4월 14일 화요일

리드스크류를 돌리는 모터에 필요한 토크를 계산하는 SageMath 스크립트

리드스크류를 돌리는 모터에 필요한 토크를 계산하는 SageMath 스크립트


위 그림과 같은 경우를 상정한 것이다.
모터가 받는 부하는
(1)스크류 자체에서 발생하는 손실에 의한 것
(2) 질량체가 바닥면과 마찰할 때 발생하는 손실에 의한 것
(3) 인위적으로 축 방향으로 외력을 주는 것

이상 3가지 경우가 고려되어 있다.
마찰계수 등을 조절하면서
변화 양상을 한 눈에 파악하기 위해 작성된 스크립트이다.


이곳에도 올려 두었다.






#########################################
# How much Lead Screw Torque V04 (English)
# 20150415 DH,Kim
# dymaxion.kim@gmail.com
#########################################

html('<center> <img src="http://ed.co.kr/images/ci.gif"> <br>')
html('<center> <font size=2> <b>20150415 by DH,Kim</b> </font> <br>')
html('<center> <font size=5> <b>How much Lead Screw Torque? V04 (English)</b> </font> <br><br>')

@interact
def GearParameter(
    Fi = slider(0,50,0.1,10.0,'Axial Force on Screw Nut [kgf]'),
    us = slider(0,0.5,0.01,0.1,'Friction Factor on Screw Nut'),
    W = slider(0,10,0.01,0.1,'Mass on Screw [kgf]'),
    uw = slider(0,0.5,0.01,0.1,'Friction Factor between Mass and Ground'),
    D = slider(0.1,10,0.1,3.5,'Pitch Diameter of Screw [mm]'),
    P = slider(0.1,5,0.1,0.7,'Pitch of Screw [mm]')
    ):

    ### Physical Constant
    g = 9806.65 # Gravity Acceleration [mm/s^2]

    ### Axial Force
    F = 50 # Max Axial Force on Screw Nut in [kgf]
    F_total = F + uw*W # Total Axial Force [kgf]
    Fi_total = Fi + uw*W # Total Axial Force [kgf]

    ### Screw (ref : http://www.engineersedge.com/hardware/metric-external-thread-sizes1.htm )
    R = D*pi # Lead of Screw [mm]
    alpha = atan(P/R)  # Lead Angle of Screw [Rad]
    nu = (1-us*tan(alpha))/(1+us/tan(alpha)) # Efficiency of Screw

    ### Torque in [kgf.cm]
    T = F_total*R/(2*pi*nu)  # Torque in [kgf.mm]
    T = T*0.1  # Torque in [kgf.cm]
    Ti = Fi_total*R/(2*pi*nu)  # Torque in [kgf.mm]
    Ti = Ti*0.1  # Torque in [kgf.cm]
    
    t = var('t')
    DATA = parametric_plot( (t/1000,(0.1*(t+uw*W)*R/(2*pi*nu))/1000), (t,0,int(F_total)*1000), axes_labels=['Total Axial Force\n$[kgf]$','Screw Torque\n$[kgf.cm]$'])
    DATA += line([(Fi_total,0), (Fi_total,Ti)], color='red')
    DATA += line([(0,Ti), (Fi_total,Ti)], color='red')
    DATA += point((Fi_total,Ti), color='green', size=100)
    Ti = float(Ti)
    html(r'<center>$Given\ Total\ Axial\ Force = %s [kgf]$<br>'%latex(Fi_total))
    html(r'<center>$Required\ Screw\ Torque = %s [kgf.cm]$'%latex(Ti))
    show(DATA, figsize=7, aspect_ratio='automatic', gridlines='automatic')
    





댓글 없음:

댓글 쓰기