这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【EEPW-let'sdesign】TDKEVICU-30201-00超声波测距

共1条 1/1 1 跳转至页

【EEPW-let'sdesign】TDKEVICU-30201-00超声波测距

菜鸟
2026-10-26 09:49:49     打赏

很开心参加“Let's design 第三期”活动,这次活动我选择的板子是:TDK EV_ICU-30201-00。TDK InvenSense EV_ICU-30201-00 是一款用于 ICU-30201 超声波 3D 飞行时间 (ToF) 传感器的评估板,支持 SPI 接口,工作电压为 1.71V 至 1.89V。

image.png

image.png

拿到板子,板子非常的小巧。这边板子只是将ICU-30201转接为FPC(12P)座。查看官方资料,这个芯片使用SPI方式通讯,但是驱动电压是1.8V。无法直接接单片机的3.3v电压。

制作PCB转接板

官方提供的资料里没有给出这个板子的电路图。ICU-30201又是个qnf封装的芯片,所以一直没搞清楚管脚的映射关系。最后在群里老师的指导下,找到一份资料。

image.png

找一颗LDO芯片,提供1.8V电压。参考着厂家另外一款芯片ICU-10201,网上的资料,绘制了一个转接板的电路图。本想着备一个晶振,以后方便扩展,但是最后晶振的引脚忘记连接了,所以晶振没有用上。开发板我使用AtomS3。AtomS3开发板背面有6个GPIO输出,通过排针与转接板连接。所有的FPC座都是下接。

image.png

072e7833f2584241f9d24534db6e4610.jpg

系统实现

编程使用arduino,编程工具使用Vscode+platformIO。在Arduino的库中,找到ICUX0201库。使用这个库来驱动这个模块。

image.png

参考着例程,除了SPI需要使用的4线外,还需要使用一个中断引脚。这里将引脚预先定义好

#define ICU_SCK 5
#define ICU_MOSI 6
#define ICU_MIS0 7
#define ICU_CS 8
#define ICU_INT1 39
// #define ICU_INT2 38

ICUX0201_GeneralPurpose ICU(SPI, ICU_CS, ICU_INT1);

ICU-30201测距是通过芯片产生53K的超声波,发射出去,超声波遇到障碍物反弹回来,芯片接收到反弹回来的声波,通过实践计算声音在空气中传播的距离。

image.png

系统首先对ICU30201进行初始化

    SPI.begin(ICU_SCK, ICU_MIS0, ICU_MOSI, -1);
    ret = ICU.begin();
    if (ret != 0)
    {
        Serial.print("ICUx0201 initialization failed: ");
        Serial.println(ret);
        while (1)
            ;
    }
    else
    {
        ICU.print_informations();
    }
    // Start ICU in free run mode
    ret = ICU.free_run();
    if (ret != 0)
    {
        Serial.print("ICUx0201 free run failed: ");
        Serial.println(ret);
        while (1)
            ;
    }
    else
    {
        ICU.print_configuration();
    }

ICUX0201库中已经帮忙集成了测距的方法,只需要调用即可,获得的结果单位为毫米,取整后直接显示在屏幕上。

void loop()
{
    float range;
    M5.Display.clear();
    if (ICU.data_ready())
    {
        /* Get range to target computed by sensor */
        range = ICU.get_range();
        Serial.print("Range(mm):");
        Serial.println(range);
        M5.Display.clear();
        M5.Display.setCursor(10, 30);
        M5.Display.println(int(range));
    }
    delay(1000);
}

效果展示

将模块用胶条粘在PCB板子上,然后插入ATOMS3上。

24555c39f7ed692f20ff3d7beaf00416.jpg

靠近墙壁的测量。

d466d6b1d30fc9c7fcd90b869f13a7c2.jpg

测量玻璃,无视透明物体。

ccba9314529cca95e56a463bf64f49ed.jpg

35aa091348aa44cacbf385206cbb5e66.jpg

5553ede8900248ae303f89bcbfb600b8.jpg

测量功能正常。但是也发现个问题:就是虽然超声波具有较强的指向性,但是还是会发散射出。在室内有时数据会剧烈波动,应该是室内的回波干扰导致的。后续将该模块移植到正在设计的小车上,用来感知周边环境。

源码

atoms3_ICUX0201.zip



共1条 1/1 1 跳转至页

回复

匿名不能发帖!请先 [ 登陆 注册 ]