使用电子千分之测量泵箱推进线性

📅 2026/6/28 4:00:37
使用电子千分之测量泵箱推进线性
简 介本文介绍了利用电子千分尺测量泵箱步进位移的线性度实验。通过串口读取数据分析了泵箱运动中的非线性误差。实验分为两次测量第一次因安装问题导致数据非线性第二次调整后获得良好线性结果。进一步测量1000步数据发现误差呈现周期性波动。实验结果以图表形式展示了测量数据、线性拟合及误差分布情况为后续误差分析提供了基础数据。相关技术细节可参考电子千分尺的数据读取方法。关键词泵箱电子千分尺读取电子千分尺的数据01【泵箱】一、测量背景刚才测试了电子签名室读取的协议 下面将它安装在泵腔上 使用串口读取千分尺测量的位移数据 这样可以分析泵箱步进过程中的非线性误差 下面利用这个装置来进行自动测量。二、测量结果下面通过Python 编程 测量每个泵箱步进之后的千分尺的读数。 总共测量100个数据。 第一次读数显示测量数据呈现开始的非线性 这有可能是泵箱与千分尺之间没有卡紧。 再测量一次 可以看到这一次所得到的数据线性非常好。 对它进行线性拟合。—— 可以获得误差的波动变化。 显示了周期性的波动。▲ 图1 第一次测量数据▲ 图2 第二次测量结果▲ 图1.3 误差变化测量1000步千分尺的数据。 计算线性误差分布范围。 整体上存在着周期性的波动。 关于这些误差的来源 后面再进行分析吧。▲ 图1.4 测量1000步的数据▲ 图1.5 线性误差分布※总结 ※本文利用电子千分尺测量泵箱的步进距离线性度。 关于相关的误差后面再进行进一步的分析。#!/usr/local/bin/python# -*- coding: gbk -*-## TEST1.PY -- by Dr. ZhuoQing 2026-06-08## Note:#fromheadmimport*importserialfrom_astimportOrfromserial.serialutilimportSerialExceptionimportserialfrom_astimportOrfromserial.serialutilimportSerialExceptionimportserialfrom_astimportOrfromserial.serialutilimportSerialExceptionimportserialfrom_astimportOrfromserial.serialutilimportSerialException#------------------------------------------------------------#------------------------------------------------------------cportserial.Serial()cport.baudrate115200cport.timeout0.05try:cport.portCOM4except:printf(Set cport port COM5 error. )try:cport.open()exceptserial.serialutil.SerialException:printf(Open cport port COM5 error.)else:printf(Open cport port COM5 Ok.)#------------------------------------------------------------#------------------------------------------------------------xyzserial.Serial()xyz.baudrate9600xyz.timeout0.05try:xyz.portCOM5except:printf(Set xyz port COM4 error. )try:xyz.open()exceptserial.serialutil.SerialException:printf(Open xyz port COM4 error.)else:printf(Open xyz port COM4 Ok.)#------------------------------------------------------------defxyzread():xyz.write(bR)rxyz.read(20)printf(r)rsstr(r).split( )[-1].strip()ifstr(r).find(-)0:return-float(rs)returnfloat(rs)#------------------------------------------------------------imgdirrd:\temp\imgdataddim[]foriinrange(1000):cport.write(bm u 1\r)time.sleep(0.5)# fname os.path.join(imgdir, %d.jpg%i)# tspsavecutimage(fname)xxyzread()printff(i,x)ddim.append(x)tspsave(data,ddimddim)plt.plot(ddim,lw3)plt.xlabel(N,colorsteelblue,fontsize24)plt.ylabel(Data,colorsteelblue,fontsize24)plt.grid(True,whichboth,linestyle--,alpha0.7)plt.tight_layout()plt.show()#------------------------------------------------------------printf(\a)#------------------------------------------------------------# END OF FILE : TEST1.PY##!/usr/local/bin/python# -*- coding: gbk -*-## TEST2.PY -- by Dr. ZhuoQing 2026-06-27## Note:#fromheadmimport*fromscipy.optimizeimportcurve_fit ddimtspload(data,ddim)deflinefun(x,a,b):returna*xb param((ddim[-1]-ddim[0])/len(ddim),ddim[0])Narray(list(range(len(ddim))))param,convcurve_fit(linefun,N,ddim,p0param)printf(param)dfitlinefun(N,*param)err[d1-d2ford1,d2inzip(ddim,dfit)]plt.plot(N,err,lw3)#plt.plot(N, dfit, lw3)plt.xlabel(N,colorsteelblue,fontsize24)plt.ylabel(Error,colorsteelblue,fontsize24)plt.grid(True,whichboth,linestyle--,alpha0.7)plt.tight_layout()plt.show()#------------------------------------------------------------# END OF FILE : TEST2.PY#■ 相关文献链接:读取电子千分尺的数据● 相关图表链接:图1 第一次测量数据图2 第二次测量结果图1.3 误差变化图1.4 测量1000步的数据图1.5 线性误差分布