主題: 圓筒壓縮彈簧力之計算前言: 在幾個有關solidworks論壇看到有關彈簧,幾乎皆在討論作圖法,深深有感對一個機械設計者來說不但要學好正確理想的作圖法,減少製圖錯誤或是節省作圖時間,但最主要的 ,設計者更應該知道設計的彈簧力量及在工作範圍的壓縮尺寸是否適用,這就是引發本人做這個巨集(宏)的用意,期望這個分享能引起經驗豐富的機械工程大師,更能把自身的十八般武藝和知識傳承給需要者.
彈簧力計算公式: 參數: 線徑 d(mm) , 節圓直徑 D(mm) , 有效圈數 N , 彈簧常數 k(kg/mm) , 彈簧壓縮量 s(mm) , 彈簧力 P(kg), 材料橫向彈性係數 G(kg/mm2) ,各種材料的G值如附圖1.
操作說明: 1. 把Bass,Press Plate兩個零件一個組件及spring force.swp編程存在同一個 檔案夾路徑,再開啟 組件檔. 2. 進入Spring零件"3D草圖1"的編輯狀況,點選"彈簧螺旋曲線,如圖2. 3. 點選上面功能列 [工具]-[巨集]-[執行],叫出"sprintforce.swp"VBA編程. 4. 操作注意事項 * 按下[加負載]或是[未加負載]之按鈕前,皆須作第2項之操作. * 在自訂表單輸入每筆資料後須跳出該TextBox或按"Enter"鍵離開 5. 自訂表單內名稱定義說明: 有效圈數-可以有效的變形圈數 , 彈簧高-有效圈數上下線徑的中心高.
彈簧力及壓縮量之分析:
參考圖3,當加壓到”壓縮量”接近”最大可壓縮量”時,負載欄的值,就是彈簧 理想的”最大受力負載”,也就是在加壓下去,可能彈簧壓死了,就算沒壓死, 也有可能變形壓縮量和負載,就不是依照”虎克定律(Hooke'slaw )”兩者是成線性變化了,最大可壓縮量一般是取彈簧自由長的0.3~0.35倍,若是不得已受空間所限,我是取 (彈簧自由長-壓死長度)*0.9 [僅作參考]
VBA巨集(部分參考):
' ******************************************************************************' ' macro compile on 05/18/2013 V001.00 by scliang ' 彈簧力計算螺線依數學方程式 '******************************************************************************
Dim swApp As ObjectDim Part As ObjectDim boolstatus As BooleanDim longstatus As Long, longwarnings As Long
Sub run_()
Set swApp = Application.SldWorksSet Part = swApp.ActiveDocWith UserForm1
Dim equationDriveCurve As Object '宣告方程式驅動曲線為物件Dim myModelView As Object '宣告模組視圖為物件Dim wire_dim As Double '宣告線徑為雙精度 mmDim pitch_dim As Double '宣告節圓直徑為雙精度 mmDim coil_num As Double '宣告有效圈數為雙精度Dim spring_hig As Double '宣告彈簧高度為雙精度 mmDim spring_pitch As Double '宣告彈簧節距為雙精度 mmDim spring_compression As Double '宣告彈簧壓縮量為雙精度 mmDim G As Double '宣告材料橫向彈性係數為雙精度 kg/mm^2Dim k As Double '宣告彈簧常數為雙精度 kg/mmDim load_ As Double '宣告彈簧負載為雙精度 kg
wire_dim = CDbl(.TextBox3.Value)pitch_dim = CDbl(.TextBox4.Value)coil_num = CDbl(.TextBox5.Value)spring_hig = CDbl(.TextBox6.Value)
If .CommandButton1.BackColor = vbYellow Thenload_ = CDbl(.TextBox1.Value)G = CDbl(.TextBox8.Value)k = CDbl(.TextBox9.Value)spring_compression = load_ / kspring_hig = spring_hig - spring_compression
End If
Part.EditDelete '刪除螺旋線
'輸入 數學關係式Set equationDriveCurve = Part.SketchManager.CreateEquationSpline2(pitch_dim / 2 & "*cos(t)", spring_hig / coil_num & "*(t/(2*pi))", _pitch_dim / 2 & "*sin(t)", "0", coil_num * 2 & "*pi", False, 0, 0, 0, True, True)Set myModelView = Part.ActiveViewmyModelView.RotateAboutCenter 0, 0
'解除方程式可能之錯誤boolstatus = Part.Extension.SelectByID2("Point3", "SKETCHPOINT", pitch_dim / 2 / 1000, 0, 0, False, 0, Nothing, 0) '選取彈簧起點座標Part.SketchAddConstraints "sgFIXED" '設起點為固定
'設定尺寸變數Set myDimension1 = Part.Parameter("D1@草圖1@Spring^組件.Part") '線徑變數Set myDimension2 = Part.Parameter("D2@草圖1@Spring^組件.Part") '節圓直徑變數Set myDimension3 = Part.Parameter("D1@平行相距1") '彈簧高變數Set myDimension4 = Part.Parameter("D1@草圖1@Press Plate.Part") '定義壓板邊長之變數Set myDimension5 = Part.Parameter("D1@填料-伸長1@Press Plate.Part") '定義壓板板厚之變數
myDimension1.SystemValue = wire_dim / 1000 '線徑myDimension2.SystemValue = pitch_dim / 2 / 1000 '線徑之X座標為節圓半徑
Part.EditAssembly '編輯組件myDimension3.SystemValue = spring_hig / 1000 '彈簧高myDimension4.SystemValue = pitch_dim * 1.6 / 1000 '壓板邊長為節圓直徑*1.6myDimension5.SystemValue = IIf(pitch_dim > 30, 0.016, 0.01) '壓板板厚計算
boolstatus = Part.EditRebuild3() '重新計算boolstatus = Part.SetUserPreferenceToggle(swUserPreferenceToggle_e.swViewDisplayHideAllTypes, True) '隱藏所有類型End WithEnd Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
附上原始檔2012版,使用前請詳看"操作注意"WORD檔
|