8

创客+Arduino+飞行:使用Arduino和HCSR04超声波传感器进行简单的超声波悬浮

 2 years ago
source link: https://www.taholab.com/22912
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

转载自:CSDN– 使用Arduino和HCSR04超声波传感器进行简单的超声波悬浮_acktomas的博客-CSDN博客_声悬浮arduino

英文原版:Arduino Levitation Project – Simple Ultrasonic Acoustic Levitation using Arduino and HCSR04 Ultrasonic Sensor (circuitdigest.com)


使用Arduino和HCSR04超声波传感器进行简单的超声波悬浮

ARDUINO项目

经过**尼兰詹·罗伊(Nilanjan Roy)** 2020年6月30日修改
在这里插入图片描述
使用Arduino的超声声悬浮

看到漂浮在空中或自由空间中的东西真是令人兴奋,这正是反重力计划的目的。将物体(基本上是一小块纸或热缩胶)放置在两个产生声波的超声换能器之间。由于这些似乎是反重力的波,物体漂浮在空中。这不仅是一个很酷的Arduino悬浮项目,而且还有许多实际应用。研究人员正在研究与之非常相似的超声波机器人抓取器,这些抓取器可用于移动物体而不接触它们。

所需组件

  • Arduino Uno / Arduino纳米ATMEGA328P
  • 超声波模块HC-SR04
  • IC或L239d H桥模块L239D
  • Vero董事会点缀Vero
  • 二极管4007
  • 电容器(PF)104

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

  • 稳压器LM 7809
  • LED驱动器电源12V 2Amp

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

超声波悬浮电路图

完整的Arduino悬浮电路如下所示,该电路的工作原理非常简单。该项目的主要组件是ArduinoL239D电机驱动IC和从超声传感器模块HCSR04收集的超声换能器。通常,超声波传感器会发送25khz至50kHz之间的频率信号的声波,在本项目中,我们使用HCSR04超声波传感器。我们之前已经建立了许多超声波传感器项目,其中HCSR04主要用于测量距离。在这个项目中,我们将换能器从模块中焊接出来。
在这里插入图片描述
根据[数据表](https://components101.com/sites/default/files/component_datasheet/HCSR04 Datasheet.pdf),此超声换能器的工作频率为40 kHz。因此,使用Arduino和这小段代码的目的是为我的超声传感器或换能器生成40KHz的高频振荡信号,并将此脉冲施加到双电机驱动器IC L239D的输入(Arduino的引脚2和6 A0和A1引脚)以驱动超声换能器。最后,我们通过超声波换能器上的驱动IC(通常为L239D IC的第8引脚上的8至12电压,Vcc2)施加此40KHz高频振荡信号以及驱动电压。结果是哪个超声换能器产生声波。我们以相反的方向面对面放置了两个换能器,以使它们之间留有一定的空间。声波在两个换能器之间传播,并使物体漂浮。

请注意,L293D具有双电压输入,一个用于为IC本身供电,该电压由该项目中的Arduino 5v供电,另一个Vcc2(第8个)应用于输出组件驱动电压,并且该VCC引脚可以接受高达36v的电压。该IC具有2个使能引脚,4个输入-输出引脚,4个接地引脚。使用该IC的概念来自使用微控制器和该芯片的概念,在该芯片中,我们只需提供来自微控制器的逻辑或数字信号就可以分别更改2个电机的方向和速度。

在此电路中,我们仅使用IC L293D的两个输入,即输入引脚1(2)和输入引脚2(7)。要启用这两个引脚,我们必须将IC Enable PIN 1保持为高电平,因此我们将此引脚连接到输入Vcc 1的IC引脚16上,要了解更多信息,请遵循[L293D数据表](https://components101.com/sites/default/files/component_datasheet/L293D Datasheet.pdf)。

可选地使用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的振荡信号。

首先,从相移阵列开始。

byte TP = 0b10101010;

第二个端口接收相反的信号。之后,在void设置下,我们使用此行代码将所有模拟端口定义为输出。

DDRC = 0b11111111;

然后,我们初始化计时器1并禁用所有中断以将其设置为零。

通过此代码,

noInterrupts();
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1 = 0;

然后,将定时器一配置为以80KHZ触发比较中断时钟。Arduino以16000000 MHZ÷200 = 80,000 kHz的方波运行。

OCR1A = 200; TCCR1B | =
(1 << WGM12);
TCCR1B | =(1 << CS10);

此后,此行激活,比较计时器中断。

TIMSK1 | =(1 << OCIE1A);

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

interrupts();  

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

ISR(TIMER1_COMPA_vect)        
  PORTC = TP;
  TP =〜TP;//反转TP,以便下次运行

循环之下没有什么可放置或不需要运行的。

建立超声波悬浮设置

请注意,对于此项目,正确安装超声换能器很重要。它们应该在非常重要的相反方向上彼此面对,并且应该在同一条直线上,以便超声波可以在相反的方向上传播和相交。为此,您可以拿两小块木板或MD板,螺母螺栓和胶水。您可以在钻孔机上打两个孔,以使其完全适合换能器。在支架上,您可以悬挂超声换能器装置。
在这里插入图片描述

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

在这里插入图片描述

这是一些超声波悬浮的照片,显示了该项目的工作情况。
在这里插入图片描述

在这里插入图片描述

如果一侧装有超声换能器,则超声悬浮或声悬浮也可以工作,但在这种情况下将需要一个反射器,该反射器将成为障碍,因此可以在将来的悬停板和反重力运输中使用。您也可以在下面查看完整的工作视频。

我希望您理解该项目并喜欢构建有趣的东西。如果您有任何疑问,请将其留在下面的评论部分,您也可以使用我们的论坛来解决其他技术问题。

byte TP = 0b10101010; //every 2nd port receives the opposite signal
void setup()
DDRC = 0b11111111; //Define all analog ports as outputs
  // Initialize timer 1
  noInterrupts();           // Disable interrupts
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1  = 0;
  OCR1A = 200;              // Set Compare Match Register (16MHz / 200 = 80kHz square -> 40kHz full wave)
  TCCR1B |= (1 << WGM12);   // CTC mode
  TCCR1B |= (1 << CS10);    
  TIMSK1 |= (1 << OCIE1A);  // Switch on Compare Timer Interrupt  
  interrupts();             // Activate interrupts
ISR(TIMER1_COMPA_vect)          
  PORTC = TP; // Send the value TP to the outputs
  TP = ~TP;   // Invert TP for the next run
void loop(){
  // there is nothing left to do here:-(

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK