多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

履带—轮组式电动多功能轮椅设计说明书:底盘构型、驱动控制与越障状态机

履带—轮组式电动多功能轮椅设计说明书:底盘构型、驱动控制与越障状态机 简介一份面向机械设计、康复辅助器具研发领域的设计说明书针对年老体弱、肢体伤残者上下楼及越障等行动困难场景围绕履带—轮组式电动多功能轮椅的完整开发过程适合用作课程设计、毕业设计及产品预研的参考资料。文档包含设计任务书、技术参数、总体方案比选、结构设计与运动分析、驱动与传动系统、运动控制系统等章节从需求到控制层层展开。压缩包内为单个Word文档docx仅1个文件、大小约431KB内容直接可用便于阅读和标注。目前已有141人学习使用。文档重点剖析了轮组式与履带式方案的优缺点提出了两者结合的思路并详细说明了三叶轮结构、履带收放机构及基于滑轨的座椅调平机构对理解越障能力、稳定性和机动性等关键指标有实际参考价值。1. 从越障和速度的矛盾看履带—轮组式电动多功能轮椅普通轮椅遇到路缘石或排水沟就卡住改用连续履带底盘又会在室内地板上划伤地面、转弯阻力大。履带—轮组式把两套行走机构放在同一台电动轮椅上平地用轮组跑得快、噪音低接近障碍物时再让履带介入提供额外牵引力。标题里的“设计说明书”说明这不是一篇泛谈产品概念的文章而是要把机械尺寸、电机参数、控制逻辑和验证方法统一成一份可研发、可生产、可审图的技术文档。适合做嵌入式控制、非标机械、康复辅具和移动底盘的人读也适合要写同类产品设计文档的工程师作参照。2. 履带—轮组的底盘构型与动力学设计2.1 先定构型履带什么时候参与工作设计前要先回答一个机械问题履带和轮组是始终同时接地还是可以主动切换两种方案在说明书里的工作量完全不同。始终同时接地相当于让履带拖在轮组后面速度差会造成履带磨损和转向阻力一般只有在爬坡或者松软地面时才划算。可以主动切换的方案更接近电动轮椅的日常使用逻辑平地时履带被抬离地面或通过离合器脱开需要越障时再把履带放下或啮合。从我有过的方案看履带—轮组式最常见的构型是“四轮组中部履带抬升机构”四个轮子负责正常行驶与支撑两条履带布置在左右两侧通过电动推杆或电磁离合器控制履带是否参与驱动。履带接地时整车相当于轮履并联驱动前部接近角增大可以减少台阶边缘对车头的阻碍。先按单人康复椅量级定一组总体参数轮径250mm履带宽度100mm履带接地长度400mm越障高度100mm最大爬坡角15°。很多人以为履带介入就是把车架整体抬起来这样其实等于把整车重量从一个支撑面搬到另一个支撑面容易造成乘员后仰。更稳妥的原则是轮组保持驱动履带从空转状态逐步压在路面上分担载荷而不是在静止状态下直接放下履带。这样冲击小驱动系统也不容易出现堵转。这个原则要写进设计说明书的操作流程里。2.2 接地比压与驱动扭矩的计算履带行走机构最核心的不是电机扭矩而是接地比压。接地比压太大会陷入松软地面太小则履带过长转弯空间不够。复合结构在切换时整车质量会部分从轮组转移到履带上因此要分别计算轮组支撑和履带介入两种状态。履带介入时按整车质量均匀分布在所有接地履带上。设整车重量为 W同时接地的履带总数为 N_track单条履带宽度 b、接地长度 L平均接地比压为p W / (N_track * b * L)以总质量150kg计算W1470Nb0.1mL0.4mN_track2得到接地比压约18.4kPa。这个量级对室内瓷砖和压实土壤都可接受如果后续把乘员上限提高到180kg接地比压会升到22kPa以上此时需要加长履带或加宽履带。驱动电机扭矩按坡度阻力、滚动阻力和履带内部阻力叠加。下面这段 MATLAB 脚本通常放在设计说明书附录里作为计算依据% 履带-轮组电动轮椅速度与扭矩初算 W 150 * 9.8; % 整车重量 150kg单位N mu 0.06; % 滚动阻力系数室内取0.05-0.08 theta 15 * pi / 180; % 最大爬坡角 15° r_wheel 0.125; % 轮组主动轮半径单位m eta 0.85; % 机械传动效率 i_gear 20; % 减速比初值 v 6 / 3.6; % 最大速度 6km/h 折算为 1.67m/s F_r mu * W * cos(theta); % 坡道滚动阻力 F_g W * sin(theta); % 坡度阻力 F_fric 0.5 * F_r; % 履带内部阻力按滚动阻力0.5倍估算 F_total F_r F_g F_fric; % 总行驶阻力 P_total F_total * v; % 总驱动功率 T_motor_total F_total * r_wheel / (eta * i_gear); T_motor_each T_motor_total / 2; % 单侧电机轴扭矩 % 两条履带同时接地时的平均接地比压 p W / (2 * 0.1 * 0.4); fprintf(平路阻力: %.1f N\n, F_r); fprintf(坡度阻力: %.1f N\n, F_g); fprintf(总行驶阻力: %.1f N\n, F_total); fprintf(总驱动功率: %.1f W\n, P_total); fprintf(单侧电机轴扭矩: %.2f Nm\n, T_motor_each); fprintf(平均接地比压: %.1f kPa\n, p / 1000);这段脚本把决定电机选型和履带宽度的两个关键量算在一起。参数说明theta 是设定最大爬坡角坡度阻力随正弦函数增长不要直接拿 15/100 去换算r_wheel 取轮组主动轮半径而不是履带驱动轮半径因为轮履并联驱动时整车速度由轮组主导按轮子半径计算更保守i_gear 由电机额定转速和最大行走速度反推初值给 20后续用电机峰值扭矩校验。F_fric 只是设计初算用的等效阻力不代表详细设计中的履带预紧损耗真正的内部阻力要通过台架试验标定。注意如果只有一侧履带接地N_track 要改成 1接地比压会翻倍所以切换结构必须保证两条履带同时接触地面否则在松软路面很容易出现偏沉。2.3 履带切换执行机构对比履带介入方式常见有三种电动推杆整体升降、电磁离合啮合履带驱动轮、凸轮偏心顶升。三者的机械复杂度和响应速度差别明显。电磁离合响应快适合在检测到轮组打滑时毫秒级接入但履带与轮组的速度匹配依赖算法电动推杆结构简单能实现物理抬起履带动作时间约1到2秒需要提前预判障碍凸轮顶升省电但行程短对加工公差要求高。切换方式响应时间结构复杂度故障模式说明书中需要标注的边界电磁离合50ms中离合片发热、剩磁接合时轮履速差 0.5m/s电动推杆1-2s低推杆堵转、行程开关失效需设计限位和堵转电流保护凸轮顶升300ms-1s高凸轮磨损、卡死配合编码器做初始位置标定从控制角度看电磁离合响应最快但如果轮组和履带线速度不一致接合瞬间会有冲击。因此设计说明书里必须写一条控制约束离合接合前根据轮组电机转速估算当前车速再匹配履带驱动电机目标转速允许速差限制在 0.5 m/s 以内。这条约束是后面写状态切换条件的重要依据。3. 电动驱动与控制系统的参数链路3.1 电机、电池和驱动器选型履带—轮组式比普通电动轮椅多一套履带驱动或顶升机构电流峰值叠加选型时不能只按额定功率。以 2.2 节计算结果为例最大爬坡时总行驶阻力约 510N按 6km/h 折算总驱动功率约 850W。考虑履带介入时的瞬时冲击、转向阻力和加速阻力单侧电机建议选 500W 以上为了留足峰值裕量实际常选 750W 额定、峰值 1.5kW 的直流无刷电机。电池电压通常选 48V 锂电容量根据续航和峰值电流综合确定。给出一个可放到说明书里的选型参数表部件参数项推荐值设计说明书中的复核点驱动电机额定功率750W×2峰值功率是否覆盖履带介入窗口减速器减速比20输出扭矩是否大于阻力计算值电机控制器母线电压/电流48V / 60A与电池放电倍率匹配峰值 3C电池标称容量20Ah续航和持续放电电流的折中电动推杆行程/推力40mm / 5kN推杆堵转电流值与限位开关配合这里面最容易遗漏的是峰值电流持续时间。履带介入越障时电流会从 20A 短时间跳到 60A持续时间约 2 到 4 秒。电池保护板不能立即触发过流断闸否则会导致切换瞬间整车断电。说明书里应明确写电池保护板允许 60A 持续时间不小于 5s。这个参数要在电芯规格书里找不要在整包铭牌上找。3.2 主控到驱动器的PWM控制链路控制链路优先级从高到低依次是安全回路、电机控制、状态切换、人机交互。主控一般选用带硬件浮点和多路定时器的 MCU比如 STM32F407 或同级别国产芯片因为差速控制和传感器融合需要在 1kHz 左右的控制周期里做浮点运算。电机控制器直接接收主控的 PWM 信号也可以使用 CAN 总线但在电动轮椅这类低速产品上PWM方向信号仍是低成本常见做法。下面是一段基于 STM32 HAL 库的 PWM 初始化片段/* TIM1 输出四路PWM左右驱动电机 左右履带电机 */ static void MX_TIM1_Init(void) { TIM_OC_InitTypeDef sConfigOC {0}; /* 定时器时钟120MHz预分频后计数频率24MHz */ htim1.Init.Prescaler 4; // (41)分频 htim1.Init.Period 1499; // PWM频率约16kHz htim1.Init.CounterMode TIM_COUNTERMODE_CENTERALIGNED1; htim1.Init.Channel TIM_CHANNEL_ALL; HAL_TIM_PWM_Init(htim1); sConfigOC.OCMode TIM_OCMODE_PWM1; sConfigOC.Pulse 0; sConfigOC.OCPolarity TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(htim1, sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_ConfigChannel(htim1, sConfigOC, TIM_CHANNEL_2); HAL_TIM_PWM_ConfigChannel(htim1, sConfigOC, TIM_CHANNEL_3); HAL_TIM_PWM_ConfigChannel(htim1, sConfigOC, TIM_CHANNEL_4); HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_1); HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_2); HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_3); HAL_TIM_PWM_Start(htim1, TIM_CHANNEL_4); }这段配置要解释的是 PWM 频率和中心对齐模式的选择。中心对齐模式下PWM 上升沿和下降沿相对于计数周期中心对称电流波形比边沿对齐更平稳适合双电机同步驱动代价是开关次数增多驱动器会稍微发热。周期 1499 和预分频 4 的组合在 120MHz 定时器时钟下得到约 16kHz 的 PWM 频率这个频率刚好避开人耳敏感区同时让电流纹波可控。实际开发中如果电机啸叫明显先把 PWM 频率调到 20kHz再查驱动器是否支持。注意这段代码只负责控制通道建立不包含无刷电机的换相逻辑。真正跑起来还需要在定时器更新中断里做速度环和电流环。3.3 差速模型与速度环PI参数轮组和履带是两套驱动单元差速转向时左右轮速不同速度闭环不能使用同一个目标值。一般把摇杆输入解释为纵向前进速度和横摆角速度再通过差速公式换算成左右轮目标速度。左右轮速度分别为v_left v - ω * B / 2v_right v ω * B / 2其中 v 是车体纵向速度ω 是转向角速度B 是左右驱动轮轮距。由于轮椅低速行驶不必引入复杂的滑移率模型但履带介入时履带速度要先跟随轮组速度状态稳定后再切换到履带主导的越障控制。速度环 PI 控制可以用一个很简短的增量式写法float pi_update(float err, float kp, float ki, float dt) { static float integral; float out; integral err * dt; if (integral 0.5f) integral 0.5f; // 积分限幅 0.5 if (integral -0.5f) integral -0.5f; out kp * err ki * integral; return out; }这里把积分限幅直接写在函数内部避免控制周期长时间饱和。kp 和 ki 的初值通常根据电机和整车惯量估算一阶速度回路的经验做法是kp 先取 0.05 到 0.2ki 取 kp 的 10 到 20 倍再在整车离地状态下用阶跃响应找临界增益。离地状态指的是把驱动轮悬空只让电机空转用来观察响应曲线尤其适合调试初期排除地面摩擦干扰。履带驱动时由于内部摩擦大积分项更容易饱和。因此履带电机 PI 参数不能直接复用轮组参数需要在履带接地但整车静止的条件下重新标定让电流缓慢上升直到履带刚好开始蠕动此时对应的积分初值就是电机克服静摩擦的门限。4. 从传感器融合到履带介入的越障控制4.1 传感器配置与安装要点要让履带在正确时间介入至少需要三类信息电机电流、车身姿态、前方障碍距离。电流可以判断轮组是否打滑IMU 角度可以判断车身是否抬头或侧倾超声波或激光测距用来预判路缘高度。最小传感器配置如下表传感器数据类型数据用途安装位置推荐频率电机母线电流模拟量轮组阻力激增检测驱动器内部1kHz轮组编码器正交/霍尔轮速反馈与速差计算驱动电机尾部1kHzIMU加速度陀螺仪俯仰角、横滚角估计车底靠近重心500Hz超声波测距距离数值前方0.2-2m障碍预判脚踏板下方20Hz限位开关开关量履带顶升机构到位推杆两侧事件触发传感器安装里最容易踩的坑是 IMU 的安装位置。不要装在靠近电机或推杆的地方电机振动和推杆电机都会给加速度计引入高频噪声。一般会把 IMU 固定到车架横梁中央用海绵减震垫隔离标定时先测量静止状态下的零点偏移再把角度零点写入校准参数。4.2 越障状态机不要用单阈值触发履带履带介入不能只依赖一个阈值因为电流超限可能是撞到固定障碍也可能是推杆堵转。建议把控制逻辑实现为状态机状态转移同时考察电流差、俯仰角变化率和前方高度判断。下面给出状态机枚举和一个决策函数示例typedef enum { MODE_WHEEL, // 平地轮组驱动 MODE_CONTACT, // 探测到障碍履带预接触 MODE_TRACK_CLIMB, // 履带驱动越障 MODE_TRACK_RETURN // 车头通过回到轮组 } chassis_state_t; static chassis_state_t state MODE_WHEEL; void chassis_control(float current_diff, float pitch_rate, float obstacle_height, float *target_current_limit) { switch (state) { case MODE_WHEEL: if (current_diff 3.0f obstacle_height 0.05f) state MODE_CONTACT; *target_current_limit 25.0f; break; case MODE_CONTACT: if (pitch_rate 8.0f) state MODE_TRACK_CLIMB; else if (current_diff 1.0f) state MODE_WHEEL; // 误判回到轮组 *target_current_limit 35.0f; break; case MODE_TRACK_CLIMB: if (pitch_rate -3.0f) state MODE_TRACK_RETURN; *target_current_limit 60.0f; break; case MODE_TRACK_RETURN: if (pitch_rate -1.0f pitch_rate 1.0f) state MODE_WHEEL; // 车身恢复水平切回轮组 *target_current_limit 40.0f; break; } }这段逻辑的关键是把履带介入拆成两次确认。MODE_WHEEL 里电流差超过 3A 且前方高度超过 5cm只说明遇到障碍不代表一定要上履带MODE_CONTACT 里要等车头出现抬头趋势也就是俯仰角速度大于 8°/s才真正把履带驱动电流加进去。这样处理的好处是遇到减速带这类低矮障碍时轮组可以直接冲过去不会频繁切换履带。target_current_limit 是限流值不是目标电流用于防止履带电机的输出在切换瞬间拉垮整个电池母线。注意current_diff 是指左右轮电流差的绝对值而不是单个电机电流。轮组模式中两侧电流接近一旦某侧陷入沟槽或轮胎打滑左右电流差会明显拉开。用电流差触发比用单侧电流阈值可靠因为上坡时单侧电流升高但左右仍相对均衡。4.3 用互补滤波估计俯仰角越障中需要车头俯仰角但单独读加速度计角度在运动时受线性加速度干扰单独积分陀螺仪又会漂移。常见做法是用互补滤波把两者有效频段结合起来angle alpha * (angle gyro * dt) (1 - alpha) * accel_anglealpha 取 0.95 到 0.98取决于运动强度和时间常数。这个做法比卡尔曼容易整定在低成本的 32 位单片机上就能跑。简单实现如下float complementary_filter(float accel_angle, float gyro_rate, float dt, float *angle) { float alpha 0.96f; // 陀螺仪权重 *angle alpha * (*angle gyro_rate * dt) (1.0f - alpha) * accel_angle; return *angle; }参数说明accel_angle 由加速度计通过 atan2(accel_x, accel_z) 计算得到gyro_rate 是陀螺仪 Y 轴角速度单位 rad/sdt 是滤波调用周期必须与传感器读取周期一致。alpha 越大角度输出越平滑但响应越慢容易错过车头抬升的时刻取 0.96 时若控制周期 2ms时间常数约 50ms对越障动作足够。状态机和滤波器的调用建议放在同一个定时器中断里并加看门狗喂狗防止履带卡死后主控停留在故障状态无法退出。5. 设计说明书的参数落地与验证技巧5.1 用脚本统一参数源写设计说明书时最忌讳手工录入大量计算参数因为一处改动后容易漏同步。常见做法是以 MATLAB 或 Python 脚本作为参数源自动生成 CSV 表格再嵌入 Word 或 Markdown 文档。脚本里维护一份设计输入表包含整车重量、轮径、履带宽度、接地长度、爬坡角等所有计算引用这份输入。与 2.2 节 MATLAB 脚本对等的 Python 版本可以写成import math W 150 * 9.8 # 整车重量 N mu 0.06 theta math.radians(15) F_r mu * W * math.cos(theta) F_g W * math.sin(theta) F_total F_r F_g 0.5 * F_r print(fF_total{F_total:.1f} N)这段代码与 MATLAB 脚本功能一致但更便于在文档构建流程里做参数复核。设计说明书里只要保留一份源脚本审图人查任何衍生参数时都能回退到输入值不用在几十张 Excel 表之间来回找。5.2 运动仿真要跑三种工况使用 SolidWorks Motion 做运动学仿真时除了跑“平地行驶”和“15°坡道爬坡”外还要专门跑“单侧60mm台阶越障”。单侧越障会带来横滚角变化是所有工况中对轮履切换结构最严格的一种。仿真里给履带与地面设置摩擦系数时不要把动摩擦设成固定值建议按硬地面0.6、履带橡胶0.4、轮胎0.55分别设置否则仿真结果偏乐观。除 SolidWorks 外还可以用 ADAMS 验证履带与轮组的动力学耦合但电动轮椅这类低速系统SolidWorks Motion 足够完成大部分验算。5.3 审图时最常挑刺的三处细节设计说明书里最容易被打回的是接地比压取值、推杆堵转电流和电池连续放电时间。建议在这三处各放一张测试记录表格写明实测值和允许值。比如接地比压理论 18.4kPa实际测得轮胎与履带压痕面积算出来 19.2kPa误差在 10% 内就可以接受。推杆堵转电流要写明持续时间和恢复策略一般建议 1.5s 内控制器主动断电避免烧线圈。还有一个不常写但实用的技巧在履带驱动轮的侧板开两个对称的观察孔方便装配现场用内窥镜观察离合接合间隙。把参数表、仿真设置和这三个测试记录放进设计文档的验证章节后接下来可以直接照着 BOM 表去询价不用再回头改机械图纸。本文还有配套的精品资源点击获取
返回列表