3. 紫外信号基础:紫外光特性、紫外荧光效应、紫外传感器与激发光源
好,咱们进入紫外信号的部分。
说实话,紫外防伪在点钞机里是个老技术了,但也是最容易被忽视的一环。我见过不少工程师,把红外搞得很溜,一到紫外就翻车。为什么?因为紫外光的物理特性跟可见光、红外完全不一样,你得重新理解它。
3.1 紫外光特性:你看不见,但它真实存在
紫外光,波长在10nm到400nm之间。点钞机里常用的,是365nm和254nm这两个波段。
为什么选这两个?说白了,是因为人民币上的荧光物质,对这两个波长的激发效率最高。我早期做过一个项目,用了395nm的紫外LED,结果荧光信号弱得可怜,后来一查资料才发现,激发波长偏了那么一点点,效率就差了十倍。
关键参数:
- UVA(长波紫外):315-400nm,点钞机主力,常用365nm
- UVC(短波紫外):100-280nm,254nm用于特殊防伪
- 穿透力:紫外穿透力极弱,一张纸就能挡住大部分
- 安全性:UVC对皮肤和眼睛有伤害,操作时要注意
紫外光还有个特点——它容易散射。你想想看,在点钞机狭小的空间里,紫外LED一开,整个机壳内部都在发光。这就是为什么我总强调,紫外传感器的安装位置要远离光源,最好加个遮光罩。不然你测到的不是荧光,是漏光。
3.2 紫外荧光效应:钞票上的隐形密码
荧光效应,说白了就是「吃进紫外,吐出可见光」。人民币上的防伪纤维、油墨里掺了荧光物质,紫外一照,它们就发出蓝、绿、黄的光。
这里有个坑,我踩过。不同面额、不同版本的钞票,荧光物质的配方不一样。有的荧光粉衰减很快,用个两三年就变弱了。我遇到过一台老点钞机,客户说验钞不准,拆开一看,紫外LED的光衰已经超过50%。换了个新LED,立马恢复正常。
我的经验:紫外荧光信号不是一成不变的。新钞和旧钞的荧光强度能差30%以上。所以阈值不能设死,得做自适应。我习惯用滑动窗口取平均值,动态调整判断门限。
荧光信号的时序特征也很重要。紫外光一照,荧光几乎是瞬间激发,但关掉紫外后,荧光会有一个衰减过程,这叫余辉。真钞的余辉时间一般在几毫秒到几十毫秒。假钞呢?有的根本没余辉,有的余辉长得离谱。这个特征可以用来做二次验证。
3.3 紫外传感器:选对器件,事半功倍
紫外传感器,市面上常见的有三种:
| 类型 | 响应波段 | 灵敏度 | 成本 | 典型应用 |
|---|---|---|---|---|
| 光敏二极管(UV PD) | 200-400nm | 中 | 低 | 通用点钞机 |
| 光电倍增管(PMT) | 100-650nm | 极高 | 高 | 高端验钞设备 |
| 紫外增强型硅光电二极管 | 200-1100nm | 高 | 中 | 多光谱点钞机 |
我个人习惯用紫外增强型硅光电二极管。为什么?因为它的响应范围宽,一个传感器能同时覆盖紫外和可见光,做多光谱分析时省事。但要注意,它也会响应红外,所以前面必须加紫外带通滤光片。
避坑指南:我曾经在一个项目里,为了省成本,没加滤光片。结果环境光一强,传感器直接饱和,输出全是噪声。后来老老实实加了365nm带通滤光片,信噪比提升了20dB。记住,紫外传感器的前置光学设计,比传感器本身还重要。
传感器输出的是微弱电流信号,一般在nA到μA级别。所以后面必须接跨阻放大器(TIA)。我常用的运放是AD8605,噪声低、偏置电流小,适合做光电信号的前端处理。
// 紫外传感器信号采集示例(伪代码)
uint16_t read_uv_sensor(void) {
// 开启紫外LED
GPIO_WriteLow(UV_LED_PIN);
delay_ms(5); // 等待荧光稳定
// 读取ADC值(12位分辨率)
uint16_t adc_val = ADC_Read(UV_SENSOR_CH);
// 关闭紫外LED
GPIO_WriteHigh(UV_LED_PIN);
return adc_val;
}
3.4 激发光源:LED还是灯管?
紫外激发光源,现在主流是LED。以前用紫外灯管,寿命短、发热大、启动慢。LED就不一样了,即开即用,寿命能到几万小时。
但LED也有坑。我遇到过一批紫外LED,标称365nm,实际测出来峰值在370nm。差了5nm,荧光效率就掉了40%。所以买回来的LED,一定要用光谱仪测一下,别信规格书。
选型要点:
- 波长精度:±5nm以内,最好用窄带LED
- 光功率:5-20mW,太强会灼伤钞票,太弱信号不够
- 驱动方式:恒流驱动,避免电流波动导致光强不稳
- 散热:紫外LED发热量大,需要良好的散热设计
驱动电路方面,我习惯用恒流源。简单的可以用一个三极管加稳压管,要求高的用专用LED驱动芯片。记住,紫外LED的Vf(正向电压)比普通LED高,一般在3.5-4.5V,供电电压要留够余量。
// 紫外LED恒流驱动示例(简化版)
// 使用PWM控制亮度,实现自适应调节
void uv_led_set_brightness(uint8_t level) {
// level: 0-255
TIM_SetCompare1(TIM3, level);
}
嗯,紫外这块内容不少,但核心就三点:理解紫外光的特性、选对传感器和光源、做好光学隔离。下一节咱们讲紫外信号的采集与处理,到时候会结合具体的电路和算法,把今天讲的理论落地。