3. 传感器与信号调理:常用运动控制传感器与信号调理电路设计
大家好,我是老张。今天咱们聊聊运动控制里最基础也最要命的一环——传感器和信号调理。说白了,你算法写得再漂亮,如果传感器数据不准,那全是白搭。我在现场调试时见过太多这种情况了。
3.1 编码器:运动控制的眼睛
编码器是运动控制里用得最多的传感器。它告诉你电机轴转了多少、转到哪了、转得多快。我个人习惯把编码器分成两大类:增量式和绝对式。
3.4.1 增量式编码器
增量式编码器输出脉冲信号。它不告诉你绝对位置,只告诉你「又转了一点」。你需要一个计数器来累加脉冲数,才能知道位置。
输出信号一般是两路:A相和B相。两路信号相位差90度。通过判断A相和B相谁先跳变,就能知道旋转方向。嗯,这里要注意:如果A相超前B相,一般是正转;反过来就是反转。
关键参数:
- 分辨率:每转脉冲数(PPR)。常见的有1000、2500、5000、10000等
- 最高响应频率:决定了你能跑多快
- 输出类型:NPN开路集电极、推挽、差分(RS-422)
我在项目中遇到过一个问题:用了一款2500PPR的编码器,电机转速一高就丢脉冲。查了半天,发现是PLC的高速计数器频率上限不够。你想想看,2500PPR,电机3000转/分,那就是125kHz的脉冲频率。很多PLC的计数器只能到100kHz。所以选型时一定要算这个账。
3.4.2 绝对式编码器
绝对式编码器就省心多了。它直接告诉你当前的位置值,掉电也不丢失。常用的有单圈和多圈两种。单圈的能告诉你一圈内的位置,多圈的还能告诉你转了多少圈。
通信接口常见的有SSI、BiSS、EnDat、CANopen等。我个人比较喜欢BiSS,速度快、抗干扰好。但要注意,不同厂家的BiSS协议实现有细微差别,有时候会不兼容。我曾经被这个坑过,换了两个品牌的编码器,结果通信时序对不上,折腾了两天才搞定。
| 类型 | 优点 | 缺点 | 典型应用 |
|---|---|---|---|
| 增量式 | 便宜、简单、响应快 | 掉电丢位置、需回零 | 普通伺服、步进电机 |
| 绝对式 | 掉电不丢位、无需回零 | 贵、通信复杂 | 机器人、数控机床 |
3.2 霍尔传感器:简单可靠的开关信号
霍尔传感器利用霍尔效应来检测磁场变化。在运动控制里,它常用来做位置检测和速度检测。说白了,就是一个开关——有磁场时输出一个电平,没磁场时输出另一个电平。
霍尔传感器有几个特点:
- 无接触,寿命长
- 响应快,可以到微秒级
- 对温度敏感,温度漂移要注意
- 安装间隙很关键,太远信号弱,太近可能撞坏
我记得有一次做直线电机项目,用霍尔传感器做换向检测。传感器装好后,电机运行总是不对劲。后来发现是霍尔和磁钢的间隙没调好。标准是1-2mm,我装成了3mm,信号幅度不够,导致换向逻辑出错。嗯,从那以后我每次装霍尔都会用塞尺量一下间隙。
小技巧:霍尔传感器的输出一般是开漏输出,需要上拉电阻。上拉电阻的阻值选择很关键——太小了功耗大,太大了信号上升沿变慢。我一般选4.7kΩ到10kΩ之间,具体看你的信号频率和线缆长度。
3.3 加速度计:感知振动和冲击
加速度计在运动控制里主要用来做振动监测和碰撞检测。比如高速加工中心,刀具振动大了会影响加工质量,这时候加速度计就能派上用场。
常用的加速度计有:
- 压电式:适合高频振动测量,但不能测静态加速度
- 电容式MEMS:便宜、体积小、能测静态加速度,但噪声大一些
- 应变式:精度高,但贵
选加速度计时,有几个参数要特别关注:
- 量程:±2g、±4g、±8g、±16g等。别选太大,也别选太小。我见过有人用±16g的加速度计去测0.1g的振动,结果分辨率不够,数据全是噪声
- 带宽:决定了你能测多快的振动。一般运动控制里用到几百Hz就够了
- 噪声密度:单位是μg/√Hz。这个值越小越好
注意:加速度计对安装方式很敏感。用双面胶贴和用螺丝固定,测出来的数据能差好几倍。我建议用螺丝固定,如果不行,至少用3M的强力双面胶。别用普通双面胶,那玩意儿在振动环境下会自己脱落。
3.4 信号调理电路设计
传感器出来的信号,很少能直接给控制器用。为什么?因为信号太弱、有噪声、电平不匹配。所以需要信号调理电路来「洗一洗」信号。
3.4.1 滤波电路
滤波是信号调理的第一步。常用的有RC低通滤波和有源滤波。
RC低通滤波最简单,一个电阻一个电容就搞定。截止频率f = 1/(2πRC)。比如你要滤掉10kHz以上的噪声,R选1kΩ,C选0.015μF,算下来截止频率大约是10.6kHz。
但RC滤波有个问题——带负载能力差。如果你后面接的电路输入阻抗不够高,滤波效果会大打折扣。所以很多时候我会用有源滤波,比如二阶巴特沃斯滤波器。它用运放来做,带负载能力强,滤波特性也更好。
// 一阶RC低通滤波的离散实现
// 输入:raw_value - 原始采样值
// 输出:filtered_value - 滤波后的值
// alpha - 滤波系数,0~1之间,越小滤波越强
float low_pass_filter(float raw_value, float alpha) {
static float filtered_value = 0;
filtered_value = alpha * raw_value + (1 - alpha) * filtered_value;
return filtered_value;
}
3.4.2 电平转换
传感器输出的电平可能和控制器不匹配。比如有些传感器是5V输出,但你的MCU是3.3V的。这时候就需要电平转换。
最简单的办法是用电阻分压。但要注意,分压后的信号驱动能力会变差。我建议用电平转换芯片,比如TXB0108或SN74LVC4245。这些芯片是双向的,用起来很方便。
还有一种情况是差分信号转单端信号。比如编码器的RS-422差分输出,需要转成单端信号才能给普通计数器用。这时候用AM26LS32或DS26LS32这类差分接收器就行。
3.4.3 隔离电路
在工业现场,隔离是必须的。为什么?因为电机驱动会产生很大的共模电压和电磁干扰。如果不隔离,轻则数据出错,重则烧毁控制器。
常用的隔离方式有:
- 光耦隔离:便宜、成熟,但速度慢,适合低频信号
- 磁耦隔离:速度快,适合高频信号,比如编码器脉冲
- 容耦隔离:速度快、功耗低,但抗共模干扰能力稍差
我个人习惯:编码器信号用磁耦隔离,比如ISO7240或ADuM1400。霍尔传感器和开关信号用光耦隔离,比如TLP2361。加速度计的模拟信号用隔离运放,比如ISO124。
避坑指南:我曾经在一个项目里,编码器信号用了普通光耦隔离。结果电机一加速,脉冲就丢得一塌糊涂。后来才发现,光耦的响应速度跟不上。普通光耦的上升时间要几微秒,而编码器脉冲宽度可能只有1微秒。所以高频信号一定要用高速光耦或磁耦。
3.5 传感器选型与系统集成
说了这么多,最后聊聊怎么选传感器和设计调理电路。我一般按这个流程来:
- 明确需求:要测什么?精度要求多少?响应速度多快?
- 确定传感器类型:根据需求选编码器、霍尔还是加速度计
- 计算参数:分辨率、量程、带宽、输出类型
- 设计调理电路:滤波、电平转换、隔离
- 测试验证:上电测试,看信号质量
举个例子。我之前做的一个伺服压力机项目,需要精确控制滑块位置。我选了绝对式多圈编码器,分辨率17位,BiSS接口。信号调理用了磁耦隔离加差分接收器。实际测试下来,位置精度达到了±1μm,完全满足要求。
但要注意,传感器和调理电路是一体的。你选再好的传感器,如果调理电路设计得不好,照样出问题。反过来,调理电路设计得再好,传感器选型不对也是白搭。所以一定要整体考虑。
经验之谈:如果你不确定怎么选,可以看看同行的方案。去展会、看应用案例、问供应商。但别全信供应商的话,他们有时候会推荐最贵的产品。我一般会找两三家供应商,让他们出方案,然后自己对比分析。
好了,传感器和信号调理这块就聊到这儿。记住一句话:传感器是运动控制的基础,信号调理是传感器的基础。这两块做扎实了,后面的控制算法才能发挥出来。