您的位置:首页 > 产品设计 > UI/UE

Arduino 各种模块篇 震动模块 常开 震动传感器模块

2013-04-05 19:29 756 查看


以下是店家提供的一部分资料

一共就需要3根线

——————————————————分割线————————————————————————

用途:
用于各种震动触发作用,报盗报警,智能小车,电子积木等。
请注意这个模块在感应到小的震动时触发时间会很短,不够驱动继电器,有些人的资料显示可以直接和继电器模块相连,实际运用效果不佳。
模块特色:
1、采用本公司生产的各种灵敏度震动开关,默认用SW-18020P震动传感器,。
2、比较器输出,信号干净,波形好,驱动能力强,超过15mA
3、工作电压3.3V-5V
4、输出形式 :数字开关量输出(0和1)
5、设有固定螺栓孔,方便安装
6、小板PCB尺寸:3.2cm x 1.4cm
7、使用宽电压LM393比较器

模块使用说明:

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

2、产品震动时,震动开关瞬间导通,输出端输出低电平,绿色指示灯亮;

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

本系列模块的产品正反面外观图







单片机测试程序

/******************************************
东莞市丰川电子有限公司
传感器触发测试
单片机:STC89C52
波特率:9600
产品用途:震动感应触发,报警触发。
*****************************************/
#include <reg52.h>
unsigned char date;
#define uchar unsigned char
#define uint unsigned int
sbit key1=P0^1;

/* 函数申明 -----------------------------------------------*/
void delay(uint z);
void Initial_com(void);

//***********************************************************

/*
********************************************************************************
** 函数名称 : delay(uint z)
** 函数功能 : 延时函数
********************************************************************************
*/
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}

//******************************

//*****串口初始化函数***********

//******************************
void Initial_com(void)
{
EA=1; //开总中断
ES=1; //允许串口中断
ET1=1; //允许定时器T1的中断
TMOD=0x20; //定时器T1,在方式2中断产生波特率
PCON=0x00; //SMOD=0
SCON=0x50; // 方式1 由定时器控制
TH1=0xfd; //波特率设置为9600
TL1=0xfd;
TR1=1; //开定时器T1运行控制位

}

//*************************
//**********主函数*********
//*************************
main()
{
Initial_com();
while(1)
{

if(key1==0)
{
delay(); //消抖动
if(key1==0) //确认触发
{
SBUF=0X01;
delay(200);

}

}

if(RI)
{
date=SBUF; //单片机接受
SBUF=date; //单片机发送
RI=0;
}

}
}

——————————————————分割线————————————————————————

看上面的51例子还不算太难。

现在我们看一下分析原理:

原帖地址:http://blog.sina.com.cn/s/blog_624e2b450100olkw.html

实验器材:Arduino 168P 基础套件 互动媒体

1.Arduino 168P 开发板一个

2.USB下载线一条

3. SW-18010P 震动传感器一个

4.LED一个

5.200欧姆电阻一个

6.面包板一块

7.面包板跳线若干条

实验目的:学习SW-18010P 震动传感器的工作原理,以及如何使用Arduino 控制SW-18010P 震动传感器。

实验电路:实验电路如下图所示





实验原理:SW-18010P 震动传感器这是一款基于弹簧摆动原理设计的震动传感器,震动势能传到弹簧末端引起共振,左右摆动碰触到金属外壁形成通路。在静止时任何角度都为开路OFF状态,当受到外力碰撞或者大力晃动时,弹簧变形和中心电极接触导通使两个引脚瞬间导通为ON状态,当外力消失时,电路恢复为开路OFF状态。由于导通时间和弹簧的刚性有关,所以该震动传感器的输出带宽很窄,在使用Arduino读取时,建议使用外部中断功能。









实验步骤

一. 按照以上电路正确搭建实验电路。

二. 将我提供的调试程序下载到Arduino开发板中。

三. 晃动SW-18010P 震动传感器看LED的工作情况。

实验程序:

Arduino外部中断代码:

#define SensorLED     13
#define SensorINPUT   2

unsigned char state = 0;

void setup()
{
pinMode(SensorLED, OUTPUT);
pinMode(SensorINPUT, INPUT);
attachInterrupt(0, blink, FALLING);//D2口为外部中断0,当有下降沿触发的时候调用blink函数

}
void loop()
{
if(state!=0)
{
state = 0;
digitalWrite(SensorLED,HIGH);
delay(500);
}
else
digitalWrite(SensorLED,LOW);
}

void blink()//数字输入传感器下降沿触发中断服务函数
{
state++;
}


最后结果可观察数字口13脚上的L指示灯,震动后可以看见L灯亮500ms。

————————————————————————以上内容部分摘自网络————————————————————

现在自己写了一个程序。

是用analogRead来判断的。

将震动模块的数字口插在A0口上。

得到一个0-1023的数字。

在晃动的时候,可以得到28 或者 一个差不多的两位数,不晃动的时候,得到的是1021,1022,1023,说明没有震动。

有震动,便内部导通,向外发送一个电讯号。

代码如下:

int sensorPin = A0;
//int ledPin = 7;
int sensorValue = 0;
void setup()
{
//pinMode(ledPin,OUTPUT);
Serial.begin(9600);
}

void loop(){
sensorValue = analogRead(sensorPin);
delay(100);
Serial.println(sensorValue);
}


显示效果如下,



有一个缺点就是,数字滚动速度太快。所以得到的都是刷新值。

一般情况下,晃动一下,我们会希望大约有2秒钟的延迟,因为人的反映速度相对电脑来说还是很慢的。所以,我们可以这么做。

把LED等连接到Pin7, 震动感应器,连接到A0口

按照下面的代码尝试

int sensorPin = A0;
int ledPin = 7;
int sensorValue = 0;
void setup()
{
pinMode(ledPin,OUTPUT);
Serial.begin(9600);
digitalWrite(ledPin, LOW);
}

void loop(){
sensorValue = analogRead(sensorPin);
if (sensorValue < 100)
{
digitalWrite(ledPin, HIGH);
delay(2000);  // delay for 2 sec if sensor's shaked
}else{
digitalWrite(ledPin, LOW);
}
Serial.println(sensorValue);
}


这样,每次碰到传感器,它都会亮两秒钟,如果两秒内还在有震动的话,会继续亮。

这样,人就反映过来了。当然,可以适当修改一下时间,比如不是两秒,是1秒也行。总之要人眼能反映过来才好。



效果一般,但是达到既定的预期效果。

几元钱的小传感器,已经不错了。加上模块才几块钱,这个传感器电阻估计不到1元吧。

灵敏度来说,可以用。呵呵~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: