曲柄滑块机构分享

1. 机构简图

2. 实例

3. matlab code

function main
%输入已知数据
clear;
i1=100;
i2=300;
e=0;
hd = pi/180; %一度对应的弧度
du=180/pi; %一弧度对应的度数
omega1=10; %主动件角速度
alpha1=0; %主动件角加速度 %使用子函数计算出曲柄滑块的位置,速度,加速度。
for n1=1:721
theta1(n1)=(n1-1)*hd; %
%调用函数。。。先设计出来吧]
[theta2(n1),xc(n1),omega2(n1),vc(n1),alpha2(n1),ac(n1)]=sli_crank(theta1(n1),omega1,alpha1,i1,i2,e);
end
%图形输出开始。。。
figure(1);
n1=1:720; %绘制位移的图
subplot(2,2,1);
[ax,h1,h2]=plotyy(theta1*du,theta2*du,theta1*du,xc);
set(get(ax(1), 'ylabel'), 'String', '连杆角位移/\circ');
set(get(ax(2), 'ylabel'), 'String', '滑块位移/mm');
title('位移图');
xlabel('曲柄转角\theta_1/\circ');
grid on;
hold on; % set(get(gca, 'PropertyName'), 'PropertyName', PropertyValue); %速度
subplot(2,2,2);
[ax,h1,h2]=plotyy(theta1*du,omega2,theta1*du,vc)
title('速度图');
xlabel('曲柄转角\theta_1/\circ')
ylabel('连杆角速度/rad\cdots^{-1}')
set(get(ax(2), 'ylabel'), 'String', '滑块速度/mm\cdots^{-1}')
grid on;
hold on; %加速度
subplot(2,2,3);
[ax,h1,h2]=plotyy(theta1*du,alpha2,theta1*du,ac)
title('加速度图');
xlabel('曲柄转角\theta_1/\circ')
ylabel('连杆角加速度/rad\cdots^{-2}')
set(get(ax(2), 'ylabel'), 'String', '滑块加速度/mm\cdots^{-2}') grid on;
%绘制位置图
subplot(2,2,4)
x(1)=0;
y(1)=0;
x(2)=i1*cos(70*hd);
y(2)=i1*sin(70*hd);
x(3)=xc(70);
y(3)=e;
x(4)=i1+i2+50;
y(4)=0;
x(5)=0;
y(5)=0;
x(6)=x(3)-40;
y(6)=y(3)+10;
x(7)=x(3)+40;
y(7)=y(3)+10;
x(8)=x(3)+40;
y(8)=y(3)-10;
x(9)=x(3)-40;
y(9)=y(3)-10;
x(10)=x(3)-40;
y(10)=y(3)+10;
i=1:5;
plot(x(i), y(i))
grid on;
hold on;
i=6:10;
plot(x(i), y(i))
title('曲柄滑块机构');
grid on;
hold on;
xlabel('mm');
ylabel('mm');
axis([-50 400 -20 130]);
plot(x(1), y(1),'o')
plot(x(2), y(2),'o')
plot(x(3), y(3),'o')
text(-10,-10,'A')
text(x(2)-15,y(2)+10,'B')
text(x(3),y(3)+20,'C')
gtext('曲柄')
gtext('连杆')
gtext('滑块')
grid on;
hold on; %运动仿真,电影制作
figure(2);
j=0;
for n1 = 1:5:360
j=j+1;
clf;
x(1)=0;
y(1)=0;
x(2)=i1*cos(n1*hd);
y(2)=i1*sin(n1*hd);
x(3)=xc(n1);
y(3)=e;
x(4)=i1+i2+50;
y(4)=0;
x(5)=0;
y(5)=0;
x(6)=x(3)-40;
y(6)=y(3)+10;
x(7)=x(3)+40;
y(7)=y(3)+10;
x(8)=x(3)+40;
y(8)=y(3)-10;
x(9)=x(3)-40;
y(9)=y(3)-10;
x(10)=x(3)-40;
y(10)=y(3)+10;
i=1:3;
plot(x(i), y(i));
grid on;
hold on;
i=4:5;
plot(x(i), y(i))
i=6:10;
plot(x(i), y(i))
plot(x(1),y(1),'o')
plot(x(2),y(2),'o')
plot(x(3),y(3),'o')
text(-10,-10,'A')
text(x(2)-15,y(2)+10,'B')
text(x(3),y(3)-20,'C')
title('曲柄滑块机构');
xlabel('mm');
ylabel('mm');
axis([-150 450 -150 150]);
m(j)=getframe;
end
movie(m,2);
end %返回连杆和滑块的参数
function[theta2,xc,omega2,vc,alpha2,ac]=sli_crank(theta1,omega1,alpha1,i1,i2,e) %计算连杆的角位移theta2和xc
theta2=asin((e-i1*sin(theta1))/i2);
xc=i1*cos(theta1)+i2*cos(theta2); %计算连杆和滑块的参数。。。lazy
A=[ i2*sin(theta2),1;
-i2*cos(theta2),0
];
B=[-i1*sin(theta1);
i1*cos(theta1)];
omega=A\(omega1*B);
omega2=omega(1);
vc=omega(2); %计算连杆和滑块的加速度
AT=[
omega2*i2*cos(theta2),0;
omega2*i2*sin(theta2),0
];
BT=[
-omega1*i1*cos(theta1);
-omega1*i1*sin(theta1)
];
alpha=A\(-AT*omega+alpha1*B+omega1*BT);%反应好慢。。。
alpha2=alpha(1);
ac=alpha(2);
end
%计算用的函数写完了,后面在调一下。 %初步写完,调试一下。

4. 结果

【MATLAB习题】曲柄滑块机构运动学分析的更多相关文章

  1. matlab中运用项目思维分析问题并解决问题

    我们将沿着以下几步思考:1.State the problem关于这个例子陈述问题很简单.我们想写一个判定二元一次方程的程序:是否有两个实根,重复实根,或者两个复数根2.Define the inpu ...

  2. 层次分析法、模糊综合评测法实例分析(涵盖各个过程讲解、原创实例示范、MATLAB源码公布)

    目录 一.先定个小目标 二.层次分析法部分 2.1 思路总括 2.2 构造两两比较矩阵 2.3 权重计算方法 2.3.1 算术平均法求权重 2.3.2 几何平均法求权重 2.3.3 特征值法求权重 2 ...

  3. 并联机构逆运动学用MapleSim符号来解决

    在多体机械中,平台的运动学分析(运动学问题)可以分为两类:正向运动学问题和逆向运动学问题.所谓正向运动学是指研究机构中一点(例如,机械手臂上终端操作机构或由并联机械操纵器支持的平台的中心)在空间中的位 ...

  4. 《量化投资:以MATLAB为工具》连载(2)基础篇-N分钟学会MATLAB(中)

    http://www.matlabsky.com/thread-43937-1-1.html   <量化投资:以MATLAB为工具>连载(3)基础篇-N分钟学会MATLAB(下)     ...

  5. 《量化投资:以MATLAB为工具》连载(1)基础篇-N分钟学会MATLAB(上)

    http://blog.sina.com.cn/s/blog_4cf8aad30102uylf.html <量化投资:以MATLAB为工具>连载(1)基础篇-N分钟学会MATLAB(上) ...

  6. 【分享】Matlab R2015a 发布啦!

    本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Matlab和C#混合编程文章目录:http://www.cnblogs.com ...

  7. 以神经网络使用为例的Matlab和Android混合编程

    由于需要在一个Android项目中使用神经网络,而经过测试发现几个Github上开源项目的训练效果就是不如Matlab的工具箱好,所以就想在Android上使用Matlab神经网络代码(可是...) ...

  8. Matlab的libsvm的安装

    最关键的是compilers的选择(对于把Microsoft visual stdio 2005或者其他的编译器安装在自定义目录下的这一步非常关键)  以下是步骤:>> mex -setu ...

  9. 数据分析系统DIY3/3:本地64位WIN7+matlab 2012b訪问VMware CentOS7+MariaDB

    数据分析系统DIY中要完毕的三个任务. 一.用VMware装64位CentOS.数据库服务端用CentOS自带的就好. 二.数据採集与预处理用Dev-C++编程解决. 三.用本地Win7 64上的MA ...

  10. 四轴飞行器1.4 姿态解算和Matlab实时姿态显示

    原创文章,欢迎转载,转载请注明出处 MPU6050数据读取出来后,经过一个星期的努力,姿态解算和在matlab上的实时显示姿态终于完成了. 1:完成matlab的串口,并且实时通过波形显示数据 2:添 ...

随机推荐

  1. Linux 虚拟机重启找不到IP解决方案

    @ 目录 前言 简介 Linux 操作系统查看不到IP地址 问题描述: 第一步 :修改配置 第二步 :查看ip 第三步 :查看网卡 第四步 :重启网络 ‌Linux 网络服务重启失败解决办法 问题描述 ...

  2. Qt数据库应用20-csv文件转xls

    一.前言 最近又多了个需求就是将csv格式的文件转xls,需求一个接着一个,还好都是真实的需求,而且都是有用的需求,并不是不靠谱的需求,不靠谱的需求就比如程序自动识别手机壳颜色自动换背景颜色或者边框颜 ...

  3. Qt数据库应用5-海量数据多线程导出

    一.前言 做数据导出,少量的数据比如10W级别以下的,基本上直接占用主线程也是很快的就可以处理完,上了百万级别的数据量以后,就会发现性能极速下降,很容易卡主整体界面,于是这部分处理必须要用到线程,本数 ...

  4. 关于Qt数据库相关开发的一些经验总结

    一.前言 近期花了两个多月时间,将数据库相关的代码重新封装成了各种轮子(这条路必须打通,打通以后,相关项目只需要引入这个组件pri即可),测试了从Qt4.7到Qt6.1的各种版本,测试了odbc.sq ...

  5. java通过apache poi框架读取2007版Excel文件

    java系读写excel文件既可以用jxl库,也可以用POI库,但是,jxl库只支持低版本的excel2003,不支持更高版本,无法直接输出*.xlsx文件,只能输出*.xls文件,另外,更新也不频繁 ...

  6. JavaScript 数组展平方法: flat() 和 flatMap()

    从 ES2019 中开始引入了一种扁平化数组的新方法,可以展平任何深度的数组. flat flat() 方法创建一个新数组,其中所有子数组元素以递归方式连接到特定深度. 语法:array.flat(d ...

  7. 解决Playwright访问https证书问题

    # 参数说明 ignore_https_errors=True 访问https地址解决安全证书 viewport={"width": 1920, "height" ...

  8. 单片机的主程序中为什么都要加一个while(1)?

    *** * C51 为什么都要加一个while(1)?****** while(1)的作用: while(1) 是一个死循环 为了不让代码继续向下执行. 单片机中使用while(1),大部分:为了防止 ...

  9. java多线程与线程池-copy

    1. 场景描述 以前多线程也常用,这次因需再页面上用到多线程,如下图,总结下,有需要的朋友可以参考下. 2. 解决方案 2.1 线程池概念 线程池官方定义不说了,通俗说下:池子的概念,事先(预定义)创 ...

  10. 分布式文件系统KFS基础知识介绍

    Kosmos distributed file system,简称KFS,是一个类GFS的分布式文件系统,被设计用于分布式的结构化存储.下面将对KFS的体系结构进行简单介绍,最后给出一个使用KFS C ...