首页 > 微机单片机 >单片机制作 > 使用Arduino和HCSR04构建超声波悬浮装置

使用Arduino和HCSR04构建超声波悬浮装置

来源:互联网发布者:两手空空 关键词: 超声波 Arduino 更新时间: 2024/03/06

看到一些东西漂浮在空中或自由空间中,这正是反重力项目的意义所在,这是非常令人兴奋的。物体(基本上是一小块纸或热胶)放置在两个产生声波的超声波换能器之间。由于这些似乎是反重力的波浪,物体漂浮在空中。这不仅是一个看起来很酷的Arduino 悬浮项目,而且还有许多实际应用。

所需组件

Arduino Uno / Arduino Nano ATMEGA328P

超声波模块 HC-SR04

IC 或 L239d H 桥模块 L239D

Vero 板点缀 Vero

二极管 4007

电容器 (PF) 104

8v 至 12v 电源的附加要求

稳压器 LM 7809

LED驱动电源12V 2Amp

附加材料:一些连接线、公头、母对母跳线

超声波悬浮电路图

完整的Arduino悬浮电路如下图所示,电路的工作原理非常简单。该项目的主要组件是一个Arduino,L239D电机驱动IC,以及从超声波传感器模块HCSR04收集的超声波换能器。一般超声波传感器发射25khz到50kHz之间频率信号的声波,在本项目中,我们使用的是HCSR04超声波换能器。我们之前做过很多超声波传感器项目,其中HCSR04主要用于测量距离。在这个项目中,我们将换能器从模块中焊接出来。

根据数据表,该超声波换能器的工作频率为 40 kHz。因此,使用 Arduino 和这段小代码的目的是为我的超声波传感器或换能器生成40KHz 高频振荡信号,并将此脉冲应用于双电机驱动器 IC L239D 的输入(来自 Arduino 的引脚 2 和 6 A0 & A1 引脚)来驱动超声波换能器。最后,我们将这个高频 40KHz 振荡信号与驱动电压一起通过超声换能器上的驱动 IC(通常在 L239D IC 的第 8 引脚上给出的 8 到 12 电压,Vcc2)施加。因此,超声波换能器产生声波。 我们将两个换能器以相反方向面对面放置,这样它们之间就会留出一些空间。声波在两个换能器之间传播,使物体漂浮。

请注意,L293D 有双电压输入,一个是为 IC 本身供电,在这个项目中由 Arduino 5v 供电,另一个 Vcc2 (8 th ) 用于输出组件驱动电压,该 VCC 引脚可以接受高达 36v 的电压。该 IC 有 2 个使能引脚、4 个输入输出引脚、4 个接地引脚。使用该 IC 的概念来自使用微控制器和该芯片的概念,我们可以通过从微控制器提供逻辑或数字信号来单独改变 2 个电机的方向和速度。

在该电路中,我们仅使用 IC L293D 的两个输入,输入引脚 1 (2) 和输入引脚 2 (7)。要启用这两个引脚,我们必须保持 IC Enable PIN 1 为高电平,因此我们将此引脚发射到 IC 引脚 16,即输入 Vcc 1,要了解更多信息,请遵循L293D 数据表。

使用 100nf 电容器是可选的,仅用于保持 IC 电源,作为电源,我们使用 12V 2Amp LED 驱动器,然后使用稳压器 IC LM7809 将电压降至 9v,并提供给 L139D 的第 8引脚与公共接地。 根据 Arduino、Cc 和 Arduino 论坛,Arduino UNO 板支持 7 到 12 伏的输入,但放置 9V Max 更安全。

为超声波悬浮编程 Arduino

代码非常简单,只有几行。在定时器和中断功能的帮助下使用这个小代码,我们正在制作高或低 (0 / 1) 并为 Arduino A0 和 A1 输出引脚生成 40Khz 的振荡信号。

首先,从相移阵列开始。

字节 TP = 0b10101010;

每隔一个端口就会接收到这个相反的信号。之后在 void 设置下,我们使用这行代码将所有模拟端口定义为输出。

DDRC = 0b11111111;

然后我们初始化定时器 1 并禁用所有中断设置为零。

通过这段代码,

无中断();

TCCR1A = 0;

TCCR1B = 0;

TCNT1 = 0;

然后,将定时器 1 配置为在 80KHZ 触发比较中断时钟。Arduino 以 16000000 MHZ ÷ 200 = 80,000 kHz 的频率运行,使用此函数生成方波。

OCR1A = 200;TCCR1B |=

(1 《《 WGM12);

TCCR1B |= (1 《《 CS10);

之后,这条线激活,比较定时器中断。

TIMSK1 |= (1 《《 OCIE1A);

最后,使用这段代码激活中断。

中断();

每个中断都会反转模拟端口的状态,这会将 80 kHz 方波信号转换为 40Khz 的全波循环信号。然后我们将值发送到 Arduino 输出 A0 和 A1 端口。

ISR(TIMER1_COMPA_vect)

{

端口C = TP;

TP = ~TP; // 为下一次运行反转 TP

}

并且没有任何东西可以放置或需要在循环下运行。

构建超声波悬浮装置

请注意,对于这个项目,正确安装超声波换能器很重要。它们应该在相反的方向上彼此面对,这一点非常重要,它们应该在同一条线上,这样超声波就可以在相反的方向上传播和相交。为此,您可以取两小块木头或 MD 板、螺母螺栓和胶水。您可以通过钻机制作两个孔以完美地安装换能器。在支架上,您可以悬挂超声波换能器装置。

在这种情况下,我使用了两块纸板,然后在胶枪的胶水的帮助下固定了超声波换能器。后来,为了制作支架,我使用了一个简单的接线盒,并用胶水固定了所有东西。

这是一些超声波悬浮的图片,展示了该项目的工作情况。

如果一侧安装有超声波换能器,超声波悬浮或声学悬浮也可以工作,但在这种情况下需要一个反射器作为障碍物,以便它可以在未来的悬浮滑板和反重力运输中使用。

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间:2024-11-13 15:04

求个单片机问题
求个单片机编程问题,可简化为:用3号键控制1、2灯 按下3号 1、2两灯谁亮灭谁 抬开恢复原先状态 这个怎么编 求个单片机问题 这是个歧义句,可以理解为: 1、把亮度较高的灯熄灭。 2、把已被点亮的灯熄灭。 如是后者,3号键就是个灯的电源总开关而已。 谁亮灭谁? 假设你的按键子函
 kk910104251单片机
2V的电压一旦接到STM32的ad输入口上,电压就会被拉低到0点几v
是AD输入口坏了吗 2V的电压一旦接到STM32的ad输入口上,电压就会被拉低到0点几v 你的GPIO确定配置没问题么 weizhongc 发表于 2015-7-20 10:18 你的GPIO确定配置没问题么 模拟输入模式 weizhongc 发表于 201
 wanghladystm32/stm8
运放构成的压控恒流源的问题
本帖最后由 paulhyde 于 2014-9-15 03:19 编辑 这是我用OP07构成的简单恒流源,第一个运放是隔离输入端对恒流源的影响,但是发现当负载端接上电阻,无论输入端电压 怎么调,J4端电压都没改变,而且负载电阻变化时,J4端电压变化,达不到恒流源效果,请问是为
 炎魔1206电子竞赛
【零基础学习STM32】第四讲:UART通讯实验——控制LED
一、概述 1、UART简介 UART:(UniversalAsynchronous Receiver/Transmitter),通用同步/异步串行接收/发送器,由 时钟发生器、数据发送器和接收器三大部分组成。 UART是一个全双工通用同步/异步串行收发模块
 kkhkbbstm32/stm8
QuartusII管脚分配的问题?
我在做的东西是由两个8位数运算,箱子上只有四个电平开关,有个4X4键盘,我设计中运算器都带有寄存器,我能直接用键盘进行输入吗?还有箱子上的键盘是一个管脚地址,在QuartusII里如何给这8位数组分配一个管脚地址呢? QuartusII管脚分配的问题?
 bingfo嵌入式系统
疯壳AI开源无人机飞控整机代码走读、编译与烧写
一、代码架构 飞控的整体代码工程由8个工作组组成,分别是Ctrl、Driver、VL53L1X、STM32_LIB、USB、USB/Lib、StartUP以及Drv_Point,如下图所示。 各个组的具体的代码功能如下表所示。 组 功能 Ctrl 包含飞控控制类的
 fengke创意市集

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved