超声波LED反馈

DOIT SUPER
转载
发布时间: 2025-06-14 16:39:10 | 阅读数 0收藏数 0评论数 0
封面
讨厌你的机器人到处乱撞?这篇文章可以解决这个问题。8个声波传感器看起来很复杂……但实际上我把它弄得非常简单。我尽量发布一些能帮助你了解Arduino并展现“跳出框框”概念的项目。这篇文章将帮助你理解595开关、Pro-mini作为可编程传感器,以及实时LED反馈的重大用途。

准备工作:

材料:

我喜欢用pro-mini。它们大约2.50美元,可以像功能齐全的uno一样工作,安装接口后非常灵活。用作传感器微型控制器,您可以让它“做您想做的事情”,而不是听从购买的传感器的指令。I2C接口仅使用两根线,它们可以连接到一条线路上。所以,不用MEGA,我可以用4个mini控制器同时运行4行独立的代码,只需10美元。在这里,我用一个mini控制器将声波传感器通过595芯片连接起来,并显示实时LED距离。然后只需与主板共享8位数据。这减轻了主板的负担,使代码变得非常简单。

声波传感器有个问题……没有视觉反馈。你永远不知道传感器是坏了还是在工作!我相信发明“BLINK”的人比爱因斯坦还要聪明。只需一个LED,就能通过闪烁传递大量信息。所以声波传感器需要实时反馈。这里我用了一个LED阵列来监控每个传感器。其实你不需要它们,只要把传感器做成不带LED的就行了。不过,在PCB上装上LED会很有帮助。

工具:


1

制作PCB

制作 PCB 并进行安装。注意……我在 PCB 上连接声波传感器的 4 针脚时犯了一个错误。ECHO 和 TRIGGER 的 Vcc 和地线本来要插在 PCB 上。PCB 上没有足够的空间放置连接器,所以我只做了带引脚布局的 PCB。这样你就可以在 PCB 上焊接一个线连接器,然后插入实际的声波传感器。至于 LED,我把黄色 LED 放在内侧边缘,红色 LED 放在外侧边缘。这有助于你在远处观察传感器是否测量正确。

这是我做过的少数几块双面PCB之一。我宁愿做两块单面PCB,然后做跳线。但要实现LED显示屏,至少需要顶层PCB。我在下载时把布局图分开了。

该 PCB 适用于 Pro-mini,A4-A5 位于边缘接头内。无论哪种方式,只需将 A4-A5 连接到主 A4-A5 即可。别忘了 Vcc 和接地。

FZZ
FOUP303JS8TOG2H.fzz
70.60KB
FZZ
FEQ4IYSJS8TOFXU.fzz
25.83KB
2

许多错误

现在来说说我的错误...我试图一次弹出所有触发器(全部绑在一起),这种方法效果不错,但是发生了一些相互作用。所以现在所有的 ECHOS 都转到微控制器(8),触发器由 595 设置。另外还有三个引脚(3)。至于 LED,多路复用不起作用。每个 LED 都需要完全开启时间。这意味着每排 7 个 LED 都必须有自己的 595。一旦更新 595,LED 就会一直亮着,直到下次更新。多路复用时 LED 只会亮十分之一秒。这在我的阅读器中效果很好,它需要专用的微控制器。没有时间扫描 8 个声波传感器和测量距离。我试过了,结果很差。多路复用 LED 也意味着行 + 列的网格,这意味着 PCB 中大约有 64+ 个馈通。

由于PCB比较杂乱,我只用了595的7个输出。远看根本分辨不出是7个还是8个LED,只能看到它们的运动。你可能想把所有LED都接在一个电阻上,这样也行,但阵列的亮度会随着点亮的LED数量而变化。所以每个LED接一个电阻是最好的。我很喜欢595,但如果他们能把Vcc和0-out引脚挪一下,或者做一个18针的IC,把所有输出都放在同一侧……连接所有8个输出就简单多了。不过那样的话,它的售价肯定不会低于30美分。

3

安装传感器

将声波传感器粘到咖啡盖上。每个传感器的公插孔需要向内弯曲。如果一次弯曲一个引脚,效果会更好。我使用了双面泡沫胶带,以减少振动。我的传感器之间距离太近,需要留出 1/4 英寸的空间才能更好地与 PCB 匹配。我以前用过声波传感器,有时其中一个会测量不准确,你需要记住这一点。所以不要把它们全部粘在一起。

使用前对每个传感器进行快速距离测试也很有帮助。我买了20个传感器,其中大约有一个读数很差。就我付的价格来说,还不错。

4

硬线

我以为会有空间容纳从 PC 到

声波引脚,但空间不够了。所以我硬接线了PCB端,只用母插孔(8个)做了回声和触发线。我把传感器的8个Vcc和8个地线连接在一起,这样就只给它们做了2个到PCB的连接。

8个传感器和8个595单片机,uno或pro-mini无法为其供电。这个项目必须有一个5V稳压电源。我的机器人用的是一个简单的7805,1安培,来自电池。它连接到所有设备的5V Vcc。7805的电压下降了大约1伏,所以你至少需要6.5伏的电压来供电。这相当于两节3.3伏的锂电池。我的机器人用的是旧钻头包里的镍镉电池,8个镍镉电池驱动着典型的中国产12V齿轮减速电机,电机装在20美元的坦克式底盘上。

5

下载 SONIC SKETCH

下载并安装 Sketch。有很多方法可以与

另一个 uno,但我喜欢 I2c。混淆之处在于寻址和主/从。与大多数传感器一样(将第二个 mini 视为传感器),您需要寻址传感器并请求 x 数量的字节。这里也是一样。在第二个 mini 中,您留出要发送的 x 数量的字节。混淆之处在于名称并不重要。只有当您共享名称时,它才能帮助您记住。因此,在草图中,我以 sendR1、sendR2、sendR3、sendR4、sendL1、sendL2、sendL3、sendL4 的形式发送 8 个声波距离测量值(以厘米为单位)。主设备只获取 8 个字节的数据,您可以将这些字节称为任何您想要的。我将它们读作 gotR1、gotR2、got..... 发送字节的顺序相同。因此,字节 A、B、C.....不要认为更改名称会给您不同的数据。另一个问题是,您只能接收被告知要发送的数据。因此,如果您想要其他数据,则必须同时更改主设备和从设备。

INO
F4J87IEJS8TOG31.ino
5.80KB
6

沟通

如果您知道如何设置两个 Uno 模块相互通信,可以跳过此步骤。最后我会提供一些小信息。为了方便起见,我将机器人底座 M1 中的 Uno 模块和声波传感器称为 S2。将 Vcc、地、A4、A5 相互连接。

在 S2 的草图中,它以 #include<Wire.h> 开头

然后创建要发送的 8 个字节。字节 R1、字节 R2、字节 L1 等。Uno 是 8 位微处理器,因此它们一次使用“byte”而不是“int”发送 1 个字节是正确的。

在“setup()”中添加“Wire.begin(address)”,用于告诉 I2c 这是哪个设备。地址通常是 4 到 200 之间的任意数字,即一个字节的大小。这里我使用了数字 10。因此,要与此传感器 S2 通信,主设备必须调用 Wire.requestFrom(10,8)。这是地址 10,8 表示所需的字节数。同样,在“setup()”中添加 Wire.onRequest(isr anyName)。当 M1 调用请求时,S2 传感器会通过中断做出反应。这只会调用函数 anyName。因此需要创建这个 anyName 函数。查看草图并查看函数“sendThis()”,这是字节实际发送到 M1 的地方。仅发送字节,而不是名称,并且按发送顺序发送。这是要发送的数据的大小和数量的起始位置。在这种简单的字节格式下,发送和接收应该匹配。这里发送了 8 个字节,接收了 8 个字节。这里需要注意的是,调用函数需要 ()。例如,delay()、millis() 和 Serial.print()。使用 ISR(中断服务程序)调用函数时,会删除 ()。因此,调用 Wire.onRequest(sendThis) 时需要使用 (Wire.onRequest(sendThis)。

我最困惑的是主/从模式。一开始我以为主模式永远是主模式。但在草图中,你可以切换主/从模式,以便从其他微控制器发出请求或发送给其他微控制器。只要你遵循上面概述的基本格式即可。记住……你只能共享已分配的数据。

两个稀奇古怪的 tid 位。ISR 中断仅在草图行之间中断。如果您被锁定在 while 或 for 循环中,则在循环退出之前不会发生任何事情。这没什么大不了的,因为这可能只有几微秒,而且数据已经过时了。

另一个问题是,微处理器“内部”的计算是 100% 无误差的。任何“外部”(有线)通信都可能出错。有很多方法可以检查传输的数据是否无误并与源数据匹配。最简单的方法是使用校验和。只需将发送字节的总数(实际值)相加,然后发送总数,接收端再将总数相加,看看它们是否匹配。如果匹配,则表示匹配;如果不匹配,则丢弃该数据集。当然,这涉及发送整数值而不是字节。因此,只需将整数拆分为高字节和低字节,并分别作为字节发送。然后在接收端将它们合并在一起。

简单的:

int x = 5696; (任何有效的 int 值,最大值为 65k 或负 32k)

字节 hi = x >> 8; (22)

字节 lo = x; (64)

发送字节并在另一端合并....

字节 hi = Wire.read();

字节 lo = Wire.read();

int newx = (hi <<8) + lo; (5696)

7

结束

最后,这款声波传感器实时向主板提供原始距离数据。这解放了微控制器,也大大简化了程序的编写。现在,微控制器可以根据可靠的数据(而非随机猜测)做出减速、转弯、停止或倒车的正确决策。请参阅我的另一篇关于使用蓝牙 IDE 无线上传程序的文章,无需一直连接机器人,只需快速修改程序即可。感谢您的阅读。

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载