LiDAR激光雷达技术原理及Arduino示例代码纠错

发布时间:2024-04-30  

(Light Detection and Ranging,LiDAR)即激光探测和测距,又称光学雷达,是自动驾驶领域的一种基础感测技术。LIDAR是激光科技与雷达技术的组合,以下以无人机和自动驾驶领域常用的LIDAR-Lite系列为例,介绍LIDAR与Arduino开发板的连接几测距示例。

本文引用地址:

LiDAR工作原理

LiDAR工作原理与通信雷达一样,都是飞行时间测量法(Time of Flight,TOF),只是发射介质采用的是对人畜无害的红外光束(Light Pluses),而不是无线电波。


LiDAR示意图

LiDAR通过发射、反射和接收红外光束来探测白天或黑夜下的特定物体及动态数据,甚至由于反射度的不同,车道线和路面也是可以区分开来的。对于车用,光速是每秒30万公里,要区分目标厘米级别的精确距离,对传输时间测量分辨率必须做到1纳秒。要如此精确的测量时间,对应的测量系统的成本就很难降低,还需要使用巧妙的方法降低测量难度。


激光雷达LiDAR系统组成

LiDAR系统一般包括激光发射光源、接收器、伺服电机、斜面镜和光学旋转编码器(又称圆光栅)几部分。通过旋转的机械镜面测量激光发出和收到回波的时间差,LiDAR可确定目标的方位和距离。由于激光雷达主动发射激光,因此受环境光变化的影响小,测距精确。

LiDAR与Arduino连接

LIDAR是激光科技与雷达技术的组合,不但应用前景广阔,使用也非常简便。通过Arduino开发板就能实现测距应用,必要的物料BOM表如下: USB micro-B电缆 USB 2.0 A-B型 x1 电阻器 1/4W 500欧姆 x1 SparkFun Arduino开发板 DEV-15123 x1 LIDAR-Lite v3传感器 Garmin SEN-14032 x1 电容器 1000uF/25V去耦铝电解电容器 x1 面包板 x1 跳线 若干


LIDAR-Lite激光雷达

其中,LIDAR-Lite前方有两个镜筒,里面分别是激光发射器和接收器,用以发现和检测目标。侧面的电气接口用来连接6-wire电缆。底部的4个安装孔用来固定传感器,螺丝规格为 #6 or M3.5。 LIDAR-Lite有6个引线,用来与控制板通信。其功能分别为: 红色:5V,连接5V电源。 橙色:PWR EN,电源使能(内部上拉) 黄色:MODE,模式控制(用于PWM模式) 绿色:SCL,I2C时钟 蓝色:SDA,I2C数据 黑色:GND,接地线

LIDAR-Lite的引线及功能说明

由于LIDAR-Lite工作于4.5V to 5.5V,消耗的连续电流高达135mA (待机状态为105mA),为了维持稳定工作,需要在5V电源和GND之间连接一个680μF电容器,并尽量靠近LIDAR传感器单元。 用于SCL和SD线路的I2C总线上拉电阻器一般为4.7kΩ,如果链路较长或系统器件较多,可改用较小阻值的电阻元件。当线路长度超过允许长度时,可采用总线扩展器。


LIDAR传感器与Arduino开发板连接

按照电路图将LIDAR传感器与RedBoard或者其他Arduino兼容开发板连接,IDAR-Lite就可以通过I2C总线来测量距离了。

LiDAR库文件及代码

连接好电路图后,用USB电缆将LiDAR连接到PC,就可以安装专门的Arduino库文件了。这很简单,打开Arduino Library Manager按照提示操作就OK了。如果这些库文件没有链接到Arduino IDE,就需要手动操作,过程也不复杂。

库文件装好后,打一个新的Arduino sketch,拷入如下代码:

/**

* LIDARLite I2C Example

* Author: Garmin

* Modified by: Shawn Hymel (SparkFun Electronics)

* Date: June 29, 2017

*

* Read distance from LIDAR-Lite v3 over I2C

*

* See the Operation Manual for wiring diagrams and more information:

* http://static.garmin.com/pumac/LIDAR_Lite_v3_Operation_Manual_and_Technical_Specifications.pdf

*/

#include <Wire.h>#include <LIDARLite.h>

// Globals

LIDARLite lidarLite;int cal_cnt = 0;

void setup()

{

Serial.begin(9600); // Initialize serial connection to display distance readings

lidarLite.begin(0, true); // Set configuration to default and I2C to 400 kHz

lidarLite.configure(0); // Change this number to try out alternate configurations

}

void loop()

{

int dist;

// At the beginning of every 100 readings,

// take a measurement with receiver bias correction

if ( cal_cnt == 0 ) {

dist = lidarLite.distance(); // With bias correction

} else {

dist = lidarLite.distance(false); // Without bias correction

}

// Increment reading counter

cal_cnt++;

cal_cnt = cal_cnt % 100;

// Display distance

Serial.print(dist);

Serial.println(" cm");

delay(10);

}

代码上传成功后,打开Serial Monitor,就可以看到如下显示的测量结果。

LIDAR传感器的测距结果

如果Serial Monitor显示有误(nack error),大部分情况是I2C总线连接问题,因为I2C总线对接触不良非常敏感,最好是事先在面包板上焊接几根导线出来。当然,也可能是上拉电阻太大了,可换个小一点阻值的试试,直到正常测量为止。

文章来源于:电子产品世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>