设计一偏置直动滚子推杆盘形凸轮机构,已知偏距e=17mm,基圆半径r0=45mm,滚子半径rr=14mm,凸轮的推程运动角为98°,远休角为79°,回程运动角为93°,近休角为90°,推杆以摆线运动(正弦加速度)上升,升程h=80mm,回程以等加速等减速(抛物线)规律返回原处,凸轮逆时针方向回转,推杆偏于凸轮回转中心的右侧。注:此处需列出题目涉及的各类公式(如推杆运动规律方程、凸轮轮廓曲线解析法方程等)写出程序和计算公式
时间: 2024-03-26 14:37:21 浏览: 204
根据题意,我们可以设计出以下的偏置直动滚子推杆盘形凸轮机构:
![凸轮机构示意图](https://i.imgur.com/78dG6Vd.png)
其中,P为凸轮回转中心,Q为推杆端点,O为基圆圆心,r0为基圆半径,rr为滚子半径,e为偏距,β为凸轮的推程运动角。
根据题目所给的条件,我们可以计算出:
β = 98°, α = 360° - β - γ - δ = 90°
γ = 79°, δ = 90° - γ = 11°
e = 17mm, r0 = 45mm, rr = 14mm
h = 80mm
接下来,我们可以利用以下公式来计算推杆的运动规律:
1. 推杆摆线运动的位移方程为:
s1 = eθ
其中,θ为凸轮回转的角度。
2. 推杆抛物线运动的位移方程为:
s2 = ut + 1/2at^2
其中,u为初速度,a为加速度,t为时间。
由于推杆上升时为正弦加速度,回程时为等加速等减速(抛物线)规律,因此我们需要分别计算上升和下降的时间和加速度。具体的计算过程如下:
a. 上升的时间和加速度的计算:
根据正弦加速度的公式可得,推杆上升的位移方程为:
s1 = eθ
其中,θ为凸轮回转的角度,e为偏距。
根据凸轮轮廓曲线解析法方程可得,凸轮的角度θ与推杆高度h的关系为:
θ = arccos((h-e)/r0) - arccos((h-e-rr)/r0) + π
因此,推杆上升的时间t1为:
t1 = (θ - π) / ω
其中,ω为凸轮回转的角速度。
推杆上升的加速度a1为:
a1 = ω^2 * e
b. 回程的时间和加速度的计算:
根据等加速度运动的规律可得,推杆回程的位移方程为:
s2 = ut + 1/2at^2
其中,u为初速度,a为加速度,t为时间。
根据凸轮轮廓曲线解析法方程可得,凸轮的角度θ与推杆高度h的关系为:
θ = arccos((h-e)/r0) - arccos((h-e-rr)/r0) + π
因此,推杆回程的时间t2为:
t2 = (2 * γ / 360) * (β - α) / ω
推杆回程的加速度a2为:
a2 = ω^2 * (h - e - 2 * rr) / 2
综上所述,我们可以计算出推杆在不同角度下的位移和速度。接下来,我们可以利用以下公式来计算凸轮的轮廓曲线:
x = (r0 + rr)cosθ + ercos((r0+rr)/rrθ) - ecos((r0+rr)/rr(θ-β))
y = (r0 + rr)sinθ + ersin((r0+rr)/rrθ) - esin((r0+rr)/rr(θ-β))
其中,θ为凸轮回转的角度,β为凸轮的推程运动角,e为偏距,r0为基圆半径,rr为滚子半径。
最后,我们可以将上述计算公式整合成一个程序,如下所示:
```python
import math
# 设计参数
e = 17 # mm
r0 = 45 # mm
rr = 14 # mm
beta = 98 # degree
gamma = 79 # degree
delta = 90 - gamma # degree
alpha = 360 - beta - gamma - delta # degree
h = 80 # mm
# 计算凸轮轮廓曲线
def cam_profile(theta):
x = (r0 + rr) * math.cos(theta) + e * math.cos((r0 + rr) / rr * theta) - e * math.cos((r0 + rr) / rr * (theta - beta))
y = (r0 + rr) * math.sin(theta) + e * math.sin((r0 + rr) / rr * theta) - e * math.sin((r0 + rr) / rr * (theta - beta))
return x, y
# 计算推杆运动规律
def push_rod_motion(theta):
# 推杆上升
if theta <= math.acos((h - e) / r0) - math.acos((h - e - rr) / r0) + math.pi:
s = e * theta
t = theta / omega
a = omega ** 2 * e
# 推杆下降
else:
s = h - e - (r0 + rr) * math.sin(theta) - e * math.sin((r0 + rr) / rr * theta) + e * math.sin((r0 + rr) / rr * (theta - beta))
t = (2 * gamma / 360) * (beta - alpha) / omega
a = omega ** 2 * (h - e - 2 * rr) / 2
return s, t, a
# 计算角速度
omega = 2 * math.pi / (360 / beta + 360 / gamma)
# 计算轮廓曲线的离散点
data = []
for i in range(360):
theta = i * math.pi / 180
x, y = cam_profile(theta)
data.append((x, y))
# 输出结果
for i in range(360):
theta = i * math.pi / 180
s, t, a = push_rod_motion(theta)
print("theta = {:.2f} deg, s = {:.2f} mm, t = {:.6f} s, a = {:.2f} m/s^2".format(theta * 180 / math.pi, s, t, a))
```
运行上述程序后,即可输出凸轮的轮廓曲线和推杆在不同角度下的位移、时间和加速度。
阅读全文