tag 标签: 飞行时间传感器

相关博文
  • 热度 6
    2022-8-10 10:27
    1734 次阅读|
    0 个评论
    现实中很多物体应用是无法通过物理接触来测量目标物体的距离的,例如物流中心传送带上的物体,移动机器人手臂周围的安全距离等。这里的一些可能非接触式安全测量技术选项包括:涡电流、超声波和光线。其中,激光探测和测距(Light distance and ranging,LIDAR)又称激光雷达,通过从物体发出及返回的光线数据测量目标物体的距离。要构建一个LIDAR系统,可采用高速模数转换器(ADC),或者时间数字转换器(TDC)。 方案特点 本设计基于TDC及相关前端,是一个面向工厂自动化的光学接近传感器、光学液位传感器和无极人的LIDAR系统时间测量后端方案。系统按最高级别测量传感器于第一个障碍物之间的距离,依据是TDC测得的脉冲激光的往返时间,TDC的计时分辨率为55ps。系统采用相移方法处理ToF扩散,光学系统包含了激光二极管、LED、光电二极管,通过专用算法来增加测量距离。 系统对距离感测关键是TDC,以TDC7200为例,4.6ms ToF对应于1379km距离,LIDAR的设计距离不受TDC测量范围的影响。系统中,TDC7200相当于一个秒表,测量START脉冲到第五个STOP脉冲之间的持续时间,这种测量START脉冲与多达5个STOP脉冲之间的时间间隔,这一功能使得用户能够灵活选择回声性能最佳的STOP脉冲。 TDC7200具有内部自校准时间基准,对事件和温度漂移进行了补偿,非常适合高精度测量。如果采用自主多周期平均模式(Autonomous Multi-Cycle Averaging Mode),TDC7200可优化实现低功耗,用于电池供电的流量表。这种模式下,主机可休眠以节约功耗,在TDC测量序列完成后中断并清醒。 本方案采用BoosterPack外形因子,含有两个TDC7200器件,虽然具有12ns消隐时间,这对小物体测量来说已经是太大了。通过对两个TDC进行差分模式优化配置,本方案实际上没有消隐时间。主要性能如下: - LIDAR脉冲飞行时间(ToF)测量; - 距离分辨率; <1cm - TDC分辨率达1.65cm,白噪声1.05cm RMS - TX能量:70W峰值(40ns以上) - ToF测量:脉冲式ToF - ToF分辨率:55ps - ToF重复度:35ps - TX功率:peak 70W - TX脉冲宽度:40ns - TX脉冲上升时间:10ns 100m 50kHz - SNR:88dB 芯齐齐BOM分析 本设计采用10个TI芯片。其中,TDC7200是一款采用14引脚TSSOP封装的时间-数字转换器(TDC),工作温度范围-40 to 85°C,适用于水表、燃气表和热量计等超声波感测装置,允许用户灵活选择回声性能最佳的STOP脉冲。该器件内置自校准时基,可对时间和温度偏差进行补偿,分辨率55ps,标准偏差35ps,测量范围12-500ns(模式1)、250ns至8ms(模式2),低功耗0.5μA(2SPS),最多支持5个STOP信号,可用于水表、燃气表和热量计等。 OPA857是一款采用3×3mm VQFN封装宽带、快速过驱动恢复、快速稳定、超低噪声跨阻AO4807L放大器,适用于光电二极管监控应用。凭借可选择的反馈电阻,极快的过载恢复时间和内部输入保护,OPA857可保护信号链的其余部分免受过驱动,同时最大限度地缩短恢复时间。OPA857工作电压2.7V至3.6V,工作温度范围–40°C至+85°C,应用于光电二极管监控、高速I/V转换、光放大器、CAT扫描仪前端等。 TLV3502是4.5ns轨到轨推挽输出比较器,采用SOIC8封装。TLV3502电源电压2.7~5.5V,,静态电流3.2mA,输入偏置电流2pA,输出类型CMOS、Push-Pull、Rail-to-Rail、TTL,PSRR(典型值)70dB和100dB,传播延迟时间4.5ns,工作温度-40~+125℃。 TPL0202是具有SPI和非易失性存储器的256抽头双通道数字电位器,端对端电阻值为10kΩ,上电时间小于<100µs,电压分配±1 LSB INL、±0.5 LSB DNL,工作电压2.7-5.5V,工作温度范围–40°C to +105°C。 SPLLL90-3红外脉冲激光管来自OSRAM,采用Nanostack芯片技术,激光孔径200×10微米,实现70W~75W的典型光输出,光峰值功率高达70瓦,激光波长905纳米。SPLLL90-3工作温度范围-40℃~ +100℃,适合于从1至100ns的短激光脉冲,例如激光测距仪、智能汽车、交通监控、激光距离传感器等。 本设计为精密测距系统,除了上拉的R3可用5% 精度外,其余电阻器均采用1%精密电阻器。在PCB布线时应避免长走线。由于本系统发出高度集中的非有形红外光,这是危害人眼睛的光,这些产品安全预防措施应以《IEC 60825-1 激光产品的安全》为准。
  • 热度 4
    2022-6-13 09:20
    2203 次阅读|
    0 个评论
    基于PGA460超声波传感器的多用途接近检测方案(BOM表+电路图)
    智能物联网时代,接近检测传感器成为智能设备的主要感官。这些传感器通过测量反射的红外线(IR)、超声波等能量来检测物体或人的存在,感测人的肢体语言。本参考设计基于PGA460超声波传感器信号调理器,是一种单传感器的发送和接收操作的小型解决方案,可实现0.3-5m范围内的物体检测。方案的物体检测不受环境温度、湿度和目标颜色/透明度的影响,可用于位置测量、占位检测、超声波泊车辅助系统等。 方案特点 超声波飞行时间传感器(ToF)基于空气耦合换能器,可测量单个或多个物体的距离。本方案中的PGA460是一款具有数字信号处理器的集成式超声波前端器件,输出飞行时间数据、回声宽度和振幅信息。通过电流限制变压器可配置驱动器强度,接收器经调节可过滤和处理返回的回波数据,以便在测量后进行分析。 方案可使用PGA460 EVM GUI定制、配置和控制超声波设置,并监控发生的超声波事件的性能。主要特点包括: - 集成驱动器和接收器,可实现超声波检测。 - 与在30-80kHz和180-480kHz中心频率运行的超声波传感器兼容。 - 能够使用变压器驱动器生成最大声压级。 - 能够访问PGA460-Q1提供的所有通信接口,包括USART(UART和SPI)、TCI和单线UART。 - 记录物体检测时间,空中距离高达11m。 - 其最大范围会受极小或软目标的影响。 应用设计时,首要确定最大和最小测量距离,推荐距离为30cm到5m之间。距离越短,但传感器测量的挑战越大,因为传感器要同时兼顾发射和接收要素,同时还会出现谐振衰变。为提高短距离性能,不要采用匹配网络进行补偿。该网络由感性元件、容性元件和阻性元件组成,可减小测量的阈值时间,提高最小测量距离。为了获得接近0cm的测量距离,建议采用双传感器结构配置。 电路中,UTR-1440K超声波变送器是IP65防护等级的超声波发射器/接收器,将高频率电压信号转换为触发超声波接收器的音频信号发射出去,受目标频率激活时可将高频率转换为交流电压。 PGA460-Q1芯片用来驱动超声波变送器,并对发射和接收的超声波信号进行处理。该芯片配备先进的DSP内核,具有一个互补低侧驱动器对,可以在基于变压器的拓扑中使用升压变压器驱动变送器,或在直接驱动拓扑中使用外部高侧FET驱动变送器。器件可以接收和调节反射的回波信号,以实现物体的可靠检测。PGA460-Q1可进入超低静态电流低功耗模式以减少闲置时的功耗,并且可在通信接口上使用指令将其唤醒。 芯齐齐BOM分析 本方案核心元件包括一个UTR-1440K超声波变送器和一个PGA460超声波信号处理器和传感器驱动器。 UTR-1440K是分立式超声波发射器/接收器,驱动电压140VP-P,电容值1,800±15%pF,回波敏感度200mV,衰减时间1.2mS,中心频率40,000Hz,工作温度范围-40~+80°C,可用于距离测量、液流和液位系统,超声波清洗系统或玻璃破碎检测等场景。 PGA460采用TSSOP-16封装,是用于超声波传感的完全集成式解决方案,单一芯片集成了超声波信号处理和传感器驱动功能,可以接收和调节反射的回波信号,以实现物体的可靠检测。PGA460还具有系统诊断和适用于过压、欠压、过流和短路情形的电源侧和收发器侧诊断功能,主要用于超声波雷达、目标距离和位置感知、人体接近检测、运动传感器、无人机和机器人着陆协助和障碍检测等场景。 调谐电容C7容量选择0402尺寸330pF容量的C0G/NP0 MLCC电容器,容差控制在+/- 5%以内。与之对应的电阻器R4阻值为100Ω,精度在1%以内。 阻尼电阻R3与超声波变送器并联,用以缩短回波的衰减时间,取值一般在500Ω-30kΩ之间,建议先用电位器微调确定,本设计采用0603尺寸的3.9kΩ。 退耦电容C3容值选择3900pF,容差+/-5%精度的0603尺寸C0G/NP0电容器。这些元器件均为STD标品,可按照BOM表提供PartNumber原厂采购,也可从硬之城(allchips)一站购齐,这样更容易达到设计目标。
  • 热度 9
    2022-4-29 09:31
    2126 次阅读|
    0 个评论
    本项目是一个采用Traffic LED模块、Arduino Uno/Nano,以及TOF10120飞行时间传感器的工业级智能停车系统。项目采用一块切边的垫子作为停车区,先测量垫子长度,再根据这个数值定义不同距离的代码,一个接一个的点亮(ON)和熄灭(OFF)这些LEDs,以帮助司机安全停车: 当汽车即将进入停车区域时,绿色LED点亮。然后,黄色LED点亮,提醒司机即将接近目标停车位置,这表明汽车车身已经有一半位于停车区域。 当红色LED开始闪烁时,警告司机缓慢行驶并留意,到达停车点后关闭汽车,或者继续移动直到红色LED停止闪烁。 作为一个用以理解停车系统的原型,项目使用的均为廉价元件。读者可对电路进行升级,如改变代码中的测量距离数值,甚至替换电路中的传感器等,使项目更加实用。 ToF10120飞行时间传感器 tof10120激光模块最大的优势在于测距远、操作简单,程序中仅仅需要通过单片机给模块串口发送命令字符串,就可以向单片机发送回距离数据。如果发送自动测距的字符串命令,则模块会按照一定频率自动回送数据,相关物理量都可以通过命令字符串设置。传感器仅需要串口就可以实现。 TOF10120基于Sharp低成本标准CMOS工艺和SPAD技术,可为自动对焦(AF)提供精确、可重复的长距离测量,测量结果不受物体反射的影响。主要特点包括: ・采用940nm激光; ・小型陶瓷封装(20×13.2×2.0mm); ・ 可在室内测量长达1.8m长度,精度5%; ・测量距离不受姆堡反射的影响; ・先进广促俄串扰补偿技术; ・30ms高速测量; ・单电源供电; ・Txd接口用于设备控制和数据传送; ・无铅,符合RoHS指令。 TOF10120典型测距范围为100-1800mm,电源电压3-5v,消耗电流35mA,兼容Arduino、ESP8266、ESP32等5V和3.3V控制板,适合-20°C to +70°C等室内外环境。 TOF10120支持UART、I2C通讯,1#引脚、2#引脚、3#引脚、4#引脚、5#引脚、6#引脚分别为GND、VDD、RXD、TXD、SDA、SCL。在六个引脚中,本项目只使用了其中的GND, VDD, SDA, and SCL四个脚。 根据数据表,TOF10120的I2C地址为0xA4,但寻址采用高7bit即0x52,这相当于82。 交通LED模块 该模块为司机提供指示,本身带有限流电阻,无需额外连接电阻器。 模块共有4个公头,GND引脚链接与控制器的GND引脚,或数字引脚。这样,5v信号将熄灭模块,GND or LOW电平信号将启动模块。其中,R标号代表红色LED, Y标号代表黄色LED,G标号代表绿色LED,高电平信号时LED点亮。 连接电路 首先,按照电路图,5V电源由LM7805三端稳压器提供给Arduino Nano,后面需要连接一个470uF的去耦铝电解电容器。 其中,5v稳压连接到Arduino Nano的VIN引脚,TOF10120激光测距模块的SCL、SDA引脚分别连接于Arduino板子的A5、A4引脚,电源线链接于Arduino板子的5V和接地引脚。 信号灯LED模块的GND引脚链接到Arduino板子的5号引脚,红色LED链接到Arduino的4号引脚,黄色LED连接到3号引脚,绿色LED连接到2号引脚。 PCB设计 接下来,设计Arduino Nano PCB开发板,母头用于3.3V、12V、5V和接地,左侧作为Vero板用来焊接其他电子元件,Arduino Nano的左右两侧都设计母头来连接跳线,也可连接传感器和电子元器件,例如TOF10120传感器和OLED显示模块的I2C引脚。 最后,将Traffic LED模块连接于Arduino板子的5、4、3、2引脚,再用公头连来连接TOF10120传感器的GND、Vdd、SCL、SDA引线。 做完上述连接后,就使用下述代码进行I2C寻址: #include void setup() { Wire.begin(); Serial.begin(115200); Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 0; address <= 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address, HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(30000); } #include void setup() { Wire.begin(); Serial.begin(115200); Serial.println("\nI2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 0; address <= 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address<16) Serial.print("0"); Serial.print(address, HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknow error at address 0x"); if (address<16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found\n"); else Serial.println("done\n"); delay(30000); } 上述代码上传完成后,打开serial monitor就会看到TOF10120激光传感器的I2C地址。按照数据手册,TOF10120模块的I2C地址为0xA4,由于其寻址采用了高7 bits,这样就变成了0x52,相当于82。 至此,大家已经知道了i2c地址,可以把TOF10120测距传感器模块固定到板子上了。该传感器须固定到适当的高度,以检测车辆和距离。这当然不难,你可以竖一个底部带有螺丝的胶块,我为了方便站了一个充电器的外壳,只要高度满足即可。 下面是本项目的代码,我是按照裁剪的垫子大小来写的,这个尺寸正好就是停车区域的大小。 /* Smart Car Parking system Code * In this project the TOF10120 Laser Distance Sensor is used for measuring the distance. */ #include // Traffic LED Module interfacing with Arduino Uno or Arduino Nano int GND_PIN = 5; int RED_PIN = 4; int YELLOW_PIN = 3; int GREEN_PIN = 2; unsigned char ok_flag; unsigned char fail_flag; unsigned short lenth_val = 0; unsigned char i2c_rx_buf ; unsigned char dirsend_flag=0; int x_mm; // distance in millimeters float y_inches; // distance in inches void setup() { Wire.begin(); Serial.begin(9600,SERIAL_8N1); printf_begin(); pinMode(GND_PIN, OUTPUT); pinMode(RED_PIN, OUTPUT); pinMode(YELLOW_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); digitalWrite(GND_PIN, LOW); digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } void loop() { x_mm = ReadDistance(); // Serial.print(x_mm); // Serial.println(" mm"); // You can convert millimeters to inches in one of two ways: divide the number of millimeters by 25.4, or multiply the number of millimeters by 0.0394 y_inches = x_mm * 0.0394; // Serial.print(y_inches); // Serial.println(" inches"); 0) && (y_inches <= 3) ) { digitalWrite(RED_PIN, HIGH); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } 3) && (y_inches <= 6) ) { digitalWrite(RED_PIN, HIGH); delay(200); digitalWrite(RED_PIN, LOW); delay(200); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } 6) && (y_inches <= 10) ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, HIGH); digitalWrite(GREEN_PIN, LOW); } 10) && (y_inches <= 20) ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, HIGH); } 20 ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } if ( y_inches < 0 ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } } int serial_putc( char c, struct __file * ) { Serial.write( c ); return c; } void printf_begin(void) { fdevopen( &serial_putc, 0 ); } void SensorRead(unsigned char addr,unsigned char* datbuf,unsigned char cnt) { unsigned short result=0; // step 1: instruct sensor to read echoes Wire.beginTransmission(82); // transmit to device #82 (0x52), you can also find this address using the i2c_scanner code // the address specified in the datasheet is 164 (0xa4) // but i2c adressing uses the high 7 bits so it's 82 Wire.write(byte(addr)); // sets distance data address (addr) Wire.endTransmission(); // stop transmitting // step 2: wait for readings to happen delay(1); // datasheet suggests at least 30uS // step 3: request reading from sensor Wire.requestFrom(82, cnt); // request cnt bytes from slave device #82 (0x52) // step 5: receive reading from sensor if (cnt <= Wire.available()) { // if two bytes were received *datbuf++ = Wire.read (); // receive high byte (overwrites previous reading) *datbuf++ = Wire.read (); // receive low byte as lower 8 bits } } int ReadDistance(){ SensorRead(0x00,i2c_rx_buf,2); lenth_val=i2c_rx_buf ; lenth_val=lenth_val<<8; lenth_val|=i2c_rx_buf ; delay(300); return lenth_val; } /* Smart Car Parking system Code * In this project the TOF10120 Laser Distance Sensor is used for measuring the distance. */ #include // Traffic LED Module interfacing with Arduino Uno or Arduino Nano int GND_PIN = 5; int RED_PIN = 4; int YELLOW_PIN = 3; int GREEN_PIN = 2; unsigned char ok_flag; unsigned char fail_flag; unsigned short lenth_val = 0; unsigned char i2c_rx_buf ; unsigned char dirsend_flag=0; int x_mm; // distance in millimeters float y_inches; // distance in inches void setup() { Wire.begin(); Serial.begin(9600,SERIAL_8N1); printf_begin(); pinMode(GND_PIN, OUTPUT); pinMode(RED_PIN, OUTPUT); pinMode(YELLOW_PIN, OUTPUT); pinMode(GREEN_PIN, OUTPUT); digitalWrite(GND_PIN, LOW); digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } void loop() { x_mm = ReadDistance(); // Serial.print(x_mm); // Serial.println(" mm"); // You can convert millimeters to inches in one of two ways: divide the number of millimeters by 25.4, or multiply the number of millimeters by 0.0394 y_inches = x_mm * 0.0394; // Serial.print(y_inches); // Serial.println(" inches"); 0) && (y_inches <= 3) ) { digitalWrite(RED_PIN, HIGH); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } 3) && (y_inches <= 6) ) { digitalWrite(RED_PIN, HIGH); delay(200); digitalWrite(RED_PIN, LOW); delay(200); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } 6) && (y_inches <= 10) ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, HIGH); digitalWrite(GREEN_PIN, LOW); } 10) && (y_inches <= 20) ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, HIGH); } 20 ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } if ( y_inches < 0 ) { digitalWrite(RED_PIN, LOW); digitalWrite(YELLOW_PIN, LOW); digitalWrite(GREEN_PIN, LOW); } } int serial_putc( char c, struct __file * ) { Serial.write( c ); return c; } void printf_begin(void) { fdevopen( &serial_putc, 0 ); } void SensorRead(unsigned char addr,unsigned char* datbuf,unsigned char cnt) { unsigned short result=0; // step 1: instruct sensor to read echoes Wire.beginTransmission(82); // transmit to device #82 (0x52), you can also find this address using the i2c_scanner code, which is available on electroniclinic.com // the address specified in the datasheet is 164 (0xa4) // but i2c adressing uses the high 7 bits so it's 82 Wire.write(byte(addr)); // sets distance data address (addr) Wire.endTransmission(); // stop transmitting // step 2: wait for readings to happen delay(1); // datasheet suggests at least 30uS // step 3: request reading from sensor Wire.requestFrom(82, cnt); // request cnt bytes from slave device #82 (0x52) // step 5: receive reading from sensor if (cnt <= Wire.available()) { // if two bytes were received *datbuf++ = Wire.read (); // receive high byte (overwrites previous reading) *datbuf++ = Wire.read (); // receive low byte as lower 8 bits } } int ReadDistance(){ SensorRead(0x00,i2c_rx_buf,2); lenth_val=i2c_rx_buf ; lenth_val=lenth_val<<8; lenth_val|=i2c_rx_buf ; delay(300); return lenth_val; } 上面是编程代码,前提是已经下载了 Wire.h 库文件,代码中的距离单位为英寸,欢迎实践和分享。
  • 热度 4
    2022-4-27 09:59
    1710 次阅读|
    1 个评论
    项目采用数字微波传感器和Arduino控制板,实现了一个人体探测系统,可探测到墙壁后方的活动物体。相较红外传感器、超声波传感器、PIR接近传感器和TOF飞行时间传感器方案,本项目对各种物体都敏感,而且传感器的数据不受室内温度的影响。 了解微波传感器 微波传感器是利用微波特性来检测一些物理量的器件,可感应物体的存在、运动速度、距离、角度等信息。 工作时,由发射天线发出的微波,遇到被测物体时将被吸收或反射,使功率发生变化。若利用接收天线接收通过被测物体或由被测物反射回来的微波,并将它转换成电信号,再由测量电路处理,就实现了微波检测。 结构上,微波传感器主要由微波振荡器和微波天线组成。微波振荡器是产生微波的装置,如速调管、磁控管或某些固体元件等。微波振荡器产生的振荡信号需用波导管传输,再通过天线发射出去。为了使发射的微波具有一致的方向性,天线应具有特殊的构造和形状。 相较PIR等,微波传感器性能不受光纤、温度、湿度、噪声、灰尘等影响,广泛应用于液位检测、自动洗衣机、车速测量、自动门运动检测、车辆倾覆、生产线材料检测、自动灯控、高阶安防警报系统等。 数字微波传感器V2.0 使用来自DFrobot的重力数字微波传感器V2.0,可非接触检测任何物体,其读数不受温度、湿度、噪声、空气、灰尘和光线的影响,具有较强的抗RF干扰能力,非常适合苛刻环境应用。由于输出功率小,对人体没有伤害,加上检测范围宽,还可用来检测非生命类物体。 主要特点包括: 工作电压:5V 工作电流:最大60mA,典型值为37mA。 探测距离:2-16米,可通过电位器调节。 探测角度:与天线并行方向72°,垂直方向为36°。 发射: 辐射频率: 10.525GHz 调频精度: 3MHz 输出功率(Minimum): 13dBm EIRP 谐波辐射: <-10dBm 平均电流: 2mA typ. 脉冲宽度(Min.): 5uSec 负荷周期(Min.): 1% 接收: 敏感度(10dB信噪比) 3Hz to 80Hz带宽: -86dBm 3Hz to 80Hz 带宽簇: 10uV 天线增益: 8dBi 垂直3dB宽带: 36 degrees 红色LED为电源指示灯,黄色为信号指示LED。没有活动物体时间。由于没有信号,LED保持熄灭状态,只有传感器检测到活动物体时点亮。 黄色PCB为天线接口板,红色引线为5V,黑色线为GND,绿色线为输出。 微波传感器测试 微波传感器光线的“ON”持续时间可按照需求进行改变,采用更高阶微波传感器可获得更高级的性能体验。 项目要求每隔3秒,就通过OLED显示模块显示一下发生中断的数目。这些中断只在出现移动物体,或者人体时才发生,数字越大意味着运动越多。 微波传感器的探测距离为2-16米,模块上的蓝色电位器就是用来调节测量距离的。 为了测试传感器的性能,我将其固定在房门上,安装时要将微波传感器的正面朝向被检测区域,看看能否检测到弟弟的活动。 果然,传感器成功检测到了房间里的弟弟。 构建人体探测系统 该系统可探测躲藏于墙壁后方的运动物体及人类,参见该探测系统电路图。 系统中,微波传感器的输出引脚连接于D2开发板的D2引脚,5v及GND两个引脚分别连接于Arduino的5v和GND引脚。 电路图左上侧是基于LM7805稳压器的5V稳定电压,J1是DC电源的母头。这里,我们连接了一个12v适配器、锂离子电池,或者太阳能电池板。 电路图右侧为一个i2c接口的SSD1306 OLED模块,其SCL引脚和SDA引脚分别链接于Arduino板子的A5、A4引脚。 以下是本活体探测系统代码: #include #include //Timer interrupt function library #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) #define SCREEN_ADDRESS 0x3D Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); int pbIn = 0; // Define interrupt 0 that is digital pin 2 int ledOut = 13; // Define the indicator LED pin digital pin 13 int number=0; //Interrupt times volatile int state = LOW; // Defines the indicator LED state, the default is not bright void setup() { Serial.begin(9600); pinMode(ledOut, OUTPUT);// attachInterrupt(pbIn, stateChange, FALLING); // Set the interrupt function, interrupt pin is digital pin D2, //interrupt service function is stateChange (), //when the D2 power change from high to low , the trigger interrupt. MsTimer2::set(3000, Handle); // Set the timer interrupt function, running once Handle() function per 1000ms MsTimer2::start();//Start timer interrupt function display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); display.display(); } void loop() { display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(0,5); display.println("status: "); display.setTextSize(3); display.setTextColor(WHITE); display.setCursor(0,30); display.println(number); display.display(); display.clearDisplay(); delay(10); } void stateChange() //Interrupt service function { number++; //Interrupted once, the number + 1 } void Handle() //Timer service function { number = 0; } 这样,将电路安装于墙壁上,微波传感器系统就能探测到墙壁的另一方是否有人在活动,并将结果显示在OLED显示屏上。