本文摘要(由AI生成):
文章主要介绍了低碳钢拉伸实验的数据处理和绘制过程。首先,通过拉伸实验可以建立重要的力学概念,并处理实验数据绘制应力应变曲线,这是力学专业学生的必备技能。实验中使用标准拉伸试件和试验机,测量拉力和应变,得到应力极限、弹性模量、屈服极限、强度极限等力学量。常规试验机软件可以实时绘制应力应变曲线,并提供简单分析功能。然而,为了撰写文章或报告,需要使用专业绘图软件如MATLAB来处理数据并绘制更美观、规范的曲线图。文章还详细介绍了使用MATLAB绘制包含局部放大图、标注关键力学量和拟合弹性模量的应力应变曲线的具体步骤和方法。
低碳钢的拉伸实验是材料力学中最先接触的一个实验,这个实验虽然简单,却可以帮助初学者建立许多重要的力学概念。拉伸实验也是力学测试中最常做的一个实验,能够处理拉伸实验的数据并将其绘制成曲线,是力学专业学生的必备本领。
做拉伸实验时,将图 13-1 所示的低碳钢标准拉伸试件,夹持在图 13-2 所示的试验机的拉伸夹头上并对其施加拉力,用载荷传感器测量施加的拉力,用引伸计测量试件的应变。整个实验场景如图 13-3 所示。
图 13-1 标准拉伸试件
图 13-2 拉伸试件加持在两个夹头中间
图 13-3 拉伸试验场景
拉伸实验最主要的实验数据是应力极限、弹性模量、屈服极限、强度极限等力学量,还可观察屈服、强化等变形阶段的行为。 目前常规的试验机控制软件一般会实时绘制应力应变曲线 (图 13-4) ,有的甚至还提供简单的分析功能,如拟合弹性模量等。
图 13-4 试验机软件得到的应力
但是,直接用上述曲线图撰写文章或报告基本是不可行的。首先,与专业绘图软件作出的图相比,这些曲线图是不够美观的(如图 13-4 和图 13-5 的对比) ,且其标注等常不符合规范;其次,如果想往这类图中加一些素材,如加入某部分的放大曲线等是不可能的;最后,要想在报告或文章中利用这类图,只能通过拷屏生成位图,而用位图表达的曲线,其印刷质量一般比较差。鉴于上述原因,有必要掌握分析实验数据并绘制曲线的技能。一般的试验机软件均提供数据导出功能,用 MATLAB 完全可以达到上述目的。 下一节针对一个具体的实验,介绍用 MATLAB 处理并绘制实验曲线的具体过程。
13.2.1 目标及要求
本部分数据处理针对低碳钢拉伸实验进行,其目标是利用试件机导出的数据文件绘制一个如图 13-5 所示的曲线图。仔细观察这个曲线图,可以发现三个主要特点:首先,曲线的标注明晰且丰富,除了标注必要的坐标信息外,材料的屈服、强度极限等均标注在合适的位置;其次,在曲线图的空白位置嵌入了一个局部放大图,更清楚地显示了弹性变形阶段和屈服初期试件的变形;最后,用拟合的方法计算出了材料的弹性模量,并标注在曲线上。
图 13-5 最终的应力
这样的图,信息量非常丰富,且合理利用了空间,显不出拥挤,因此是文章或报告中常用的图。要绘制这样的图,必须用带有数据处理功能的绘图软件。
下面介绍如何用 MATLAB 实现图 13-5 的绘制。
13.2.2 具体实现过程
(1) 读取数据
读取“应力应变数据.txt”文件中的应力应变数据,将其赋值给变量 stress 和strain。
(2) 绘制整体应力
绘制整体应力-应力曲线,标注 x, y 轴的名称、字体,结果如图 13-6 所示。
图 13-6 绘制整体应力
(3) 计算强度极限并标记在曲线上
使用 max 函数找到应力最大值点的应力(强度极限)和对应的应变,将其绘制在曲线上。 使用 text 函数和 annotation 函数标注数值。 中间曲线如图 13-7 所示。
下面对上述两个用于标注的命令做简单的介绍。
句法
text(x,y,'string')
说明
text 函数可以在坐标轴中创建一个文本框。
x,y:文本框的位置。
string:欲输入的文本框的内容。
句法
annotation('arrow',x,y)
说明
annotation 函数可以在坐标轴中创建一个箭头对象。
x,y:文本框的位置。
图 13-7 在曲线上标注出强度极限后的结果图
(4) 选取应力-应变曲线的线性段数据并放大显示
建立一个新的坐标轴并设定其位置, 选取应力-应变曲线的线性段数据, 将其显示在新的坐标轴中,同时还可以将该段的应力最大值(比例极限)和对应应变值找出并进行标注,如图 13-8 所示。
(5) 拟合
拟合所得数据得到材料的弹性模量,将此数值标注在曲线旁。同时还可以将拟合数据绘制在曲线中与原始数据对比。另外,还可以计算线性段数据的线性相关系数,同样也可以标注在曲线旁,最终的曲线如图 13-5 所示。下面对用于拟合polyfit 命令的用法做简单的介绍。
图 13-8 添加放大显示后的曲线图
句法
p = polyfit(x,y,n)
说明
polyfit 函数可以对两数据进行多项式拟合。
x,y:欲拟合的数据。
n:多项式的阶次。
实现低碳钢拉伸实验数据处理及绘制的具体程序范例如下。
%==================================================================% %% LowCarbonResultPlot.m %% 本程序用于绘制一条标注明晰,含有局部放大图的低碳钢拉伸应力-应变曲线 %==================================================================% close all clear all clc %% 读取数据 data = load('应力应变数据.txt','-ascii'); % 读取数据 stress = data(:,1); strain = data(:,2); %% 绘制整体曲线 figure plot(strain,stress,'k','linewidth',5) % 绘制应力-应变曲线 xlabel('应变','fontsize',18) % 设置 x 轴名称 ylabel('应力(MPa)','fontsize',18) % 设置 y 轴名称 set(gca,'xlim',[0 0.43]) % 设置 x 轴显示范围 set(gca,'fontsize',18) % 设置坐标轴显示字体 hold on % 标注强度极限 sigmaB = max(stress); % 读取强度极限点的应力值 strain_sigmaB = strain(stress==sigmaB); % 读取强度极限点的应变值 plot(strain_sigmaB,sigmaB,'o','markersize',10,'markeredgecolor','k', 'markerfacecolor','r','linewidth',2) % 在应力-应变曲线上绘制强度极限点 s1 = strcat('\sigma_{b}=',int2str(sigmaB),'MPa'); % 生成强度极限标注字符串 text(0.25,375,s1,'fontsize',18) % 以文本框方式标注强度极限值 annotation('arrow', [0.62 0.60],[0.76 0.81]); % 绘制指向箭头 %% 放大绘制局部曲线 strain_E = 1e6*strain(strain<0.031); % 从整体应变数据中选取线性段的应变数据 stress_E = stress(strain<0.031); % 从整体应力数据中选取线性段的应力数据 rectangle('position',[0 0 0.05 400],'edgecolor','m') %标注用于放大的区域 annotation('arrow',[0.23 0.36],[0.46 0.56],'color','m'); % 绘制指向箭头 h = axes('position',[0.42 0.25 0.35 0.35]); % 生成一个新的坐标轴用于绘制放大的曲线 plot(strain_E,stress_E,'k','linewidth',2) % 在新的坐标轴里绘制线性段应力-应变曲线 xlabel('应变(με)','fontsize',10) % 设置 x 轴名称 ylabel('应力(MPa)','fontsize',10) % 设置 y 轴名称 set(gca,'fontsize',10) % 设置坐标轴显示字体 set(h,'xlim',[0 0.005e6]) % 设置 x 轴显示范围 % 标注比例极限 sigmaP = max(stress_E); % 读取比例极限点的应力值 strain_sigmaP = strain_E(stress_E==sigmaP); % 读取比例极限点的应变值 plot(strain_sigmaP,sigmaP,'o','markersize',7,'markeredgecolor','k',' markerfacecolor','b','linewidth',2) % 在应力-应变曲线上绘制比例极限点 s2 = strcat('\sigma_{p}=',int2str(sigmaP),'MPa'); % 生成比例极限标注字符串 text(2300,350,s2,'fontsize',14); % 以文本框方式标注比例极限值 % 拟合计算线性段弹性模量并标注在曲线上 E = polyfit(strain_E(strain_E<1000),stress_E(strain_E<1000),1); % 拟合线性段数据 stress_E_N = polyval(E,strain_E); % 使用拟合参数计算新的应力 plot(strain_E,stress_E_N,'m','linewidth',1) set(h,'ylim',[0 400]) % 设置 x 轴显示范围 s1 = strcat('E=',int2str(E(1)),'GPa'); % 生成标注字符串 corrC=corrC(strain_E(strain_E<1000),stress_E(strain_E<1000)); % 计算线性相关系数 s2 = strcat('Corr=',num2str(corrC(1,2))); % 生成标注字符串 text(2500,250,s1,'fontsize',14); % 以文本框方式标注弹性模量值 text(2000,50,s2,'fontsize',14); % 以文本框方式标注弹性模量值