TCRT5000红外循迹传感器接Arduino做循迹小车:接线、原理与三种循迹代码

2026-10-20 17:00:22 57阅读

想让小车自动沿着地上的黑线跑,TCRT5000 红外循迹模块是最常用的选择。它靠红外对管判断脚下是黑是白,把信号给 Arduino 去控制电机方向,就能做成经典的黑白线循迹小车。这篇把工作原理、接线、校准以及单路到多路的控制代码一次写清楚。

TCRT5000 为什么能分辨黑白

模块上一个红外 LED 一直在往下发红外,旁边一个光敏三极管接收地面的反射。地面是白色,反射回来 90% 的红外光,三极管导通多、输出低电平;地面是黑色胶带,吸收掉大部分红外,反射回来很少,三极管截止、输出高电平。就这么一个「反射多少」的区别,让模块能判断脚下是不是黑线。它能分辨的距离很短,最佳工作高度约 2~5mm,所以模块要装得离地面很近。

TCRT5000 模块引脚 VCC/GND/AO(模拟)/DO(数字) 示意

单个模块怎么接 Arduino

常见单个 TCRT5000 模块有 4 个引脚:VCC 接 5V、GND 接 GND、AO 是模拟输出、DO 是数字输出。用 DO 只要知道「脚下是不是线」,把 AO 接模拟口 A0 能看到连续的反射强度 = 0~1023,数值越大说明反射越少(越黑/越远)。想看平滑曲线或做阈值微调就用 AO,只判断有无线用 DO 更省事。板上还有个电位器,用来调节数字输出的翻转阈值。

TCRT5000 单独模块接 Arduino 的 AO(A0)、DO(D2) 接线

最基础的读值代码

先跑一下面这段代码,把 AO 和 DO 的值打印到串口,用手在传感器底下晃,观察白纸和黑线上数值的变化。这样你就知道你自己地面环境下阈值大概是多少,校准好电位器,后面循迹逻辑才有依据。

const int aoPin=A0;
const int doPin=2;
void setup(){ Serial.begin(9600); pinMode(doPin,INPUT);}
void loop(){
 int raw=analogRead(aoPin);
 int line=digitalRead(doPin);
 Serial.print("Raw="); Serial.print(raw);
 Serial.print("  DO="); Serial.println(line);
 delay(100);
}

三路循迹小车的控制逻辑

循迹小车一般左右中放 3 个传感器。中间那个压到黑线说明在直行,往左偏就说明车头往右偏出线了,要有轮减速、右轮加速把它拉回来;往右偏则反过来。下面给出 3 路控制的骨架代码,电机引脚接你自己的电机驱动板(L298N 或 L9110S 都行)。核心就是根据路况给左右轮不同的 PWM 速度做差速纠偏。

// Left=D2, Center=D3, Right=D4 ; motorL=9, motorR=10(PWM)
const int sLeft=2,sC=3,sR=4,mL=9,mR=10;
void setup(){ pinMode(sLeft,INPUT);pinMode(sC,INPUT);pinMode(sR,INPUT);pinMode(mL,OUTPUT);pinMode(mR,OUTPUT);}
void loop(){
 bool L=digitalRead(sLeft)==LOW; // LOW=压到黑线
 bool C=digitalRead(sC)==LOW;
 bool R=digitalRead(sR)==LOW;
 if(C&&!L&&!R){ analogWrite(mL,180); analogWrite(mR,180);} // 直行
 else if(L&&!R){ analogWrite(mL,80); analogWrite(mR,200);}   // 左轮慢右轮快
 else if(R&&!L){ analogWrite(mL,200); analogWrite(mR,80);}   // 左轮快右轮慢
 else { analogWrite(mL,0); analogWrite(mR,0);}               // 暂定停车
}

几个实操提醒

一是电源:TCRT5000 用 5V,电池供电要给 Arduino 降压稳压(比如 7805 或 DC-DC),别把 7.4V 直接怼上去;二是阈值:务必用螺丝刀调电位器,让传感器在黑白交界处 LED 状态翻转;三是过十字路口容易误判,量少好处理,可适当调低速度或加大阈值差。

本篇为实操改写整理,接线与阈值以实物和你的小车底盘为准。


作者:野生极客一枚
链接:https://www.aiddithome.com/p/17c04316d52279.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
5条评论
锡点
1楼 · 2026-10-20 17:00:27

78转5V那段提醒很实用,电池供电直接怼很容易烧板子。

老张装机
2楼 · 2026-10-20 17:00:26

问下十字路口怎么区分直行和转弯啊?

隔壁工位的好奇宝
3楼 · 2026-10-20 17:00:25

电位器阈值没校准之前一直乱跑,校准后一贴膜就跑直线,感谢。

拆开看看再说
4楼 · 2026-10-20 17:00:24

我用的 3 路做巡线,车身会左右晃,按文章把速度差调小一点就稳多了。

板砖搬不动
5楼 · 2026-10-20 17:00:23

循迹小车最经典的就是黑白胶带地面了,这个模块灵敏度高,调好电位器很关键。