2020-12-24

该博客详细介绍了如何使用MATLAB的ODE45函数求解齿轮传动系统的动力学方程。通过定义odefun函数,计算了小齿轮和大齿轮的角位移和角速度,并分析了传动效率。代码展示了时间、角位移和传动误差的图形输出,以及关键参数如接触点半径和传动误差随时间的变化。
摘要由CSDN通过智能技术生成

关于ODE45积分器的一些代码实现:

[t,theta]   = ode45(@(t,theta) odefun(t,theta,omega_pz,GearSet,slices_num,k_single,J_wz,r_wb,Tin,Transmission_ratio), t_span, [theta_wz_0,omga_wz_0]);%%注意这里的t是系统自动变化的
% out         = [t,theta];
% legend('wheel theta in rad','omega in rad per s','pinion theta in rad')

legend('wheel theta in rad','pinion theta in rad')

% plot(1:length(t)/381:length(t),t*omega_pz,'-o')
figure(3)
TE=(Pinion_ang-Wheel_ang*Transmission_ratio)*db(1)/2*1e3;%[um]
plot(t,TE)
xlabel('Time in s')
ylabel('TE in um')


%%
function theta_dt = odefun(t,theta,omega_pz,GearSet,slices_num,k_single,J_wz,r_wb,Tin,Transmission_ratio)%%注意这里的t是系统自动变化的
    r_pz_all    = [];
    r_wz_all    = [];
    delt_L      = [];
    dir = Tin/abs(Tin)
    theta_input = dir*(omega_pz*t)*180/pi%这里输入是degree
    Points_data = Cal_Contact_Points_th_Fun(GearSet,slices_num,theta_input);
    r_pz_all    = Points_data(:,4);%小齿轮 接触点半径
    r_wz_all    = Points_data(:,5);%大齿轮接触点半径
    for i = length(r_pz_all)
        delt_L(i,1) = omega_pz*t*r_pz_all(i,1)-theta(1)*r_wz_all(i,1);%%注意这里的t是系统自动变化的
        if delt_L(i,1)>0
            delt_L(i,1)=delt_L(i,1);
        else
            delt_L(i,1)=0;
        end
    end
    theta_dt    = zeros(2,1);
    theta_dt(1) = theta(2);%θ的一阶导数是ω这里的theta(2)是角速度
    theta_dt(2) = (-dir*k_single*sum(delt_L)*r_wb/J_wz+Tin*Transmission_ratio/J_wz);%θ的二阶导数是α
    figure(1)
    hold on
    plot(t,(-dir*k_single*sum(delt_L)*r_wb/J_wz+Tin*Transmission_ratio/J_wz),'or','MarkerSize',10,'MarkerFaceColor','r')
    xlabel('time in s')
    ylabel('T_e_x in Nmm')
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值