给大一新生的循迹小车避坑指南:我用150块和51单片机踩过的那些雷
给大一新生的循迹小车避坑指南我用150块和51单片机踩过的那些雷记得大一那年我兴冲冲地报名参加了学院的电子设计比赛选题是最基础的循迹小车。本以为照着网上的教程三天就能搞定结果硬是被这个小东西折磨了整整一个月。现在回想起来那些烧坏的电机驱动模块、抽搐的小车、乱七八糟的杜邦线都是成长的代价。如果你也正准备开始你的第一个电子项目希望这篇避坑指南能让你少走些弯路。1. 硬件选购省小钱可能吃大亏1.1 电机驱动模块的选择我当初为了省10块钱选了最便宜的L298N模块。结果因为接线时不小心短路瞬间就冒烟报废了。后来才发现L298N的替代方案TB6612FNG驱动芯片更省电发热量小还自带短路保护关键参数对比型号工作电压最大电流保护功能价格L298N5-35V2A无15元TB66122.5-13.5V1.2A有过热保护25元提示多花10块钱买个带保护的驱动模块可能省下你重新买元件的钱和时间1.2 传感器布局的学问我的第一个版本用了5个红外传感器结果发现// 错误的传感器排列方式 #define SENSOR_NUM 5 int sensor_pins[SENSOR_NUM] {P1^0, P1^1, P1^2, P1^3, P0^1};实际上3个传感器就足够了而且应该呈扇形排列● ● ● \ | / ○2. 电路搭建那些教程不会告诉你的细节2.1 电源管理的坑第一次调试时小车总是莫名其妙重启。后来发现是18650电池直接给单片机供电电压波动太大电机启动时的电流冲击导致系统复位解决方案使用独立的5V稳压模块给单片机供电在电机电源端并联大容量电容我用了4700μF2.2 杜邦线的艺术我的第一版布线简直是一场灾难[错误示范] 单片机 ━━━━━━━━━━┓ ┣━ 20cm乱麻 传感器 ━━━━━━━━━━┛改进后的技巧使用不同颜色的线区分电源和信号短线用10cm长线用30cm避免冗余用热熔胶固定易松动的接口3. 程序设计从能跑到跑得好3.1 PWM调参的血泪史最初的小车动作像抽风一样问题出在// 初始参数 zkba 50; // 左轮占空比 zkbb 50; // 右轮占空比经过实测这些参数更合理动作zkbazkbb延时(ms)直行85850小角度右转65155急右转1070153.2 传感器滤波算法环境光干扰让我头疼了一周后来在代码中加入了这个简单滤波// 改进后的传感器读取 int read_sensor(int pin) { int sum 0; for(int i0; i5; i) { sum digitalRead(pin); delay(1); } return (sum 2) ? 1 : 0; }4. 调试技巧节省80%时间的秘诀4.1 分模块测试法不要一次性组装完整车再调试我的测试顺序是单独测试每个电机正反转单独测试每个传感器测试电机PWM控制最后整合循迹算法4.2 低成本调试工具买不起逻辑分析仪用这些代替手机慢动作视频检查PWM波形LED电阻作为简易逻辑探头串口打印调试信息记得第一次成功看到小车稳稳跑完全程时那种成就感比后来做过的任何复杂项目都强烈。现在我的那辆破车还摆在书架上虽然它的亚克力板已经开裂电路也落满了灰但它教会我的远比课本上多得多。