便携转桌器Tabo:欠驱动机构与负载响应式控制实践
1. 项目概述
便携转桌器(Tabo)是一款面向真实生活场景的嵌入式机电一体化产品,其设计目标明确指向聚餐场景中普遍存在的“转盘难动、夹菜不便、互动尴尬”痛点。它并非传统意义上的桌面玩具或演示原型,而是一个具备完整功能闭环、多重安全机制与人机工程考量的微型智能执行终端。整机尺寸仅75mm × 50mm × 14mm,小于标准银行卡面积,却集成了电机驱动、力觉感知、状态反馈、能量管理与磁吸交互五大子系统。其核心价值不在于参数堆砌,而在于将欠驱动机构、自增强压紧、负载响应式控制等机械与控制思想,以极简硬件和可复现的固件逻辑落地为用户可感知的“一塞即用、一扶即停、一反即启”的自然交互体验。
该设备采用纯物理方式与现有餐桌转盘耦合:无需改装桌面、不依赖蓝牙或APP、不改变原有使用习惯。用户仅需将其从收纳壳中取出,沿转盘边缘缝隙水平推入——抬升臂自动完成定位贴合,摩擦轮轻触转盘下沿,系统即进入待机状态;单击按键启动旋转,转盘开始平稳转动;当他人用手轻扶转盘边缘时,系统在毫秒级内检测到负载突变并停止输出;松手后若转盘发生微小反向位移(<2°),系统立即识别为重启意图,恢复驱动。整个过程无语音提示、无屏幕操作、无学习成本,符合EDC(Every Day Carry)工具对“直觉性”与“零认知负荷”的本质要求。
2. 系统架构与工作模式
2.1 整体架构划分
Tabo系统由机械执行层、传感控制层、能源管理层与人机交互层四部分构成,各层之间通过刚性结构与确定性信号流紧密耦合,不依赖无线通信或云端服务。
- 机械执行层:包含N30编码器电机、D型轴、抬升臂总成(含输入齿轮、惰轮、输出齿轮及末端摩擦轮)、上下限位板与防滑带。该层实现“抬升—贴合—驱动”三重动作的单源动力复用。
- 传感控制层:以STM32F103C8T6为主控,集成增量式编码器(用于速度与位置反馈)、INA219电流/电压/功率监测芯片、ADC通道采集电机驱动电压与壳体温度(通过NTC热敏电阻分压)、独立按键与OLED显示屏。
- 能源管理层:IP5306电源管理IC完成锂电池充放电管理、过压/欠压保护、充电状态指示,并为MCU、电机驱动与显示模块提供稳定3.3V与5V双路输出。
- 人机交互层:单多功能按键(带半透光LED键帽)、0.96英寸透明OLED屏(支持状态文字与数值显示)、磁吸收纳壳(兼具携带固定与悬浮把玩双重功能)。
四层之间不存在软件抽象层或中间件,所有状态判断与模式切换均基于原始传感器数据与确定性阈值逻辑完成,确保响应延迟可控、行为可预测、故障可追溯。
2.2 欠驱动机构原理与双模式切换
欠驱动(Underactuation)在此处并非指自由度大于驱动数的理论构型,而是特指单电机驱动下实现两种互斥机械功能的时序复用机制。其物理本质是利用机构运动学约束与接触力学反馈,使同一动力源在不同阶段自动分配至不同执行路径。
初始插入阶段(Mode 1:抬升定位),电机正转,动力经D型轴传入抬升臂输入齿轮。由于抬升臂枢转端通过轴承固定于主机底板,此时惰轮与输出齿轮构成行星轮系中的固定系杆,输入齿轮驱动抬升臂整体绕枢转点逆时针旋转,带动摩擦轮向上抬起,直至其边缘接触转盘底部支撑面。此过程持续约0.8秒,由编码器累计脉冲数硬限位(约1200脉冲),避免过行程损伤。
接触转盘后(Mode 2:摩擦驱动),摩擦轮与转盘间产生法向压力与切向静摩擦力。当电机继续正转时,抬升臂受转盘反作用力发生微小弹性形变,导致输入齿轮与惰轮啮合点偏移,惰轮开始自转并驱动输出齿轮反向旋转——该反向扭矩通过抬升臂内部杠杆结构转化为对摩擦轮的附加向下压紧力。此时电机输出不再用于抬升,而全部转化为驱动转盘旋转的切向力矩。该模式切换完全由机械结构自触发,无需霍尔开关或压力传感器参与,可靠性高、成本低、无磨损点。
2.3 偶数齿轮组的自增强压紧效应
传动链中采用“输入齿轮—惰轮—输出齿轮”三级啮合,其中输入与输出齿轮齿数相等(均为20T),惰轮为10T。该偶数级布置的关键作用在于:当输出齿轮驱动摩擦轮顺时针旋转时,根据齿轮啮合反作用力方向分析,惰轮对输出齿轮施加的径向分力始终指向转盘中心,进而通过抬升臂连杆结构将该分力分解为垂直于转盘表面的正压力增量。
具体力学路径如下:
电机输出扭矩 → D型轴 → 输入齿轮 → 惰轮(受输入齿轮推力F₁)→ 输出齿轮(受惰轮反作用力F₂)→ 抬升臂杠杆臂 → 摩擦轮接触点
由于输入与输出齿轮转向相反,F₂方向恒定,其在抬升臂平面内的垂直分量ΔN与摩擦轮旋转方向无关,仅取决于当前啮合状态。实测表明,该自增强效应可使静态压紧力提升约35%,显著改善光滑陶瓷或玻璃转盘表面的附着性能,避免空转打滑。该设计摒弃了传统弹簧预紧或气动加压方案,以纯机械方式实现“越转越紧”,符合微型化与免维护需求。
3. 硬件设计详解
3.1 主控与电机驱动电路
主控采用STM32F103C8T6,其72MHz Cortex-M3内核足以支撑多任务实时调度:TIM2定时器以1kHz频率采样编码器AB相脉冲,TIM3生成PWM波驱动电机,ADC1同步采样4路模拟信号(电机驱动电压、壳体温度、电池电压、电流检测),GPIO口管理按键消抖与OLED通信。PCB布局严格遵循模拟/数字分区原则,ADC参考电压由独立LDO提供,编码器信号线全程包地处理,电机驱动回路与主控电源地单点连接于IP5306 GND焊盘。
电机驱动选用DRV8833双H桥芯片,支持最大1.5A持续电流与2A峰值电流,内置过流、过热、欠压保护。其IN1/IN2引脚接收MCU输出的PWM+DIR信号,OUT1/OUT2直接连接N30电机两端。关键设计点在于:
- 在DRV8833输出端并联100nF陶瓷电容与10μF钽电容,抑制换向尖峰;
- 电机外壳接地,消除共模干扰对编码器信号的影响;
- DRV8833的FAULT引脚接入MCU外部中断,实现硬件级过载快速响应(响应时间<5μs)。
3.2 负载检测与安全保护电路
Tabo的“人手一扶即停”功能不依赖额外力传感器,而是通过电机电流—转速联合判据实现。其物理依据是:当转盘被外力制动时,电机反电动势骤降,为维持PID设定转速,控制器大幅提高PWM占空比,导致供电电流急剧上升,同时编码器反馈速度趋近于零。
硬件层面,INA219芯片以0.1Ω精密采样电阻串联于电机电源回路,实时监测电流(I)、母线电压(V)与瞬时功率(P=VI)。软件中定义三级保护阈值:
- 过载保护:连续3次采样P > 1.2W且Speed < -200(对应-100rpm)时,置state = 'F',强制停机;
- 过热保护:ADC_Channel_3采集NTC分压值,查表得温度>65℃时置state = 'G';
- 低压保护:V < 3.4V持续10秒,置state = 'E'。
所有保护状态均触发OLED显示对应错误码,并关闭PWM输出,但保持编码器与ADC采样,便于故障复位诊断。该方案避免了专用电流传感器的成本与体积开销,复用已有电源通路实现高精度监测。
3.3 人机交互与显示电路
交互采用单物理按键(轻触开关),通过RC滤波与软件消抖(10ms延时确认)实现可靠触发。按键事件分为短按(<500ms)与长按(>1500ms)两类:
- 短按:在运行态循环切换转速档位(A/B/C),在停机态唤醒系统;
- 长按:强制关机(state = 'D')。
OLED屏采用SSD1306驱动IC,SPI接口通信。选择透明基板版本,使LED键帽光线可穿透屏幕背面,在暗光环境下形成柔和环形背光。显示内容严格分级:
- 运行态:第1行显示电池电压(mV)、第2行显示当前转速(RPM)、第3行显示瞬时功率(mW);
- 保护态:全屏显示错误类型(如“Overload”);
- 待机态:显示“Press to Start”。
所有字符均为8×16点阵字模,无图形渲染,降低MCU资源占用。OLED供电由IP5306的5V输出经LDO稳压至3.3V,避免电机启停时电压波动导致屏幕闪烁。
3.4 电源管理与电池系统
系统采用500mAh锂聚合物电池(标称3.7V),通过IP5306实现完整电源管理。该芯片集成:
- Type-C接口双向充放电(输入5V/1A,输出5V/2A);
- 电池电量计量(库仑计+电压查表);
- 充电状态指示(CHRG/STDBY引脚驱动LED);
- 输出过流保护(1.5A硬限位);
- 电池过充(4.25V)、过放(2.8V)保护。
PCB上设置独立电池焊盘与Type-C座,取消保护板,由IP5306内部MOSFET完成充放电控制。实测满电状态下,以中速档(-3000 RPM)连续驱动标准木制转盘(直径60cm,负载惯量≈0.015 kg·m²)可持续工作5小时42分钟,待机电流<12μA,满足EDC设备周常使用需求。
4. 软件设计与控制逻辑
4.1 主循环状态机设计
固件采用事件驱动型状态机,共定义7个主状态(A–G),每个状态对应唯一控制目标与显示策略:
| 状态 | 含义 | PID目标值 | 显示内容 | 进入条件 |
|---|---|---|---|---|
| A | 低速档 | -2000 | 电压/转速/功率 | 开机默认或短按切换 |
| B | 中速档 | -3000 | 同上 | 短按一次 |
| C | 高速档 | -5000 | 同上 | 短按两次 |
| D | 待机 | 0 | “Wait” | 过载/过热/低压触发 |
| E | 低压告警 | 0 | “Low battery” | V < 3.4V持续10s |
| F | 过载告警 | 0 | “Overload” | P > 1.2W且Speed < -200 |
| G | 过热告警 | 0 | “Overterature” | 温度 > 65℃ |
状态迁移完全由确定性条件触发,无优先级抢占。例如:当处于A态且检测到P > 1.2W且Speed < -200时,立即跳转至F态;若在F态中温度回落至60℃以下且P < 0.8W,则需用户手动短按一次方可返回A态,防止误触发重启。
4.2 PID速度闭环控制
电机控制采用位置式PID算法,参数经Ziegler-Nichols临界比例度法整定:
- Kp = 0.001f(抑制超调)
- Ki = 0.001f(消除稳态误差)
- Kd = 0.0f(转盘负载惯性大,微分易振荡)
设定值(Setpoint)为编码器脉冲计数率,单位为“脉冲/100ms”。实际反馈值(Process Variable)由TIM2中断中Encoder_Get_v()函数获取,该函数对AB相正交编码器进行四倍频计数,分辨率提升至4000PPR。控制输出经set_motor_pwm()函数映射为TIM3通道的PWM占空比,范围0–100%。
关键优化在于抗积分饱和处理:当输出达到±400(对应PWM 0%或100%)时,暂停Ki项累加;同时设置积分限幅(-200 ~ 1000),防止长时间偏差导致积分项过大。实测在0.5kg负载阶跃变化下,转速恢复时间<300ms,超调量<8%。
4.3 负载响应与重启检测算法
“一扶即停”与“轻反即启”功能由以下两段核心逻辑实现:
// 负载检测:连续3次采样满足条件则触发停机 if((Speed < -2000) && (flag_1 == 0)){ flag_1 = 1; } if( (flag_1 == 1) && ((Speed/C) > -5)){ // C为当前电流(mA),Speed/C反映机械效率 state = 'D'; flag_1 = 0; } // 重启检测:检测到反向微小位移即恢复驱动 if(state == 'D' && Speed > 0){ state = 'A'; }此处Speed/C为归一化负载指标,当转盘被制动时,Speed趋近于0而C急剧增大,该比值迅速升高,突破阈值-5即判定为有效制动。而Speed > 0则捕捉到用户松手后转盘因惯性产生的微小反向滑动(通常<0.5°),该信号作为最自然的重启指令,无需额外传感器或复杂模式识别。
4.4 数据平滑与显示优化
为消除电机换向噪声对ADC采样的影响,对三类关键模拟量实施滑动平均滤波:
vbus_filter:电池电压,时间常数τ=200ms;current_filter:电机电流,τ=50ms(需快速响应过载);power_filter:瞬时功率,τ=100ms。
滤波器采用一阶IIR结构:y[n] = α·x[n] + (1-α)·y[n-1],系数α根据τ与采样周期计算得出。OLED显示前对数值进行整数截断与符号处理,避免浮点运算开销。例如电池电压显示为AD2(经标定公式(120000 - 50 * AD2)/1000计算所得mV值),直接调用OLED_ShowNum()函数输出,无小数点运算。
5. 结构设计与装配要点
5.1 抬升臂机械公差控制
抬升臂为ABS材质3D打印件,关键尺寸公差控制如下:
- 枢转孔径:Φ3.00±0.02mm(匹配标准Φ3mm轴承外径);
- 摩擦轮轴孔:Φ1.50±0.01mm(适配N30电机D型轴Φ1.5mm);
- 上下限位板间隙:0.3mm(保证抬升臂旋转时无卡滞,同时限制最大抬升角为32°)。
装配时需确保抬升臂与主机底板间加装0.1mm厚聚酰亚胺垫片,消除轴承轴向窜动。实测抬升过程噪音<35dB(A计权),满足安静用餐环境要求。
5.2 磁吸收纳壳设计
收纳壳内嵌两颗Φ6×2mm N52钕铁硼磁铁,呈中心对称排布,极性朝向为:
- 主机底部磁铁:S极朝下;
- 收纳壳内磁铁:N极朝上(吸附态)/ S极朝上(悬浮态)。
通过翻转收纳壳即可切换模式:正放时异极相吸,吸附力达1.8N(可承受180g主机跌落冲击);反放时同极相斥,配合壳体底部4个Φ1.2mm锥形凹坑,可在平整玻璃表面实现稳定悬浮(悬浮间隙0.8–1.2mm)。该设计将收纳功能与解压玩具属性融合,无需额外部件。
5.3 实际安装适配指南
Tabo对转盘缝隙宽度敏感,理想间隙为1.2–1.8mm。若实测间隙过大(>2.0mm),可将收纳壳置于转盘下方作为垫片使用——其厚度1.5mm恰好补偿公差。安装时需注意:
- 摩擦轮橡胶面须清洁无油污,首次使用前可用酒精棉片擦拭;
- 推入方向必须水平,倾斜角度>5°可能导致抬升臂单侧卡死;
- 木质转盘建议使用中速档(B态),陶瓷/玻璃转盘推荐高速档(C态)以增强压紧效果。
6. BOM清单与关键器件选型依据
| 序号 | 器件 | 型号 | 数量 | 选型依据 |
|---|---|---|---|---|
| 1 | 主控芯片 | STM32F103C8T6 | 1 | 成本低(¥3.2)、资源足(64KB Flash/20KB RAM)、生态成熟、支持硬件除法器加速PID计算 |
| 2 | 电机 | N30编码器电机(12V, 4000PPR) | 1 | 直径10mm满足厚度限制,编码器集成简化结构,堵转扭矩0.12N·m足够驱动标准转盘 |
| 3 | 电机驱动 | DRV8833 | 1 | 双H桥、内置保护、宽压输入(2.7–10.8V)、封装SOIC-16易于焊接 |
| 4 | 电源管理 | IP5306 | 1 | 集成Type-C PD协议、支持边充边放、内置电池保护、QFN24封装节省面积 |
| 5 | 电流检测 | INA219 | 1 | I²C接口、±16V共模电压、0.1%精度、16bit ADC,替代分流+运放方案 |
| 6 | 显示屏 | 0.96"透明OLED(SSD1306) | 1 | 透明基板支持背光穿透,96×64分辨率满足信息显示,SPI接口速率高 |
| 7 | 按键 | 轻触开关(6×6mm) | 1 | 行程0.25mm保证触感清脆,镀金触点寿命>10万次 |
| 8 | 电池 | 500mAh锂聚合物(3.7V) | 1 | 能量密度高(≥200Wh/kg),厚度≤3mm适配整机高度,支持Type-C快充 |
所有被动器件均选用车规级温度系数(X7R),晶振采用±10ppm精度,确保-10℃~50℃环境下的长期稳定性。PCB为双层板,1.2mm厚FR4基材,铜厚2oz,关键电源走线宽度≥0.5mm,满足1.5A持续电流需求。
7. 测试验证与典型问题处理
7.1 功能验证方法
- 抬升功能:目视确认抬升臂从初始位置旋转至与底板夹角32°,摩擦轮边缘距底板距离为1.5mm;
- 驱动功能:空载下测量转盘转速,A/B/C档对应转速应为12rpm/18rpm/30rpm(误差±5%);
- 负载响应:用电子秤垂直下压转盘边缘至5N力,观察OLED是否在1.2秒内显示“Overload”;
- 重启功能:在停机态手动反转转盘1°,确认300ms内恢复驱动;
- 续航测试:以B档连续运行,记录从满电至电压跌至3.4V的时间,应≥5.5小时。
7.2 常见问题与解决措施
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 抬升臂无法到位 | 编码器A/B相接反;限位板螺丝过紧 | 交换编码器线序;松开限位板固定螺丝0.5圈 |
| 转盘打滑 | 摩擦轮橡胶老化;转盘表面有水渍 | 更换摩擦轮;用干布擦拭转盘下沿 |
| OLED显示乱码 | SPI时钟极性/相位配置错误;OLED供电不足 | 检查SSD1306初始化代码中CPOL/CPHA设置;测量VCC是否稳定3.3V |
| 按键无响应 | RC滤波电容虚焊;按键引脚未上拉 | 用万用表测按键两端阻值(按下应<10Ω);检查MCU GPIO是否配置为上拉输入 |
所有测试均在无外部调试器条件下完成,固件通过SWD接口烧录后即可脱离开发环境独立运行,符合量产交付要求。
