tag 标签: 超声波

相关帖子
相关博文
  • 热度 4
    2023-11-12 00:30
    499 次阅读|
    0 个评论
    超声波是频率大于人类听觉范围上限的声学声压(声学)波。超声波设备的工作频率为 20 kHz 至几千 MHz。表 1 总结了一些更常见的超声波应用的特征。每个应用中使用的频率范围都反映了实际情况下的平衡。提高工作频率可以通过提高分辨率来检测较小的伪影,但较高频率的信号无法穿透那么远。超声波应用的常见问题是信号衰减,它与信号频率成反比。因此,在表面研究应用中往往使用非常高的频率,而当需要更大的穿透力和功率时,较低的频率更占主导地位。当然,增加数字化仪的动态范围也可以让您检测更小的信号。 表 1:常见超声波应用的特征以及推荐的 Spectrum 数字化仪 数字化仪采样率 产品选型主要与实际应用中频率有关。一般来说,数字化仪的采样率需要是应用频率的 5 到 10 倍 。 除非应用中使用多普勒频移,即使频率可能不是那么高,但随着频移,定时分辨率也需要更高,而频移通常是需要测量的信号周期的一小部分。在多普勒应用中,数字化仪的采样率可能需要远高于所用频率的 10 倍。 带宽 数字化仪带宽应超过应用中使用的最高频率至少两倍。使用较低带宽将导致较高频率信号的衰减,并且可能限制测量分辨率和精度。 动态范围 增加数字化仪的动态范围(位数)可以检测更小的信号。更高分辨率的 ADC 通常可提供更好的信噪比,从而可以在同一采集中检测大信号和小信号。这就是为什么前沿系统经常使用更高分辨率的 ADC 或信号处理(如平均和滤波)来提高其整体测量灵敏度。 其他因素 数字化仪的输入电路必须与超声波传感器的输出阻抗和耦合要求良好匹配。德思特大多数数字化仪都提供输入路径、配置和终端阻抗的选择,以实现最佳匹配。 根据超声波信号的性质,数字化仪的采集模式也可能很重要。数字化仪接受和处理多个采集的能力使得多个信号突发或脉冲超声波的应用成为现实,并且突发事件之间的死区时间最小。分段、门控和流式采集模式都可以在确保准确捕获和分析每个事件方面发挥作用。此外,德思特数字化仪还提供信号处理功能,例如平均、峰值检测、滤波和快速傅立叶变换 (FFT)。其中,平均和峰值检测可作为基于 FPGA 的内部处理功能。其他信号处理功能可在配套的SBench 6 软件平台或第三方软件中使用。 典型的超声波应用 以下超声波测距仪的测量说明了数字化仪中可用的一些功能。该设备发射五个 40 kHz 的声脉冲。本次测试的测量传感器是 100 kHz 带宽仪表麦克风。麦克风需要一个 1 兆欧的直流耦合输入端接。下图显示了 SBench 6 软件对该测量结果的显示。数字化仪使用多种采集模式进行设置。它获取五个超声波脉冲作为单次测量。显示屏顶部的预览窗格显示了这些突发脉冲。每个事件都带有时间戳,屏幕左下角的时间戳表显示事件的绝对时间和相对于其他事件的时间。 所采集的第一个脉冲的缩放显示(包括来自目标的衰减反射)显示在左上方显示的轨迹中。请注意,后缘并不平坦。FFT 视图显示右下象限中采集信号的频谱。除了 40 kHz 主频率之外,还有 80 kHz 的二次谐波和显着的低频杂散分量。所采集信号的基线上升是由于低频杂散拾取造成的。根据此频谱视图,对信号应用截止频率为 20 和 50 kHz 的带通滤波器(右上网格)。滤波导致信号后沿变平。五个获取的突发的平均值显示在左下网格中。每个视图的垂直轴均按麦克风的灵敏度进行缩放,并以声压(帕斯卡)为单位读取。这些视图提供了有关所采集信号的重要量化信息。 此外,信号频率以及最大和最小信号幅度的测量结果显示在标记为“信息”的框中。这是可用测量的一小部分样本。数字化仪及其配套软件提供多种测量和分析工具,以帮助超声波应用的开发。
  • 热度 11
    2023-7-18 20:00
    1822 次阅读|
    0 个评论
    眼镜戴了有几年了,平常也没注意保护,有了不少划痕,很影响视线,而且最近愈发觉得视力下降,就去配了个眼镜。度数增加了25度,也还好,没想象得那么严重。配完眼镜临走时候,工作人员从柜子里拿出一个盒子,说送我个超声波清洗机,这样洗眼镜干净。额,虽然我很怀疑,但是免费的东西,我还是高兴收下了。 我怎么看怎么觉得这就是个9块9包邮的玩意,不信?咱就拆开验验! 打开外包装盒,映入眼帘的是这么个东西,这做工,9块9妥了。 呦呵!还是带充电的,超乎预料 看着底下这四个吸盘,是不是能联想到童年的某些故事? 开个盖,哎呀,这是连隐形眼镜都能洗,还贴心的送了小盒子,估计是担心洗没了。一根充电线,一张说明书。 刚才看到有个充电口,但是底部还有个电池盒,9块9的东西能搞这么复杂?干电池和充电电池两用?或者充电的电池就在这个电池盒里?拆开一看,果然,神马都么有! 没啥好隐藏的了,拆吧拆开四颗固定螺丝,里面长这样 拆出来近距离看下 PCB板看下,按键开关是唯一的一个器件 电路虽然简单,但是咱还是画个图看下,看图更加直观,容易理解。电路功能分两部分,一部分是充电电路,外部接USB充电器,给电池充电,充电回路如下: 另外一部分,是工作回路,外部按键按下,电池给电机供电,然后,产生振动?额,不对,有点跑题了,是产生超声波,神奇不?工作回路如下 如果觉得文章不错,记得点赞和分享呀,您的认可是我继续创作的动力。
  • 热度 4
    2022-8-15 09:05
    1817 次阅读|
    0 个评论
    本项目通过HC-SR04超声波传感器和STM32F411开发板,以精确到cm的精度测量目标物体的距离。项目BOM表如下: STM32F411RE开发板 x1 HC-SR04超声波传感器 x1 跳线 若干 其中,HC-SR04超声波传感器可以0.3cm精度读取2-400cm范围距离,而且超声波发射器和接收器组合在一起,适合大多数个人爱好项目。主要性能包括: 工作电源:5VDC 工作电流:15mA 工作频率:40KHz 最大距离:4m 最小距离:2cm 测量角度:15度 分辨率:0.3cm 触发输入信号:10uS TTL脉冲 回升输出信号:TTL脉冲,与测量成距离成正比 ​ 当传感器接收到一个触发信号,就发出一个40KHz突发信号。该信号通过空气传播,在撞到目标物体后返回传感器,再由传感器根据一定算法得出被测物体的距离。 HC-SR04传感器与STM32的连接电路比较简单,传感器Vcc与STM32板的5V连接,两个板子的GND引脚连接,传感器的Trig 引脚与开发板的A0 (PA0) 连接,echo引脚与开发板的A1 (PA1)引脚连接。 ​ 按照上述电路图连接妥当后,将以下代码上传到Arduino IDE。 #include "stm32f4xx.h" // Device header //macros for trigger pin BSRR=GPIO_BSRR_BS_0 // turn on PA0 (trig pin) BSRR=GPIO_BSRR_BR_0 // turn off PA0 (trig pin) ​ uint32_t duration; float distance; //prototypes of the used function void delaymS(uint32_t ms); void delayuS(uint32_t us); uint32_t read_echo(uint32_t timeout); ​ int main(void) ​ { AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //enable GPIOA Clock MODER |= (1<<0); //set PA0 to Output //configure Timer1 to generate micorseconds delay APB2ENR |= RCC_APB2ENR_TIM1EN; /*Enable TIM3 clock*/ PSC = 16 -1; /* 16 000 000 /16 = 1000 000*/ ARR = 1; /* 1000 000 /1 = 1000000*/ CNT =0; CR1 =1; while(1) { Trig_low; //turn off trig delayuS(10); //wait 4uS Trig_high; //turn on trig delayuS(10); Trig_low; duration=read_echo(400000); //measure the time of echo pin distance=duration/58; //distance=duration/2*SOUND_SPEED delaymS(1000); //delay for 1 second between each read } ​ } ​ void delaymS(uint32_t ms) //delay for certain amount in milliseconds { LOAD=16000-1; VAL=0; CTRL=0x5; for (int i=0;i
  • 热度 4
    2022-1-21 10:24
    5862 次阅读|
    1 个评论
    可追频和防干烧的新型加湿器方案(电路原理图 +BOM表)
    冬天天气干燥,加湿器成为居家必备的小电器。这些加湿器一般采用陶瓷高频雾化片,将水雾化成1-5μm的超微粒子,达到雾状感觉。其中,陶瓷雾化片的频率常用有3MHz、2.4MHz、1.7MHz或者110kHz,本方案采用1.7MHz。 方案特点 该系统以HS23P3411为控制核心MCU,通过内置16MHz主频PWM分频输出接近雾化片谐振频率(1.7MHz)的方波,占空比40%,经过三极管推挽电路驱动MOS管,使雾化片工作在谐振频率附近,通过AD采样雾化片两端的电压来判断是否工作在谐振频率。 传统的加湿器每个振荡片都是通过人工调节,使电路的频率达到每个振荡片的谐振频率附近。这样的做法不仅费时费力,生产效率不高而且随着使用时间的推移,振荡片的谐报频率还会发生偏移,如果不手动进行调节,那么加湿器的雾化效果就会变得很差。 基于HS23P3411 MCU开发的加湿器,可以自动追频到谐振点。雾化片两端的电压和它的振荡频率的关系呈正太分布。通过电压与频率的变化关系,利用软件算法可实现最佳频率点追踪,让雾化片始终工作在最佳频率点。 加湿器电路原理图 基于HS23P3411单片机开发的加湿器,利用雾化片有水时和无水时的电压特性变化来检测是否有水。正常工作时,雾化片的震荡电压稳定在一个正常的范围内,且变化不大。水量减少到一定程度或无水时,振荡片两端电压会突然增大或上升,通过这样一个变化规律来确定加湿器是否有水。 样机几 BOM表 为了省电,本方案电流可根据客户要求调整,需要注意的是,出雾量也会随着电流的减小而减小。 本方案BOM核心元器件为HS23P3411 8主控芯片、AP15N10D MOS管、1.7MHz雾化片。 HS23P3411 为8位MCU芯片,内置可校准16MHz振荡器(最大可配置为24MHz频率,且频率可通过寄存器软件调节),这个主频可变特性可以很好应用在加湿器应用。HS23P3411采用低耗高速CMOS工艺制造,内部包含一个12位的ADC,一个2K*16-bit的EPROM。HS23P3411,2K的ROM空间可以写一些可靠的算法以及一些拓展功能。12位高精度快速AD可以快速准确的采样电压、电流信号。 AP15N10D是栅极电压为4.5V的MOS管,VDS为100V,VGS为±20V,主要用于电源管理、负载切换和PWM应用。 1.7MHz雾化片的精度为士50KHz误差,也就是1.65MHz-1.75MHz之间,所以每个雾化片的谐振频率是不一样的。为了达到最好的雾化效果,需要PWM波驱动的频率在雾化片的谐振频率附近,不能相差太多。
  • 热度 3
    2022-1-12 10:01
    2415 次阅读|
    0 个评论
    DIY一个可量产的智能垃圾桶
    智能垃圾桶 是智慧城市的刚需,是传统垃转存设备的替代者。项目采用基于 MCU 的 Arduino Uno 开发板,通过伺服马达和超声波传感器实现对传统垃圾箱的智能化升级改造,可用作城市环保设备开发的原型,供开发工程师和DIY爱好者参考。 1. 项目介绍 项目中的超声波传感器安置于垃圾桶的顶部,感测来迹象的状态,其阈值设置成一个特别电平。 Arduino 编程逻辑如下:当有人靠近垃圾箱前方并伸手丢垃圾时,伺服马达开始动作,并打开垃圾桶的盖子,让人把废物丢进垃圾桶里。 由于住户不用动手开盖,并在离开时自动关闭,避免了传统垃圾桶盖子长期打开散发气味、危害环境的弊端,还能培养住户和小孩养成良好卫生习惯,保持环境干净、整洁。 通常,垃圾箱分为干、湿、可回收、有毒害四类。本项目通过检测人手的存在决定箱盖的打开、闭合,还能够识别丢进来的垃圾的种类,并区分为可生物降解,获非降解两类 。 2. 物料介绍 项目物料清单: 12v 电源适配器 Arduino Uno 开发板 Arduino Nano HC-SR04 超声波传感器 微型伺服马达 面包板 工具及软件:示波器、可变电源、数字万用表、烙铁、 PCB 打孔机 ( 1 ) 超声波传感器 超声波传感器工作时会发出一个超出人类听觉范围的超声波,其换能器相当于话筒,可接收超声波信号并转换成电信号。超声波是振动频率高于 20kHz 的机械波,具有频率高、波长短、绕射现象小、方向性好等特点。 本项目与其他一样,也使用单换能器来发送脉冲合接收回声。如图 2 所示,传感器向某一方向发射超声波时开始计时,超声波碰到障碍物时返回,根据时间差和超声波速度可以估算出发射位置到障碍物的距离。 项目使用的 HC-SRO4 传感器模块的四个引脚分别为: Vcc(5V 电源 ) 、触发引脚、回声引脚、接地 (0V) 。工作时,采用 IO 触发测距 10us 的高电平信号,模块自动发送 8 个 40khz 的方波,自动检测是否有回声。如果有回声,通过 IO 输出一高电平,高电平持续的时间就是超声波从发射到返回的时间。 HC-SRO4 性能参数如下: 工作使用电压: DC5V 静态电流:小于 2mA 电平输出:高 5V 电平输出:底 0V 感应角度:不大于 15 度 探测距离: 2-450cm 高精度:可达 0.3cm ( 2 ) 伺服马达 伺服马达是可以让物体精确转动的电气元件,可以控制速度,位置精度非常准确。伺服电机转子转速受输入信号控制,并能快速反应,在自动控制系统中,用作执行元件,且具有机电时间常数小、线性度高等特性,可把所收到的电信号转换成电动机轴上的角位移或角速度输出。 伺服马达分为直流和交流两大类,当信号电压为零时无自转现象,转速随着转矩的增加而匀速下降。 Micro Servo 9G 伺服马达参数如下: 重量 : 9g 尺寸 : 22.2 x 11.8 x 31mm approx. 失速转矩 : 1.8kgf · cm 运行速度 : 0.1s/60 度 工作电压 : 4.8V(~5V) 死区宽度 : 10 μ s 工作温度 : 0 – 55 º C 模拟力矩 : 4.8V@1.80kg-cm) 旋转范围 : 180 ° 脉冲周期 : ca. 20ms 脉冲宽度 : 500-2400µs ( 3 ) Arduino UNO Arduino 是一个构架电子项目的开源平台,包括一个物理可编程电路板和一套开发环境软件( IDE ), IDE 可在 PC 运行,用来向 Arduino 板子写入代码或上传代码。 Arduino 的 Uno 版本更加普及,适合艺术家、设计师、发烧友和各种爱好 DIY 的人群,可用来控制按钮、 LEDs 、马达、喇叭、 GPS 单元、照相机,甚至于手机和电视机。 Arduino 有很多种类,但大多数板子上面的元器件是一样的。以下按标号逐一解释: 标号 1 : USB 座。可通过 USB 电缆连接电脑或者电源,为 Arduino UNO 供电。从 PC 向 Arduino 开发板上传代码,也是通过这个 USB 电缆进行的。 标号 3 : GND 引脚。 Arduino 有多个接地引脚,功能是一样的。 标号 4 : 5V 电源。提供 5V 电压。 标号 5 : 3.3V 电源。提供 3.3V 电压。 标号 6 :模拟输入引脚 (A0--A5 ),用来读取来自模拟传感器(如温度传感器)的信号,并转换成我们能够识别的数字。 标号 7 :数字输入引脚 (0--13 ),用以数字输入(如按钮被按下)信号,或者输出数字信号(如驱动一个 LED )。 标号 8 : PWM 引脚 (3, 5, 6, 9, 10, 11) 。本质上属于数字引脚,也可用作 PWM 。可用来模拟某些输出,如 LED 的亮度变化。 标号 9 : AREF 引脚,表示模拟参考,大多数情况下不用,有时用来设置一个作为上限的外部模拟电压。 标号 10 :复位按钮。按个案件非常有用,按下就立即接地,并重启任何上传到 Arduino 的代码。 标号 11 :电源 LED 指示器。只要将 Arduino 接上电源,这个 LED 就一直点亮。如果不亮,马上检查电路,看看哪里出错了? 标号 12 : TX RX LEDs 指示灯,点亮表示正在接收或发射数据。 标号 13 :主控 IC 芯片,来自爱特梅尔的 ATmega 。 标号 14 :稳压芯片。 3. 项目目标 该项目的目的是建立一个原型,在有人准备扔垃圾的时候自动打开垃圾箱盖子,并检测刚扔进来垃圾的种类,具体参考原理图。 Arduino 连接方法如下: HC-SRO4 传感器模块引脚 VCC 连接到 Arduino 引脚 +5VDC ,引脚 Trig 连接到 Arduino 引脚 7 ,引脚 Echo 连接到 Arduino 引脚 6 ,引脚 GND 连接到 Arduino 引脚 GND 。 伺服马达 SG-90 的 Red 引脚连接 Arduino 3.3v , Black 引脚连接 Arduino GND , Orange 引脚连接 Arduino Pin 8 。 4. 代码编程 按照上述说明把 Arduino 与超声波传感器、伺服马达连接好后,就开始上传代码。 该智能垃圾箱的伺服数据库为: // Download Servo Library //https://www.electroniclinic.com/arduino-libraries-download-and-projects-they-are-used-in-project-codes/ #include // Defines Tirg and Echo pins of the Ultrasonic Sensor const int trigPin = 6; const int echoPin = 7; // Variables for the duration and the distance long duration; int distance; Servo myServo; // Creates a servo object for controlling the servo motor void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input Serial.begin(9600); myServo.attach(9); // Defines on which pin is the servo motor attached } void loop() { // rotates the servo motor from 15 to 165 degrees for (int i = 15; i <= 165; i++) { myServo.write(i); delay(30); distance = calculateDistance();// Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree Serial.print(i); // Sends the current degree into the Serial Port Serial.print(","); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing Serial.print(distance); // Sends the distance value into the Serial Port Serial.print("."); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing } // Repeats the previous lines from 165 to 15 degrees 15; i--) { myServo.write(i); delay(30); distance = calculateDistance(); Serial.print(i); Serial.print(","); Serial.print(distance); Serial.print("."); } } // Function for calculating the distance measured by the Ultrasonic sensor int calculateDistance() { digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds distance = duration * 0.034 / 2; return distance; } 开始 编程 前,我们先添加 Servo.h 头文件, #include 接下来,定义触发和回声引脚。 HC-SR04 超声波传感器的触发和回声引脚分别连接于 Arduino 的 pins 6 、 7 。 const int trigPin = 6; const int echoPin = 7; // Variables for the duration and the distance long duration; int distance; Servo myServo; // Creates a servo object for controlling the servo motor setup() function runs only one time with the Arduino board is turned ON. void setup() { pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output pinMode(echoPin, INPUT); // Sets the echoPin as an Input Serial.begin(9600); myServo.attach(9); // Defines on which pin is the servo motor attached void loop() { // rotates the servo motor from 15 to 165 degrees for (int i = 15; i <= 165; i++) { myServo.write(i); delay(30); distance = calculateDistance();// Calls a function for calculating the distance measured by the Ultrasonic sensor for each degree Serial.print(i); // Sends the current degree into the Serial Port Serial.print( “ , ” ); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing Serial.print(distance); // Sends the distance value into the Serial Port Serial.print( “ . ” ); // Sends addition character right next to the previous value needed later in the Processing IDE for indexing } // Repeats the previous lines from 165 to 15 degrees 15; i – ) { myServo.write(i); delay(30); distance = calculateDistance(); Serial.print(i); Serial.print( “ , ” ); Serial.print(distance); Serial.print( “ . ” ); } } // Function for calculating the distance measured by the Ultrasonic sensor int calculateDistance() { digitalWrite(trigPin, LOW); delayMicroseconds(2); // Sets the trigPin on HIGH state for 10 micro seconds digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); // Reads the echoPin, returns the sound wave travel time in microseconds distance = duration * 0.034 / 2; return distance; }
相关资源