简介:四自由度机械手设计方案的DOCX文档,面向机械设计、自动化相关专业学生及从事工业机器人开发的工程师,围绕冲压设备物料输送场景,完整阐述一款四自由度机械手从机械结构、传动驱动到控制系统与功能实现的设计流程。内容首先介绍底座、大臂、小臂及末端执行器的结构设计要点,再比较齿轮传动、丝杠传动等不同方式,并结合电动伺服电机说明驱动选型依据;控制系统部分涉及数据采集卡、伺服放大器、编码器反馈、端子板电路以及控制软件可靠性设计,覆盖关节伺服控制、制动、实时监测、示教编程与在线修改、参考点设置等关键功能。资源为单个DOCX文档,体积1.58MB,共1个文件,排版完整,包含中英文摘要、目录和章节展开,适合作为课程设计、毕业设计或项目预研的参考资料。目前已有245人学习浏览,内容组织结构清晰,便于读者按结构、硬件、软件、功能四条主线逐步掌握四自由度机械手的设计思路与实施细节。
1. 四自由度机械手的改造起点:从废旧焊接机器人到冲压上料
车间里最容易被低估的设备,是那些已经走到报废边缘的焊接机器人。本文要拆的这个四自由度机械手,就是在一台报废焊接机器人本体上改造出来的:保留腰、肩、肘、腕四个转动关节和底座,重新设计了末端夹持手爪、驱动以及控制系统,把它用在冲压设备上下料场景。项目最有价值的地方不是运动学有多复杂,而是「改造」本身——能用旧的绝不开新模,能用采集卡解决的绝不买运动控制卡。整台设备只有五个动力源,四个关节加一个手爪,全部走直流伺服电机驱动。文章按机械本体、驱动选型、硬件控制、软件实现四个层次展开,最后落到旋转中心标定和节拍优化两个实操点。适合正在做产线自动化改造、手头有旧机器人和工控卡的人。
2. 机械手本体设计:关节配置、臂长参数与夹持机构选型
2.1 自由度配置与底座、连杆的刚度处理
这台机械手有四个自由度,全部是转动关节:腰关节负责整机回转,肩关节和肘关节决定大臂、小臂在垂直平面内的姿态,腕关节调整末端手爪的角度。四个关节组合起来,覆盖的是冲压机周边一个近似扇形的搬运区域,工件从料台抓起来,转个腰、抬个臂,放进冲压模腔内,再退出来,动作路径是典型的点位搬运,不需要连续轨迹插补。这种构型在工作空间利用率上有明显优势,结构也比直角坐标式紧凑,适合放在冲压设备侧面。
底座是整个机器人稳定性的底线,这里没有用常规的焊接钢架,而是两块「Z」字形实心铸铁作支撑。Z字形截面的优势在于抗倾覆刚度好,抵抗腰关节转动时的反力矩能力强。底座上方设了接线盒,所有电机驱动信号和反馈信号都从这一个盒子里进出,检修时不用爬到设备下面去查线。大臂长度230mm、小臂长度240mm,两者几乎接近1:1。这个比例在搬运机器人里很常见:工作空间在同尺寸级别里能做得比较大,而且大小臂转动惯量分配比较均衡,末端手爪在垂直平面内的灵活度好。如果你的工艺要求末端更深入模腔,可以适当加长小臂,但要记得重新核算关节电机力矩,后面会提到这个约束条件。
刚度问题在改造机上尤其要重视。焊接机器人原设计是按焊枪负载校核的,改成夹持手爪后,末端负载变成工件加手爪,可能更重,而且工件形状不规则,重心偏移更大。连杆在承受扭矩时的角度变形会直接反映到末端定位精度上,变形量越大,机器人本体的固有频率越低,启停时就越容易低频振动。实际调试时我一般先手动转动每个关节,感受一下有没有明显的弹性间隙,如果连杆连接处有轴承磨损,先换轴承再做电气调试,否则后面的伺服参数怎么调都压不住振动。
2.2 夹持手爪设计:曲柄滑块与滑块摇杆串联机构
末端执行器直接决定了这台机器人能不能抓得住工件。冲压件大多是板类或短轴类零件,不需要仿生多指灵巧手,两指夹钳式就够用。设计上采用回转型传动机构,手指开合靠两个机构串联实现:电机输出轴O驱动曲柄OA,曲柄OA通过连杆AB带动滑块B,这是第一级曲柄滑块机构;滑块B又通过连杆BC带动摇杆CE摆动,把运动传给DE杆,驱动手指绕支点旋转。图中黑线和蓝线对应的是机构运行的两个极限位置,一个对应手指完全张开,一个对应完全闭合。
两个手指之间加了一个弹簧,这个弹簧有三个作用:一是保证手指在没有工件时能自动回到闭合位置;二是提供基础夹紧力,防止工件在运动中晃动;三是降低对电机力矩的瞬时要求,因为夹紧力主要由弹簧提供,电机只负责克服弹簧力去张开手指。设计的时候要注意,电机功率必须同时满足克服弹簧张力和夹持工件所需的总力矩。项目里用ADAMS做虚拟样机仿真,测了手指从闭合到张开整个过程中的力矩变化,结果是在起始阶段弹簧变形量最大、需要克服的力最大,计算下来电机的输出转矩必须大于550 N·mm。这个数值直接作为手爪电机的选型下限,比凭经验估一个值要靠谱得多。
2.3 驱动方式和传动方式选型
机器人驱动方式主要有三种:气动、液压和电机驱动。这个项目里其实没有太多纠结,因为冲压搬运要求的是定位准确、响应快、能频繁启停,气动虽然便宜但低速控制性差、难以精确定位;液压输出功率大但成本高、存在漏油污染问题,用在小型机械手上属于杀鸡用牛刀。电机驱动在中小负载场景下控制精度最高,可以做到连续轨迹控制,所以选了直流伺服电机驱动。
| 对比项 | 气动驱动 | 液压驱动 | 电动驱动 |
|---|---|---|---|
| 控制性能 | 精度低,阻尼差,低速难控制 | 精度较高,反应灵敏,可无级调速 | 控制精度高,伺服特性好,可高速高精度连续轨迹控制 |
| 结构体积 | 体积小,密封问题较突出 | 体积小但液压系统易漏油 | 电机结构紧凑,需配减速装置 |
| 安全与污染 | 防爆好,排气的噪声大 | 有火灾危险,漏油污染环境 | 无爆炸和火灾危险,基本无污染 |
| 适用场景 | 有限点位程序控制、气动夹具 | 重载、电液伺服喷涂或点焊 | 中小负载、要求高定位精度和轨迹精度的场合 |
关节电机选型直接沿用原机器人平台的MAXON系列直流伺服电机,手爪位置也选了同系列小电机。腰关节和肩关节用的是MULTIPLEX STELL-SERVO 6v,额定电压18V,额定转矩约0.882 N·m,最大转矩约1.47 N·m,额定转速7980rpm。肩关节和手爪用MAXON 233,参数接近,堵转转矩能到更高。之前算出来的手爪电机最小转矩550 N·mm,换成工程单位就是0.55 N·m,落在MAXON 233的最大转矩范围内,留了约2.6倍的裕量。
传动方式采用的是齿形带传动,而不是直连或齿轮箱。齿形带(同步带)的优势是传动比准确、无滑动、噪音小,而且带轮中心距可调,结构上比齿轮箱容易布置。关节处的减速比做得比较大,目的是把电机的高速小扭矩转换成关节的低速大扭矩。一般设计时取电机额定转速除以关节期望最大转速,比如关节最大转速要求120°/s,即20rpm,电机额定转速7980rpm,减速比就在399左右,实际取400。齿形带的张力调节要注意,太松会跳齿,太紧会增大轴承负载,调试时用张力计按带轮规格标定。
2.4 制动方案:为什么放弃机械制动器
制动器的作用是让机械臂在停止时保持位置,或者在断电时防止因重力下滑损坏设备。机械制动器有电磁制动器、盘式制动器、闸瓦式制动器等,原理基本都是弹簧力制动、励磁释放。这个项目里原机器人平台没有安装机械制动器,肩关节和肘关节在停止转动时会因为重力自然下落。本来想加装,但受限于原机构空间结构,不方便改造,所以改用软件实现电气制动。
电气制动的思路是:停止时不给电机断电,而是由控制软件持续向伺服放大器输出一个保持力矩,让关节维持在当前位置。这种方案的优点是质量轻、不用增加机械结构,非常适合改造项目;缺点是依赖供电,断电瞬间制动就失效,设备必须配置急停和断电保护逻辑。后面在第4章会详细讲这个保持力矩怎么通过软件实现。
3. 控制系统硬件选型:采集卡、伺服放大器与端子板接线
3.1 为什么选 PC + 数据采集卡的控制模式
控制系统的硬件平台决定了开发方式和成本。早期机器人控制器大量采用VME总线,稳定可靠,但板卡贵、开放性差。这几年PC机性能提升很快,可靠性也不差,价格反而低很多,所以在教学和改造项目里,PC成了主流上位机。具体到PC系统,又有几个分支可选:单PC、PC+PC、PC+分布式控制器、PC+DSP运动控制卡、PC+数据采集卡。
这个项目选的是最后一种,PC+数据采集卡。原因是这套机器人本体是已有的,旧平台的电机、编码器(电位器)都是现成的,用数据采集卡可以灵活接管每一路模拟输入输出,软件上想怎么写算法都行。运动控制卡虽然自带插补和加减速,省事,但一套下来价格不低,在这个需要废物利用的场景里不划算。数据采集卡的缺点是控制周期依赖PC操作系统的实时性,但四自由度搬运机器人关节转速不高,控制周期做到10ms以内就能跑得很稳,Windows下用定时器或ISA中断都能满足。
3.2 工控机与数据采集卡选型
工控机用的是研华的产品,主频233MHz,内存128MB,32位数据总线,底板带9个ISA插槽和4个PCI插槽。这个配置放到现在看不算高,但作为运动控制系统完全够用。工业PC比普通PC强的点在于芯片筛选更严、驱动能力强、机箱有防震和抗干扰设计,对车间里的温度、湿度、粉尘环境容忍度更高。
数据采集卡用了两块,分工明确:
| 板卡 | 型号 | 关键资源 | 用途 |
|---|---|---|---|
| 模拟量输入/输出卡 | PCL-812PG | 16路单端12位A/D、2路12位D/A、采样率最高30kHz、带DMA或中断 | 采集5个关节电位器反馈,输出2路模拟量(不够则扩展) |
| 数字量/模拟量扩展卡 | PCL-726 | 6路独立D/A、12位分辨率、16路数字量输入、16路数字量输出 | 扩展关节控制电压输出,读取限位和急停信号 |
PCL-812PG负责把5个关节电位器的角度信号通过A/D读进来,同时输出模拟量去控制伺服放大器。但8路以上控制电压输出只有2路,所以又加了PCL-726,它带6路独立D/A,每个关节一路控制电压正好够用。D/A输出范围可以设成±10V或0~10V,本项目里伺服放大器需要电压控制转速和方向,所以设成±10V双极性输出,正电压正转、负电压反转。通道映射关系我在软件里固定下来,腰关节走D/A 0,肩关节D/A 1,肘关节D/A 2,腕关节D/A 3,手爪D/A 4,这样接线和查错都方便。
3.3 伺服放大器的接线与调节
伺服放大器选的是maxon电机配套的4-Q-DC Servo Control LSC 30/2,这属于直流伺服电机专用的PWM放大器,电源电压范围12~30V。接线端子是有固定含义的:1、2号端子接伺服电机的电枢两端,3、4号端子接外部电源,7、8号端子接控制电压。数据采集卡的D/A输出电压接到7、8端,电压大小决定电机转速,极性决定正反转。13、14号端子是测速计接口,这个项目没有用测速发电机,所以空着。3、4、10之间有一个光耦合器,用来输入「准备好」信号,程序启动后把这一路拉高,伺服放大器才使能输出。
放大器前面板上还有5个旋钮和10个DIP开关。旋钮调的是电流限制、比例增益、积分增益、死区宽度、转速限制这五类参数。初次调试时我的习惯是先把电流限制旋到最大值的70%左右,比例增益从小到大慢慢加,直到电机短时响应变快又不啸叫为止。DIP开关用来选择工作状态,比如是否启用测速反馈、PWM频率、正反转模式。有一个坑要提醒:控制器电源是12~30V共用的,如果有一路只接了12V但另一路接了24V,伺服放大器的使能逻辑可能会乱,我遇到过一次,最后把整个供电回路统一成24V才解决。
实际输出控制电压的代码逻辑大致是这样:
/* 以 PCL-726 为例,向指定 D/A 通道输出控制电压 */ static void da726_output(int channel, double voltage) { unsigned int code; /* 量程设为 +/-10V,12位D/A,码值范围0~4095 */ code = (unsigned int)((voltage + 10.0) / 20.0 * 4095.0); if (code > 4095) code = 4095; if (code < 0) code = 0; /* 写低字节和高字节,再送通道号 */ outp(BASE_726 + 0, code & 0xFF); outp(BASE_726 + 1, (code >> 8) & 0x0F); outp(BASE_726 + 2, channel & 0x07); }这段代码做的是把-10V到+10V的电压值转换成12位D/A码。具体寄存器偏移量需要对应PCL-726的设备手册,但逻辑是通用的:双缓冲D/A必须先写低字节再写高字节,最后写通道号触发输出。为什么要双缓冲?因为如果只写低字节的瞬间就输出了,高字节还没更新,模拟量会出现一个短暂跳变,对伺服电机来说就是一次抖动,放在双缓冲模式下,低字节和高字节都写完后才同时更新输出,防止输出毛刺。通道号那一位决定这一路电压给到哪个关节的伺服放大器。
3.4 电位器反馈与标定方法
每个关节的当前位置通过电位器反馈到采集卡A/D端,电位器转轴和关节轴同步,输出电压和角度呈线性关系。但电位器存在安装偏置和量程非线性,所以上电后必须做标定。常见做法是把关节手动转到机械零位,记录A/D读数,再把关节转到正限位,记录另一个读数,两点确定一条直线:
/* 电位器标定:建立A/D码与角度的线性映射 */ angle = (ad_value - ad_zero) * ANGLE_RANGE / (ad_limit - ad_zero);ad_zero是机械零位对应的A/D采样值,ad_limit是正限位对应的采样值,ANGLE_RANGE是限位之间的角度。这个映射关系存到配置文件里,每次上电读出来用。要注意的是电位器是绝对角度传感器,所以回参考点不需要找Z脉冲,只要读当前A/D值就能算出当前角度,这比增量编码器省事得多。但电位器也有两个毛病:一是会磨损,标定完用半年后最好复测一次;二是采样值有噪声,软件里要加滤波,否则PID控制量会跟着抖。
4. 控制软件实现:伺服闭环、实时监测、示教与回参考点
4.1 软件的功能结构与主循环
控制软件要实现的五个目标分别是:实时显示各关节角度并限制运动范围、直流电机伺服控制、电机自锁(电气制动)、示教编程及在线修改程序、设置参考点和回参考点。这些功能在软件里不是一个函数能搞定的,我一般拆成几个独立模块:数据采集模块(读电位器A/D)、伺服控制模块(PID计算和D/A输出)、运动逻辑模块(限位检查和制动)、示教模块(记录和回放)、人机交互模块(命令解析和状态显示)。
主循环采用固定周期定时中断驱动,控制周期定在10ms。每一个周期做四件事:第一,读5个关节的电位器反馈值并做滤波;第二,根据当前是手动模式、示教模式还是回放模式,计算各关节的目标位置;第三,调用PID函数算出控制电压,写入PCL-726的D/A通道;第四,检查限位、急停和参考点状态,必要时封锁输出。主循环之外留一个串口或者界面命令入口,用于接收示教指令和在线修改参数。
while (running) { wait_tick(10); /* 10ms周期 */ ad_read_all(joint_feedback); /* 读电位器A/D */ filter(joint_feedback); /* 滑动平均滤波 */ fsm_run(current_state); /* 状态机:手动/示教/回放 */ pid_all_axis(); /* 各关节PID计算 */ da_write_all(joint_control); /* 写D/A控制电压 */ check_safety(); /* 限位、急停、制动 */ }这个主循环结构是所有后续功能的地基。状态机把运行模式分成手动、示教、回放三种,模式切换只在安全状态下才允许。check_safety里包含软限位判断和紧急制动,一旦某个关节角度超出允许范围,立即封死该轴输出。
4.2 关节伺服控制的PID实现
伺服控制这里做的是位置环闭环。数据采集卡输出控制电压到伺服放大器,伺服放大器再驱动电机,电位器把角度反馈回来。由于原平台的测速计没用,速度环在硬件里是开着的,实际等效成一个带电流限制的PWM驱动器,位置环完全靠软件PID稳住。
/* 单关节位置PID,控制周期dt=0.01s */ float pid_update(float setpoint, float feedback) { float error = setpoint - feedback; float derivative; integral += error * dt; /* 积分限幅,防止长时间超差导致积分饱和 */ if (integral > I_LIMIT) integral = I_LIMIT; if (integral < -I_LIMIT) integral = -I_LIMIT; derivative = (error - last_error) / dt; last_error = error; return kp * error + ki * integral + kd * derivative; }PID参数调节有个顺序问题。先把积分增益和微分增益设成0,只留比例项,从小到大加kp,直到关节响应不迟钝也不振荡。然后加kd抑制超调,最后加一点ki消除稳态误差。对四自由度这种点位搬运任务,kd的作用最明显,如果关节到位后一直抖,多半是微分项对噪声太敏感,这时候可以在反馈端做一阶低通滤波,让微分项输入的是滤波后的角度而不是原始值。kp的值直接影响电机的刚性手感,一般调到用手去掰关节时感觉有阻力但不发颤就差不多了。
积分限幅是必须有的。有一次调试,肘关节被卡在机械限位处,PID输出持续累加,最后D/A输出冲到10V,电机堵转发热很严重。加了±3V的积分限幅之后,即使堵转,输出也不会超过安全电压,配合限位开关才能真正保护设备。
4.3 电气制动与运行安全逻辑
前文说过这个平台上没有机械制动器,所以电气制动要靠软件在关节停止时输出保持力矩。具体实现是在状态机切到「保持」时,目标位置不更新,PID仍以当前位置作为设定值持续计算。只要PID里kp不为0,关节从外部被拉离后会产生误差,输出相应的反向电压把它拉回来,这就等效于一个软锁存。
安全性上还要叠加几个保护:
- 软限位检查:每个关节在配置文件里设定最大和最小角度,PID计算前先检查目标位置是否越界,越界则拒绝执行并报警。
- 硬限位处理:PCL-726的数字量输入接限位开关信号,触发后立即封锁该轴输出并进入急停状态。
- 断线保护:电位器信号线断掉后A/D读数会满偏,反馈值突然跳变导致电机猛冲。软件里做断线检测,连续多次采样值在满量程附近波动就判为断线,封锁输出。
电气制动的局限性在于断电即失效,所以设备旁边必须加装人工急停按钮,并明确标注断电后不可把手伸到机械臂下方。
4.4 示教编程与在线修改程序
四自由度搬运机器人用不着复杂的离线编程,最实用的就是示教再现。操作流程是:手动模式下,操作员通过界面按钮或者示教盒把每个关节转到目标位置,记录该点的各关节角度;继续移动机械臂,记录第二个点;所有路径点记录完后,按下回放键,软件按照记录的序列依次执行。这种方式对设备维护人员非常友好,不需要懂编程语言。
代码上示教点就是一个结构体数组:
/* 示教路径点定义 */ typedef struct { float joint_angle[5]; /* 腰肩肘腕手爪五个目标角度 */ int mode; /* 点位移动或连续移动 */ int wait_ms; /* 到位后的停留时间 */ } teach_point; teach_point program[64]; /* 最多记录64个示教点 */ int teach_count = 0;回放时逐点读取,每到一个点等待到位标志位,然后再执行下一点。在线修改程序的功能基于这个结构也很方便:回放过程中可以直接暂停,按方向键微调当前关节角度,覆盖当前示教点,再继续运行。调整的时候注意,修改的是当前点还是后续所有点,软件里要有一个「只改当前点」和「后续点整体偏移」的选项,前者用于单个点微调,后者用于整条路径在Z方向抬高几毫米避障。整体偏移的实现很简单,给目标角度统一加上一个偏移量即可。
坑点在于回放速度切换。程序里如果没有做速度规划,两个示教点之间的移动直接按最大速度输出,机械臂到点前没有减速,末端会明显抖动。解决办法是每个示教点之间做梯形速度规划:先判断当前点到目标点的角度差,除以最大允许速度得到理论时间,再给出一段加速和一段减速。角度差小于某个阈值时直接进入减速段。
4.5 设置参考点与回参考点
电位器的绝对值特性让回参考点这个功能做起来很简单:不需要像增量编码器那样去碰限位找零。所谓设置参考点,本质上是告诉软件「当前这个角度就是零点」。程序里定义一个home_position[5]数组,回参考点时直接把当前滤波后的角度写入这个数组,作为后续示教点的相对基准。回参考点的另一层含义是把机械臂从任意位置移动到预设的原点姿态,这只需要把目标位置设成home_position,让PID慢慢追踪过去就行。
| 功能 | 实现方式 | 注意事项 |
|---|---|---|
| 设置参考点 | 当前角度写入home_position | 硬件先手动摆到机械零位 |
| 回参考点 | PID跟踪home_position | 路径上可能有干涉,先抬高 |
| 软限位 | 角度比较 | 每个关节单独配置 |
| 急停 | 数字量输入中断 | 封锁所有D/A输出 |
回参考点有一个实际风险:如果机械臂当前姿态和参考点姿态之间隔着障碍物,直接追踪会撞上去。稳妥的做法是先手动开到安全区,再触发回参考点。有些系统会在回参考点之前强制先执行一段「抬高」动作,把这个写死在安全流程里,次次提醒,才能避免误操作。
5. 旋转中心标定与节拍优化:两个让机械手真正好用的技巧
5.1 机械手旋转中心标定
四自由度机械手末端走的是一条空间曲线,标定旋转中心的目的,是让程序知道实际旋转轴心在工件坐标系里的真实位置,而不仅仅依赖CAD模型。搬运场景里最常见的标定需求是腕关节:手爪夹持工件旋转时,如果旋转中心和工件重心不对准,到位后工件位置会偏移,冲压模腔对不准。
徒手对中心是不行的,我用的是几何拟合法。把机械臂固定在一个姿态,手爪装一个尖锥工具,让尖锥对准工作台面上一个固定尖点,然后只旋转目标关节,读取多个角度下的机器人正运动学位置,用最小二乘拟合一个圆,圆心就是旋转中心。方法对应到代码里就是经典的圆拟合:
import numpy as np # 读取关节旋转时末端尖点在平面上的坐标 (x_i, y_i) pts = np.array([[312.5, 180.2], [305.1, 186.7], [294.3, 185.9], [288.0, 178.1]]) A = np.column_stack([pts[:, 0], pts[:, 1], np.ones(len(pts))]) b = -(pts[:, 0]**2 + pts[:, 1]**2) coef, *_ = np.linalg.lstsq(A, b, rcond=None) cx = -coef[0] / 2 cy = -coef[1] / 2 r = np.sqrt(cx**2 + cy**2 - coef[2]) print(f"旋转中心: ({cx:.3f}, {cy:.3f}), 半径: {r:.3f}")这个拟合把旋转问题转换成圆的参数估计。输入的点越多越好,至少采四个位置,角度间隔均匀,才能把圆心求准。实际使用时,标定出来的圆心坐标回填到运动学参数表里,以后程序里做腕关节旋转补偿时直接引用。标定结果的检验方法是把尖锥重新对准固定点,转一圈,观察尖端是否始终贴合,偏差在0.5mm以内算合格。这个技巧对任何四自由度机械手都适用,跟是不是这个平台没有关系。
5.2 节拍优化:减少每一个等待周期
搬运机器人的效率直接体现在节拍上,也就是完成一次「抓取—搬运—放置—返回」的周期时间。最有效的优化点往往不是电机本身的速度,而是动作之间的等待。示教程序里如果每个点到位的停留时间设置偏保守,比如统一给300ms,一个周期下来可能多出1秒以上。我的做法是先用最快速度跑一遍,用示波器或者软件里的时间戳记录每个到位标志触发的实际时刻,再把多余等待时间逐个减掉。
第二个优化点是手爪动作和关节运动重叠。传统写法是手爪完全张开后,腰关节才开始旋转,这中间浪费了一个开爪时间。改进后的逻辑是:腰关节在旋转的最后100ms内同步开爪,到位的瞬间爪子已经张开,可以直接下落去抓。实现上需要把开爪指令和到位判定分成两个异步任务,主循环只管发指令,不阻塞等待完成。
还要提一下路径包络,也就是机械臂在整个搬运路径上的空间范围。节拍太快时如果路径不合理,末端会划出很大弧线,不仅视觉上吓人,还容易碰到防护网。优化方法是把路径点之间的移动模式从「每个轴独立匀速」改成「关节同步运动」,即多关节同时启停,轨迹更接近一条直线,能有效减小包络。判断同步是否生效,看示教回放时各关节是否同时开始转,而不是一个接一个。
5.3 故障排查速查表
| 现象 | 可能原因 | 排查顺序 |
|---|---|---|
| 关节不动 | 伺服放大器未使能 | 查光耦合器输入信号、电源 |
| 关节抖动 | PID增益过高或电位器噪声 | 先滤波再降kd,最后检查机械间隙 |
| 到位有偏差 | 电位器磨损回程差 | 重新标定或更换电位器 |
| 回参考点撞限位 | 参考点姿态附近有干涉 | 手动摆位后再运行回参考点 |
| D/A输出跳变 | 单缓冲写入毛刺 | 确认先低字节后高字节的写入顺序 |
排查的基本原则是先看信号再看软件。拿万用表量伺服放大器的控制电压,没电压说明问题在采集卡和D/A,有电压但电机不动说明问题在放大器和接线。信号正常再查软件里的状态机和PID输出,不要一上来就改代码。
本文还有配套的精品资源,点击获取