【雕爷学编程】Arduino动手做(115)---HB100多普勒雷达模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

标题实验一百一十五:HB100微波雷达感应模块 10.525GHz多普勒探测器探头传感器

在这里插入图片描述
在这里插入图片描述
多普勒 (人物)

奥地利物理学家,数学家和天文学家多普勒,克里斯蒂安·安德烈亚斯(Doppler · Christian Andreas)1803年11月29日出生于奥地利的萨尔茨堡 (Salzburg)。1842年,他因文章 “On the Colored Light of Double Stars” 、“多普勒效应”(Doppler Effect),而闻名于世。1853年3月17日,多普勒与世长辞。

一天,多普勒带着他的孩子沿着铁路旁边散步,一列火车从远处开来。多普勒注意到:火车在靠近他们时笛声越来越刺耳,然而就在火车通过他们身旁的一刹那,笛声声调突然变低了。随着火车的远去,笛声响度逐渐变弱,直到消失。这个平常的现象吸引了多普勒的注意,他思考:为什么笛声声调会变化呢?他抓住问题,潜心研究多年。通过研究他发现,当观察者与声源相对静止时,声源的频率不变;然而观察者与声源之间相对运动时,则听到的声源频率发生变化。最后他总结:观察者与声源的相对运动决定了观察者所收到的声源频率。多普勒不仅注重科学理论,而且善于运用实验去反复证明实验结论。多普勒的这一个重大发现,被人们称为“多普勒效应”,当时是将“多普勒效应”光学与声学联系起来的。在《论双星的色光》中,他从理论上论证了“多普勒效应”。多普勒还用此理论研究了光行差。

著名的多普勒效应首次出现在1842年发表的一篇论文上。多普勒推导出当波源和观察者有相对运动时,观察者接收到的波频会改变。他试图用这个原理来解释双星的颜色变化。虽然多普勒误将光波当作纵波,但多普勒效应这个结论却是正确的。多普勒效应对双星的颜色只有些微的影响,在那个时代,根本没有仪器能够量度出那些变化。不过,从1845年开始,便有人利用声波来进行实验。他们让一些乐手在火车上奏出乐音,请另一些乐手在月台上写下火车逐渐接近和离开时听到的音高。实验结果支持多普勒效应的存在。多普勒效应有很多应用,例如天文学家观察到遥远星体光谱的红移现象,可以计算出星体与地球的相对速度;警方可用雷达侦测车速等。

在这里插入图片描述

多普勒效应

生活中有这样一个有趣的现象:当一辆救护车迎面驶来的时候,听到声音比原来高;而车离去的时候声音的音高比原来低。你可能没有意识到,这个现象和医院使用的彩超同属于一个原理,那就是“多普勒效应”。多普勒效应Doppler effect是为纪念奥地利物理学家及数学家克里斯琴·约翰·多普勒(Christian Johann Doppler)而命名的,他于1842年首先提出了这一理论。主要内容为物体辐射的波长因为波源和观测者的相对运动而产生变化。在运动的波源前面,波被压缩,波长变得较短,频率变得较高(蓝移blue shift);在运动的波源后面时,会产生相反的效应。波长变得较长,频率变得较低(红移red shift);波源的速度越高,所产生的效应越大。根据波红(蓝)移的程度,可以计算出波源循着观测方向运动的速度。 恒星光谱线的位移显示恒星循着观测方向运动的速度,除非波源的速度非常接近光速,否则多普勒位移的程度一般都很小。所有波动现象都存在多普勒效应。

多普勒效应也是一个偶然的发现,1842年奥地利一位名叫多普勒的数学家、物理学家。一天,他正路过铁路交叉处,恰逢一列火车从他身旁驰过,他发现火车从远而近时汽笛声变响,音调变尖,而火车从近而远时汽笛声变弱,音调变低。他对这个物理现象感到极大兴趣,并进行了研究。发现这是由于振源与观察者之间存在着相对运动,使观察者听到的声音频率不同于振源频率的现象。这就是频移现象。因为,声源相对于观测者在运动时,观测者所听到的声音会发生变化。当声源离观测者而去时,声波的波长增加,音调变得低沉,当声源接近观测者时,声波的波长减小,音调就变高。音调的变化同声源与观测者间的相对速度和声速的比值有关。这一比值越大,改变就越显著,后人把它称为“多普勒效应”。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多普勒效应原理

多普勒效应指出,波在波源移向观察者接近时接收频率变高,而在波源远离观察者时接收频率变低。当观察者移动时也能得到同样的结论。但是由于缺少实验设备,多普勒当时没有用实验验证,几年后有人请一队小号手在平板车上演奏,再请训练有素的音乐家用耳朵来辨别音调的变化,以验证该效应。假设原有波源的波长为λ,波速为u,观察者移动速度为v(以下分析方法不适用于光波):当观察者走近波源时观察到的波源频率为(u+v)/λ,反之则观察到的波源频率为(u-v)/λ。

一个常被使用的例子是火车的汽笛声,当火车接近观察者时,其汽鸣声会比平常更刺耳。你可以在火车经过时听出刺耳声的变化。同样的情况还有:警车的警报声和赛车的发动机声。如果把声波视为有规律间隔发射的脉冲,可以想象若你每走一步,便发射了一个脉冲,那么在你之前的每一个脉冲都比你站立不动时更接近你自己。而在你后面的声源则比原来不动时远了一步。或者说,在你之前的脉冲频率比平常变高,而在你之后的脉冲频率比平常变低了。产生原因:声源完成一次全振动,向外发出一个波长的波,频率表示单位时间内完成的全振动的次数,因此波源的频率等于单位时间内波源发出的完全波的个数,而观察者听到的声音的音调,是由观察者接受到的频率,即单位时间接收到的完全波的个数决定的。当波源和观察者有相对运动时,观察者接收到的频率会改变.在单位时间内,观察者接收到的完全波的个数增多,即接收到的频率增大.同样的道理,当观察者远离波源,观察者在单位时间内接收到的完全波的个数减少,即接收到的频率减小。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多普勒效应不仅仅适用于声波,它也适用于所有类型的波,包括电磁波。科学家爱德文·哈勃(Edwin Hubble)使用多普勒效应得出宇宙正在膨胀的结论。他发现远离银河系的天体发射的光线频率变低,即移向光谱的红端,称为红移,天体离开银河系的速度越快红移越大,这说明这些天体在远离银河系。反之,如果天体正移向银河系,则光线会发生蓝移。

在移动通信中,当移动台移向基站时,频率变高,远离基站时,频率变低,所以我们在移动通信中要充分考虑多普勒效应。当然,由于日常生活中,我们移动速度的局限,不可能会带来十分大的频率偏移,但是这不可否认地会给移动通信带来影响,为了避免这种影响造成我们通信中的问题,我们不得不在技术上加以各种考虑。也加大了移动通信的复杂性。

在单色的情况下,我们的眼睛感知的颜色可以解释为光波振动的频率,或者解释为,在1秒钟内电磁场所交替为变化的次数。在可见区域,这种频率越低,就越趋向于红色,而频率越高的,就趋向于蓝,紫色。比如,由氦——氖激光所产生的鲜红色对应的频率为4.74×1014赫兹,而汞灯的紫色对应的频率则在7×1014赫兹以上。这个原则同样适用于声波:声音的高低的感觉对应于声音对耳朵的鼓膜施加压力的振动频率(高频声音尖厉,低频声音低沉)。

如果波源是固定不动的,不动的接收者所接收的波的振动与波源发射的波的节奏相同:发射频率等于接收频率。如果波源相对于接收者来说是移动的,比如相互远离,那么情况就不一样了。相对于接收者来说,波源产生的两个波峰之间的距离拉长了,因此两上波峰到达接收者所用的时间也变长了。那么到达接收者时频率降低,所感知的颜色向红色移动(如果波源向接收者靠近,情况则相反)。为了让读者对这个效应的影响大小有个概念,在显示了多普勒频移,近似给出了一个正在远离的光源在相对速度变化时所接收到的频率。例如,在上面提到的氦——氖激光的红色谱线,当波源的速度相当于光速的一半时,接收到的频率由4.74×1014赫兹下降到2.37×1014赫兹,这个数值大幅度地降移到红外线的频段。

HB100多普勒模块

是利用多普勒雷达原理设计的10.525GHz微波移动物体探测器,这种探测方式与其他探测相比具有不受温度、湿度、噪声、气流、尘埃、光线等影响的优点,适合恶劣环境; 本产品主要应用于自动感应灯、自动门控制开关、安防系统、ATM自动提款机的自动录像控制系统等场所,另外也可以扩展其应用领域,如配合图像监控,识别驱动告警系统,广泛应用于监狱监控、机场监控、重要仓储场地、医院ICU等重要场所。具有广泛的应用领域和市场前景。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
HB100多普勒雷达模块由FET介质DRO微波震荡源(10.525GHz)、功率分配器、发射天线、接收天线、混频器、检波器等电路组成(图2)。发射天线向外定向发射微波,遇到物体时被反射,反射波被接收天线接收,然后到混合器与振荡波混合,混合、检波后的低频信号反应了物体移动的速度可以广泛应用于类似自动门控制开关、安全防范系统、ATM自动提款机的自动录像控制系统、火车自动信号机等,需要自动感应控制的场所。这是一种标准的10.525GHz微波多普勒雷达探测器,这种探测方式与其它探测方式相比具有如下的优点:1、非接触探测;2、不受温度、湿度、噪声、气流、尘埃、光线等影响,适合恶劣环境;3、抗射频干扰能力强;4、输出功率仅有5mW,对人体构不成危害;5、远距离:探测范围超过20米。

在这里插入图片描述
采用10.525GHz的微波与采用较低频段波相比有以下优点:1、微波天线发射时具有良好的定向性,因此很容易控制微波探头的作用范围。2、微波在传输过程中较易被衰减、吸收和反射,遇到墙壁等遮挡物时会被遮挡,因此墙壁等遮挡物外的物体对其干扰很小。

供电:给HB100供电有连续直流供电(CW)模式和脉动供电(PW)模式两种:HB100适应电压范围为5V±5%。在连续直流供电(CW)模式下工作时典型电流为35mA(典型值)。在低占空比脉冲供电(PW)模式下工作时,推荐给HB100提供5V、脉冲的宽度在5μs~30μs之间(典型值为20μs)、频率为2~4kHz(典型值为2.0kHz)的脉冲供电。3~10%的占空比脉冲供电时平均电流为1.2mA~4mA。脉冲供电电压必须在4.75V~5.25V之间,脉冲顶端的平坦度会影响HB100的探测能力。电源电压超过5.25V时,它的可靠性会降低,并可能导致标称频率外的射频输出和该电路永久性损坏。

射频输出:在所有推荐工作模式下,HB100的射频功率输出是非常低的,均在对人体构不成任何危害的安全范围内工作。在连续直流供电(CW)模式下工作时,总输出功率小于15mW。输出功率密度在5mm处为1mW/cm2,1m处为0.72μW/cm2。当在5%占空比的脉冲供电模式工作时,功率密度分别减少到50μW/cm2和0.036μW/cm2。

IF输出:当物体在HB100的有效探测范围内以1m/s的速度相对于HB100的天线面(非铝质屏蔽罩的那一面为天线面)做径向移动时,HB100的IF输出为72Hz/ s,IF的脉动输出频率与物体相对径向移动速度成近似线性关系。IF的输出幅度与物体的大小、距离有关,当一个体重70kg、身高170cm的测试者在距离HB100 1m处以1m/s的速度相对于HB100做径向移动时,IF的输出为5mV、72Hz/s脉动信号,IF的输出幅度与距离的平方成近似反比关系。

注意:

1.探测范围取决于目标的反射度和大小以及信噪比。

2.10.525GHz下的多普勒速度为31Hz/m.p.h

3.安装模块必须使其天线面(非铝质屏蔽罩的那一面为天线面)向着被检测区域,用户也可以自行调整方向,以达到最佳的覆盖区域。

在这里插入图片描述

模块参考电原理图

在这里插入图片描述
在这里插入图片描述

发射:

1发射频率 : 10.525 GHz

2频率设置精度 : 3MHz

3输出功率(最小): 13dBm EIRP

4工作电压 : 5V±0.25V

5工作电流(CW): 60mA max., 37mA typical

6谐波发射: <-10dBm

7脉冲工作模式:

8平均电流 (5%DC) : 2mA typ.

9脉冲宽度(Min.): 5uSec

10负载循环(Min.): 1%

接收:

1灵敏度(10dB S/N ratio)3Hz至80Hz 带宽: -86dBm

3Hz至80Hz带宽杂波 10uV

2天线增益: 8dBi

3垂直面3dB波束宽度: 36度

4水平面 3dB 波束宽度: 72度

5重量: 8 克

6规格: 37×45×8mm

Arduino实验开源代码

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百一十五:HB100微波雷达感应模块 10.525GHz多普勒探测器探头传感器

项目:测试HB100模块

*/



int analogPin = 3;

float sensorValue;

int val;



void setup() {
    
    

Serial.begin(9600);

 }



void loop() {
    
      

sensorValue = analogRead(analogPin);

Serial.println();

Serial.println(sensorValue);

val= map(sensorValue,0,1023,0,99);

Serial.println(val);

sensorValue=0;

delay(100);

}


实验串口返回情况
在这里插入图片描述

Arduino实验开源代码之二

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百一十五:HB100微波雷达感应模块 10.525GHz多普勒探测器探头传感器

项目:测试HB100模块,输入改为模拟口A0

*/



int analogPin = A0;

float sensorValue;

int val;



void setup() {
    
    

Serial.begin(9600);

 }



void loop() {
    
      

sensorValue = analogRead(analogPin);

Serial.println();

Serial.println(sensorValue);

val= map(sensorValue,0,1023,0,99);

Serial.println(val);

sensorValue=0;

delay(100);

 }

测试情况,把输入改为模拟口A0,接收的信号非常弱(还有一种可能就是这模块坏的)

在这里插入图片描述

Arduino实验开源代码之三

/*

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)

实验一百一十五:HB100微波雷达感应模块 10.525GHz多普勒探测器探头传感器

项目:测试HB100模块,输入改为模拟口A0,三组数据输出

*/



#define RADAR A0 // RADAR inut is attached to A0

#define MICRODELAY 100 // 100microseconds ~10000hz

#define MAXINDEX 1024 // 10 bits

#define TOPINDEX 1023 // 10 bits

byte collect[MAXINDEX];

int mean;

int minimum;

int maximum;

int hysteresis; // 1/16 of max-min

bool currentphase; // are value above mean + hysteresis;

int lastnull; // index for last null passing value

int prevnull; // index for previous null passing value

int deltaindex;

int deltadeltaindex;

int index;

bool phasechange = false;



void setup() {
    
    

  // put your setup code here, to run once:

  Serial.begin(115200);

  while (!Serial) {
    
    }

  index = 0;

  mean = 0;

  maximum = 255;

  minimum = 0;

  hysteresis = 0;

  currentphase = false;

  lastnull = 0;

  prevnull = 0;

  Serial.print("deltadeltaindex");

  Serial.print("\t");

  Serial.print("deltaindex");

  Serial.print("\t");

  Serial.println("delta");

}



void loop() {
    
    

  int newVal = analogRead(RADAR); // Raw reading from amplified radar

  mean -= (collect[index] >> 2);

  mean += (newVal >> 2);

  collect[index]= newVal;

  minimum = newVal < minimum ? newVal : minimum + 1;

  maximum = newVal > maximum ? newVal : maximum - 1;

  hysteresis = abs(maximum - minimum) >> 5;

  if(newVal > (mean + hysteresis))

  {
    
    

  if(false == currentphase)

  {
    
    

    currentphase = true;

    phasechange = true;

  }

  }

  else if(newVal < (mean - hysteresis))

  {
    
    

  if(currentphase)

  {
    
    

    currentphase = false;    

    phasechange = true;

  }

  }

  if(phasechange)

  {
    
    

  prevnull = lastnull;

  lastnull = index;

  int delta = (prevnull > lastnull) ?

      (lastnull - prevnull + MAXINDEX) :

      (lastnull - prevnull);

  deltadeltaindex = abs(deltaindex - delta);

  deltaindex = delta;

  Serial.print(deltadeltaindex);

  Serial.print("\t");

  Serial.print(deltaindex);

  Serial.print("\t");

  Serial.println(delta);

  }

  index = index == TOPINDEX ? 0 : index + 1;

  phasechange = false;

  //delayMicroseconds(10);

}

`
实验串口返回情况

![在这里插入图片描述](https://img-blog.csdnimg.cn/fad9db3fe30047fc8cd330a148ab41f1.jpeg#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/198a809196e64493b938db6d3bd1658d.jpeg#pic_center)



猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/131269769