使用预构建的解决方案快速部署飞行时间距离感测

作者:Stephen Evanczuk,Digi-Key 北美编辑;文章转载自:Digikey

飞行时间 (ToF) 技术越来越多地用于测距和接近感应,应用范围从消费品到工业设备。单芯片 ToF 处理 IC 的出现有助于简化这些解决方案的实施,但开发人员仍需完成一些关键任务,例如找到合适的发射器和光电二极管并进行优化,以及将这些器件与该 ToF 处理器进行集成。通过使用更加集成的方法,可大幅简化流程并节省时间。

为了解决这个问题,Digilent 开发了一款预构建的 ToF 扩展板。该板与高性能系统板和相关的软件库结合使用后,可提供完整的硬件 ToF 解决方案。现在,开发人员可以立即开始 ToF 应用原型开发,或使用此硬件和软件作为基础来设计定制的 ToF 硬件和软件。

本文简要介绍了 ToF 传感器的工作方式。然后,本文将介绍 Digilent 的 Pmod ToF 板,并说明如何将其与 Digilent 的 Zybo Z7-20 开发板结合使用,以评估 ToF 技术并在自己的设计中快速部署光学距离感测。

ToF 传感器的工作方式
ToF 传感器在越来越多的应用中扮演着重要角色。在车辆和工业设备中,当操作人员进行停车或近距离操控时,这些传感器有助于为操作人员提供障碍物警告。在消费类应用中,这些器件可在移动产品或家庭自动化系统中提供接近感应功能。在上述和其他应用中,光学 ToF 系统使用不同的方法来计算到外部物体或障碍物的距离,其中全部依赖于外部物体反射光与原始透射光之间的某些差异。

高级 ToF 器件如 Renesas 的 ISL29501 基于 ToF 的信号处理 IC,通过测量外部 LED 或激光器发射的光与光电二极管接收的光之间的相移来计算距离。当 ISL29501 以给定的频率 fm 发射经方波调制的光 (Tx) 时,来自物体的反射光信号 (Rx) 会以衰减幅度 R 返回至 ISL29501,并带有一定的相移 j(图 1)。


图 1:Renesas 的 ISL29501 等高级 ToF 器件使用内部数字信号处理能力,根据透射光与反射光之间的相移 j 来计算到物体的距离。(图片来源:Renesas)

通过测量此相移,该器件可以计算距离 D:

公式 1

其中:

D = 到目标的距离

c = 光速

fm = 调制频率

φ = 相位角(弧度)

由于调制频率信号 fm 和光速 c 是已知参数,因此可以通过找到剩余因子相位角 φ 来计算距离。该因子可以使用传统的正交信号处理技术来计算。在此处,同相 (I) 和正交 (Q) 信号分量由单独的 I 和 Q 信号路径生成,这些路径包括解调器、低通滤波器 (LPF) 和模数转换器 (ADC)(图 2)。


图 2:为了获得计算距离所需的相位角 φ,Renesas 的 ISL29501 对输入信号 (VIN) 的同相 (I) 和正交 (Q) 信号分量进行解调、滤波和转换。(图片来源:Renesas)

在内部,ISL29501 将解调流水线之前的综合信号路径与模拟前端 (AFE) 信号调节级相集成,后者包含跨阻放大器 (TIA) 和低噪声放大器 (LNA)。ISL29501 的输入信号路径位于 AFE 之后,具有一条可变增益 (Av)、自动增益控制 (AGC) 回路,而此回路会使用内置算法来优化 SNR。

在输出端,ISL29501 集成了一个片上发射器驱动器链,其能够以 4.5 兆赫兹 (MHz) 的调制频率向合适的发射器提供方波脉冲,还能提供高达 255 毫安 (mA) 的驱动电流。内部数字信号处理器 (DSP) 会处理所需的计算,以便根据相位、幅度和频率数据生成距离结果,从而使得这个功能架构趋于完整(图 3)。


图 3:Renesas 的 ISL29501 组合了信号路径和内部数字信号处理器;这些路径可驱动发射器和处理光电二极管输入,而处理器可执行算法来根据相位、幅度和频率数据计算距离。(图片来源:Renesas)

选择发射器和光电二极管
ISL29501 集成了光电二极管输入、发射器输出和处理功能,为构建 ToF 距离感测解决方案提供了灵活的硬件基础。一些功能专为支持各种发射器和光电二极管而设计,例如输入端的 AFE 和 AGC 回路以及输出端的可编程发射器驱动器。同时,谨慎选择和配置发射器和光电二极管,对一个完整 ToF 解决方案是否有效非常重要。

以发射器为例,ISL29501 的灵活非常大,让开发人员能够从各种红外 (IR) LED、垂直腔面发射激光器 (VCSEL) 或具有兼容电压、电流和频率规格的其他激光器件中进行选择。实际上,典型的 ToF 解决方案对发射器类型相对不太敏感。尽管如此,还是建议使用近红外 (NIR) 或中波长红外 (MWIR) 器件,以减少来自环境光源的干扰。选择器件后,开发人员将需要确定最佳发射器脉冲驱动电流,以及可能需要的任何 DC 电流分量。接下来,开发人员必须对器件进行编程,以使用发射器驱动器输出链中集成的独立内部数模转换器 (DAC),来提供脉冲和可选的 DC 电流。

同样,ISL29501 也支持多种光电二极管,但是在确定最佳选择方面,应用和发射器的选择将至关重要。与发射器一样,在 NIR 或 MWIR 波长工作的光电二极管有助于减少环境光干扰。理想情况下,光电二极管的光谱响应曲线应尽可能窄,并且峰值位于发射器峰值波长的中央,以优化信噪比 (SNR)。虽然光电二极管需要最大限度地增加收集的光量,但增加光电二极管的面积也会导致更高的电容(包括结电容和杂散电容),这会影响光电二极管的响应时间及其跟踪发射器上升和下降时间的能力。因此,开发人员需要找到光电二极管面积与内部电容的最佳平衡点,以在不影响性能的情况下使信号幅度最大化。

集成 ToF 解决方案
Digilent 的 Pmod ToF 板设计用于加速 ToF 应用的开发,可提供现成的 ToF 解决方案,在一个小规格板上组合了 Renesas 的 ISL29501 ToF IC、Microchip Technology 的 AT24C04D EEPROM、IR LED 和光电二极管,并且带有六引脚 Pmod 主机和直通连接器,能够添加其他 Pmod 扩展板(图 4)。


图 4:Digilent 的 Pmod ToF 板提供了完整的 ToF 传感器解决方案,可通过 Pmod 连接器连接至系统板。(图片来源:Digilent)

对于光源和检测器,该板将 OSRAM Opto Semiconductors 的大功率 SFH 4550 860 纳米 (nm) LED 与 OSRAM 的 SFH 213 FA 光电二极管配对。该二极管具有较快的开关速度,光谱灵敏度从 750 到 1100 nm,峰值灵敏度为 900 nm。

虽然 Renesas 的 ISL29501 不需要针对关联的 LED 和光电二极管器件使用其他元器件,但对于三个功率域中的每一个域,均需要一个合适的 2.7 伏至 3.3 伏电源,并由模拟电压源 (AVCC)、数字电压源 (DVCC) 和发射器驱动器电压 (EVCC) 的单独引脚供电。尽管这些电源域可以由同一电源进行供电,但 Renesas 建议隔离这三个电源。如 Digilent 的 Pmod ToF 原理图所示,Digilent 对每个电源使用 Murata Electronics 的 BLM15BD471SN1D 铁氧体磁珠和电容器,来实现 ToF 板的这种隔离(图 5)。


图 5:Digilent 的 Pmod ToF 板既提供了即时硬件解决方案来加速原型开发,又为定制 ToF 系统提供了参考设计。(图片来源:Digilent)

开发环境
Digilent 通过基于 Digilent Zybo Z7-20 板的开发环境,进一步帮助加速 ToF 应用的实现。该板围绕 Xilinx 的 Zynq XC7Z020 完全可编程 SoC (APSoC),构建出一个高性能操作环境。此 APSoC 集成了双核 Arm® Cortex®-A9 处理器以及广泛的可编程结构,可支持 53,200 个查找表 (LUT)、106,400 个触发器和 630 KB 区块随机存取存储器 (RAM)。除了 Xilinx 的 Zynq XC7Z020 APSoC,Zybo Z7-20 板还包括 1 GB RAM、16 MB 四通道 SPI 闪存、多个接口和连接器,以及 6 个 Pmod 扩展端口。

Digilent 的 ZyboZ7-20 PmodToF-Demo 软件分发包专为在 Zybo Z7-20 板上运行而设计,包括用于 Pmod ToF 分层区块软件库的软件开发套件 (SDK)。该库为开发人员提供了一个直观的应用程序编程接口 (API),能基于 Xilinx SDK 中或 Digilent 为 Pmod ToF 板提供的驱动程序和支持模块来构建各种应用(图 6)。

图 6:Digilent 的 Pmod ToF 分层区块软件库通过用于 Renesas 的 ISL29501 传感器、EEPROM 和 Pmod ToF 服务的模块,增强了 Xilinx SDK 中的低级接口驱动程序。(图片来源:Digilent)

Digilent 库组合了 Xilinx SDK 中用于 I2C、GPIO 和 UART 通信的低级别驱动程序,以及针对 Digilent 的 Pmod ToF 板 EEPROM 和 Renesas 的 ISL29501 器件实现寄存器级操作的模块。例如,ISL29501 模块提供了一个函数来使用 ISL29501 测量距离。由于 ISL29501 在内部实施了该测量所需的详细操作序列,因此在测量距离时,只需进行一些初始设置以及一系列寄存器读写操作。Digilent 库的 ISL29501 模块提供的函数可用于实现特定 ISL29501 操作,其中包括测量距离的功能(清单 1)。

 double PmodToF_perform_distance_measurement() {     /* WRITE REG */     u8 reg0x13_data = 0x7D;     u8 reg0x60_data = 0x01;     /* READ REG */     u8 unused;     u8 DistanceMSB;     u8 DistanceLSB;       double distance = 1;     ISL29501_WriteIIC(&myToFDevice, 0x13, &reg0x13_data, 1);     ISL29501_WriteIIC(&myToFDevice, 0x60, &reg0x60_data, 1);     ISL29501_ReadIIC(&myToFDevice, 0x69, &unused, 1);     CALIB_initiate_calibration_measurement();        //waits for IRQ     while((XGpio_DiscreteRead(&gpio, GPIO_CHANNEL) & GPIO_DATA_RDY_MSK) != 0 );     ISL29501_ReadIIC(&myToFDevice, 0xD1, &DistanceMSB, 1);     ISL29501_ReadIIC(&myToFDevice, 0xD2, &DistanceLSB, 1);     distance =(((double)DistanceMSB * 256 + (double)DistanceLSB)/65536) * 33.31;     return  distance; } 

清单 1:Digilent 库的 ISL29501 模块中包含的软件函数可实现寄存器级操作,例如测量距离,如此清单所示。(代码来源:Digilent)

Digilent 库的 PmodToF 模块提供了基于较低级别模块构建的较高级别服务。例如,为了执行并显示测量,PmodToF 模块的 PmodToFCMD_MeasureCmd() 函数会重复调用 ISL29501 模块的寄存器级 PmodToF_perform_distance_measurement() 函数,并显示结果的平均值(清单 2)。

 /***   PmodToFCMD_MeasureCmd ** **     Parameters: **     none ** **     Return Value: **          ERRVAL_SUCCESS              0       // success ** **     Description: **            This function displays over UART the distance measured by the device.**            Before calling this function, it is important that a manual calibration was made or the calibration **            was imported(calibration stored by the user in EEPROM user area )/restored from EEPROM(factory calibration).*/ void PmodToFCMD_MeasureCmd() {        int N = 100, sum = 0;        int distance_val, distance_val_avg;        // 100 distance values that are measure will be averaged into a final distance value        for(int j=0;j <N;j++)        {               distance_val = 1000 * PmodToF_perform_distance_measurement(); // the distance value is in millimeters               sum = sum + distance_val;        }        distance_val_avg = sum/N;     sprintf(szMsg, "Distance measured D = %d mm.", distance_val_avg);     ERRORS_GetPrefixedMessageString(ERRVAL_SUCCESS, "", szMsg);     UART_PutString(szMsg); } 

清单 2:Digilent 库的 PmodToF 模块中包含的软件函数可提供应用级服务,例如显示多个距离测量值的平均值,如此清单所示。(代码来源:Digilent)

开发人员可以使用 Digilent 的 Pmod ToF 分层区块软件库中的全套模块,也可以只使用自己应用所需的最少一组模块。但是,对于每个应用,开发人员都需要执行幅度、串扰和距离校准,以确保准确性。尽管幅度是内部校准,但其他两项需要进行一些设置。对于串扰校准,开发人员只需使用板随附的一块泡沫阻挡光学器件,然后进行校准。对于距离校准,开发人员在放置 ToF 板时,可让光学元件与高红外反射率的目标保持一段已知距离,然后进行校准。虽然 ISL29501 不包括非易失性存储器,但开发人员可以将新的校准值保存在 Pmod ToF 板的 EEPROM 中,并在软件初始化过程中加载这些值。

这种现成的硬件和软件组合为创建光学 ToF 应用提供了即用型基础。要进行快速原型开发,开发人员可以使用 Digilent 的 Pmod ToF 和 Zybo Z7-20 板,立即运行库分发包的示例软件。要进行定制开发,开发人员可以基于 Pmod ToF 板提供的硬件参考设计以及 Digilent 库分发包中提供的软件代码进行构建。

总结
尽管单芯片 ToF 处理 IC 有助于简化许多应用中 ToF 解决方案的实施,但它们仍需要开发人员寻找合适的发射器和光电二极管来进行集成。如上所述,预构建的 ToF 扩展板与高性能系统板相结合,提供了更容易使用的解决方案,它们共同提供了完整的硬件 ToF 解决方案。通过将此硬件解决方案与关联的软件库相结合,开发人员可以立即开始 ToF 应用原型开发,或使用此硬件和软件作为基础来设计定制的 ToF 硬件和软件。

推荐阅读