17196| 6
|
Overlord 换芯计划の【电机驱动升级篇】-TMC2100超静音电机驱动 |
本帖最后由 dsweiliang 于 2023-2-2 10:37 编辑 Overlord是一台很好的机器,外形精简硬朗,使用方便简单,作为年轻人的第一台3D打印机,用得舒心。 但是以今天3D打印的发展程度来看,过于简单的显示信息,性能低下的ATmega2560主控,与其他模块较差的兼容性,和现在流行的超大彩色触摸显示屏,STM32位处理器相比显得Overlord落后于这个时代。 所以有了现在的这个“Overlord 换芯计划”的想法,通过更换更先进的主板及其配件,让Overlord在3D打印新时代焕发第二春。 我们一步一步慢慢来 我打算先升级一下Overlord的电机驱动 为什么呢? 那是因为啊...这个比较好搞。 现在在3D打印机中使用比较多的驱动有A4988,DRV8825,LV8729,TMC2100,A4988支持最高16细分,DRV8825支持最高32细分,LV8729支持最高128细分,而TMC2100支持最高256细分 借用一下商家的说明图片: 还有这几种驱动的对比视频 3D打印机常见驱动对比[小不点开放实验室]NO.56 Overlord使用的电机驱动就是DRV8825,但是固件设置了电机的细分为16细分。 固件修改这个东东太深奥了,针对Overlord而重新设置固件,那个工程量就比较大了,东找找西看看,终于发现了TMC2100这块完美适配Overlord的电机驱动。 为什么楼主觉得TMC2100能完美适配Overlord呢? 因为修改固件来让Overlord在其他驱动下工作,工作量非常大(因为官方固件是编译好的了,需要修改就必须从marlin原始代码中一项项修改适合Overlord的参数) 而TMC2100电机驱动是内部芯片通过差分算法把16细分扩展到256细分。这样子我们不需要修改固件就能把电机驱动直接更换成TMC2100。 而且不会增加弱鸡2560的运算压力。 那把16细分扩展到256细分有什么好处啊,TMC2100又有什么优缺点啊? 我们先来科普一下电机和驱动的关系,还有细分对电机的影响。 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 步进电机控制器,也就是驱动,是一种能够发出均匀脉冲信号的电子产品,它发出的信号进入步进电机驱动器后,会由驱动器转换成步进电机所需要的强电流信号,带动步进电机运转。步进电机控制器能够准确的控制步进电机转过每一个角度。 步进电动机不能直接接到直流或交流电源上工作,必须使用专用的步进电动机驱动器,通过控制脉冲的个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 所以升级后带来的最大优点就是:安静,安静,安静!步进电机的细分技术实质上是一种电子阻尼技术,其主要目的是减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术的一个附带功能。细分后电机运行时的实际步距角是基本步距角的几分之一。(两相步进电机的基本步距角是1.8°,即一个脉冲走1.8°,如果没有细分,则是200个脉冲走一圈360°,细分是通过驱动器靠精确控制电机的相电流所产生的,与电机无关,如果是10细分,则发一个脉冲电机走0.18°,即2000个脉冲走一圈360°,电机的精度能否达到或接近0.18°,还取决于细分驱动器的细分电流控制精度等其它因素。不同厂家的细分驱动器精度可能差别很大;细分数越大精度越难控制。以次类推。三相步进电机的基本步距角是1.2°,即一个脉冲走1.2°,如果没有细分,则是300个脉冲走一圈360°,如果是10细分,则发一个脉冲,电机走0.12°,即3000个脉冲走一圈360°,以次类推。在电机实际使用时,如果对转速要求较高,且对精度和平稳性要求不高的场合,不必选高细分。在实际使用时,如果转速很低情况下,应该选大细分,确保平滑,减少振动和噪音。) 所以细分技术的主要作用是减弱或消除步进电机的低频振动,振动少了噪音自然就跟着变少。同时附带的精度提升,也能是打印机的打印精度提升一丢丢。 想通过更换一个电机驱动就能把打印机的打印机的精度提升到一个新的高度的想法,那是不可能的了,唉。。。 就算是安装了电机减震片(https://mc.dfrobot.com.cn/thread-12800-1-1.html),电机还是会发出一定的噪音,特别是在晚上通宵打印,夜深人静的时候打印机发出的噪音的确令人烦躁。还想继续降噪,可以用上隔音棉,但是隔音棉会令电机散热变差,电机会因为过热而丢步,得不偿失。 那能被被人封为静音神器的东东为什么不见得”烂大街“呢? 那就要提提这款驱动的缺点了。 主要有以下两点缺点: 第一,继承德国产品的一贯特色,做工精细、采用德国原装进口芯片,优质系列,对声音要求静音的客户是一个不错的选择,同时也继承了德国货的一贯特征,那就是贵! 一块驱动淘宝价在45到50之间,相对于一两块的4988和十块钱以下的8825,TMC2100实在是贵。Overlord最少需要三块,挤出算了用原来的8825了,楼主穷实在受不起这么贵的芯片啊。 第二,工作温度较高,不加风扇的情况下,在0.5A左右工作温度70度,1A工作温度超过150度,有可能会丢步,强烈要求做好散热,工作电流推荐在0.5A效果为佳。但是Overlord的电机工作电流是0.9A,我是不是需要考虑一下为这三块驱动上水冷呢,不然150度以上的温度,看起来都危险。 好~以上两点还能接受,那就这样子定了。 但是我想让大家直观的看到新驱动的效果,同时避免糊里糊涂还没搞清楚情况就直接上机导致烧东西,准备了以下东西: TMC2100驱动三块 步进电机驱动扩展板一块(https://www.dfrobot.com.cn/goods-833.html) 银色散热器的是DRV8825,蓝色散热器的是TMC2100 按照图纸连接好电机 然后刷上程序 [mw_shl_code=cpp,true]/* This sample code is for testing the 2 stepper motors The rotation velocity can be adjusted by the code switch Microcontroller: Arduino UNO */ int M1dirpin = 7; //电机X方向引脚 int M1steppin = 6; //电机X驱动引脚 int M1en=8; //电机X使能引脚 int M2dirpin = 4; //电机Y方向引脚 int M2steppin = 5; //电机Y驱动引脚 int M2en=12; //电机Y使能引脚 void setup() { pinMode(M1dirpin,OUTPUT); pinMode(M1steppin,OUTPUT); pinMode(M1en,OUTPUT); pinMode(M2dirpin,OUTPUT); pinMode(M2steppin,OUTPUT); pinMode(M2en,OUTPUT); digitalWrite(M1en,LOW); //低电平使能 digitalWrite(M2en,LOW); //低电平使能 } void loop() { int j; delayMicroseconds(2); digitalWrite(M1dirpin,LOW); digitalWrite(M2dirpin,LOW); for(j=0;j<=5000;j++){ digitalWrite(M1steppin,LOW); digitalWrite(M2steppin,LOW); delayMicroseconds(2); digitalWrite(M1steppin,HIGH); //上升沿步进 digitalWrite(M2steppin,HIGH); //上升沿步进 delay(1); } }[/mw_shl_code] 咦~~~~怎么不动的?麻烦了,有大神教教我如何让电机动起来吗? 算了,先吧电机驱动的电流调好吧 对了,提一下,TMC2100 的电机转向和DRV8825的方向是相反的,要电机正常转向,那必须要电机的线序调过来。例如本身是1234 【黑绿红蓝】的排序你要改成4321【蓝红绿黑】,这样电机才能正常方向接触限位开关回原点,不然撞床的悲剧一定会发生!! 默认的0.5A电流可能推不动Overlord,那必调节电流,还有一点,驱动的最大电流是1A。 根据官方提供的公式: 驱动电流算法:i = vref* 1.9/2.5,默认Verf大约0.65V “i” 就是驱动的电流大小,这个数值无法直接测量,所以必须自己算出来。 “Vref” 就是测量到驱动的电压,测量方法如下图(必须带电操作,注意不要碰到其他引脚引致短路!) 万用表调到DC电压测量档位,用“红笔”接图中的“旋钮”,用“黑笔”接途中的“GND”引脚点。 然后读出万用表显示的电压读数,我们现在需要0.9A的电流,根据上面的公式反推: 0.9A=Vref*1.9/2.5 则Vref=0.9*2.5/1.9=1.184V 慢慢旋转驱动上来的旋钮,直到万用表显示1.184V就可以了。 写了这么多,今天先到这里吧,以后还会贴上更换驱动后的使用效果,现在暂时就没有空慢慢调试。 对于2100来说,0.9A的电流其实已经接近他的额定最大电流了,其实小于实际驱动电流能有效降低噪音和工作温度,如果结构安装得好,结构运行流畅,小一点的电流还是一样能运作的。所以下一步的工作就是慢慢调试出一个又能正常工作,数值也比较少一点的电流值。这个真的需要时间。还有150度的高温将会成位我们急切需要解决的大难题。大家有什么好想法也可以在下面回帖告诉我一下的。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed