跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
工场FAQ
工场大事记
工场文化
工场设备
正版软件
工场云服务
及时更新我
最近更改
如何使用Wiki?
工场百科
搜索
搜索
登录
个人工具
登录
查看“给数控铣DIY刚性攻丝功能”的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
←
给数控铣DIY刚性攻丝功能
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[文件:刚性攻丝高速摄影.gif|无|缩略图|Rigid Tapping!!!]] ==Intro== 我们都在金工实习时学过攻丝(Tapping),就是用一个带有螺纹形切削刃的工具在工件上切出螺纹来。做内螺纹的工具叫丝锥,做外螺纹的叫板牙。 [[文件:12Tapping copper nut.JPG|无|缩略图|用T形扳手和丝锥攻丝]] 与手工工作相比,数控机床在批量制造零件时具有较高的效率和一致性。数控铣床刚性攻丝(Rigid Tapping)的过程有三步:主轴正转将丝锥旋入预先钻好的孔,到达预定深度后主轴停止,最后反转将丝锥退出工件。 [[文件:Milling-machine-spindle-rigid-tapping-2.jpg|无|缩略图|刚性攻丝(Rigid Tapping)过程示意]] 值得注意的是,丝锥在工件内时,包括中间的减速和反转,Z轴的平动和主轴的转动要同步:主轴转一圈,Z轴运动一个螺距,不然丝锥分分钟断给你看。这就需要一个传感器不停地给数控系统报告主轴的转动角度,一般我们会用光电编码器或者磁编码器。正因为多了这么个传感器,数控机床厂就有理由把刚性攻丝当作一个高附加值的Feature,能够刚性攻丝的数控铣要贵很多。实验室的小破数控铣就没有这个功能,经过一番调研,我决定DIY一个光电编码器。 可能有同学想问,主轴的转速不是预先设定好的吗?按照转速移动Z轴不就行了?嘿嘿,我想说,有个东西叫累计误差(或者积分误差、累积误差,随你怎么叫),而且中间的加减速过程不好解决。 ==Planning== === 关于光电编码器 === 正交光电旋转编码器(Optical Quadrature Rotary Encoder)由三个红外对射光电传感器和一个码盘组成。码盘圆周上有等分的空缺,光电传感器会因为空缺打通了光路而发出信号。 [[文件:正交光电旋转编码器正在工作.gif|无|缩略图|这是完成后的主轴编码器。左上的锯片被当作镜子,用来看到B相传感器的指示灯。Z相传感器比另外两个要靠近中心,所以只有那个较深的缺口能触发它。]] 我们把三个光电传感器分别叫做A、B和Z。A和B的光路放置在等分空缺经过的圆周上,相位差为90°或-90°(“正交”即为此意)。Z的光路放置在码盘一周唯一的空缺会经过的圆周上,给每一圈旋转确定起始位置。这样,主轴旋转时A、B、Z的输出信号应该长这样儿: [[文件:Incremental pulse-diagrama-b-z.jpg|无|缩略图|正交信号。/A、/B、/Z分别是A、B、Z取反。]] 这样,我们不仅可以根据信号脉冲的个数推断主轴的角位移,还可以根据AB相的相位差推测主轴的旋转方向。 调研后我决定使用欧姆龙的EE-SX-677-WR/EE-SX-676-WR传感器,并且把码盘安装在主轴上方,也就是这里: [[文件:Where-spindle-encoder-will-be-installed.jpg|无|缩略图|即将安装主轴编码器的地方]] 因为这篇文章是事后诸葛亮,图里可以看见大螺母上已经被我做了两个M4的螺纹孔,用于安装码盘。 === 测量尺寸 === 从上图可以看出安装编码器的位置比较狭小,要用游标卡尺测出各个需要的尺寸非常困难,所以这里我们使用试错法:画一个模板,用天空工场的激光切割机做出来,与实物比对后调整尺寸: [[文件:切光电编码器模板.gif|无|缩略图|用天空工场的激光切割机切模板]] 试了几次后,终于做出了正确的模板。模板装上以后长这样儿: [[文件:How-it-looks-like-when-the-correct-template-is-installed.jpg|无|缩略图|尺寸正确的模板装上以后应该长这样儿]] 于是我们的设计有了一个草图做参照。用自顶向下设计方法的语言来讲,这个草图就是设计的骨架(Skeleton) [[文件:主轴编码器骨架草图.PNG|无|缩略图|主轴编码器骨架草图]] ==Making== === 机械部分 === 完成后的CAD模型如下: [[文件:主轴编码器CAD模型.gif|无|缩略图|完成后的CAD模型。因为使用了参数化的设计方法,作出的修改能够立刻传播到整个模型。]] 找了一块尺寸合适的不锈钢板,把它做成了编码器底座。这块不锈钢板是天空工场2018年女生节礼物iPhone X里的配重。(什么?工场女生节送iPhone X?iPhone包装盒里有配重?) [[文件:主轴编码器基板.jpg|无|缩略图|这个底座使用即将安装编码器的铣床加工而成。这种自己加工自己零件的过程叫什么来着?自举?(抱歉加工过程没有录下来)]] 码盘是用3mm厚亚克力板经激光切割而成。[[文件:切光电编码器码盘.gif|无|缩略图|用天空工场的激光切割机做码盘]] 经过一些比较,最终选用了一圈9个脉冲(9 Pulses per Revolution)的码盘,这样AB相传感器的相位差最接近±90°,并且脉冲频率不至于过高。 机械部分全部安装好是这个样子的: [[文件:主轴编码器机械部分完成图.jpg|无|缩略图|装好长这样儿]] === 电气部分 === 欧姆龙EE-SX677-WR的原理图如下: [[文件:EE-SX677-WR IO Circuit diagram.jpg|无|缩略图|EE-SX677-WR原理图]] 可以看出把Load替换成几个kΩ的上拉电阻就可以将OUT线接到电脑并口的引脚上了(当然,电源也是要接的)。随手拿洞洞板做了个电路,装进机床的控制柜: [[文件:主轴编码器临时接线板.jpg|无|缩略图|用洞洞板随便搭的电路]] === 数控系统 === 小破铣床的数控系统是用[http://linuxcnc.org/ LinuxCNC]自制的。LinuxCNC本质上就是一个实时版的Simulink或Labview,但模块之间的连接不是图形化的表示,而是用一种叫'''H'''ardware '''A'''bstraction '''L'''ayer的语言描述。在LinuxCNC的配置文件中加入以下HAL代码:<syntaxhighlight lang="bash"> #添加一个encoder实时模块,并把这个实例命名为spindle-encoder loadrt encoder names=spindle-encoder #按照文档指示将所有encoder实例的这两个函数添加到对应的实时线程中 addf encoder.update-counters base-thread #base-thread是一个执行周期为25μs的线程 addf encoder.capture-position servo-thread #servo-thread是一个执行周期为1ms的线程 #设置spindle-encoder实例的一些参数 setp spindle-encoder.position-scale 36 #因为x4-mode是1(true),码盘一周9个周期,所以这里是9×4=36 setp spindle-encoder.x4-mode 1 #将该连的信号连上 net spindle-a parport.0.pin-15-in => spindle-encoder.phase-B #并口15脚输入到spindle-encoder的B相 net spindle-b parport.0.pin-13-in => spindle-encoder.phase-A #并口13脚输入到spindle-encoder的A相 net spindle-z parport.0.pin-12-in-not => spindle-encoder.phase-Z #并口12脚取反后输入到spindle-encoder的Z相 #motion是LinuxCNC中执行G代码、协调机床运动的模块,按照文档连接信号使motion知道主轴的位置和转速 net spindle-index-enable spindle-encoder.index-enable motion.spindle-index-enable net spindle-revs spindle-encoder.position => motion.spindle-revs net spindle-true-speed spindle-encoder.velocity => motion.spindle-speed-in </syntaxhighlight> ==Outcome==
返回
给数控铣DIY刚性攻丝功能
。
开关有限宽度模式