「雕爷学编程」Arduino动手做(20)—水银开关模块

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


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

实验二十:水银开关传感器模块(KY-017)


水银
汞是化学元素,元素周期表第80位。俗称水银。元素符号Hg,在化学元素周期表中位于第6周期、第IIB族,是常温常压下唯一以液态存在的金属(从严格的意义上说,镓(符号Ga,31号元素)和铯(符号Cs,55号元素)在室温下(29.76℃和28.44℃)也呈液态)。汞是银白色闪亮的重质液体,化学性质稳定,不溶于酸也不溶于碱。汞常温下即可蒸发,汞蒸气和汞的化合物多有剧毒(慢性)。水银具有良好的导电性和流动性。汞使用的历史很悠久,用途很广泛。 在中世纪炼金术中与硫磺、盐共称炼金术神圣三元素。

水银开关

又称倾侧开关,是电路开关的一种,一般是一个小玻璃泡容器中储存着一小滴水银,容器中多数注入惰性气体或真空。因为重力的关系,水银珠会向容器中较低的地方流去,因为水银是一种导电的液体,如果它同时接触到两个电极,电路便会接通,否则电路断开。因为水银开关的通断与物体的水平角度有关,因此它常被应用在一些自动控制电路当中。

我有五个这开关

工作原理

水银开关的构造很简单。外面是一个密封的圆柱形绝缘壳体,长约30 毫米, 直径约10 毫米。里面装有约五分之一的水银。在壳体的一端固定着从里面引出的两根导线。这就是一个水银开关。因为重力的关系,水银水珠会向容器中较低的地方流去,如果同时接触到两个电极的话,开关便会将电路闭合,开启开关,从而触发后续电路工作。

主要特色

水银是液态,接触面积接触大且稳定,一般来说导通效果更稳定。其电阻在0.02欧以下, 在额定电流下寿命可达几百万次,可用来分合交直流大电流,体积小,灵敏度高,无机械噪音,价格低廉,所以一向是作为自动控制用开关。适用于有尘埃、油、水蒸汽等和有腐蚀性气体的特殊场所,也可以在有爆炸性气体的场所中充当防爆开关使用。玻璃管封装的水银开关的优点是可以从外部观察到它的工作状态,缺点就是容易破碎。

●由密封玻璃管、电极和水银组成;

●通过水银的流动特性来实现电路的通断,自由角度,灵活控制;

●高温烧制,可以做成任何形状;

●广泛应用于水位液位控制、报警装置、检测装置、通讯设备、仪器仪表等领域作信号传递及控制用。

注意事项:

水银对人体及环境均有毒害,故使用水银开关时,请务必小心谨慎,以免破出;在不再使用时,也应该妥善处理。防止水银开关从高处跌落,避免其与硬物接触,或被挤压,导致玻璃泡破裂。

水银开关模块内部结构图

水银开关应用电路

特别警告:

水银有毒,一旦玻璃泡破裂,请迅速将流出的水银移至室外,切勿与皮肤接触。因为水银开关里面的水银量很少,甚至比普通水银体温计里面的还少,因此在正确使用的情况下,不必担心安全问题。

模块特色:

1、采用高灵敏度水银开关

2、比较器输出,信号干净,波形好,驱动能力强,超过15mA

3、工作电压3.3V-5V

4、输出形式 :数字开关量输出(0和1)

5、设有固定螺栓孔,方便安装

6、小板PCB尺寸:3.2cm x 1.4cm

7、使用宽电压LM393比较器

 

模块接线:

1.VCC:接电源正

2.GND:接电源负

3.DO:数字量信号输出

模块使用说明:

1、产品不倾斜时,震动开关呈导通状态,输出端输出低电平,绿色指示灯亮;

2、产品倾斜时,震动开关断开状态,输出端输出高电平,绿色指示灯亮;

3、输出端可以与单片机直接相连,通过单片机来检测高低电平,由此来检测环境是否有倾斜,起到角度倾斜报警作用!

实验示意场景图

 

/*

【Arduino】108种传感器模块系列实验(20)

   实验二十:水银开关传感器模块(KY-017)

  源代码

*/


void setup()

{

      pinMode(3,INPUT);

      pinMode(13,OUTPUT);

}


void loop() {

  if (digitalRead(3)) {

      digitalWrite(13,HIGH);

      delay(1000);

  }

  else {

      digitalWrite(13,LOW);  

  }

}

  

/*

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

实验二十:水银开关传感器模块(KY-017)

*/


// constants won't change. They're used here to

// set pin numbers:

const int buttonPin = 2;     // the number of the pushbutton pin

const int ledPin =  13;      // the number of the LED pin


// variables will change:

int buttonState = 0;         // variable for reading the pushbutton status


void setup() {

  // initialize the LED pin as an output:

  pinMode(ledPin, OUTPUT);      

  // initialize the pushbutton pin as an input:

  pinMode(buttonPin, INPUT);     

}


void loop(){

  // read the state of the pushbutton value:

  buttonState = digitalRead(buttonPin);


  // check if the pushbutton is pressed.

  // if it is, the buttonState is HIGH:

  if (buttonState == HIGH) {     

    // turn LED on:   

    digitalWrite(ledPin, HIGH);  

  }

  else {

    // turn LED off:

    digitalWrite(ledPin, LOW);

  }

}

  

原文地址:https://www.cnblogs.com/eagler8/p/11427580.html