4、传感器选型与接口设计:光电传感器、接近传感器、称重传感器、编码器;数字/模拟接口设计,信号调理电路

传感器选型,说白了就是给分拣机装上「眼睛」和「手」。

我做了这么多年嵌入式,发现很多项目翻车,不是死在算法上,而是死在传感器选型上。你想想看,传感器信号都读不准,后面再好的控制算法也是白搭。

这一章,咱们就聊聊分拣机里最常见的四类传感器,以及它们背后的接口设计。嗯,这里要注意,我讲的都是实战中踩过的坑。

4.1 光电传感器:分拣机的「眼睛」

光电传感器在分拣机上主要干两件事:检测物体有没有到位,以及区分颜色或材质。

我个人习惯把光电传感器分成三类:

  • 对射式:发射器和接收器分开。检测距离远,抗干扰强。我在项目中遇到过,用在长距离传送带上,效果很稳。
  • 漫反射式:发射和接收在一起,靠物体反射光。安装方便,但容易受颜色影响。黑色物体经常检测不到,这个坑我踩过。
  • 镜面反射式:需要配合反光板。比漫反射稳定,比对射式好安装。折中方案,我经常推荐。
我的经验: 分拣机传送带上,建议入口用对射式,出口用漫反射式。入口要绝对可靠,出口可以灵活一些。

4.2 接近传感器:非接触检测的利器

接近传感器,说白了就是不用碰到物体就能检测到它。分拣机上常用的是电感式和电容式。

电感式接近传感器:只检测金属物体。分拣金属件时首选。我记得有一次,客户非要用电感式检测塑料件,结果死活没信号。后来换了电容式才搞定。

电容式接近传感器:能检测金属、塑料、液体等。但容易受环境影响,湿度大时容易误触发。

类型 检测对象 检测距离 抗干扰能力
电感式 金属 1-60mm
电容式 几乎所有材料 1-25mm 中等
避坑指南: 我曾经在一条分拣线上同时用了多个电感式传感器,结果它们互相干扰。后来发现,安装间距至少要留出传感器直径的三倍。

4.3 称重传感器:分拣机的「手感」

称重传感器,说白了就是测重量。分拣机上常用的是电阻应变式。

它的原理很简单:金属受力变形,电阻值跟着变。但实际用起来,坑不少。

选型要点:

  • 量程:选实际称重量的1.5倍。别问我为什么,我曾经选了个刚好够的,结果一冲击就坏了。
  • 精度:分拣机一般0.1%就够了。太高了反而容易受振动干扰。
  • 防护等级:至少IP65。分拣现场灰尘大,防护不够很快就废了。
关键点: 称重传感器的输出信号非常微弱,通常是mV级别的。必须经过信号调理电路才能给ADC用。

4.4 编码器:分拣机的「关节」

编码器用来测位置和速度。分拣机上,电机和传送带都离不开它。

我常用的编码器有两种:

  • 增量式编码器:输出脉冲,通过计数算位置。便宜,但断电后位置丢失。每次开机要回零。
  • 绝对式编码器:直接输出位置值。贵,但断电不丢位置。分拣机要求高精度定位时,我建议用这个。

接口类型:

  • 推挽输出:通用,但长距离传输不行。
  • 差分输出(RS-422):抗干扰强,能传100米以上。分拣机现场干扰大,我推荐用这个。
  • SSI接口:同步串行接口,适合绝对式编码器。

4.5 数字/模拟接口设计

传感器输出信号,要么是数字的,要么是模拟的。接口设计,说白了就是让MCU能正确读到这些信号。

4.5.1 数字接口

数字接口简单,就是高低电平。但要注意:

  • 电平匹配:传感器输出5V,MCU是3.3V,中间要加电平转换。我习惯用TXS0108E,便宜又好用。
  • 上拉/下拉电阻:开漏输出的传感器,必须加上拉电阻。一般4.7kΩ到10kΩ。
  • 去抖处理:机械触点类的传感器,输出会有抖动。软件里加个10ms的去抖,能省很多麻烦。

4.5.2 模拟接口

模拟接口就复杂多了。称重传感器、部分光电传感器都是模拟输出。

关键参数:

  • ADC分辨率:分拣机一般12位就够了。要求高的话用16位。
  • 采样率:称重信号变化慢,10Hz就够。编码器信号快,可能要100kHz以上。
  • 参考电压:一定要稳定。我见过有人直接用MCU的VDD做参考,结果电压一波动,数据全飘了。
我的习惯: 模拟信号走线要远离数字信号。PCB上,模拟地和数字地单点连接。这个细节,能省掉你后面很多调试时间。

4.6 信号调理电路

信号调理,说白了就是把传感器信号「收拾」一下,让MCU能好好读。

常见的调理电路:

  • 放大电路:称重传感器输出只有几mV,必须放大。我常用仪表放大器AD620,增益用电阻调,很方便。
  • 滤波电路:分拣机现场有电机、变频器,干扰很大。一阶RC低通滤波,截止频率设到信号频率的10倍左右。
  • 电平移位:有些传感器输出有负电压,MCU的ADC只能读正电压。用运放做个加法器,把信号抬到0V以上。

实战电路示例(称重传感器调理):

// 伪代码:称重传感器数据读取
// 使用HX711专用ADC芯片

#include <HX711.h>

HX711 scale;

void setup() {
    scale.begin(DOUT_PIN, SCK_PIN);
    scale.set_scale(2280.f);  // 校准系数,实际标定得到
    scale.tare();             // 去皮
}

void loop() {
    float weight = scale.get_units(10);  // 读10次取平均
    // weight单位是克
    Serial.println(weight);
}
注意: 这个校准系数,每台设备都不一样。我建议出厂前做一次标定,把系数存到EEPROM里。别问我为什么,我曾经偷懒用固定值,结果换了传感器后,称出来的重量全不对。

信号调理的坑:

  • 阻抗匹配:传感器输出阻抗高,ADC输入阻抗低,信号会衰减。加个电压跟随器就能解决。
  • 噪声抑制:电源上加磁珠和电容。模拟信号用屏蔽线,单端接地。
  • 温度漂移:运放和电阻都有温漂。选低温漂的器件,或者软件里做温度补偿。

嗯,传感器选型和接口设计,说到底就是「匹配」两个字。传感器和MCU匹配,信号和电路匹配,成本和性能匹配。我见过太多人,传感器选得挺好,结果接口电路一塌糊涂,最后整个项目重来。

你想想看,分拣机一天要处理几万件货物,传感器要是三天两头出问题,那还怎么玩?所以,这一章的内容,值得你多看几遍。