STM32 PID温控实战:从输出映射到参数整定的全过程
简介STM32单片机PID加温项目调试经验文档面向嵌入式开发人员解决温度控制中PID参数整定与代码落地问题。内容从实际项目出发先说明PID加热原理当实际温度低于目标值约5℃时启用PID运算定时器1每2秒计算一次定时器2每10毫秒中断并记录PID输出值被映射为加热时长例如输出100对应持续加热1秒输出25则加热250毫秒。接着重点介绍P、I、D参数调整方法与实测效果先调P值从1开始逐步增加使温度在目标上下徘徊得到66.3℃~63.9℃的波动范围再设I值注意过大会失控本次设为0.05后温度稳定在64.5℃~65.4℃最后用扇子强制散热验证D值0.03的补偿作用。资源共1个docx文件压缩包仅18KB内容精炼实用包含完整调试心得。已有2388人学习下载适合刚接触PID控温或正在调试STM32加热项目的开发者参考。1. 把“会算PID”变成“会控温度”STM32加温项目最缺的是后半段拿到这份资料之前我以为PID温度控制的核心难点在算法公式——比例、积分、微分三个系数怎么算网上教程一抓一大把但真正上手STM32做过加温项目的人都知道公式只是最小的一部分。这个项目文档反复印证了一个结论PID算出来的那个值本身是个“任意值”你想让它落在0-100它就落在0-100想让它落在0-50000也行真正决定控温成败的是这个值怎么映射成加热时间、多久算一次PID、三个参数按什么顺序试错。文档的作者用STM32做了一个目标65℃的加热项目起初用分段加热接近目标温度就间歇性通断结果温度上下幅值太大虽然项目对精度要求不高但还是换成了PID方案。最终稳定在64.5℃~65.4℃之间全程没有用复杂的算法推导只靠一个位置式PID的C函数、两个定时器、三天半的调参时间。这篇文章把文档里零零散散的经验整理成一条能照做的技术路线分阶段切入PID、双定时器分工、先P后I再D的整定顺序以及最容易让人翻车的几个细节。适合正在用STM32做温控、又不想把PID当黑匣子用的开发者。2. PID输出值的落地映射0-100怎么变成加热时间2.1 PID计算结果本身没有物理意义先决定你要用它干什么网上能找到的PID源代码几乎千篇一律误差、误差和、误差偏差三个量分别乘上Kp、Ki、Kd再求和限幅后输出。很多人卡住的地方是——算出来这个数到底代表什么是PWM占空比是电压值还是加热功率百分比文档里给了一个很朴素的观点这个值是一个“由你定义用途”的值。你希望它落在什么范围它就能落在什么范围核心在于限幅和映射方式。作者的方案是把PID输出限幅在0-100然后用它直接对应加热时间片。这不是唯一正确的做法但它在逻辑上非常自洽0-100天然适合表达百分比概念。具体到实际工程作者把PID输出值和定时器中断次数做了比较。定时器2每10ms进一次中断ZLG_c这个计数器在0-100之间循环递增。每次进中断拿PID算出来的值和当前计数值比较如果计数值小于等于PID输出值就开启加热反之关闭。这就是一个时间片分配的过程PID输出100整个周期100个时间片全在加热也就是10ms × 100 持续加热1秒PID输出25100个时间片里只有前25个在加热相当于加热10ms × 25 250ms剩余750ms不加热PID输出0整个周期不加热// 定时器2中断服务函数片段10ms中断一次 if(biao_zhi_wei.ZLG_PID_kai_guan 1) // PID已启用进入加热时间判断 { ZLG_c; // 每次中断计数1范围0-100 if(ZLG_pid_val_mid ZLG_c) // PID输出值 当前计数值 { ZLG_LED 0; // 输出低电平开启加热 } if(ZLG_pid_val_mid ZLG_c) // PID输出值 当前计数值 { ZLG_LED 1; // 输出高电平关闭加热 } if(ZLG_c 100) // 计数值达到100周期结束重新开始 { ZLG_c 0; } }这段代码的逻辑是在一个“假的PWM周期”里做占空比控制。注意ZLG_LED这个变量名原作者是拿LED引脚做加热控制的——低电平点亮LED正好对应低电平开启加热器件。如果你的加热驱动电路是反逻辑高电平开启把两个比较分支的赋值反过来就行。2.2 为什么选择“定时器计数比较”而不是直接输出PWM这里有一个容易被忽略但很重要的问题既然本质上是占空比控制为什么不用STM32的定时器PWM输出功能非要自己在中断里数数原因在于加热控制周期非常长。普通电机调速的PWM频率在几千到几十千赫兹周期是微秒到毫秒级而加热器件加热管、PTC、加热膜的热惯性远大于电机PWM频率太高反而没有意义。作者用的是10ms中断、100个时间片的周期结构一个完整加热周期长达1秒。这种情况下用硬件PWM把周期配置到1秒是可以的但改起来不方便——你要调整加热周期得重新配置定时器预分频和重载值不如在中断里维护一个计数器灵活。而且加热控制引脚通常是普通的GPIO去驱动光耦或固态继电器不是所有电路都预留了定时器PWM输出通道。// 定时器2中断里另一个思路用周期比例法替代逐次比较 // 预先算好本周期需要加热的毫秒数再在中断里判断 unsigned int heat_on_ms (unsigned int)(ZLG_pid_val_mid * 10); // PID输出0-100 → 加热时间0-1000ms if(heat_time_count heat_on_ms) { HEAT_ON(); } else { HEAT_OFF(); } heat_time_count 10; // 每10ms累加一次 if(heat_time_count 1000) { heat_time_count 0; }这两段代码本质上是一样的区别只是比较的粒度。原作者的方法优势在于PID输出值和计数器都限在0-100比较的时候不需要乘法运算老掉牙的STM32F1也能轻松跑。而且整个周期内加热是“先开后关”也就是前段加热后段冷却对过零触发的固态继电器比较友好。坏处是加热脉冲集中在周期前段如果你用的是小功率加热器件且散热快温度纹波会比均匀分散的PWM大一点。但这个项目的实测结果是稳定在±0.45℃以内对这个方案来说足够好了。2.3 加热周期怎么定不要照抄10ms先看热时间常数文档里10ms的中断时间、100个计数周期、2秒一次的PID计算频率全部是作者自己试出来的不是标准答案。这里提供一个调整思路加热周期也就是ZLG_c从0数到100的总时间应该在加热器件的热时间常数的1/10到1/5左右。周期太长温度波动大周期太短继电器或固态继电器频繁通断寿命受影响。我一般会这样做先用持续加热把温度拉到目标值附近然后手动切换加热/停止观察温度曲线。比如停止加热后温度还在上涨上涨时间大概在20-30秒那说明热惯性不小一个加热周期做到1秒完全没问题。如果停止加热后温度几乎立刻掉头向下说明散热极快加热周期要缩到200-500ms中断时间也要跟着改。温度感应的滞后也需要计算在内。如果温度传感器是NTC热敏电阻直接贴在加热片上滞后时间短如果是测空气温度、放在远离加热源的位置滞后可能有好几秒。PID计算周期文档里的2秒和这个滞后时间强相关——传感器响应的滞后越大PID计算周期越要放长否则PID每次算出来的值都是一个“过期的误差”。3. 双定时器分工与PID核心代码剖析3.1 两路定时器各司其职一个负责“想”一个负责“做”PID控制的工程实现本质上分成两个节奏完全不同的任务计算决策和执行输出。决策频率低因为温度变化慢执行频率高因为加热通断需要及时响应。文档里用两个定时器来解决这个问题这个思路清晰且可扩展定时器1中断周期1秒负责PID计算作者用计数器累加判断“是否满2秒”满2秒就调用一次ZLG_PID()函数定时器2中断周期10ms负责加热时间片比较和GPIO输出ZLG_c计数器在0-100之间循环// 定时器1中断服务函数片段1秒中断一次 if(TIM4-SR 0X0001) { P0_xin_hao_Time; // 信号灯闪烁计时 if(biao_zhi_wei.ZLG_PID_kai_guan 1) // PID已启动温度60.1℃ { ZLG_PID_Time; if(ZLG_PID_Time 2) // 累计2次2秒 { ZLG_PID_Time 0; ZLG_PID(); // 每2秒计算一次PID } } }这里有个容易被新手忽略的设计决定PID不是从一开始就运行的而是等到温度上升到60.1℃距离目标65℃还差5℃才打开开关。低于60℃完全靠持续加热高于60.1℃才切到PID控制这就避免了PID在冷启动阶段把积分项积累到爆——这个问题后面避坑章节会详细讲。3.2 位置式PID函数的代码细节与限幅处理文档提供的PID函数是典型的增量误差计算逻辑和网上流传的版本相比多了上限100、下限0的双向限幅输出被强制约束在0-100区间配合加热时间映射非常干净。注意限幅的优先级B100时直接赋值100B0时直接赋值0中间情况原样输出。float pid_p 15.0; // P值先调这个 float pid_i 0.05; // I值调P之后再调 float pid_d 0.03; // D值最后调 unsigned int ZLG_pid_val_mid; // PID输出值0-100 void ZLG_PID(void) { int dError 0, Error 0, B; Error ZLG_SpeedSet - ZLG_CurrentSpeed; // 目标温度 - 当前温度 ZLG_sumError Error; // 积分项误差累加 dError Error - ZLG_lastError; // 微分项本次误差-上次误差 ZLG_lastError Error; B (int)(pid_p * Error pid_i * ZLG_sumError pid_d * dError); if(B 100) ZLG_pid_val_mid 100; else if(B 0) ZLG_pid_val_mid 0; else ZLG_pid_val_mid B; }这段代码有几点值得说明。首先是变量名里残留的ZLG字样——原作者应该是借鉴或修改了某套以ZLG开头的PID例程这个无伤大雅。其次是ZLG_sumError没有做积分分离或抗积分饱和处理意味着如果长时间无法达到目标温度这个累加值会一直膨胀。原作者通过“接近目标才启动PID”绕开了这个问题但如果你把启动温差从5℃改到15℃或20℃就要重新评估积分饱和的风险。最后是类型问题。pid_p、pid_i、pid_d都是float但Error是intB是int。当pid_i0.05时0.05乘以一个几十的误差值结果可能只有1-2整型截断后积分项形同虚设。作者的实际经验是I0.05已经能产生明显效果说明他的误差值通常足够大启动时误差5℃以上但如果你的控制对象误差本身小建议把B改为float类型再限幅避免精度丢失。3.3 双闭环必要的“状态机”临界处理作者没有显式写状态机而是用了一个标志位biao_zhi_wei.ZLG_PID_kai_guan来决定PID是否参与控制。这个标志位的置位条件是温度60.1℃清除条件文档里没提但从控制逻辑倒推应该是温度跌落到某个阈值以下——至少低于60℃才能退出PID回到持续加热否则在60.1℃附近会反复切进切出。这里建议做一个滞回区间进入PID的温度阈值设60.5℃退出PID的阈值设59.5℃中间留出1℃的缓冲。这样即使温度在60℃附近抖动也不会导致PID反复启停。工程上管这叫滞回控制hysteresis对继电器类执行器特别重要——频繁启停加热器件不仅影响寿命还会让PID的积分项每次都要重新收敛控温曲线变得很难看。4. PID参数整定的实操顺序与临界判断4.1 先调P唯一判断标准是“在目标值上下徘徊”文档里把整定流程讲得很清楚先把I和D全部设为0P从1开始累加直到温度在目标值上下徘徊。作者的结果是P15时最高66.3℃、最低63.9℃已经进入徘徊区间。这个“徘徊”状态就是纯比例控制下的固有稳态误差——比例系数越大徘徊幅度越小但大到一定程度系统会开始振荡。实操中要区分“徘徊”和“振荡”。徘徊是温度在目标值附近小幅度波动波动周期较长像温水煮青蛙一样慢慢摆振荡是温度大幅度来回冲顶撞底波形接近正弦波。振荡时立即减小P值。我踩过的坑是纯比例控制下如果加热功率大、热惯性小P值稍微大一点就会振荡此时要回到小P值接受一个更大的稳态偏差把这个偏差留给后面的I来消除。4.2 再加I微调的效果远比想象中明显P确认好后开始加I作者绕了一个大弯子第一次从1开始往上加结果整个PID瞬间失控——温度像过山车一样冲上冲下最后查资料才知道I值通常要小得多改成0.1起步试探最终落在0.05。实测效果纯P时64.5~65.4℃的波动区间加上I之后温度曲线明显平滑且时间越长越稳定。I值的物理意义是消除稳态误差。纯P控制下加热功率和散热功率会达到一个平衡点但平衡点往往不在目标温度上I项持续累加误差慢慢修正输出把平衡点推向目标温度。I值太小修正速度慢I值太大累加值过冲导致系统振荡。作者从0.1缩到0.05才发现稳定区说明这类毫秒级加热系统的积分时间常数相当大。值得注意的是作者观察到“时间越长越稳定”。这是因为积分项在持续工作每一拍算一次每一拍都在把温度往目标方向推几轮之后温度就稳稳贴在了设定值附近。如果你调完I之后发现温度要很久才能稳定说明I值偏小如果温度在目标值附近持续走周期波动说明I值偏大。4.3 最后调D用散热扇测试抗扰动能力D的作用文档作者用了“预测未来”这个描述。从公式上看D项是误差的变化率误差在快速增大时D给出反向修正误差在快速减小时D提前刹车。这确实是“基于当前变化趋势推测下一时刻的误差”。测试D项价值的方法很直接拿一把扇子对着加热器件吹模拟环境散热突变。作者把D确定在0.03时扇子吹和不吹的温度曲线差异已经不明显了。这说明D值补偿掉了大部分散热扰动。D也不是必须调的。文档里明确说“P和I调完后D调不调精度都很好”实际项目如果工作环境温度相对恒定室内、无强风、无频繁开关门D可以保持0或者给一个很小的值。D值过大会放大温度传感器噪声——温度传感器每次采样都有微小抖动D算的是误差变化率抖动会被放大成控制量的剧烈波动这时候你会看到继电器咔嗒咔嗒响个不停。4.4 整定参数速查表参数调整方向现象处理P偏小增大升温慢、达不到目标、稳态偏差大逐步增大每次增加不超过当前值的50%P偏大减小温度振荡波形像正弦波快速减小通常是原来值的1/3到1/2I偏大减小温度过冲后反复波动周期较长按数量级缩小从1降到0.1再降到0.05I偏小增大温度慢慢靠近目标但长时间有固定偏差小幅增大观察2-3个加热周期D偏大减小输出抖动继电器频繁通断检查传感器噪声D值通常不大于I值D偏小增大外部扰动风吹时温度偏移恢复慢加扰动测试后小幅增加5. 避坑与常见问题排查从“控不住”到“稳稳的”之间的五个深坑5.1 现象PID一启动温度反而飙得更高了原因PID启动前持续加热加热器件和被加热物体都处在储能状态。60.1℃切入PID时PID第一次计算出来的误差是4.9℃对应一个较大的输出值但此时加热器件的热量还在往目标物体传导温度会继续惯性上升。比例项只看到当前误差无法预知这股后劲。解决把PID启动温度往下调让切入更早。比如目标65℃从55℃甚至50℃就开始跑PID给PID充足的调节空间。代价是升温速率会变慢因为PID在低温段就不会持续满功率加热了。如果用户对升温速率有硬性要求保留“低温段全功率加热、接近目标才切PID”的策略但要接受2~3℃的超调量。5.2 现象I值加到0.1以上系统开始发散原因积分项在“误差累加”这个环节出了问题。每次PID运算都把当前误差累加进ZLG_sumError如果连续多次误差为正这个累加值会变得很大乘上I系数后直接顶到上限100。等到温度真正升上去、误差翻转时前面累加的巨大积分值拉不回来输出继续饱和温度继续冲高然后误差反向又累加一个巨大的负值——系统进入极限环振荡。解决加入积分限幅给ZLG_sumError设一个最大值。从代码层面看很简单if(ZLG_sumError 200) ZLG_sumError 200; if(ZLG_sumError -200) ZLG_sumError -200;这个方法叫积分钳位200这个值要结合PID输出上限去设假设误差最大是65℃P是15那比例项输出最多975——远超100所以让积分项钳位在一个比比例项小的量级更合理我一般取比例项最大值的1/5到1/3。5.3 现象用风扇强制散热D调了半天没反应原因D值本身太小或者2秒的PID计算周期太长了。D项计算的是相邻两次PID计算之间的误差变化量。如果你每2秒才算一次风扇吹3秒后误差变化才被捕捉到D修正的及时性大打折扣。而且D系数0.03乘一个误差变化量比如2℃结果只有0.06对输出限幅100来说几乎可以忽略。解决要么加大D值到0.1以上要么缩短PID计算周期。缩短周期对D项的响应提升最直接——从2秒改成500ms同一时间内D项的计算次数翻了4倍对突发扰动的抑制会显著改善。5.4 现象温度到达65℃以后会在一个固定区间内周期性波动原因这个要分两种情况判断。第一种是I值适中但D值为0温度会呈现一个缓慢的上下波动波动周期在几十秒到几分钟第二种是加热控制本身的时间片分配不均匀——周期前段加热、后段冷却散热快的系统会被这个周期性功率差强行“敲”出一个波动。原作者的方式是“先开后关”热量在周期前段集中释放如果被加热物体热容小这个集中释放会让温度在周期前段涨一点、后段跌一点形成一个微小的锯齿波。解决如果是第一种把D值从0往上加到0.02~0.05试探如果是第二种可以把100个时间片的比较方式改为“PID输出值围绕50中心对称展开加热”等效于把加热脉冲分散到整个周期内。实现上就是把比较逻辑从ZLG_pid_val_mid ZLG_c改成// 分散加热示例加热时间片均匀分布在100个计数周期内 if(ZLG_c (ZLG_pid_val_mid / 2) || ZLG_c (100 - ZLG_pid_val_mid / 2)) { ZLG_LED 0; // 加热 } else { ZLG_LED 1; // 停止 }代价是每个10ms周期内继电器多加一次动作对寿命略有影响但温度纹波会更平滑。要不要用这个方法取决于你的温度波动是否大到不能接受。5.5 现象同样的代码和参数换了一块板子控温精度变差原因硬件差异。两个最可疑的位置——温度传感器的分压电阻精度和加热器件的功率离散度。NTC热敏电阻的B值材料常数个体差异在±1%~±3%之间直接导致同一温度下采到的ADC值不同加热器件的标称功率与实际功率更是常年存在偏差。PID参数是基于“对象特性”整定的换了一个控制对象参数当然要重新校准。解决换板子之后强制走一遍P-I-D整定流程不要指望原参数直接搬过去能用。如果批量生产且每台都要好效果考虑在产线上加一道简单的自整定工序——上电持续加热、记录温度上升斜率用它估算对象的热惯性再根据这个值自动折算P和I的初始值。6. 用代码模块化思维重构这份文档调参效率翻倍的三个技巧6.1 把PID函数和数据采集解耦加一个可观测变量原文档里的PID函数把目标值、当前值、输出值都写在全局变量里工程上能用但调试时非常痛苦——你没法区分“PID算错了”还是“温度采错了”。我建议把结构改成两个独立模块温度采集模块只负责把ADC值滤波转成实际温度PID模块只负责拿温度算输出。中间加一个全局结构体做交接调试时在中断里打一个断点就能同时看到当前温度、目标温度、PID输出、积分累加值这四个量。6.2 参数在线修改把P、I、D做成可运行时调整的变量整定参数的过程极其费时间如果每次修改参数都要重新编译、烧录、然后等待温度爬升一个上午就废了。最有效的方法是把PID参数放到一个数组里再用串口指令在线修改数值让系统在运行中实时重载这三个参数。// 伪代码串口接收“P150”则把P设为1.50 if(rx_cmd[0] P) pid_p atof(rx_cmd[1]); if(rx_cmd[0] I) pid_i atof(rx_cmd[1]); if(rx_cmd[0] D) pid_d atof(rx_cmd[1]);不用重新烧录、不用等待温度从室温重新爬起几秒钟就能完成一组参数试验。调参效率至少提升三倍而且可以同时观察温度曲线和输出曲线来判断当前这组的问题出在哪。从那以后我每次做温控项目都强制先搭好这个在线调参通道再开始调PID。6.3 温度曲线回放用DMA采数据代替人肉盯温度表肉眼盯着串口打印的温度值判断系统状态误差大且容易疲劳。建议用定时器ADC的DMA循环采样把温度数据连续记录到缓冲区实验结束后一次性通过串口导出到PC端绘图。温度曲线拉出来比例振荡、积分过冲、微分抖动这些特征是肉眼可见的比看十几个断断续续的温度打印值靠谱得多。希望这篇整理能帮你看清PID从“算得出”到“控得住”之间的那段路。本文还有配套的精品资源点击获取

相关新闻

校园考研论坛小程序开发实战:Python+Django+Uniapp技术解析

校园考研论坛小程序开发实战:Python+Django+Uniapp技术解析

1. 项目概述:校园考研论坛的移动化实践作为一名经历过考研的开发者,我深知备考过程中信息交流的重要性。传统的考研QQ群和贴吧存在信息杂乱、难以沉淀优质内容的痛点。去年我用PythonDjangoVue.js开发过网页版考研论坛,但发现学生更习惯使用移…

2026/10/15 9:55:50 阅读更多 →
计算机体系结构概览索引:性能调优与核心概念速查指南

计算机体系结构概览索引:性能调优与核心概念速查指南

1. 为什么需要一份“概览索引”1.1 从一次真实的翻车经历说起前年带一个刚入行的朋友做性能调优,他拿着一个矩阵乘法的程序跑出来,发现比预期慢了将近二十倍。他第一反应是“编译器不行”,第二反应是“CPU太老”,折腾了整整两天&a…

2026/10/15 9:55:50 阅读更多 →
MATLAB发动机性能优化算法开发与实践

MATLAB发动机性能优化算法开发与实践

1. 项目背景与核心价值发动机性能优化一直是动力工程领域的核心课题。传统的手工计算和试错法不仅效率低下,而且难以捕捉复杂的非线性关系。我在某主机厂参与发动机标定项目时,曾花费两周时间手动计算不同工况点的最优参数组合,结果仍存在5%-…

2026/10/15 9:54:50 阅读更多 →

最新新闻

轻量级OpenPose:CPU实时2D多人姿态估计的算法解析与工程落地

轻量级OpenPose:CPU实时2D多人姿态估计的算法解析与工程落地

如果你手头正好有一个“在CPU上把2D多人姿态估计跑起来”的需求,那么看到“Real-time 2D Multi-Person Pose Estimation on CPU:Lightweight OpenPose”这个标题时,大概率会有一种“终于等到”的感觉。姿态估计这两年很火,但绝大多…

2026/10/15 11:26:07 阅读更多 →
SpringBoot+Vue宠物领养平台全栈开发实践

SpringBoot+Vue宠物领养平台全栈开发实践

1. 项目背景与核心价值宠物领养救助平台是近年来互联网公益领域的典型应用,旨在解决流浪动物安置与规范化领养的痛点问题。根据中国小动物保护协会2022年度报告,全国流浪动物数量已突破5000万只,而传统线下救助站存在信息孤岛、领养流程繁琐、…

2026/10/15 11:26:07 阅读更多 →
离线语音评测SDK实战:无网低延时高安全的端侧发音打分方案

离线语音评测SDK实战:无网低延时高安全的端侧发音打分方案

简介:这是一套面向Android开发者与语音技术实践者的离线语音评测解决方案,聚焦中文和英文发音质量评估场景,适用于教育类App集成、嵌入式语音反馈系统开发等本地化部署需求。资源包含完整可运行Demo工程及配套SDK,Jar包未混淆&…

2026/10/15 11:26:07 阅读更多 →
keyclone汉化版1.8:嵌入式固件密钥迁移与复现实战指南

keyclone汉化版1.8:嵌入式固件密钥迁移与复现实战指南

简介:Keyclone汉化版1.8是一款专为魔兽世界多开玩家设计的轻量级键盘映射与跨窗口控制工具,适用于局域网双机协同操作场景,尤其适合5开练级、10开副本等高阶多账号玩法。资源为免安装绿色版,压缩包大小仅1.17MB(RAR格式…

2026/10/15 11:26:07 阅读更多 →
TensorRT 7.1.3.4 Windows部署:版本匹配、避坑与性能剖析

TensorRT 7.1.3.4 Windows部署:版本匹配、避坑与性能剖析

简介:这是TensorRT 7.1.3.4在Windows10 64位系统下的完整安装资源,配套CUDA 11.0与CUDNN 8.0。TensorRT是NVIDIA推出的高性能深度学习推理优化库,通过层融合、量化、动态形状等技术将神经网络编译为高效执行引擎,特别适合需要低延…

2026/10/15 11:26:07 阅读更多 →
Anthropic跌落神坛:花了更多时间调教CC提示词,不如把CC Switch的endpoint改到TaoToken

Anthropic跌落神坛:花了更多时间调教CC提示词,不如把CC Switch的endpoint改到TaoToken

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

2026/10/15 11:25:06 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →