机器人竞赛硬件入门:电源、电机、通信与调试避坑指南

1. 从一场烧板子的事故说起:为什么硬件基础值得单独开一讲

第一次接触机器人竞赛硬件那会儿,我犯过一个现在想起来都脸红的错误。当时队里分到一块新到的电机驱动板,我图省事,直接拿实验室里一个标称24V的电源适配器怼了上去,心里还想着“电压一样,肯定没问题”。结果上电不到三秒,板子上一颗钽电容直接冒烟,紧接着主控芯片也跟着报废。后来查手册才发现,那块驱动板的逻辑供电和功率供电是分开的,逻辑侧最高只能吃5.5V,我把24V灌进了逻辑接口。一块板子几百块,加上耽误的调试时间,这个教训值好几千。

这件事让我意识到,机器人竞赛的硬件门槛,从来不是“会不会焊线”这么简单。它是一整套关于电源域划分、信号完整性、接口协议、热设计、机械电气配合的系统工程。很多新入队的同学,软件写得飞起,一到硬件就抓瞎:不知道电池怎么选、不知道电调为什么要校准、不知道CAN总线为什么偶尔丢包、不知道陀螺仪数据为什么飘。这些问题在赛场上暴露出来,往往就是几分钟内决定胜负。

这篇内容,我想把机器人竞赛硬件里那些最基础、最容易踩坑、但网上又讲得零散的知识点,系统地梳理一遍。它适合刚进战队、负责硬件方向的新人,也适合软件同学用来补齐硬件认知短板。我不会堆砌一堆芯片手册上的参数,而是从“实际装机、实际调试、实际比赛”的角度,把每个模块为什么这么设计、怎么选、怎么接、怎么测讲清楚。你把这套逻辑吃透,至少能避开我当年烧板子那种低级错误,也能在调试时更快定位问题。

2. 电源系统:整台机器人的血液循环

2.1 电池选型不是看容量越大越好

机器人竞赛里最常见的动力电池是锂聚合物电池,标称电压通常按电芯串联数来标,比如3S是11.1V,4S是14.8V,6S是22.2V。很多新人选电池只看两个数:容量和放电倍率,觉得越大越猛。但实际选型要算三笔账。

第一笔是电压匹配账。你的电机、电调、降压模块都有额定输入范围。比如某款电调标称支持3S到6S,那你用6S电池没问题;但如果你的降压模块最高只支持到5S,那6S电池上去就会烧。所以整机电压平台要先定下来,再倒推电池串数。

第二笔是放电能力账。电池的持续放电电流等于容量乘以放电倍率。比如一块5000mAh、20C的电池,理论持续放电是100A。但注意,这个100A是电池能输出的上限,不是你实际会用的电流。你要估算整机峰值功率,比如四个电机每个峰值30A,那就是120A,这时候一块20C的5000mAh电池就不够看了,得换更高倍率或者并联。实际经验是,留出30%以上余量,电池发热和压降都会小很多。

第三笔是重量与重心账。容量越大,电池越重。机器人底盘对重量敏感,尤其是平衡类或轮腿类机器人。我见过有队伍为了续航硬塞一块大电池,结果重心偏高,过弯直接翻车。所以电池选型要在续航、功率、重量之间找平衡点,通常比赛局均几分钟,不需要追求超长续航,反而要优先保证瞬时爆发和轻量化。

2.2 电源分配:别让一颗老鼠屎坏了一锅汤

整机电源分配的核心思想是分域供电、逐级降压、独立保护。什么意思?电池出来的高压先给功率负载(电机、电调),然后通过降压模块分出12V、5V、3.3V给控制、传感、通信等低压负载。每个域之间最好有独立的保险或限流,避免一个模块短路把整机拉垮。

我习惯在电池正极出来后先接一个总开关和一个大电流保险丝,保险丝额定值按整机峰值电流的1.2到1.5倍选。然后功率域直接走粗线到分电板,控制域经过降压模块。降压模块选型要注意三点:输入电压范围要覆盖电池满电到空电的区间(比如6S电池满电25.2V,空电约19.8V),输出电流要留足余量,效率尽量高(减少发热)。

这里有个容易忽略的细节:降压模块的输入端和输出端都要加电容。输入端加电解电容吸收电池线上的电压尖峰,输出端加陶瓷电容滤高频噪声。很多莫名其妙的复位、通信丢包,根源就是电源纹波太大。我实测过,一个没加输出电容的降压模块,带电机负载时输出纹波能到几百毫伏,足以让主控复位。

2.3 地线处理:单点接地还是多点接地

地线处理是硬件里最玄学也最实在的部分。机器人上既有大电流的电机地,又有小信号的传感器地,如果随便接,电机一启动,传感器数据就跳。正确的做法是功率地和信号地在电源源头单点汇合,而不是在板子上到处乱连。

具体操作上,分电板设计时会把功率地和信号地分开铺铜,最后在电池负极入口处用一颗0欧电阻或磁珠连接。线束上,电机线尽量双绞,信号线远离电机线,如果必须交叉,尽量垂直交叉而不是平行走线。这些细节在低速调试时看不出差别,一到高速或大电流工况,就是稳定与崩溃的分界线。

3. 电机与电调:动力输出的脾气你得摸透

3.1 无刷电机的基本参数怎么读

机器人竞赛里常用的无刷电机,参数表上一般会标KV值、内阻、最大电流、极对数。KV值表示每伏电压对应的空载转速,比如KV值100的电机,接24V理论空载转速是2400转每分钟。但注意,这是空载,带载后转速会下降,下降多少取决于负载转矩和电机内阻。

选电机时,先根据机械结构确定需要的转速和转矩,然后反推KV值和减速比。比如轮式底盘,轮径已知,想要最高时速,就能算出轮子转速,再结合减速比算出电机转速,最后用电机转速除以电压得到所需KV值。转矩方面,要估算整车重量、摩擦系数、加速需求,算出轮上转矩,再除以减速比和传动效率,得到电机转矩,对照电机特性曲线看是否在高效区。

这里有个经验:电机不要长时间工作在堵转或接近堵转的状态,电流会非常大,发热急剧上升,磁钢可能退磁。比赛时如果发现电机烫得摸不得,要么是负载太重,要么是控制算法里电流限幅没做好。

3.2 电调校准:不做这一步,电机可能不转或反转

电调是连接电池、电机和主控的中间环节,它负责把直流电变成三相交流驱动电机,同时接收主控的PWM或CAN指令。新电调第一次使用,或者更换主控后,通常需要行程校准。校准的目的是让电调知道主控输出的最小和最大信号对应什么油门范围。

校准步骤一般是:主控输出最大油门信号,电调上电,听到特定提示音后,主控输出最小油门信号,电调确认并保存。不同品牌电调提示音不同,但逻辑类似。如果不校准,可能出现电机不转、转速范围很窄、或者一给油就满转的情况。

另外,电调的转向也要确认。无刷电机三根相线,任意对调两根就能反转。有些电调支持软件设置转向,有些只能通过调线。装车之前一定要空载测试转向,否则四个轮子转向不一致,机器人要么原地打转,要么直接冲出去。

3.3 CAN总线控制电调:为什么它比PWM更稳

现在很多竞赛电调支持CAN总线控制,相比传统PWM,CAN的优势很明显:抗干扰强、可回传数据、支持多设备挂载。PWM是模拟信号,线长了容易受干扰,而且一根线只能控制一个电调。CAN是差分数字信号,两根线可以挂多个电调,还能读回转速、电流、温度等信息。

但CAN也有坑。首先是终端电阻,CAN总线两端各需要120欧姆终端电阻,很多电调内置了,但如果挂载设备多或者线太长,可能需要外接。其次是波特率,所有设备必须一致,常见的是1Mbps。最后是ID分配,每个电调要设不同ID,否则会冲突。我遇到过因为两个电调ID相同,导致一个转一个不转的情况,查了半天才发现是ID没改。

4. 主控与传感器:机器人的大脑和感官

4.1 主控选型:性能、接口、生态三要素

竞赛主控常见的有基于STM32的开发板、基于ESP32的、以及一些专用控制板。选型时看三点:运算性能、外设接口、开发生态。运算性能决定你能跑多复杂的控制算法,比如卡尔曼滤波、LQR、MPC,主频太低就跑不动。外设接口看你有多少电机、传感器、通信设备要接,CAN、UART、SPI、I2C数量够不够。开发生态看社区资料、库函数、调试工具是否完善,这直接影响开发效率。

我个人的经验是,不要盲目追求高性能主控。有些队伍用很高端的芯片,结果大部分外设用不上,开发难度还大。够用、稳定、资料多,才是竞赛场景下的最优解。另外,主控板最好带调试接口,比如SWD,方便在线仿真和烧录。

4.2 IMU:姿态解算的基石与常见漂移问题

IMU是惯性测量单元,通常包含加速度计和陀螺仪,有些还带磁力计。它用来测量机器人的姿态、角速度、加速度,是平衡控制、导航定位的核心传感器。但IMU数据不是拿来就能用的,原始数据有噪声、有零偏、有温漂。

零偏是陀螺仪在静止时输出的非零值,每次上电都不一样,所以每次启动都要重新校准。校准方法很简单:机器人静止放置几秒,采集几千个样本取平均,作为零偏值,后续数据减去这个值。温漂是零偏随温度变化,电机发热、环境温度变化都会影响,高端IMU内部有温度补偿,低端的基本靠算法补偿。

姿态解算常用互补滤波或卡尔曼滤波。互补滤波简单,用加速度计的低频分量修正陀螺仪的高频积分漂移;卡尔曼滤波更复杂但效果更好。实际调试时,先确保零偏校准准确,再调滤波参数。如果发现机器人静止时姿态角缓慢变化,多半是零偏没校准好或者温漂没补偿。

4.3 编码器与限位开关:闭环控制的反馈来源

编码器用来测电机转速和位置,是闭环控制的基础。常见的有霍尔编码器和光电编码器。霍尔编码器便宜、耐用,但分辨率低;光电编码器精度高,但怕灰尘。选型时看你的控制精度需求,一般速度环用霍尔够了,位置环要求高就用光电。

限位开关用来检测机械臂或云台的极限位置,防止撞坏结构。接线时注意上拉或下拉电阻,否则信号可能悬空导致误触发。软件里要做去抖动,因为机械开关闭合瞬间会有多次通断,简单做法是检测到变化后延时几毫秒再读一次。

5. 通信接口:让各个模块说同一种语言

5.1 UART、I2C、SPI、CAN的区别与选择

这四种通信方式在机器人上都很常见,但适用场景不同。UART最简单,两根线,点对点,适合主控和上位机、蓝牙模块通信。I2C两根线,支持多设备,适合低速传感器,比如温湿度、气压计。SPI四根线,速度快,适合高速传感器,比如某些IMU、显示屏。CAN两根差分线,抗干扰强,适合电机、电调等工业设备。

选择时看三个维度:速度、距离、设备数量。速度要求高选SPI,设备多选I2C或CAN,距离远选CAN或RS485。注意I2C总线上设备多了会互相影响,而且线长了容易受干扰,一般不超过一米。CAN总线理论上可以挂很多设备,但实际受收发器和线束影响,建议不超过十个。

5.2 通信丢包与干扰:排查思路与解决手段

通信丢包是竞赛调试中的高频问题。排查时按这个顺序来:先看物理层,再看协议层,最后看应用层。物理层检查线束是否松动、是否双绞、是否远离干扰源、终端电阻是否匹配。协议层检查波特率、数据位、校验位是否一致。应用层检查发送频率是否过高、缓冲区是否溢出、是否有优先级冲突。

解决手段包括:降低波特率(牺牲速度换稳定)、增加校验和重传、使用差分信号(如CAN、RS485)、加磁环或屏蔽线。我遇到过CAN丢包,最后发现是电机线和CAN线捆在一起走线,电机换向时干扰了CAN,分开走线后问题消失。

6. 实战调试:从通电到跑起来的完整链路

6.1 上电前的静态检查清单

每次上电前,我都会过一遍这个清单,能避免绝大多数烟花事故:

  • 电池电压是否正常,极性是否接反
  • 各模块供电电压是否在额定范围内
  • 电源线是否有短路,用万用表蜂鸣档测正负极
  • 电机三相线是否接牢,有无裸露铜丝碰壳
  • 信号线是否插紧,方向是否正确
  • 主控程序是否已烧录,默认输出是否安全(比如电机默认不转)

这个清单看起来啰嗦,但每一条背后都有血泪教训。我见过电池反接烧主控的,见过电机线碰壳导致电调保护的,见过信号线插反烧传感器的。花五分钟检查,省五天维修。

6.2 分级上电与逐模块验证

不要一上来就给整机通电。正确做法是分级上电:先只给主控供电,看程序是否正常运行、通信是否正常;再给传感器供电,看数据是否合理;最后给电机电调供电,空载测试转向和转速。每加一级,观察电流和温度,确认无误再继续。

逐模块验证时,善用调试工具。串口打印是最基本的,把关键变量打出来看。有条件的用逻辑分析仪抓通信波形,用示波器看电源纹波。这些工具能帮你快速定位是硬件问题还是软件问题。

6.3 常见故障速查表

现象可能原因排查方向
主控频繁复位电源纹波大、电流不足测降压模块输出纹波,加大电容,换更大电流模块
电机不转电调未校准、信号线接错、ID冲突重新校准,检查线序,确认CAN ID
电机反转相线顺序错、转向设置错对调任意两根相线,或改软件设置
IMU数据漂移零偏未校准、温漂、振动大重新校准,加温补,加减震
通信丢包线束干扰、波特率不匹配、终端电阻缺失分开走线,核对参数,加终端电阻
传感器读数跳变地线干扰、上拉电阻缺失、供电不稳检查接地,加上拉,测供电

这张表是我自己调试时总结的,覆盖了八成以上的常见问题。遇到故障先对照表查,能省不少时间。

7. 结构设计与电气配合:别让机械拖了电气的后腿

7.1 走线与固定:振动是电子设备的隐形杀手

机器人运动时振动很大,线束如果没固定好,来回晃动会导致接头松动、线皮磨损、甚至断裂。我的做法是:所有线束用扎带或魔术贴固定,接头处用热熔胶或硅胶加固,过孔处加护线圈。电机线、电源线这些粗线,尽量走独立通道,避免和信号线混在一起。

固定时注意留出应力释放,不要让线束绷得太紧,否则振动时拉力直接作用在焊点上。板子固定用减震柱或橡胶垫,尤其是IMU和主控,减震能显著改善数据质量。

7.2 散热:电机、电调、降压模块的温升管理

电机和电调是大功率器件,工作时发热严重。电调一般靠自身散热片和气流冷却,安装时不要用泡棉包死,留出通风空间。电机如果长时间大电流,外壳温度能到七八十度,注意不要烫伤,也不要让线皮贴着电机外壳。

降压模块也是发热大户,尤其是压差大、电流大的场景。选型时看效率,效率低的模块发热大,可能需要加散热片或风扇。布局时把发热器件分散开,不要挤在一起,避免热累积。

8. 写在最后:硬件这条路,慢就是快

硬件和软件最大的区别是,软件写错了可以撤销、可以重跑,硬件烧了就是烧了,时间、金钱、心态都得赔进去。所以做硬件,慢就是快。每一步都按规范来,每个参数都算清楚,每次上电都检查,看起来费时间,实际上省下了大量返工和维修的时间。

我带过几届新人,发现进步最快的,往往不是最聪明的,而是最愿意动手、最愿意记录、最愿意复盘的人。每次调试完,把现象、原因、解决办法记下来,下次遇到类似问题,翻笔记就行。硬件知识很碎,但碎知识积累多了,就成了体系。

如果你刚开始接触机器人硬件,别怕犯错,但别犯重复的错。从一块最小系统板开始,点个灯,读个传感器,转个电机,一步步来。等你能独立把一台机器人从零装到跑起来,你会发现,那些曾经让你头疼的电源、通信、传感器问题,都成了你手里的工具。

相关新闻

AI控制真实设备:M-Language Core确定性虚拟机与极简指令集设计

AI控制真实设备:M-Language Core确定性虚拟机与极简指令集设计

直接让大模型去操作真实设备这件事,我第一次试就栽了跟头。模型确实听懂了我的话,也确实按正确顺序调用了接口,可它把温度单位搞混了——一个设备返回的是毫摄氏度,另一个返回的是摄氏度,结果一次“调低空调温度”的动…

2026/10/21 2:20:51 阅读更多 →
永磁同步电机全速域无感控制:高频方波注入与SMO加权切换方案

永磁同步电机全速域无感控制:高频方波注入与SMO加权切换方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 2:20:51 阅读更多 →
Hive常用函数详解:从数据清洗到报表开发的高频实战指南

Hive常用函数详解:从数据清洗到报表开发的高频实战指南

刚接触Hive那段时间,我最大的困扰不是SQL写不出来,而是每次都要去翻阅官方文档或者网上零散的帖子,才能凑齐“Hive常用函数”的完整清单。后来在某个数据平台项目里连续做了几周的数据清洗和报表开发,我才发现,真正高频…

2026/10/21 2:20:51 阅读更多 →

最新新闻

RAG效果差?问题多半出在知识库管理:清洗、分块与治理实战

RAG效果差?问题多半出在知识库管理:清洗、分块与治理实战

先说明一点:这个标题我深有同感。做了大半年RAG相关的东西,见过不少团队把精力全压在召回链路调参上,结果效果上不去,最后排查一圈,问题全出在知识库本身——脏数据、错分块、无版本、无评测,源头一乱&…

2026/10/21 3:06:07 阅读更多 →
基于MATLAB深度学习与LSTM的污水处理异常工况识别实践

基于MATLAB深度学习与LSTM的污水处理异常工况识别实践

简介:面向污水处理异常工况识别的MATLAB深度学习资料包,覆盖数据集、迁移学习网络结构、训练脚本到结果可视化全流程,适合环境工程与人工智能交叉领域的研究者、研究生及工程师,可用于异常工况建模、模型迁移与效果评估。包内共20…

2026/10/21 3:06:07 阅读更多 →
MiniMax 2.5 Function Calling 格式解析与 AI 编程工具落地实践

MiniMax 2.5 Function Calling 格式解析与 AI 编程工具落地实践

做IkunCoder这段时间,我最大的感受是:一个AI编程工具能不能真正“动手干活”,关键不在模型聊天多好,而在对function calling格式吃得透不透。最近一直在跟进MiniMax 2.5的function calling方案,研究它如何把“用户一句…

2026/10/21 3:06:06 阅读更多 →
火箭飞行仿真中推力曲线处理模块的设计与实践

火箭飞行仿真中推力曲线处理模块的设计与实践

1. 推力曲线为什么是仿真里最"磨人"的一块做火箭飞行仿真做过一段时间的朋友,应该都有一个共同感受:飞行力学方程、气动模型、控制律这些东西,理论上都有成熟套路可循,真正让人反复返工、调试到深夜的,往往是…

2026/10/21 3:06:06 阅读更多 →
Python+CNN卷积神经网络实战:土豆病害识别项目全流程解析

Python+CNN卷积神经网络实战:土豆病害识别项目全流程解析

1. 项目到底在做什么:别被“毕设”两个字吓住先说结论:基于 Python 和 CNN 卷积神经网络做土豆病害识别,本质上就是一个图像分类任务,核心目标是让程序拿到一张土豆叶子的照片,自动判断它属于哪种病害,比如…

2026/10/21 3:06:06 阅读更多 →
Nginx为何要用StatefulSet?稳定身份与持久化存储实战解析

Nginx为何要用StatefulSet?稳定身份与持久化存储实战解析

1. Nginx为什么会落到StatefulSet头上——先弄清楚值不值得先说个直觉判断:一听到“Nginx用StatefulSet部署”,大多数人第一反应是“写错了吧”。Nginx这种典型无状态的反向代理,常规做法就是Deployment挂ConfigMap,前面再套个Ser…

2026/10/21 3:05:06 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →