tag 标签: Arduino动手做

相关博文
  • 2020-2-19 10:49
    337 次阅读|
    0 个评论
    【雕爷学编程】Arduino动手做(62)---1排4键薄膜开关模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真) 实验六十二: 1排4键薄膜开关 Arduino扩展键盘模块(控制面板) 薄膜开关 又称轻触式键盘,采用平面多层组合而成的整体密封结构,是将按键开关、面板、标记、符号显示及衬板密封在一起的集光、机、电一体化的一种新型电子元器件,是电子产品外观结构根本性的变革,它可取代常规分立元件的按键,更可靠地执行操作系统的任务。薄膜开关具有良好的防水、防尘、防油、防有害气体侵蚀、性能稳定可靠、重量轻、体积小、寿命长、装联方便,面板可洗涤而字符不受损伤,色彩丰富,美观大方等优点。使用薄膜开关令您的产品更具时代特色。薄膜开关主要类型薄膜开关面板是一种由刚性或柔性印制电路板为基体,安装上有手感或无手感按键,再覆以印刷有彩色装饰性图案的塑料(聚碳酸酯PC、聚酯PET等)薄膜面板构成的、集开关功能和装饰性功能为一体的电子部件,是一种新型的人机对话界面。其开关电路与整机的连接方式可采用焊接或插接的方式来完成。 柔性薄膜开关 柔性薄膜开关是薄膜开关的典型形式。这类薄膜开关之所以称为柔性,是因为该薄膜开关的面膜层、隔离层、电路层全部由各种不同性质的柔性薄膜所组成。柔性薄膜开关的电路层,均采用电器性能良好的聚酯薄膜(PET)作为开关电路图形的载体,此层也分装手感弹片、上下电路。由于聚酯薄膜所具有性质的影响,使得该薄膜开关具有良好的绝缘性、耐热性、抗折性和较高的回弹性。开关电路的图形,包括开关的联机及其引出线均采用低电阻,低温条件下固化的导电性涂料印刷而成。因此,整个薄膜开关的组成,具有一定的柔软性,不仅适合于平面体上使用,还能与曲面体配合。柔性薄膜开关引出线与开关体的本身是一体的,在制作群体开关的联机时,将其汇集于薄膜的某一处,并按设计指定的位置和标准的线距向外延伸,作为柔软的、可任意弯曲的、密封的引出导线与整机的后置电路相连。 薄膜开关如图所示,它由引出线、上部电极电路、下部电极电路、中间隔离层及面板层等构成。该种开关具有密封性好、重量轻、体积小,采用低电压、低电流且能防水、防尘,寿命长等优点,多用于办公设备、家用电器等电子产品中。薄膜开关的背面有强力压敏胶层,将防粘纸撕掉后,便可贴在仪器的面板上,且开关的引出线为薄膜导电带,并配以专用插座连接。此种结构为使用带来了很大的方便,故得到了广泛的使用。 面板层 面板层一般在低于0.25MM的PET、PC等无色透光片材丝印上精美图案和文字制作而成,因面板层最主要的作用在于起标识和按键作用,所以选用材料必须具有高透明度、高油墨附着力、高弹性、高韧性等特点。 面胶层 面胶最主要的作用是将面板层与电路层紧密相连,以达到密封和连接的效果,此层一般要求厚度在0.05---0.15MM之间,具有高强的粘性和防老化性;在生产中,一般选用专用的薄膜开关双面胶,有些薄膜开关要求能防水防高温,因此面胶也必须根据需要而使用不同性质的材料。 控制电路上层和下层 此层均采用性能良好的聚酯薄膜(PET)作为开关电路图形的载体并在其上用特殊的工艺丝印上导电银浆和导电碳浆,使其具有导电性能,其厚度一般在0.05--0.175MM以内,最常见的是用0.125MM PET。 夹胶层 它是处于上电路与下电路层之间并起密封和连接的作用,一般采用PET双面胶,其厚度有0.05--0.2MM不等; 在选择此层材质的时候应充分考虑产品的整体厚度,绝缘性,电路按键包手感和密封性。 背面胶层 背胶的采用与薄膜开关与何种材质相粘贴紧密相关,比较常采用的有普通双面胶、3M胶、防水胶等。 凸起薄膜 通常,薄膜开关上的按键只是用色彩来表达键体的位置、形状和大小。这样,只能凭操作者的视觉来识别操作的准确性,由于没有适当的反馈信息,因而影响了对机子监控的自信和操作的速度。所以在面板的设计阶段就要作好安排,备有工艺孔,以便在模具压制时有精确的定位, 其立体凸起的高度一般不宜超过基材厚度的两倍。为美观产品的外观,凸起薄膜开关的凸起可有多种变化制作。 1排4键薄膜开关 Arduino扩展键盘模块(控制面板) 实验开源代码 /* 【Arduino】168种传感器模块系列实验(62) 实验六十二:1排4键薄膜开关 Arduino扩展键盘模块(控制面板) */ #include const byte ROWS = 1; //矩阵键盘行数 const byte COLS = 4; //矩阵键盘列数 //按键定义 char hexaKeys = { {'1','2','3','4'}, }; byte rowPins = {6}; //行的针脚连接的接口 byte colPins = {5,4,3,2}; //列的针脚连接的接口 Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); void setup(){ Serial.begin(9600); } void loop(){ char customKey = customKeypad.getKey(); if (customKey){ Serial.println(customKey); } } 实验串口输出 实验仿真编程(linkboy3.6)
  • 2020-1-29 11:11
    169 次阅读|
    0 个评论
    【雕爷学编程】Arduino动手做(61)---电压检测传感器
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真) 实验六十一:电压检测模块 Voltage Sensor 电压传感器 电压检测传感器模块资料 由于目前电子产品各式各样,供电电源的电压也各不相同,要想检测就需要一款合适的电压检测模块和控制器。控制器模拟接口检测输入电压上限为5V,也就是说大于5V的电压将无法检测。 2011 年新推出的这款电压检测模块能够解决此问题,实现检测大于5V的电压,此模块基于电阻分压原理所设计,能使红色端子接口输入的电压缩小5倍,模拟输入电压上限为5V,那么电压检测模块的输入电压则不能大于5V×5=25V(如果用到3.3V系统,输入电压不能大于3.3Vx5=16.5V)。因为Arduino所用AVR 芯片为10位AD,所以此模块的模拟分辨率为0.00489V(5V/1023),故电压检测模块检测输入下限电压为 0.00489V×5=0.02445V。 通过3P传感器连接线插接到传感器扩展板,不仅可以轻松实现对电压电量大小的检测,监控互动媒体作品或机器人电池供电的电量,也可以通过IICLCD1602液晶模块显示电压制作电压监测器。 为配合实验,找了一块DC-DC升压模块 升压模块 1、体积小可调升压模块,可轻松安装于各种小型设备里面。 2、可采用MicroUSB输入,用USB充电器或者移动电源通过手机数据线即3、可轻松得到9V,12V,15V,18V,24V的常用电压,使用非常方便。 4、宽的输入和输出电压,高的转换效率。 升压模块特性 1)大输出电流:2A(建议在1A内使用) 2)输入电压:2 v--24 v 28 v(建议在26V内使用) 93%(效率与输入和输出的压差有关) 5)尺寸:30mm* 17mm* 14mm(长*宽*高) 注意事项 1)此模块是升压模块,输出电压要大于输入电压 2)峰值电流输出电流不过2A 电压检测传感器模块 此模块基于电阻分压原理所设计,能使端子接口输入的电压缩小5倍,Arduino模拟输入电压最大为5V,那么电压检测模块的输入电压则不能大于5V×5=25V(如果用到3.3V系统,输入电压不能大于3.3Vx5=16.5V)。因为Arduino所用AVR芯片为10位AD,所以此模块的模拟分辨率为0.00489V(5V/1023),故电压检测模块检测输入最小电压为0.00489V×5=0.02445V。 电压传感器模块参数 电压输入范围:DC0-25V 电压工作范围:DC0-25V 电压检测范围:DC0.02445V-25V 数据类型:模拟输入 电压模拟分辨率:0.00489V DC输入接口:红色端子正极接VCC,负极接GND 尺寸:30mm x 25mm 接口类型:KF2510-3P 输出接口: "-"接GND, "+"接5/3.3V, "S"接Arduino的AD引脚(A0) 实验接线示意图 实验开源代码 /* 【Arduino】66种传感器模块系列实验(61) 实验六十一:电压检测模块 Voltage Sensor 电压传感器 试试看波形如何 */ void setup() { Serial.begin(9600); } void loop() { int val; float temp; val=analogRead(0); temp=val/40.92; val=(int)temp; Serial.println(val); delay(1000); } 串口输出的实验电压变动波形图 /* 【Arduino】66种传感器模块系列实验(61) 实验六十一:电压检测模块 Voltage Sensor 电压传感器 程序之二 */ int analogpin=0; int val,val5; int val2=0; int val3=0; int val4=0; void setup() { Serial.begin(9600); } void loop() { int val,val5; float val1; val=analogRead(analogpin); val1=val/3.9; val5=(int)val1; val3=val5/100; val2=(val5%100)/10; val4=val5%10; Serial.print("$CLEAR\r\n"); Serial.print("$GO 1 1\r\n"); Serial.print("$PRINT Voltage:\r\n"); Serial.print("$GO 1 9\r\n"); Serial.print("$PRINT "); Serial.print(val3); Serial.print(val2); Serial.print("."); Serial.print(val4); Serial.println("V"); delay(1000); } 串口输出的实验电压实时变动数值 实验开源图形编程(Mind+) 设定12V为监控电压阙值,当电压小于12V时自动报警(板载LED亮),十分精准
  • 热度 3
    2020-1-21 11:44
    2859 次阅读|
    3 个评论
    【雕爷学编程】Arduino动手做(60)---WS2812直条8位模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真) 实验六十: 直条8位 WS2812B 5050 RGB LED内置全彩驱动彩灯模块 WS2812B芯片 是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路,还包含有高精度的内部振荡器和12V高压可编程定电流控制部分,有效保证了像素点光的颜色高度一致。数据协议采用单线归零码的通讯方式,像素点在上电复位以后,DIN端接受从控制器传输过来的数据,首先送过来的24bit数据被第一个像素点提取后,送到像素点内部的数据锁存器,剩余的数据经过内部整形处理电路整形放大后通过DO端口开始转发输出给下一个级联的像素点,每经过一个像素点的传输,信号减少24bit。像素点采用自动整形转发技术,使得该像素点的级联个数不受信号传送的限制,仅仅受限信号传输速度要求。 WS2812主要特点 1、智能反接保护,电源反接不会损坏IC。 2、IC控制电路与LED点光源公用一个电源。 3、控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。 4、内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。 5、内置上电复位和掉电复位电路。 6、每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于400Hz/s。 7、串行级联接口,能通过一根信号线完成数据的接收与解码。 8、任意两点传传输距离在不超过5米时无需增加任何电路。 9、当刷新速率30帧/秒时,级联数不小于1024点。 10、数据发送速度可达800Kbps。 11、光的颜色高度一致,性价比高。 WS2812应用领域 具有低电压驱动,环保节能,亮度高,散射角度大,一致性好,超低功率,超长寿命等优点。将控制电路集成于LED上面,电路变得更加简单,体积小,安装更加简便。主要应用领域,LED全彩发光字灯串,LED全彩模组, LED全彩软灯条硬灯条,LED护栏管。LED点光源,LED像素屏,LED异形屏,各种电子产品,电器设备跑马灯等。 直条8位 WS2812B 5050 RGB LED内置全彩驱动彩灯模块 型号:LED L1 V2 尺寸:62*12mm 芯片:WS2812(内置于LED) LED:5050封装RGB全彩高亮*8 电压:5V 端口:数字 平台: 单片机 模块主要特点 1、5050高亮LED,内置控制芯片,仅需1个IO口即可控制多个LED模块 2、芯片内置整形电路,信号畸变不会累计,稳定显示 3、三基色256级亮度调剂,16万色真彩显示效果,扫描频率不低于400Hz/S 4、串行级联接口,能通过一根信号线完成数据的接收与解码 5、刷新速率30帧/秒时,低速连级模式连级数不小于512点 6、数据收发速度最高可达800Kbps 7、高亮LED,光色亮度一致性高 8、两端有连级接口,可以直接插接 模块电原理图 实验开源代码 /* 【Arduino】168种传感器模块系列实验(60) 实验六十: 直条8位 WS2812B 5050 RGB LED内置全彩驱动彩灯模块 实验一,点亮ws2812直条LED */ #include #define PIN 6 #define MAX_LED 8 #define ADD true #define SUB false int val = 0; boolean stat = ADD; Adafruit_NeoPixel strip = Adafruit_NeoPixel( MAX_LED, PIN, NEO_RGB + NEO_KHZ800 ); void setup() { strip.begin(); strip.show(); } void loop() { uint8_t i,a=0; uint32_t color = strip.Color(0, 100, 255); while(a<10) { for(i=0;i<9;i++) { if(i==a) strip.setPixelColor(i, color); else strip.setPixelColor(i, 0); } strip.show(); delay(20); a++; } } /* 【Arduino】168种传感器模块系列实验(60) 实验六十: 直条8位 WS2812B 5050 RGB LED内置全彩驱动彩灯模块 实验程序之二,依次点亮不同色彩灯 */ #include #define LED_PIN 6 #define NUM_LEDS 8 CRGB leds ; void setup() { FastLED.addLeds (leds, NUM_LEDS); } void loop() { leds = CRGB(255, 0, 0); FastLED.show(); delay(500); leds = CRGB(0, 255, 0); FastLED.show(); delay(500); leds = CRGB(0, 0, 255); FastLED.show(); delay(500); leds = CRGB(150, 0, 255); FastLED.show(); delay(500); leds = CRGB(255, 200, 20); FastLED.show(); delay(500); leds = CRGB(85, 60, 180); FastLED.show(); delay(500); leds = CRGB(50, 255, 20); FastLED.show(); delay(500); leds = CRGB(150, 50, 60); FastLED.show(); delay(500); } /* 【Arduino】66种传感器模块系列实验(61) 实验六十一: 直条8位 WS2812B 5050 RGB LED内置全彩驱动彩灯模块 实验程序之三,简单渐变彩虹色 */ #include #ifdef __AVR__ #include #endif #define PIN 6 #define NUMPIXELS 8 float RDE1=0; float GRE1=0; float BLE1=0; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 500; void setup() { #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif pixels.begin(); } void loop() { GRE1=0; for(int o=0;o<255;o++){ RDE1=255; GRE1=GRE1+1; BLE1=0; for(int l=0;l
  • 热度 1
    2020-1-20 12:11
    1573 次阅读|
    1 个评论
    【雕爷学编程】Arduino动手做(59)---RS232转TTL串口模块
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真) 实验五十九: RS232转TTL2代串口模块刷机板模块(MAX3232芯片) MAX3232芯片 采用专有低压差发送器输出级,利用双电荷泵在3.0V至5.5V电源供电时能够实现真正的RS-232性能,器件仅需四个0.1uF的外部小尺寸电荷泵电容。max3232确保在120kbps数据速率,同时保持RS-232输出电平。max3232具有二路接收器和二路驱动器,提供1uA关断模式,有效降低功效并延迟便携式产品的电池使用寿命。关断模式下,接收器保持有效状态,对外部设备进行监测,仅消耗1uA电源电流,max3232的引脚、封装和功能分别与工业标准MAX242和MAX232兼容。即使工作在高数据速率下,max3232仍然能保持RS-232标准要求的正负5.0V最小发送器输出电压。 MAX3232是MAXIM公司生产的一款 232通讯的芯片,他可以将单片机的逻辑信号的电平转成RS232的电平。因为RS232是用,正负电平来表示0和1的信号,所以MAX3232要产生相应的正负电压。在使用MAX3232时,先确定一下系统接供的电压,因为此芯片,对不同的工作电压,要给不同的电容来产生电压。通电后,先检测一下2脚是否有+5.4V以上的电压,6脚有-5.4V以上的电压,16脚是否有电压, 如没有则要检查相应的电容。注意在16脚一定要有电容,要不然就可能不能产生相应的电压。 RS232转TTL2代串口模块刷机板模块(MAX3232芯片) DB9串口 DB9管脚功能 1 、DCD( Data Carrier Detect) :载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。 2 、RXD(Receive(rx) Data):此引脚用于接收外部设备送来的数据;在你使用Modem时,你会发现RXD指示灯在闪烁,说明RXD引脚上有数据进入(电脑的2接MAX232的RS232端TOUT(如PIN7))。 3 、TXD(Transmit(tx)Data):此引脚将计算机的数据发送给外部设备;在你使用Modem时,你会发现TXD指示灯在闪烁,说明计算机正在通过TXD引脚发送数据。 4 、DTR( Data Terminal Ready ):数据终端就绪;当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好。 5 、GND(Ground):逻辑地。 6 、DSR(data set ready):数据设置就绪;此引脚高电平时,通知计算机Modem已经准备好,可以进行数据通讯了。 7 、RTS(Request To Send):请求发送;此脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。 8 、CTS(Clear to send): 清除发送;此脚由Modem控制,用以通知计算机将欲传的数据送至Modem。 9 、RI ( Ring Indicator): Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定。 要想实现串口间通信,至少需要三个引脚,即:RXD,TXD,GND,RXD与其他串口线TXD相连,TXD与RXD相连,GND与GND相连,这样就实现了串口间通信。该通信是全双工的,即可以同时发送/接收数据,虽然说是串行的,但是因为发送/接收不是用的一个通道,所以可以实现全双工。 DB9与MAX3232的连接电路图 模块电原理图 实验开源代码 /* 【Arduino】168种传感器模块系列实验(59) 实验五十九: RS232转TTL2代串口模块刷机板模块(MAX3232芯片) 程序之一,读取缓存中的串口数据 注意这里的接线方法,软串口RX接RS232转接板的RX口, TX接RS232转接板的TX口 */ #include SoftwareSerial DLSerial(6, 7); // 软串口 RX(D6), TX(D7) void setup() { DLSerial.begin(9600); //设备波特率9600 } void loop() { DLSerial.write(1); //发送字节数据 DLSerial.write(3); delay(500); 0) //如果缓存中有接收到的数据 { DLSerial.read(); //读取缓存中的串口数据 delay(2); } delay(500); } /* 【Arduino】168种传感器模块系列实验(59) 实验五十九: RS232转TTL2代串口模块刷机板(MAX3232芯片) 程序之二,接收串口数据 rx = 6 tx = 7 */ #include #define bit9600Delay 100 #define halfBit9600Delay 50 #define bit4800Delay 188 #define halfBit4800Delay 94 byte rx = 6; byte tx = 7; byte SWval; void setup() { pinMode(rx,INPUT); pinMode(tx,OUTPUT); digitalWrite(tx,HIGH); delay(2); digitalWrite(13,HIGH); SWprint('o'); SWprint('k'); SWprint(10); } void SWprint(int data) { byte mask; digitalWrite(tx,LOW); delayMicroseconds(bit9600Delay); 0; mask <<= 1) { if (data & mask){ digitalWrite(tx,HIGH); } else{ digitalWrite(tx,LOW); } delayMicroseconds(bit9600Delay); } digitalWrite(tx, HIGH); delayMicroseconds(bit9600Delay); } int SWread() { byte val = 0; while (digitalRead(rx)); if (digitalRead(rx) == LOW) { delayMicroseconds(halfBit9600Delay); for (int offset = 0; offset < 8; offset++) { delayMicroseconds(bit9600Delay); val |= digitalRead(rx) << offset; } delayMicroseconds(bit9600Delay); delayMicroseconds(bit9600Delay); return val; } } void loop() { SWval = SWread(); SWprint(toupper(SWval)); } 实验仿真编程(linkboy)
  • 热度 1
    2020-1-16 11:01
    1152 次阅读|
    2 个评论
    【雕爷学编程】Arduino动手做(58)---SR04超声波传感器
    37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来---小小的进步或是搞不定的问题,希望能够抛砖引玉。 【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真) 实验五十八: HC-SR04超声波测距传感器模块(5针宽电压) 超声波探头 是在超声波检测过程中发射和接收超声波的装置。探头的性能直接影响超声波的特性,影响超声波的检测性能。在超声检测中使用的探头,是利用材料的压电效应实现电能、声能转换的换能器。探头中的关键部件是晶片,晶片是一个具有压电效应的单晶或者多晶体薄片,它的作用是将电能和声能互相转换。 菲律宾眼镜猴会用超声波进行交流 菲律宾眼镜猴因为一双又圆又大且水汪汪的茶色大眼睛而被人们所知,在人们的印象中它有着让人难以置信的小型身材,在它们小小的脸庞上,长着两只圆溜溜的特别大的眼睛,眼珠的直径可以超过1厘米,和它的小身体很不相称,好像戴着一副特大的旧式老花眼镜。所以,人们给它起了一个十分形象的名字:眼镜猴。它们大多时候都是“沉默寡言”的形象。但来自加利福尼亚洪堡加州州立大学的科学家近日研究发现,其实菲律宾眼镜猴是不折不扣的“话匣子”,它们时刻都在发出一种超声波,只不过捕食者无法听到而已。据了解,研究人员发现这种眼镜猴发出声音的“最小频率”可达到67千赫,比陆地上任何一种啮齿动物和蝙蝠发出的音量都要高很多,甚至偶尔还能飙升到70千赫。众所周知,任何声音只要达到20千赫以上,就很难被人们所听见,就连听力一向很敏锐的狗,也只能听到23千赫的声音。而眼镜猴甚至可以直接听到90千赫的声音。最为特别的是,在眼镜猴的群体中彼此传递着一种秘密的语言,这种语言会提醒对方注意捕食者的危险。研究人员表示,超声波的音频对信号发出者和接受者都十分有用,因为这样捕食者就很难从声音的来源进行定位,这样寻找起来就十分有难度了。甚至眼镜猴还可以在猎物旁“窃窃私语”,它们所捕捉的典型猎物为蟋蟀、螳螂、以及蛾子等昆虫,最为特别的是,眼镜猴还能自动屏蔽使它们分散注意力的低周波丛林噪音。研究人员表示,在动物王国不仅眼镜猴有这样的超能力,鲸鱼和猫也同样能够在超声波范围内彼此沟通交流。 超声波 蝙蝠和某些海洋动物都能够利用高频率的声音进行回声定位或信息交流。它们能通过口腔或鼻腔把从喉部产生的超声波发射出去,利用折回的声波来定向,并判定附近物体的位置、大小以及是否在移动。超声波是一种频率高于20000赫兹的声波,它的方向性好,穿透能力强,易于获得较集中的声能,在水中传播距离远,可用于测距、测速、清洗、焊接、碎石、杀菌消毒等。在医学、军事、工业、农业上有很多的应用。超声波因其频率下限大于人的听觉上限而得名。科学家们将每秒钟振动的次数称为声音的频率,它的单位是赫兹(Hz)。我们人类耳朵能听到的声波频率为20Hz-20000Hz。因此,我们把频率高于20000赫兹的声波称为“超声波”。通常用于医学诊断的超声波频率为1兆赫兹-30兆赫兹。理论研究表明,在振幅相同的条件下,一个物体振动的能量与振动频率成正比,超声波在介质中传播时,介质质点振动的频率很高,因而能量很大.在中国北方干燥的冬季,如果把超声波通入水罐中,剧烈的振动会使罐中的水破碎成许多小雾滴,再用小风扇把雾滴吹入室内,就可以增加室内空气湿度,这就是超声波加湿器的原理。如咽喉炎、气管炎等疾病,很难利用血流使药物到达患病的部位,利用加湿器的原理,把药液雾化,让病人吸入,能够提高疗效。利用超声波巨大的能量还可以使人体内的结石做剧烈的受迫振动而破碎,从而减缓病痛,达到治愈的目的。超声波在医学方面应用非常广泛,可以对物品进行杀菌消毒。 超声效应 当超声波在介质中传播时,由于超声波与介质的相互作用,使介质发生物理的和化学的变化,从而产生一系列力学的、热学的、电磁学的和化学的超声效应,包括以下4种效应: ①机械效应。超声波的机械作用可促成液体的乳化、凝胶的液化和固体的分散。当超声波流体介质中形成驻波时,悬浮在流体中的微小颗粒因受机械力的作用而凝聚在波节处,在空间形成周期性的堆积。超声波在压电材料和磁致伸缩材料中传播时,由于超声波的机械作用而引起的感生电极化和感生磁化(见电介质物理学和磁致伸缩)。 ②空化作用。超声波作用于液体时可产生大量小气泡。一个原因是液体内局部出现拉应力而形成负压,压强的降低使原来溶于液体的气体过饱和,而从液体逸出,成为小气泡。另一原因是强大的拉应力把液体“撕开”成一空洞,称为空化。空洞内为液体蒸气或溶于液体的另一种气体,甚至可能是真空。因空化作用形成的小气泡会随周围介质的振动而不断运动、长大或突然破灭。破灭时周围液体突然冲入气泡而产生高温、高压,同时产生激波。与空化作用相伴随的内摩擦可形成电荷,并在气泡内因放电而产生发光现象。在液体中进行超声处理的技术大多与空化作用有关。 ③热效应。由于超声波频率高,能量大,被介质吸收时能产生显著的热效应。 ④化学效应。超声波的作用可促使发生或加速某些化学反应。例如纯的蒸馏水经超声处理后产生过氧化氢;溶有氮气的水经超声处理后产生亚硝酸;染料的水溶液经超声处理后会变色或退色。这些现象的发生总与空化作用相伴随。超声波还可加速许多化学物质的水解、分解和聚合过程。超声波对光化学和电化学过程也有明显影响。各种氨基酸和其他有机物质的水溶液经超声处理后,特征吸收光谱带消失而呈均匀的一般吸收,这表明空化作用使分子结构发生了改变。 超声探头 是利用超声波的特性而研制的传感器,超声波传感器的典型结构如图所示。它是把成正方形的两个压电晶片(亦称双晶振子)按照相反的极性粘贴在一起,再引出两个电极。压电晶片上面有金属震动板和圆锥形振子。圆锥形振子具有很强的方向性,便于发送和接收超声波。超声波传感器采用金属或塑料外壳,其顶部有屏蔽栅。 超声探头性能指标 探头的核心是其塑料外套或者金属外套中的一块压电晶片。构成晶片的材料可以有许多种。晶片的大小,如直径和厚度也各不相同,因此每个探头的性能是不同的,我们使用前必须预先了解它的性能。超声波传感器的主要性能指标包括: 1、工作频率 工作频率就是压电晶片的共振频率。当加到它两端的交流电压的频率和晶片的共振频率相等时,输出的能量最大,灵敏度也最高。 2、工作温度 由于压电材料的居里点一般比较高,特别是诊断用超声波探头使用功率较小,所以工作温度比较低,可以长时间地工作而不失效。医疗用的超声探头的温度比较高,需要单独的制冷设备。 3、灵敏度 主要取决于制造晶片本身。机电耦合系数大,灵敏度高;反之,灵敏度低。 4、指向性 超声波传感器探测的范围。 测距原理 超声波具有频率较高,沿直线传播、方向性好、绕射小、穿透力强、传播速度慢(约340m/s,与声速相同)等特点。超声波对固体和液体的穿透能力强,尤其对于在阳光下不透明的固体,可以穿透几十m的深度。超声波遇到杂质或分界面时会产生反射波,利用这一特性可构成超声波探伤仪或测距仪。超声波遇到移动物体时会产生多普勒效应(DopplerEffect),使接收到的频率发生变化,由此可制成多普勒测距系统。超声波测距原理是超声波发射探头发出的超声波脉冲,经媒质(空气)传到物体表面,反射后通过媒质(空气)传到接收探头,测出超声脉冲从发射到接收所需的时间,根据媒质中的声速,求得从探头到物体表面之间的距离。设探头到物体表面的距离为L,超声在空气中的传播速为v,从发射到接收所需的传播时间为t,则有:L=vt/2。由此可见,被测距离L与传播时间之间具有确定的函数关系,只要能测出时间t,即可求出距离L,通过软件实现直接在显示器上显示L的值。 位差测距 超声波传感器与单片机系统进行接口构成距离检测的硬件系统,在系统软件的控制下,单片机向位差超声波传感器发送的一个触发脉冲,位差超声波传感器被此脉冲触发后会产生一道短40 kHz的脉冲电信号,此40 kHz的脉冲电信号通过激励换能器处理以后,将转换成机械振动的能量,其振动频率约在20 kHz以上,由此形成了超声波,该信号经锥形"辐射口"处将超声波信号在空气中以每秒约1 130英尺的速度向外发射出去。当发射出去的超声波信号遇到障碍物以后,立即被反射回来。接收器接收到反射回来的超声波信号后,通过其内部转换,将超声波变成微弱的电振荡,并将信号进行放大,就可得到所需的脉冲信号,此脉冲信号再返回给单片机,表示回波被探测,这个脉冲宽度就是对应于爆裂回声返回到传感器所需时间,其时序如图所示。 HC-SR04超声波测距传感器模块(5针宽电压) 主要技术参数 1:使用电压:DC---5V 2:静态电流:小于2mA 3:电平输出:高5V 4:电平输出:底0V 5:感应角度:不大于15度 6:探测距离:2cm-450cm 7:高精度 可达0.2cm 8:接线方式:VCC、trig(控制端)、echo(接收端)、 GND 模块电原理图 模块特征 HC-SR04超声波测距模块具有测距距离精确,能和SRF05,SRF02等超声波测距相媲美,测量距离 ** 2cm~450cm (小编实测:10cm~300cm)。工作原理——1)采用IO触发测距,给至少10us的高电平信号。2)模块自动发送8个40KHz的方波,自动检测是否有信号返回。3)有信号返回,通过IO输出一高电平,高电平持续时间就是超声波从发射到返回的时间。只需要提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。一旦检测到有回波信号则输出回响信号。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式: uS/58=厘米或者uS/148=英寸;或是:距离=高电平时间*声速(340M/S) /2;建议测量周期为60ms以上,以防止发射信号对回响信号的影响。 注: 1、此模块不宜带电连接,若要带电连接,则先让模块的GND端先连接,否则会影响模块的正常工作。 2、测距时,被测物体的面积不少于05平方米且平面尽量要求平整,否则影响测量的结果。 使用高电平触发 超声波测距模块接脚: 5V GND 2 3 注: TRIP引脚是内部上拉10K的电阻,用单片机的IO口拉低TRIP引脚,然后给一个10us以上的脉冲信号。模块应先插好在电路板上再通电,避免产生高电平的误动作,如果产生了,重新通电方可解决。 /* 【Arduino】168种传感器模块系列实验(58) 实验五十八: HC-SR04超声波测距传感器模块(通用款) Echo接Digital 3口,接收距离信号 Trig接Arduino板的Digital 2口,触发测距 上电后预热稳定大约需要60秒钟 */ float distance; const int echo=3; //echO接D3脚 const int trig=2; //echO接D2脚 void setup() { Serial.begin(9600); //波特率9600 pinMode(echo,INPUT); //设置echo为输入脚 pinMode(trig,OUTPUT); //设置trig为输出脚 Serial.println("HC-SR04-2019.7.14测距开始:"); } void loop() { digitalWrite(trig,LOW); delayMicroseconds(20); digitalWrite(trig,HIGH); delayMicroseconds(20); digitalWrite(trig,LOW); //发一个20US的高脉冲去触发Trig distance = pulseIn(echo,HIGH); //计数接收高电平时间 distance = distance*340/2/10000; //计算距离 1:声速:340M/S 2:实际距离1/2声速距离 3:计数时钟为1US Serial.print("距离: "); Serial.print(distance); Serial.println("cm"); delay(20); //单次测离完成后加20mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。 delay(500); //500mS测量一次 } /* 【Arduino】168种传感器模块系列实验(58) 实验五十八: HC-SR04超声波测距传感器模块(通用款) 程序之二,阙值50厘米控制板载LED Echo接Digital 3口,接收距离信号 Trig接Arduino板的Digital 2口,触发测距 上电后预热稳定大约需要60秒钟 HC-SR04为简单通用款,没有温度补偿,实测200CM段误差约3CM */ intinputPin=3;// 定义超声波信号接收接口 intoutputPin=2;// 定义超声波信号发出接口 intledpin=13; void setup() { Serial.begin(9600); pinMode(ledpin,OUTPUT); pinMode(inputPin, INPUT); pinMode(outputPin, OUTPUT); } void loop() { digitalWrite(outputPin, LOW);// 使发出发出超声波信号接口低电平2μs delayMicroseconds(2); digitalWrite(outputPin, HIGH);// 使发出发出超声波信号接口高电平10μs,这里是至少10μs delayMicroseconds(10); digitalWrite(outputPin, LOW);// 保持发出超声波信号接口低电平 intdistance = pulseIn(inputPin, HIGH);// 读出脉冲时间 distance= distance/58;// 将脉冲时间转化为距离(单位:厘米) Serial.println(distance);//输出距离值 delay(50); =50) {//如果距离大于50厘米小灯亮起 digitalWrite(ledpin,LOW); }//如果距离小于50厘米小灯熄灭 else digitalWrite(ledpin,HIGH); } /* 【Arduino】168种传感器模块系列实验(58) 实验五十八: HC-SR04超声波测距传感器模块(通用款) 程序之三,串口输出等待时间的原始数据 Echo接Digital 3口,接收距离信号 Trig接Arduino板的Digital 2口,触发测距 上电后预热稳定大约需要60秒钟 HC-SR04为简单通用款,没有温度补偿,实测200CM段误差约3CM */ #define Trig 2 #define Echo 3 floatcm;//距离变量 floattemp; void setup() { Serial.begin(9600); pinMode(Trig, OUTPUT); pinMode(Echo, INPUT); } void loop() { //给Trig发送一个低高低的短时间脉冲,触发测距 digitalWrite(Trig, LOW);//给Trig发送一个低电平 delayMicroseconds(2);//等待 2微妙 digitalWrite(Trig,HIGH);//给Trig发送一个高电平 delayMicroseconds(10);//等待 10微妙 digitalWrite(Trig, LOW);//给Trig发送一个低电平 temp =float(pulseIn(Echo, HIGH));//存储回波等待时间, //pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时 //返回脉冲的长度 34 / 1000 //因为发送到接收,实际是相同距离走了2回,所以要除以2 //距离(厘米) = (回波时间 * (34 / 1000)) / 2 //简化后的计算公式为 (回波时间 * 17)/ 1000 cm = (temp *17)/1000;//把回波时间换算成cm Serial.print("Echo ="); Serial.print(temp);//串口输出等待时间的原始数据 Serial.print(" | | Distance = "); Serial.print(cm);//串口输出距离换算成cm的结果 Serial.println("cm"); delay(500); } 实验图形编程(Mind+,编玩边学) 实验仿真编程(linkboy3.6) 网上搜索了一下,超声波模块的型号还不少,比如还有HY-SRF05(五针高精度);US-025和US-026(苏州顺憬志联CS100芯片,距离6米稳定性好些);US-100(同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠);RCWL-1601(宽电压,对棉质及不规则物体探测精度高于SR-04);RCWL-1603(含有UART,PWM,GPIO及UART AUTO OUT等多种接口模式,专业MCP9700温度补偿);US-015(目前市场上分辨率最高,重复测量一致性最好的超声波测距模块)等,以后待手头有实物了再做后续实验。
广告