ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

DRV8818+PIC18步进电机驱动方案:从电源设计到微步控制的工业实践

DRV8818+PIC18步进电机驱动方案:从电源设计到微步控制的工业实践 在工业现场摸爬滚打久了你会发现步进电机控制很少是选个库就能糊弄过去的事尤其是双极步进电机配合驱动器、单片机各管一段的老派组合反而比集成一体化方案更容易定位问题、做定制拓展。我最近一个机器人关节预研项目里用的就是 DRV8818PWPR 加 PIC18F46K20 这套配置24V供电、约1.5A额定电流的双极步进电机配合TSSOP封装的DRV8818双H桥驱动器以及一片40脚、带ECAN的PIC18F46K20做逻辑控制。整套方案跑起来之后电机低速不抖、加减速不丢步、上位机命令也能稳定响应整体达到了量产前验证的目的。这篇内容我按从选型到落地的顺序写适合正在搭步进控制板、或者想把现有步进驱动方案从脉冲方向模式往更灵活方向迁移的工程师看。重点会放在驱动芯片的电源和电流设定、MCU端的脉冲生成外设规划、以及我实测中踩过并调试好的几个坑上。过程中涉及的代码都是PIC18系列的C语言用周期中断翻转STEP引脚这个最直接的方法实现脉冲输出不用外部脉冲发生芯片不依赖RTOS几根跳线就能在面包板上先跑通。1. 为什么是 DRV8818 PIC18F46K20工业场景里的保守而可靠式选型1.1 DRV8818PWPR 的定位一颗把H桥和衰减模式都替你考虑好的驱动芯片DRV8818 属于那种单看参数不惊艳但放进工业板卡里非常踏实的步进电机驱动。它的基本盘是内置两路N沟道功率MOSFET H桥支持双极步进电机四线接法电源电压范围标称8.2V到45V折算到实际设计留余量我建议在24V和36V电源系统里使用不要顶到45V去设计给电源纹波和反电动势波形留出血量电机绕组峰值电流能到2.5A对于NEMA17、NEMA23这一级别的电机基本够用超过这个电流就得考虑外置MOSFET或换大电流驱动芯片了。PWPR后缀指的是HTSSOP PowerPAD封装这是它在实际项目中很好用的一点芯片底部的大块散热焊盘可以直接焊到PCB上再通过排布整齐的过孔引到背面铜皮哪怕连续工作半小时芯片温度也只是温热不至于烫到怀疑人生。这一点对工业环境里长期通电、关节电机频繁加减速的场景非常重要散热不是能用就行的玄学而是产品寿命的基本保障。DRV8818 内部更值得关注的地方是电流斩波控制。它的每相绕组电流不是靠单片机精确控电压实现的而是采用经典滞环式电流斩波ISENSE引脚外接一个小阻值采样电阻绕组电流流过时产生的压降送到内部比较器和VREF引脚设定的参考电压比较超过阈值就关断对应H桥输出电流跌落跌到一定范围再重新打开。整个过程发生在微秒级MCU完全不参与所以不管电源电压是12V还是24V绕组电流都能被限制在一个可预期范围内。这意味着你可以直接把电机的额定电流作为设计输入而不是自己去算一个匹配电压。DRV8818 还集成了微步索引器通过MODE0、MODE1、MODE2三个引脚的逻辑电平组合可以在全步进、半步、1/4、1/8、1/16步进之间切换。注意微步细分主要是为了降低低频共振和噪声不是为了把精度凭空拔高这个我后面专门讲。总之单片机只需要输出一个STEP脉冲剩下的电流阶梯切换全部由DRV8818内部完成这就是经典的脉冲方向驱动架构也是工业设备上依然大量采用的标准接口。1.2 PIC18F46K20 凭什么能担纲逻辑控制而不是STM32或普通51项目最初有同事建议直接用STM32理由是资料多、外设多。我坚持用PIC18F46K20倒不是对某家芯片有情怀而是几个很现实的工程考量。第一个是逻辑电平和工业现场的匹配度。DRV8818的STEP、DIR、MODE引脚工作电平是3.3V到5.5V而PIC18F46K20跑在5V供电时I/O输出高电平接近VDD输入高电平门槛也足够高。整个控制链路不用插任何电平转换芯片逻辑电平直连少一级转换就少一级故障点。这在设备间信号线拉得比较长、现场又有干扰的场合5V信号比3.3V信号的抗扰能力明显好一些。第二个是片上资源刚好够用且不浪费。拿我用的40脚封装举例它有64KB Flash、3.8KB左右的SRAM跑一个步进控制状态机加上简易命令解析绰绰有余。更重要的是它带ECAN模块这是工业机器人场景里的一个加分项CAN总线在车间现场的可靠性和布线方便程度远胜RS485的点对点组网而PIC18F46K20可以直接挂在CAN网络上和PLC、上位机做多轴数据交互不需要额外外挂一颗CAN控制器BOM成本又省一笔。第三个是供货和长期稳定性的底气。工业产品选型最怕的不是性能不够而是芯片说停产就停产、说涨价就涨价。PIC系列在工控领域的生命周期管理一直是比较稳健的我手头不少十年前的老设备里PIC18系列还在稳定工作。对于一个要维护五到十年的机器人控制器项目这一点比峰值算力重要得多。1.3 系统总体架构的三个功能边界拿我实际搭的这套系统来说系统被明确切成了三块逻辑控制层PIC18F46K20负责接收上位机命令维护运动状态机生成STEP脉冲和DIR方向信号控制nSLEEP、ENABLE和三个MODE引脚。功率驱动层DRV8818负责把逻辑脉冲转换成双极电机绕组里的顺序电流完成电流斩波、衰减控制和过流保护。执行机构层双极步进电机我这里用的是两相/四线的NEMA23电机1.8°步距角和机械减速机构。这三层之间最重要的一条原则是功率驱动层和逻辑控制层在电气上要保持明确的信息单向传递。MCU只输出控制信号绝不承担电机功率路径上的任何电流。DRV8818的VM电源和逻辑电源完全分开参考地按主功率地统一连接这样即使电机突然堵转导致VM电源跌落或反电动势抬升也不至于通过I/O引脚把PIC打坏。下面每个部分我再逐步展开说。2. 电源、电流设定与散热驱动板能不能长期工作的关键都在这层2.1 VM 电源选型和上电时序的工程尺度DRV8818 的VM引脚是电机电源输入在工业应用里最常见的是24V电源系统。选24V而不是12V的理由很直白24V下绕组电流上升速率更快同一电机在高速区力矩表现更好而且24V在工业现场几乎无处不在传感器、继电器、PLC输出很多都用24V电源选型和线缆设计能统一。但这不代表你可以直接把开关电源的24V甩到VM上。我建议至少在VM引脚附近放一个470μF电解电容搭配一个0.1μF的X7R陶瓷电容。电解电容负责吸收步进电机换相时瞬间抽取的大电流陶瓷电容负责滤除高频毛刺。这一步别省DRV8818内部虽然是电流斩波控制但前级电源的瞬态响应差会造成电流波形畸变直观表现就是实际输出力矩变差、电机温升变高。上电时序也要注意。我的习惯顺序是先上MCU逻辑电源让PIC完成初始化并把ENABLE引脚置于禁用状态再上一个150ms到200ms的延时最后才允许VM通电。如果反过来VM已经上电而MCU还在复位DRV8818的H桥输出可能在不确定状态电机轻轻咔一声还是小事反复冲击电源反而不好。用PIC的一个I/O控制固态继电器或者PMOS电子开关去切VM这是很成熟可靠的做法。2.2 绕组电流上限怎么设VREF、ISENSE和那个采样电阻前面说了DRV8818是通过比较ISENSE采样电压和VREF参考电压来决定电流斩波点的。设置目标电流的方法是计算采样电阻和VREF电压。我的实际做法是电机额定电流1.5A电机绕组相电阻大约1.5Ω24V供电下如果不限流初始浪涌电流会非常大。选择0.1Ω、1%精度、额定功率2W以上的采样电阻放在ISENSE引脚和地之间。斩波电流阈值按数据手册里的增益公式反推VREF电压对于这一档电流设定VREF大约在0.45V到0.5V区间具体要以你买到批次的数据手册为准我在原型板上用一个10K精密电位器从2.5V基准分压取VREF上电后用示波器测ISENSE波形慢慢把VREF调到电机稳定且不发烫的那个点。需要特别说明的是这里设的是绕组电流峰值斩波上限不是电机长期运行的等效值。电机静止锁轴时绕组里是持续的直流电流发热会明显而运动时电流在斩波等效发热低一些。所以锁轴保持场景我会把目标电流调低到电机额定值的70%左右用I/O控制一个分压网络切换VREF实现运行电流/保持电流两档。虽然DRV8818没有专门的保持电流引脚但这种通过VREF切换的思路在项目里非常实用。采样电阻的布局有个老工程师都会强调的细节ISENSE端的走线要走开尔文连接即采样电阻的感测线要单独走回芯片ISENSE引脚而主电流路径从采样电阻另一脚直接回电源地。如果采样线和主电流路径混在一起功率电流的地线压降会叠加到采样电压上轻则电流设定不准重则斩波频繁误触发电机运行噪声变大。2.3 DECAY 衰减模式这是最容易被忽略却直接影响噪音和电流波形稳定性的选择双极步进电机的电流换相不是瞬间完成的绕组是感性负载电流需要时间上升和下降。DRV8818的DECAY引脚通过接不同阻值的电阻可以控制换相时H桥采用哪种衰减策略这决定了绕组电流下降的斜率进而影响电机的高速性能和噪音。按我在原型板上用示波器测ISENSE电压波形的经验慢衰减模式下电流下降慢适合低速、电流纹波小的场景电机会安静一些但高速时电流跟踪不上力矩衰减明显快衰减模式适合高速电流能快速跟上指令值但低速时电流纹波大电机噪音也大。DRV8818这个引脚通过外接电阻在慢衰减、混合衰减、快衰减之间做配置实际项目中我通常从混合衰减起步先跑一个标准的中速运动指令用示波器看电流波形再根据听感和温升微调DECAY电阻阻值。这里有个小技巧调试衰减模式时不要只盯着运行波形看要看方向反转一瞬间的电流波形。方向反转是换相最剧烈的时候如果衰减模式不对会听到电机发出明显的哒声同时电流波形尾巴拖得很长。把这一小段的波形调好整机的噪音表现一般就合格了。2.4 PowerPAD 焊接和PCB地设计决定热性能也决定抗干扰DRV8818PWPR的散热核心在芯片底部的PowerPAD焊盘而不是芯片表面的引脚。PCB设计时这个区域必须开一个大一点的散热铜皮并均匀打上过孔阵列把这些过孔连到背面的完整地铜皮。别图省事只焊几个引脚那样芯片内部结温会迅速升高最终触发过温保护表现为电机跑着跑着突然停一下等凉了又恢复很难排查。地平面的问题我要多说一句。驱动板最好用双层板及以上底层尽量保持完整的参考地平面。STEP、DIR这些逻辑信号从PIC到DRV8818走顶层短线VM电源滤波电容的正极到VM引脚顶层走宽线而采样电阻的地、输入电容的地各自回到主功率地后再和逻辑地单点汇合。我见过不少新手板子逻辑地和功率地完全绕成一大圈环路面积大得像天线工业现场一开变频器步进信号就开始误触发。环路面积越小抗干扰能力越强这是高频PCB设计的铁律。3. PIC18F46K20 外设规划与步进脉冲生成机制3.1 引脚分配逻辑引脚要和功率走线物理隔离我的引脚分配大致是这样STEP输出 → PORTB的某个I/O比如RB2用大电流驱动能力足够的引脚。DIR方向 → RB3。ENABLE → RB4控制DRV8818的使能脚。nSLEEP → RB5。MODE0/MODE1/MODE2 → RB6/RB7/RC0。UART TX/RX → RC6/RC7接上位机或调试串口。若干GPIO → 限位开关、原点开关。如果要上CAN则用芯片的ECAN引脚。分配引脚时记住一个原则所有和DRV8818连接的控制信号在PCB上最好都布在板子的一侧而VM、电机接线端子、采样电阻所在的高压大电流区域在另一侧中间用地铜皮隔开。信号线不要穿过功率区域更不要和大电流走线平行走很长距离。这个我踩过坑早期一版板子STEP线刚好贴着电机输出线走了3厘米电机一跑PIC的STEP信号上串出明显的尖峰加电容滤波和调整布线之后才干净了。3.2 用Timer0做周期预装载脉冲发生器不用等死循环延时控制DRV8818的STEP引脚需要方波脉冲一个脉冲就是一个步进角连续方波就是连续运动。最直接的做法是在PIC里设一个Timer0中断每次中断翻转STEP引脚同时重新往TMR0里预装载一个周期值决定下一次翻转的时间。这样输出脉冲频率和MCU主频无关归中断延时漂移影响小频率计算也直观。以PIC18F46K20跑16MHz指令周期Fosc64MHz外部或内部PLL为例Timer0用16位模式、不预分频或小分频。若想让输出方波频率为10kHz每个完整周期对应两次翻转即定时器每50μs翻转一次TMR0的预装载值就是50μs对应的计数个数。指令周期80ns50μs对应625个计数。在中断里先写TMR0H再写TMR0L因为PIC18的Timer0高字节写入是缓冲的需要保持先高后低的写入顺序否则会出现随机抖动。这个是很多新手调出来波形一抖一抖的原因。volatile unsigned int TimerLoad 0; void __interrupt() Isr(void) { if(INTCONbits.TMR0IF) { INTCONbits.TMR0IF 0; STEP_PIN ~STEP_PIN; TMR0H (unsigned char)(TimerLoad 8); TMR0L (unsigned char)(TimerLoad); } } void SetStepHz(unsigned int hz) { unsigned long periodTicks 1000000UL / ((unsigned long)hz * 2); // 微秒周期 TimerLoad (unsigned int)(periodTicks * 20); // 以80ns/计数换算 }这个方法看似简单但有一个工程上的考量每次中断都翻转STEP意味着你要想好脉冲周期的最小单位该怎么定。如果直接用TimerLoad的整型变量在中途改变速度时最好在中断里一次性把新值写入高位缓冲低位避免读写一半时又被其他流程打断。我一般把TimerLoad设成全局volatile变量只允许主循环或状态机在非中断时间更新它中断里只负责读。3.3 梯形加减速速度表预计算换脉冲周期时更平滑工业机器人场景里如果电机一启动就是最高速度丢步几乎是必然的。我的做法是预计算一张梯形速度表表中存放从启动速度到目标速度之间每个脉冲对应的定时器周期值。启动时先用一个较慢速度比如500Hz之后每一个或者每几个STEP周期把TimerLoad更新到表格的下一项速度逐渐爬升到达目标速度后保持匀速接近目标位置时再反向查表降速最后低速停住。梯形加减速最需要小心的是两个时间点起步瞬间和降速到位瞬间。起步时如果第一个周期就比启动速度还快等于没加速降速到停止边沿时如果停得不干脆电机可能会余振导致位置偏移。我调试时会把步数目标、当前步数、速度表索引都放到状态机里维护在每次定时器中断里顺手判断如果当前步数距离目标步数小于减速步数阈值就进入降速段。if(motorState MOTOR_RUNNING) { if((currentStep decelSteps) targetStep) { motorState MOTOR_DECEL; stepIndex--; } else if(stepIndex maxIndex) { stepIndex; } TimerLoad speedTable[stepIndex]; }速度表的粒度也很重要。脉冲频率从500Hz到20kHz跨度40倍如果用线性间隔造表低频段会显得很密、高频段又很稀疏。正确的做法是按等比数列造表每项之间比例约1.01到1.05这样加速度在听觉和负载力矩上都是均匀的不会出现前半段加速很快、后半段却猛冲的不适感。3.4 方向控制与时序DIR要在STEP上升沿之前稳住DRV8818的方向寄存器是在STEP脉冲的上升沿采样的所以方向信号必须在STEP有效沿之前建立足够时间。数据手册里会给DIR建立时间一般都在几百纳秒级别但工程上不能卡着极限设计我通常在切换方向时先把DIR置为新电平然后延时3到5个微秒再恢复STEP触发。更稳妥的办法是用状态机不在运行过程中实时翻转DIR而是等电机停稳之后再改方向。如果必须在运动中反向就要先做一个快速减速到零的动作再置DIR并重启加速过程。直接在中途翻转DIR两个方向的电流换相容易被截断电机容易丢步甚至产生较大冲击机构上的齿轮箱也容易受损伤。4. 微步模式、位置精度与限位处理从能转到转得准4.1 MODE引脚组合用通用GPIO切换细分倍率DRV8818的MODE0、MODE1、MODE2三个引脚电平组合决定微步细分模式全步进、半步、1/4、1/8、1/16步进等。我通常把这几个引脚接到PIC通用I/O上而不是硬接固定电平这样就可以在运行时动态调整分辨率。例如回原点阶段用1/16细分使运动平滑完成粗定位后用全步进做大力矩定位这个灵活性在机器人关节上非常有用。选细分档位时有一个和机械传动配合的计算技巧。假设电机本身1.8°步距角1/8微步下每个脉冲对应的机械角度是1.8°/80.225°。如果后面接一个减速比1:10的减速箱末端输出轴的脉冲当量就是0.0225°。若末端需要0.01°的分辨率就得上1/16微步或者更大减速比。这个计算在项目初期就该做不然等到机械结构定型了再想提高分辨率就只能改电机、改细分全盘被动。4.2 微步细分不是免费的精度提升别被名字骗了微步细分在低速时确实能让电机运行更平滑电机内部磁场变化更接近正弦机械共振点被分散噪音和振动明显下降。但微步细分并不会让电机的重复定位精度等比提高因为电流阶梯的精度受采样电阻精度、VREF噪声、机械摩擦和负载扰动影响1/16细分的实际位置精度往往达不到理论角度除16那么理想。实际项目中我的心态是微步主要解决运行品质问题位置精度靠闭环或机械挡块原点开关解决。如果对末端定位精度有硬性要求要么给电机尾部加编码器做闭环步进要么把微步做粗一点但增加机械减速比。单纯靠堆细分倍率想换精度大概率会失望。4.3 限位开关和原点回归工业现场最容易忽视的可靠性细节任何步进系统如果没有可靠的限位和原点逻辑就不叫工业应用只能叫玩具demo。我给这套系统配了两个限位开关正向、反向和个原点开关全部接成常闭型。常闭开关的好处是断线、掉电时系统能立刻识别为触发状态避免线缆破损后限位失效。PIC的I/O配置为输入并开启内部上拉常闭开关一头接地另一头接I/O线缆断开时I/O读到高电平表示限位异常程序会主动停止运动。原点回归的流程我是这样写的先以较慢速度朝负方向运动到触发原点开关然后退回几毫米、离开开关再以更慢的速度重新压上开关选择第一个上升沿作为机械原点。二次低速找边是为了消除机械回程差和开关抖动带来的位置误差。之后所有定位运动都以这个原点为基准位置计数清零开始累积。5. 上位机通信用最稳定的UART协议起步后续再上CAN多轴5.1 一条ASCII状态机指令省去买调试助手的力气在机器人项目初期我从不急着上复杂的现场总线和图形界面先用一个简单的UART ASCII协议验证运动逻辑。PIC18F46K20的EUSART配置为19200波特率、8位数据、无校验一个起始位加一个停止位。上位机发送一行命令例如MOVE 1000\r\n表示正向运动1000步SPEED 5000\r\n设置目标脉冲频率HOME\r\n触发原点回归。接收端我建议用字节级状态机而不是中断里攒字符串。大致逻辑每收到一个字节按当前状态判断是命令开始、命令字、分隔空格、数字参数、回车还是换行。数字参数以累加方式解析收到\r或\n时把一整条命令交给执行函数并清空参数。这样即使某条命令断成两截或者混入干扰字节也不会让参数缓存越界。if(interrupt PIR1bits.RCIF) { char c RCREG; if(c \r || c \n) { if(cmdIndex 0) { commandReady 1; } } else if(c || c \t) { if(parseState IN_CMD) parseState IN_ARG; } else if(c 0 c 9) { arg arg * 10 (c - 0); } else if(parseState IN_CMD) { cmdBuf[cmdIndex] c; } }状态机比scanf靠谱的地方在于它不会因格式化串失败而卡住整个系统而且每个字节的处理时间固定对波特率误差和噪声容忍度更好。5.2 让主循环和运动状态机解耦别让通信拖累步进脉冲生成在定时器中断里必须保证中断尽可能短。指令解析和执行尽量放在主循环或单独的低优先级任务里。我常用的结构是中断里只处理当前步数计数、TimerLoad更新、限位急停标志这几件硬实时的事UART收到完整命令后置位一个标志主循环检测到标志后解析命令并更新运动状态机的目标参数。这样设计有一个好处即使上位机长时间不回复或者来一堆无效指令步进脉冲依然稳定跑不会因为串口处理卡顿而出现丢步。实测用逻辑分析仪抓STEP波形开不开串口接收脉冲间隔是看不出差别的。5.3 从单轴UART到CAN多轴ECAN外设留的后路单轴调通后机器人项目迟早要面对多轴同步问题。PIC18F46K20的ECAN模块可以直接挂在CAN总线上每个控制器分配一个节点ID上位机往总线发目标位置、速度、加减速度这类报文每个节点只认自己的ID执行自己的运动。轴间同步精度取决于CAN报文周期和各控制器的时间基准一般做速度同步和松散的位置插补够用要求严格的龙门同步还是建议用独立运动控制芯片。ECAN用起来和UART完全不是同一个难度级别波特率分频、报文滤波、FIFO管理都要按数据手册一步步配置。但因为它集成在PIC内部BOM成本只增加一个CAN收发器芯片比外挂SPI接口的CAN控制器方案简单得多。这也是我选这颗MCU的一个重要原因单机调试先用串口量产扩展直接切CAN硬件改动小。6. 实测中的坑和排查链路不是每块板子都是一次点亮的6.1 电机一启动PIC就复位先查电源共地和VREF噪声这是我遇到的第一个灵异现象电机跑起来的那一瞬间PIC会莫名复位串口打印重启信息。排查过程我按下面顺序分步定位先用示波器看PIC的VDD波形发现电机启动时VDD有一个明显下冲接近复位门槛。这说明电机VM电源和逻辑电源的地在板上有公共阻抗电机大电流回流把逻辑地电位抬高了。检查板子发现VM输入电容的地和PIC的VDD地连成了一条又细又长的走线等于两者共用了一段地线。重新修板或飞线把所有功率级的地VM电容地、采样电阻地、电机连接器地单独汇集到输入端子再用一根粗短走线连到系统总地逻辑地也在同一个总地单点汇入。MODE、STEP这些信号参考地其实就是逻辑地确保它们参考纹波小。另外在DRV8818的VMM模拟电源逻辑电源引脚上加了一个0.1μF小电容让内部基准和比较器在开关瞬间不要被瞬态干扰。处理后电机反复启停PIC复位再没有出现过。这个坑的根本原因是有功功率回流路径和信号参考地共用属于典型的接地设计不良不是芯片有问题。6.2 低速运行电机吱吱响且力矩突变用示波器抓ISENSE波形定位衰减模式低速这个场景电机总有一阵一阵的滋滋声双极电机在低速时常见。我用示波器探头接在采样电阻两端看波形发现电流波形在每个STEP脉冲的下一段会产生很高的尖峰随后振荡好几下才稳定。这说明DRV8818在低速下电流斩波控制不够平顺大概率是衰减模式偏快、电流下降斜率太急。我把DECAY引脚的电阻从原来的快衰减方向往慢衰减方向调大开尔文地不做改动只换了这一颗电阻重新上电后电流波形上的尖峰明显变小声音也从滋滋变成了低沉的嗡嗡力矩输出更稳定。结论是不要迷信默认参数衰减电阻就是用来调的现场有示波器就上示波器。6.3 电脑串口偶尔收到乱码或丢帧共地问题在作怪一个很常见但容易被忽略的点电脑USB转串口适配器和驱动板之间没共地或者共地阻抗过大。工业现场电脑可能接在不同的插座上两边设备的地之间会有电位差串口信号参考就乱掉了。我处理办法很简单USB转串口适配器的GND引脚一定要和PIC板的GND可靠相连而且不要依赖那种只有三根线TX、RX、GND但压接松散的杜邦线。有条件的话把USB隔离器加上彻底切断地环路。这个问题不解决你可能会花一下午纠结波特率有没有配错最后发现是共地问题。真到了生产环境CAN总线有隔离收发器和双绞线受这个影响小得多串口调试阶段的地则必须心里有数。6.4 电机升温过快空载都能烫手分两步查空载电机运行半小时就烫得不敢碰我建议先查VREF设定的保持电流档再查脉冲频率是否长期工作在低效区。电机温升80%来自绕组电阻热。如果保持电流被设成了运行电流大小而系统又经常停留在目标位置锁轴那热量会持续积累。我把保持电流档调低后温升明显下降。另一个因素是频率步进电机在极低速度比如几十Hz长时间运行时绕组电流纹波大热损耗偏高这时候应适当提高细分让每个微步的电流变化更平滑同时检查是否真的需要长时间极低速运动尽量加到合理速度再做位置闭环等待。6.5 带载后丢步不是把电流调大那么简单把负载加上后偶尔会发生实际位置与命令位置对不上的情况。很多人第一反应是把VREF调高、增大电流但电流上限受DRV8818的2.5A峰值和电机额定电流双重约束不能盲目加。我排查顺序是先降低加速度曲线斜率把梯形速度表的加速度降20%再测带载能力多半能改善。其次检查电源24V电源如果带载后电压跌落超过0.5V也要换更大功率电源。然后把保持电流和运行电流的区别重新确认一遍最后再考虑提高VREF。加减速曲线不合理导致丢步的概率远大于驱动电流不足的概率这是新手最容易判断反的地方。这套系统从画板到调通我大概用了两周。回过头看DRV8818PWPR和PIC18F46K20的组合没有太多花哨特性但每一个环节都踩在工业现场最关心的事情上热、电流、噪声、通信可靠性和长期供货。如果你也在搭类似的步进控制系统我建议按我文章的顺序逐步做验证先把电源、电流、散热三板斧处理好再谈脉冲生成和加减速最后补上通信和限位。这些底座不牢后面跑起来全是返工。
返回列表