电磁循迹小车PID调节:电感采集、归一化与答辩考点 简介面向参加恩智浦智能车竞赛、学习STM32嵌入式控制的学生与开发者这份资料围绕四轮电磁循迹小车的PID调节提供可落地的工程参考。它将电感采集、偏差计算、舵机转向与电机速度闭环放在同一套代码中便于理解比例、积分、微分三项如何影响循迹稳定性、响应速度与超调量。压缩包共192个文件、约5.76MB其中47个.h和43个.c构成主要源码另有Keil工程文件及.o、.hex等编译中间件与烧录产物目录结构较完整。已有4694人学习。读者可对照硬件搭建调试环境分析PID参数整定思路排查振荡、迟滞和静态误差并辅助定位常见问题初学者能借此熟悉从传感器读取、误差计算到执行器输出的闭环流程也适合课程设计实践与参赛队做参数对照、代码整理。1. 电磁循迹小车 PID 调节先弄明白考官到底在考哪三件事面试官或答辩老师开口第一句往往不是让你写 PID 公式而是问「你的车为什么在直道上左右摆动、进弯又切内道」电磁循迹小车这道题真正要确认的是三件事电感采集回来的信号可不可信、偏差算得对不对、PID 参数是不是你亲手整出来的。STM32 上跑的那几百行代码谁都能找到一份能跑的能把「为什么这么调」讲清楚的人不多分就是在这儿拉开的。往下按考点分布、高频考点、真题演练、易错点一路拆准备竞赛答辩、嵌入式岗面试、课程设计答辩的人都可以直接拿去背、拿去练。2. 考点分布电磁循迹从电感采集到 PID 输出的六个拿分模块先给一张权重表这张表不是什么官方大纲是把近几年这类答辩和面试里被问到的频率按「会不会问、问了占多久」折算出来的经验值。你会发现纯 PID 公式的占比其实不高真正拉开差距的是信号链和整定过程因为那部分没法背只能干过。模块典型问法权重拿分难度信号链电感、谐振、检波、ADC你的电感为什么选这个电容25%中归一化与偏差计算差比和为什么要除20%低PID 结构与参数整定你的 Kp 是怎么定下来的30%高元素识别与特殊赛道过十字怎么不误判15%中调试工具与数据分析你怎么知道是参数问题10%低这张表最该记住的一句话是前三项占了七成五。很多人把时间全花在背 PID 离散化公式上结果一问「你的电感谐振在多少赫兹」就答不上来直接暴露成「代码是抄的」。2.1 信号链电感—谐振—检波—ADC断一环后面全错赛道导线里通的是交变电流频率一般在 20 kHz 量级导线周围产生同频交变磁场。车上的工字电感把这个磁场感应成电压但感应电压很微弱所以要先做 LC 并联谐振让它只在工作频率附近有高阻抗起到选频作用其他频率的干扰电机 PWM 的谐波、开关电源的噪声被压下去。谐振频率的公式必须张口就来f 1 / (2π√(LC))举个能直接复现的例子电感取 10 mH谐振电容取 6.8 nF代入算出来约 19.3 kHz正好压在工作频率附近。如果电容取大了谐振点掉到 10 kHz 以下感应电压幅值掉一大截表现出来就是「电感值怎么调都上不去、AD 采到的数只有几百」。这是典型的硬件问题被当成软件问题调越调越乱。谐振之后是检波。常见做法是二极管加 RC 的峰值检波把交变信号整成直流再送 ADC。RC 的时间常数要卡在中间远大于信号周期20 kHz 对应 50 μs否则纹波大又远小于车运动引起幅值变化的时间尺度。取 1 kΩ 配 1 μF时间常数 1 ms纹波大约 5%是个能用的起点。ADC 这一环在 STM32 上通常是定时器触发加 DMA 多通道扫描12 位、3.3 V 参考分辨率约 0.8 mV。采样率不用很高单通道 1 kHz 到 10 kHz 都够但采样周期必须和 PID 周期严格对齐不能「采到哪算哪」。面试里问「你的采样周期是多少、为什么」答「和 PWM 周期同源10 ms 一次用定时器中断触发」就比答「随便写的延时」高一个档次。提示电感采集这条链上任何一个环节出问题现象都长得一样——数值偏小、波动大、车跑起来发飘。所以排查要从后往前先确认 ADC 读数本身稳不稳再往前推。2.2 算法链归一化、偏差、PID、执行器四段接力信号进来之后的处理是四段接力一段断了后面全废。第一段是归一化把每个通道的原始 ADC 值压到 0 到 1 之间消掉通道之间的个体差异和电池电压波动。第二段是偏差计算用多个电感做加权或者差比和把「车相对导线的横向偏移」变成一个带符号的数。第三段是 PID把偏差变成舵机打角或者电机 PWM 的指令。第四段是执行器舵机是角度指令电机是速度指令两者的动态特性差一个数量级不能共用一个 PID。这四段对应的面试问法很固定几乎是模板归一化问「最大最小值怎么标定」偏差问「为什么不用简单的左减右」PID 问「你用的是位置式还是增量式为什么」执行器问「舵机和电机能不能用一个环」。四个问题答顺了这一块基本满分。2.3 调试链参数表、赛道日志、复现三件套答辩里最有说服力的一句话不是「我调出来了」而是「我记录了 37 组参数这是最好那组的对比」。参数表是最便宜的加分项每次改 Kp、Ki、Kd 都记一行写清赛道形状、电池电压、速度档位、车的表现抖、切内、外抛、稳定。有了这张表被问「你怎么确定这组参数最好」时你能给出趋势而不是感觉。赛道日志指的是把关键变量打出来看波形多路归一化后的值、偏差、PID 输出、编码器速度。用串口按固定周期往外发上位机画曲线一眼就能看出来是信号在抖还是输出在抖。这一步能省掉大量「凭感觉改参数」的时间。复现是最容易被忽略的同一段赛道、同一个速度档连跑三次看现象是不是一样。如果三次差别很大说明问题在机械或者接触不良不在参数上——这就是很多人踩的坑机械问题当成参数问题调越调越远。2.4 真题演练三道考「全局」的问法第一题「用两分钟讲讲你这台车的整体方案。」面试官想听的是结构不是细节堆砌。答题骨架按信号链走电感布局和个数 → 谐振与检波 → ADC 采样方式与周期 → 归一化 → 偏差算法 → 舵机环和速度环 → 元素识别。每段一句控制在两分钟内把「为什么这么选」塞进去比如「用五个电感的差比和而不是三个是为了左右各有两路冗余过十字时中间那路突变不至于把偏差带飞」。别这么答一上来讲 PID 三个参数怎么调讲了三分钟还在 Kp 上考官会认为你没有全局。第二题「你这套方案里最容易出问题的是哪一环」这题考的是自知之明。稳妥的答法是承认最脆弱的一环并且给出证据「最容易出问题的是检波后的 RC 参数电池电压从 8.4 V 掉到 7.2 V 时电感读数整体下移如果归一化的最大值没跟着更新偏差会整体偏一边。」承认脆弱点不会扣分硬说「没问题」才会被追着问。第三题「再给你一周速度怎么再提 0.3 m/s」别答「把 PID 再调调」这是最没说服力的答案。要按瓶颈拆先看直道能不能加前馈再看弯道减速曲线是不是太保守再看采样周期能不能从 10 ms 压到 5 ms 换更小的相位滞后最后才轮到参数微调。顺序是从结构到参数不是从参数到参数。面试官最想听的是你有一张「提速清单」而不是一句「多试几次」。3. 高频考点电感采集与归一化的四个必答点这一章是整篇最容易拿分也最容易丢分的部分。因为电感采集属于「硬件加软件」的交叉地带会写代码的人未必懂谐振懂电路的人未必写得对归一化。答辩里连问三个采集问题基本就能判断出你是不是只做了调参那一段。3.1 电感布局与差比和为什么不能只用「左边减右边」最省事的布局是一字排开五个电感从左到右编号间距大致取赛道宽度的一半。赛道宽 45 cm 的话相邻电感中心距 8 到 10 cm 是个常见起点。最外侧两个负责大偏差时的分辨中间那个负责十字和丢线的判定另外再斜放一两个做前瞻用来提前感知弯道。只用「左减右」的问题是分辨率不均匀车在正中间时左右相等差为零斜率很陡车偏到一侧时左右差值趋于饱和再偏也变化不大。表现出来就是「中间特别灵敏、边上特别迟钝」直道上抖大弯里切内。差比和解决的就是这个error (V左 − V右) / (V左 V右)分子提供方向分母做归一。车偏得越远分子变大但分母变小远离的一侧感应电压下降比值被拉回线性区间。这才是它比单纯相减好用的原因。电感多了以后用加权形式更通用/* 五电感加权差比和w 为位置权重最左为负、最右为正对称分布 */ #define ERROR_LOST (999.0f) float calc_error(const float norm[5], const float w[5]) { float num 0.0f, den 0.0f; for (int i 0; i 5; i) { num w[i] * norm[i]; /* 分子带方向的加权和 */ den norm[i]; /* 分母总能量用来归一 */ } if (den 0.05f) { /* 五路都接近 0说明脱线 */ return ERROR_LOST; } return num / den; /* 输出大致落在 -1 ~ 1符号表示左右 */ }这段的关键在分母den和阈值0.05f。den是五路归一化值之和车正对导线时最大跑到赛道外时会掉到很低。阈值不能拍脑袋写 0因为底噪永远存在取 0.05 是个保守起点实测时应该记录「正常循迹时的最小值」再打个对折。返回ERROR_LOST交给上层做丢线保护比如保持上一次打角、减速、定时回扫比直接返回一个巨大偏差让 PID 疯掉安全得多。权重w的取法也有讲究五路对称排布可以取 -2、-1、0、1、2也可以取 -1.0、-0.5、0、0.5、1.0两者只差一个缩放系数缩放系数会被 Kp 吸收掉所以不必纠结但要在答辩时说清楚「权重的绝对值是被 Kp 吃掉的我只关心它的比例」。3.2 归一化不减最小值、不除量程换块场地就得重调原始 ADC 值不能直接进 PID原因有三个每个电感的 Q 值不同同样距离读数不一样电池从满电掉到欠压整体读数会平移运放有直流偏置远离导线时读数也不是零。归一化一次解决这三件事。标准做法是逐通道的极值归一x_norm (v_raw − v_min) / (v_max − v_min)v_min是电感远离导线、周围没有明显磁场时的读数它包含了运放偏置和底噪v_max是电感正对导线、距离最近时的读数。分子减掉v_min去掉直流偏置分母除以量程补偿灵敏度和供电差异。标定的动作要规范不然标了等于没标先把车通电预热一到两分钟运放和基准电压都需要稳定时间然后逐个通道把电感正对导线中心读最大值再把车搬到离赛道一米以外读最小值。五个通道各来一遍记成一张表写进代码的常量区。/* 逐通道归一化带限幅和除零保护 */ float normalize(uint16_t v, uint16_t vmin, uint16_t vmax) { if (vmax vmin 10) { /* 标定失败量程太小直接判 0 */ return 0.0f; } float x (float)(v - vmin) / (float)(vmax - vmin); if (x 0.0f) x 0.0f; /* 限幅低于底噪时不能出负数 */ if (x 1.0f) x 1.0f; /* 限幅超量程时截断防止加权被带飞 */ return x; }三个细节值得在答辩时点出来。第一vmax vmin 10这个保护不是多余的标定时忘记通电、或者电感虚焊都会让最大值读成和最小值差不多没有保护的话后面除出来是一个巨大的数直接把偏差顶到限幅。第二限幅必须在归一化里做不能等到 PID 输出再限否则加权那一步就已经被污染了。第三归一化后的值不能当绝对距离用它只是相对量换赛道宽度就得重标——这一点经常被追问。3.3 滤波滑动平均、中值、一阶低通怎么选采集回来的数据一定带噪声关键是选对滤波器而不是无脑叠。三种常见做法各有各的适用场景滤波器计算量延时适合解决的问题滑动平均中N 次累加N/2 个采样周期白噪声、随机抖动中值滤波中要排序N/2 个采样周期单点尖峰、十字路口的突变一阶低通低一次乘加与系数 a 相关高频毛刺、需要连续平滑一阶低通的写法必须背下来y[n] a · x[n] (1 − a) · y[n−1]a越小越平滑、延时越大。a取 0.2 到 0.5 是常见区间截止频率大约等于 a / (2πT)T 是采样周期。10 ms 采样、a 取 0.3 的话截止频率在 5 Hz 左右对车体姿态变化足够快又能压掉大部分电机噪声。选型的经验是原始 ADC 先过一阶低通压毛刺再做归一化归一化之后如果还要防突变比如过十字时中间通道被瞬间拉满再加一级 3 点或 5 点中值。滑动平均放在最后且点数不要超过 8不然延时会吃满你的相位裕度。这里有个必须能说清楚的权衡车以 3 m/s 跑10 ms 的额外延时对应 3 cm 的位移听起来不多但舵机本身还有 50 到 100 ms 的机械响应时间两段延时叠加就足以让车在高速弯里画龙。所以滤波不是越多越好答辩时能被问「你的滤波总延时是多少毫秒对应多少厘米」而不卡壳就很稳。3.4 真题演练采集类三道必问题与答题思路第一题「你的电感为什么选这个谐振电容」答题骨架先说公式 f 1/(2π√(LC))再说工作频率在 20 kHz 量级然后代入自己的 L 和 C 给出算出来的频率最后补一句实测校验的方法扫频或者换几个电容看读数峰值。别答「学长给的」或者「随便焊的」这一句直接决定后面还有没有人认真听。第二题「归一化的最大值最小值是怎么来的换场地要重标吗」答题骨架讲清标定动作预热、正对导线读最大值、远离一米读最小值、逐通道做讲清两个参数各自消掉什么误差减最小值去偏置、除量程补灵敏度最后明确回答「换赛道宽度要重标换电池电压不用重标因为归一化本身就把电压波动吃掉了」。最后半句是加分点说明你理解了归一化的物理意义而不是照着做。第三题「过十字的时候电感读数会怎么变你怎么处理」答题骨架先说现象——车正对十字时导线在车前方的走向短暂「消失」多路电感同时进入一个高值或者同时掉下来具体取决于布局和前瞻距离再说误判后果——偏差被拉到零附近车会直冲最后说处理——用中间通道和外侧通道的比值做特征判断配合陀螺仪的角速度确认「确实没有转向」进入一个短时间的保持状态靠计时或者离开特征区退出。这题答得好说明你调过车而不只是写过代码。4. 高频考点PID 调节的三层结构舵机环、速度环、串级PID 这三个字母谁都会写能讲清楚「哪个环用哪种形式、为什么」的人不多。电磁循迹车上其实至少有两个环做得好的是三个结构选错了参数怎么调都是白费。4.1 位置式与增量式一句话分清再决定谁上舵机位置式的输出是控制量的绝对值公式里带积分累加增量式的输出是控制量的变化量输出要累加到执行器上。一句话区分位置式的输出直接就是「打多少度」增量式的输出是「比上次多打多少度」。对比项位置式增量式输出含义控制量绝对值控制量增量积分处理需要显式累加要做抗饱和天然没有积分累加不易饱和切换冲击切换时冲击大切换平滑适合对象舵机打角要绝对角度电机 PWM要连续调节选型的结论很干脆舵机用位置式 PD电机用增量式 PI。舵机需要的是「这一时刻应该打到多少度」而且舵机本身带位置反馈用位置式最自然电机 PWM 需要的是连续微调而且一旦进入饱和比如堵转增量式不会累积出一个巨大的积分项退出饱和时不会「记仇」。答辩时如果被问「为什么舵机不用增量式」答「舵机指令是绝对角度增量式要额外维护一个累加器反而多一层状态而且急打角时增量式的累加容易冲过头」就够了。4.2 舵机环多数车只用 PDD 要怎么加才不抖舵机环的核心是把「横向偏差」映射成「前轮转角」。P 项决定响应强度P 大了车灵敏但容易震荡P 小了车迟钝、切内。D 项抑制超调让车在偏差快速变化时提前回正但 D 对噪声极其敏感采集稍有毛刺D 就会把毛刺放大成抖动这就是「加了 D 反而更抖」的原因。正确的加法有三条。第一D 项对测量值微分而不是对误差微分微分先行避免目标值阶跃时产生一个巨大的微分冲击具体做法是把 D 项写成 −Kd·(y[n] − y[n−1])其中 y 是实际偏差而不是设定值。第二D 项前面要加一级低通或者取几拍的平均把高频噪声压掉。第三D 从小往大加每次只加一点加到手感开始发毛就退回去一档。另外两个容易被忽略的点打角限幅机械上舵机只能打那么多超了就是堵转发热以及死区补偿舵机在中位附近有个不响应的小区间不给补偿的话车在直道上会小幅左右摆。这两条写进代码只需要几行但答辩时提出来说明你真的把车跑起来了。4.3 速度环与串级弯道减速不是玄学是规划速度环的输入是编码器测出来的实际速度输出是电机 PWM。测速一般用 M 法固定 10 ms 周期数编码器脉冲数脉冲数除以周期就是速度。周期太短分辨率不够低速时脉冲数只有个位数误差大周期太长响应慢10 ms 是个常见折中。速度环用增量式 PI 就够不用 D因为速度信号本身噪声大加 D 等于给噪声开增益。积分项的存在是为了消稳态误差——上坡、电池掉压时能自动补上。要有输出限幅和积分限幅否则一旦堵转积分项会一路涨到天上。串级结构是「外环方向、内环速度」外环偏差 → 舵机打角同时输出一个速度修正量内环目标速度 → 编码器实测速度 → PWM弯道减速的实现就在外环那个修正量上。最朴素的做法是按偏差绝对值线性降速偏差在死区内全速超出死区后按比例往下压压到弯道最低速为止。稍好一点的做法是按偏差的变化率也就是弯的急缓来规划直道上全速入弯前因为偏差开始变化就提前减速这就是所谓的前瞻减速。这件事最忌讳说成「凭感觉调」。答辩时能被接受的说法是「我把弯道分成三档每档给一个速度上限档位由偏差绝对值和一个短时窗口内的偏差变化量共同决定减速曲线是一条分段折线参数是通过记录过弯时的侧向偏移反推的。」有分档、有依据、有验证方式就够了。4.4 真题演练代码题与口述题各一道代码题「写一个能直接用在电机速度环上的增量式 PID。」typedef struct { float kp, ki, kd; float err[3]; /* err[0]本次, err[1]上次, err[2]上上次 */ float out; /* 累加后的实际输出 */ float out_max; /* 输出上限对应 PWM 满占空 */ float out_min; } PID_Inc; /* 增量式 PID返回累加后的输出适合电机速度环 */ float pid_inc_calc(PID_Inc *p, float target, float actual) { p-err[2] p-err[1]; p-err[1] p-err[0]; p-err[0] target - actual; /* 本次偏差 */ float du p-kp * (p-err[0] - p-err[1]) /* P 项偏差的变化 */ p-ki * p-err[0] /* I 项本次偏差本身 */ p-kd * (p-err[0] - 2.0f * p-err[1] p-err[2]); /* D 项二阶差分 */ p-out du; /* 增量累加 */ if (p-out p-out_max) p-out p-out_max; /* 输出限幅防堵转 */ if (p-out p-out_min) p-out p-out_min; return p-out; }这段代码有三个必须能解释清楚的地方。一是du里三项的系数增量式的 P 项乘的是偏差之差而不是偏差本身I 项乘的是本次偏差D 项是二阶差分这是从位置式推导出来的结果不是凑出来的被追问时要能推。二是p-out的限幅放在累加之后因为增量式每次只加一点点如果只在最后限幅而不限制累加值输出会「看起来被限住了实际内部已经跑到很大」退饱和时会有明显滞后。三是err三个历史值的移位顺序必须先移后算写成先算后移就会差一拍现象是响应慢半拍很难查。如果要更保险可以在du上再加一级变化率限幅每次最多变化多少防止目标速度突变时输出跳变代价是响应变慢一点取舍取决于赛道。口述题「为什么你的 D 加上去之后车反而更抖了」答题骨架分三层。第一层讲原因D 项对偏差做差分噪声在差分里被放大采样噪声的频率越高放大越厉害。第二层讲验证把 D 归零看抖动是否消失再把采集波形打出来看毛刺幅度和频率确认是噪声而不是机械问题。第三层讲解决D 项改成对测量值微分、前面加一级低通、降低采样周期或者提高采样同步性。三层说完这题就是满分因为它同时证明了你会调、会查、会改。5. 易错点五个年年有人翻车的失分现场这一章的五条全是从答辩现场和实车调试里攒下来的每一条都对应一个「说错就掉档」的瞬间。看的时候可以对照自己的车中了两条以上基本可以确定你的参数不是整出来的是碰出来的。5.1 归一化只标一次换场地就崩的经典翻车错在哪代码里的v_min和v_max是第一次上赛道时标的之后换场地、换电池、换电感都没重标。为什么错这两个值不是常数它们跟着环境磁场、供电电压、运放温漂一起变。最大值标大了归一化后的值整体偏小偏差曲线的斜率变小等于把 Kp 悄悄调小了最小值标大了底噪被减成了负数再被限幅到 0等于丢掉了一部分外侧电感的有效信息大偏差时分辨率骤降。表现出来就是「同样的参数昨天好好的今天直道都跑不直」。怎么答对把标定当成一个流程而不是一次性动作。开机预热后自动标定一次车静止在赛道中央采一段时间的最大值再抬离赛道采最小值把结果存在 RAM 里而不是写死进 Flash。答辩时被问「换场地要不要重调」标准答案是「要重新标定极值不需要重新调 PID因为归一化之后的量纲没变」。5.2 D 项直接对误差微分目标一变输出就饱和错在哪D 项写成 Kd·(e[n] − e[n−1])e 是目标减实际。为什么错舵机的目标值在元素切换、丢线恢复、模式切换的瞬间会跳变误差跟着跳变微分项会在那一拍产生一个巨大的尖峰直接把输出顶到限幅。现象是过十字、进环岛、丢线回正的那一瞬间车猛打一下方向运气不好就冲出赛道。很多人以为是「参数太激进」其实是结构问题怎么调都调不掉。怎么答对改成微分先行D 项只对测量值微分即 −Kd·(y[n] − y[n−1])y 是实际偏差。这样目标跳变不会进入微分项只有车真的动了才会有阻尼作用。同时给 D 项加限幅比如不超过输出的 20%双保险。被问到就答「我用的是微分先行加微分限幅避免设定值突变引起的微分冲击」这句话本身就是加分项。5.3 积分限幅忘了做出弯之后车还在「记仇」错在哪位置式 PID 里integral err然后out kp*err ki*integral ...全程没有对integral做任何限制。为什么错车在弯道里被卡住、被拿起、或者遇到大偏差持续几十毫秒时误差一直同号积分项一路累加可能涨到正常值的几十倍。等车回到直道误差反向积分项要靠反向误差一点点「还债」这期间输出一直是偏的现象就是出弯后车往一侧偏、要晃两三次才回正看起来像「回正慢」其实是积分饱和。怎么答对三个手段至少上一个——积分限幅integral夹在正负某个范围内、积分分离偏差绝对值大于阈值时暂停积分、输出限幅配合条件积分输出饱和时不再累加同号误差。答辩时能说出「我用的是积分分离加积分限幅阈值取量程的 30%」比说「我调小了 Ki」专业得多因为前者说明了机制后者只是掩盖症状。5.4 采样周期和 PID 周期不一致参数看着调好了换个速度就废错在哪ADC 用 DMA 自由跑PID 放在主循环里主循环周期随任务量变化或者采样 10 ms 一次但 PID 5 ms 算一次用的是旧数据。为什么错PID 的离散形式里积分和微分的等效增益都和周期 T 强相关。周期不稳等效的 Ki 和 Kd 就在飘。低速时主循环快等效 Ki 偏大车反应过冲高速时任务多主循环慢等效 Ki 偏小车反应迟钝。表现出来就是「同一组参数慢速很稳一快就发飘」然后你开始疯狂改参数越改越乱。怎么答对把采样和计算放到同一个定时器中断里严格同周期主循环只做不实时的事显示、通信。周期取 5 到 10 ms写死不许变。答辩时的标准表述是「采样、归一化、偏差计算、PID 全部在同一个 10 ms 定时中断里顺序执行主循环不参与控制」一句话说明你的实时性是设计出来的不是运气好。5.5 只看车跑不看波形把机械问题当参数问题错在哪车一抖就改 Kp一冲就加 D从来不把中间变量打出来看。为什么错车的表现是「结果」抖动可能来自电感松动、舵机虚位、轮胎打滑、电池接触不良、编码器线被干扰这些在参数上是调不掉的。不知道是信号在抖还是输出在抖就只能瞎试试到最后参数面目全非原来那组能跑的也没了。怎么答对先看波形再动手。把归一化后的五路值、偏差、PID 输出、实测速度按固定周期通过串口发出来直道上匀速跑一段看哪一路在抖。如果原始值就抖问题在硬件或者滤波如果原始值平稳但输出抖问题在参数如果两者都平稳但车还是抖问题在机械。这三条支路分清楚调试时间能少一大半。这也就是为什么答辩里问「你怎么知道是参数问题」答「我看了波形」的人显得格外靠谱。6. 押题思路一套可以背下来的整定流程与口述模板最后落到能直接用的东西。整定顺序记住六个字先结构后参数。结构没定对哪个环用哪种形式、周期是否统一、限幅做了没有参数调到天亮也是白搭。具体的六步我建议直接背下来答辩时按这个顺序讲逻辑天然清楚定周期。采样、计算、输出同一个定时中断5 到 10 ms全程不变。定结构。舵机位置式 PD电机增量式 PI外环方向内环速度。标极值。预热后标定五路的最大最小值写进 RAM换场地重标。调 P。Ki、Kd 归零Kp 从零往上加加到车开始等幅震荡然后退回 60%。加 D。Kd 从零开始小步加加到过弯不超调、直道不发毛再退回一档。补规划。加速度分档和弯道减速曲线最后才回头微调 Kp。押题方向上概率最高的五道我列成一张表方便对着练押题问法答题落点信号链电感为什么配这个电容谐振公式加实测校验归一化极值怎么标、要不要重标减偏置、除量程、换场地重标偏差算法差比和为什么比相减好中间灵敏、边上迟钝的问题PID 结构位置式和增量式怎么选舵机绝对角度、电机连续调节整定过程Kp 怎么定下来的临界震荡退 60%有记录有波形口述模板也给一个三十秒版本任何「讲讲你的 PID」都能套「我用的是串级结构外环把五路电感的加权差比和变成舵机打角用位置式 PD内环是编码器速度环用增量式 PI。采样和控制都在 10 ms 定时中断里周期固定。Kp 是先加到临界震荡再退 60% 定的Kd 是微分先行加低通防止设定值突变引起冲击。归一化做了逐通道极值标定换场地会重标但不用重调参数。」这段话里的每个短句前面几章都能展开成一段被追问任何一句都有下文这就是它好用的原因。最后说个我自己的教训。早年调车我最喜欢干的事就是改一个参数跑一圈改一个跑一圈跑了一下午车还是抖参数表一片空白。后来被问「你这组参数是怎么来的」我一个字都答不上来。从那以后我每次上车前都强制走一遍先确认周期和限幅这两个结构项没被动过再标一次极值然后才允许自己碰 Kp。这个习惯救过我很多次也让我在答辩时不用靠回忆。希望帮到你。本文还有配套的精品资源点击获取