学些传感器必须掌握的一些知识

出处: 学修网 发布于:2022-02-26 06:35:09浏览(8340)

  传感器
 
  传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
 
  传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。
 
  主要作用
 
  人们为了从外界获取信息,必须借助于感觉器官。
 
  而单靠人们自身的感觉器官,在研究自然现象和规律以及生产活动中它们的功能就远远不够了。为适应这种情况,就需要传感器。因此可以说,传感器是人类五官的延长,又称之为电五官。
 
  新技术革命的到来,世界开始进入信息时代。在利用信息的过程中,首先要解决的就是要获取准确可靠的信息,而传感器是获取自然和生产领域中信息的主要途径与手段。
 
  在现代工业生产尤其是自动化生产过程中,要用各种传感器来监视和控制生产过程中的各个参数,使设备工作在正常状态或最佳状态,并使产品达到最好的质量。因此可以说,没有众多的优良的传感器,现代化生产也就失去了基础。
 
  在基础学科研究中,传感器更具有突出的地位。现代科学技术的发展,进入了许多新领域:例如在宏观上要观察上千光年的茫茫宇宙,微观上要观察小到fm的粒子世界,纵向上要观察长达数十万年的天体演化,短到 s的瞬间反应。此外,还出现了对深化物质认识、开拓新能源、新材料等具有重要作用的各种极端技术研究,如超高温、超低温、超高压、超高真空、超强磁场、超弱磁场等等。显然,要获取大量人类感官无法直接获取的信息,没有相适应的传感器是不可能的。许多基础科学研究的障碍,首先就在于对象信息的获取存在困难,而一些新机理和高灵敏度的检测传感器的出现,往往会导致该领域内的突破。一些传感器的发展,往往是一些边缘学科开发的先驱。
 
  传感器早已渗透到诸如工业生产、宇宙开发、海洋探测、环境保护、资源调查、医学诊断、生物工程、甚至文物保护等等极其之泛的领域。可以毫不夸张地说,从茫茫的太空,到浩瀚的海洋,以至各种复杂的工程系统,几乎每一个现代化项目,都离不开各种各样的传感器。
 
  由此可见,传感器技术在发展经济、推动社会进步方面的重要作用,是十分明显的。世界各国都十分重视这一领域的发展。相信不久的将来,传感器技术将会出现一个飞跃,达到与其重要地位相称的新水平。
 
  主要特点
 
  传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化,它不仅促进了传统产业的改造和更新换代,而且还可能建立新型工业,从而成为21世纪新的经济增长点。微型化是建立在微电子机械系统(MEMS)技术基础上的,已成功应用在硅器件上做成硅压力传感器。
 
  传感器的组成
 
  传感器一般由敏感元件、转换元件、变换电路和辅助电源四部分组成。
 
  敏感元件直接感受被测量,并输出与被测量有确定关系的物理量信号;转换元件将敏感元件输出的物理量信号转换为电信号;变换电路负责对转换元件输出的电信号进行放大调制;转换元件和变换电路一般还需要辅助电源供电。
 
  主要功能
 
  常将传感器的功能与人类5大感觉器官相比拟:
 
  光敏传感器——视觉
 
  声敏传感器——听觉
 
  气敏传感器——嗅觉
 
  化学传感器——味觉
 
  压敏、温敏、
 
  流体传感器——触觉
 
  敏感元件的分类:
 
  物理类,基于力、热、光、电、磁和声等物理效应。
 
  化学类,基于化学反应的原理。
 
  生物类,基于酶、抗体、和激素等分子识别功能。
 
  通常据其基本感知功能可分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类(还有人曾将敏感元件分46类)。

  传感器类型

  动作传感器

  这类传感器在三个轴(X、Y、Z)上测量加速度和旋转角度。包括如下几个传感器。

  加速(accelerometer)传感器

  陀螺仪(gyroscope)传感器

  重力(gravity)传感器

  线性加速(linear acceleraTIon)传感器

  旋转向量(rotaTIonal vector)传感器

  环境传感器

  这类传感器可以测量不同环境的参数,例如周围环境的空气温度和压强、光照强度和湿度。包括如下几个传感器。

  温度(barometer)传感器

  光线(photometer)传感器

  温度(thermometer)传感器

  压力(pressure)传感器

  位置传感器

  这类传感器可以测量设备的物理位置。包括如下几个传感器。

  方向(orientaTIon)传感器(数据来自加速传感器和磁场传感器)

  磁场(magnetomenter)传感器

  安卓传感器类型

  TYPE_ACCELEROMETER //加速度传感器(硬件)

  TYPE_MAGNETIC_FIELD //磁场传感器(硬件)

  TYPE_ORIENTATION //方向传感器(软件传感器,数据来自重力和磁场传感器)

  TYPE_GYROSCOPE //陀螺仪传感器(硬件)

  TYPE_LIGHT //光线传感器(硬件)

  TYPE_PRESSURE //压力传感器(硬件)

  TYPE_PROXIMITY //临近传感器(硬件)

  TYPE_GRAVITY //重场传感器(硬件或软件)

  TYPE_LINEAR_ACCELERATION //线性加速度传感器(硬件或软件)

  TYPE_ROTATION_VECTOR //旋转矢量传感器(硬件或软件)

  TYPE_RELATIVE_HUMIDITY //湿度传感器(硬件)

  TYPE_AMBIENT_TEMPERATURE //温度传感器(硬件)

  TYPE_TEMPERATURE //温度传感器(硬件),从Android4.0开始被TYPE_AMBIENT_TEMPERATURE取代

  安卓传感器参数

  传感器回调频率

  参数延迟时间

  SensorManager.SENSOR_DELAY_FASTEST0ms

  SensorManager.SENSOR_DELAY_GAME20ms

  SensorManager.SENSOR_DELAY_UI60ms

  SensorManager.SENSOR_DELAY_NORMAL200ms

  传感器返回值@link

  加速度感应检测——Accelerometer

  Accelerometer Sensor测量的是所有施加在设备上的力所产生的加速度的负值(包括重力加速度)。加速度所使用的单位是m/sec^2,数值是加速度的负值。

  SensorEvent.values[0]:加速度在X轴的负值

  SensorEvent.values[1]:加速度在Y轴的负值

  SensorEvent.values[2]:加速度在Z轴的负值

  例如:

  当手机Z轴朝上平放在桌面上,并且从左到右推动手机,此时X轴上的加速度是正数。

  当手机Z轴朝上静止放在桌面上,此时Z轴的加速度是+9.81m/sec^2。

  当手机从空中自由落体,此时加速度是0

  当手机向上以Am/sec^2的加速度向空中抛出,此时加速度是A+9.81m/sec^2

  重力加速度感应检测——Gravity

  重力加速度,其单位是m/sec^2,其坐标系与Accelerometer使用的一致。当手机静止时,gravity的值和Accelerometer的值是一致的。

  线性加速度感应检测——Linear-Acceleration

  Accelerometer、Gravity和Linear-Acceleration三者的关系如下公式:

  accelerometer = gravity +linear-acceleration

  地磁场感应检测——Magnetic-field

  地磁场的单位是micro-Tesla(uT),检测的是X、Y、Z轴上的绝对地磁场。

  陀螺仪感应检测——Gyroscope

  陀螺仪的单位是弧度/秒,测量的是物体分别围绕X,Y,Z轴旋转的角速度。它的坐标系与加速度传感器的坐标系相同。逆时针方向旋转的角度正的。也就是说,如果设备逆时针旋转,观察者向X,Y,Z轴的正方向看去,就报告设备是正转的。请注意,这是标准的正旋转的数学定义。

  光线感应检测——Light

  values[0]:表示环境光照的水平,单位是SI lux。

  位置逼近感应检测——Proximity

  values[0]:逼近的距离,单位是厘米(cm)。有一些传感器只能支持近和远两种状态,这种情况下,传感器必须报告它在远状态下的maximum_range值和在近状态下的小值。

  旋转矢量感应检测——Rotation Vector

  旋转向量是用来表示设备的方向,它是由角度和轴组成,就是设备围绕x,y,z轴之一旋转θ角度。旋转向量的三个要素是,这样旋转向量的大小等于sin(θ/2),旋转向量的方向等于旋转轴的方向。

  values[0]: x*sin(θ/2)

  values[1]: y*sin(θ/2)

  values[2]: z*sin(θ/2)

  values[3]: cos(θ/2) (optional: only ifvalue.length = 4)

  方向感应检测——Orientation

  其单位是角度

  values[0]: Azimuth(方位),地磁北方向与y轴的角度,围绕z轴旋转(0到359)。0=North,90=East, 180=South, 270=West

  values[1]: Pitch(俯仰),围绕X轴旋转(-180 to180), 当Z轴向Y轴运动时是正值

  values[2]: Roll(滚),围绕Y轴旋转(-90 to 90),当X轴向Z轴运动时是正值

  API:

  获取系统支持传感器类型 /** * 支持传感器列表 * http://blog.csdn.net/redoq/article/details/52515123 * https://zhidao.baidu.com/question/2205380242168742428.html * http://www.jianshu.com/p/4c141d851346 */ private void testSupportSensorList(){ SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); String sensorStr = “”; List《Sensor》 list = sensorManager.getSensorList(Sensor.TYPE_ALL); for (Sensor sensor:list){ sensorStr += sensor.getName() + “\n”; } XLog.i(sensorStr); sensorStr = “”; for (Sensor sensor:list){ switch (sensor.getType()){ case Sensor.TYPE_ACCELEROMETER: sensorStr += “加速度传感器” + “\n”; break; case Sensor.TYPE_MAGNETIC_FIELD: sensorStr += “磁场传感器” + “\n”; break; case Sensor.TYPE_ORIENTATION: sensorStr += “方向传感器” + “\n”; break; case Sensor.TYPE_GYROSCOPE: sensorStr += “陀螺仪传感器” + “\n”; break; case Sensor.TYPE_LIGHT: sensorStr += “光线传感器” + “\n”; break; case Sensor.TYPE_PRESSURE: sensorStr += “压力传感器” + “\n”; break; case Sensor.TYPE_PROXIMITY: sensorStr += “临近传感器” + “\n”; break; case Sensor.TYPE_GRAVITY: sensorStr += “重场传感器” + “\n”; break; case Sensor.TYPE_LINEAR_ACCELERATION: sensorStr += “线性加速度传感器” + “\n”; break; case Sensor.TYPE_ROTATION_VECTOR: sensorStr += “旋转矢量传感器” + “\n”; case Sensor.TYPE_RELATIVE_HUMIDITY: sensorStr += “湿度传感器” + “\n”; break; case Sensor.TYPE_AMBIENT_TEMPERATURE: sensorStr += “温度传感器” + “\n”; break; case Sensor.TYPE_TEMPERATURE: sensorStr += “温度传感器” + “\n”; break; } } XLog.i(sensorStr);}传感器使用步骤(通用)s1、使用传感器之前首先获取SensorManager通过系统服务获取:SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); s2、获取我们需要的传感器类型://单次有效计步Sensor mStepCount = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER);//系统计步累加值Sensor mStepDetector = mSensorManager.getDefaultSensor(Sensor.TYPE_STEP_DETECTOR); s3、注册监听者(监听传感器事件)mSensorManager.registerListener(this, mStepDetector, SensorManager.SENSOR_DELAY_FASTEST);mSensorManager.registerListener(this, mStepCount, SensorManager.SENSOR_DELAY_FASTEST); PS:取消注册:mSensorManager.unregisterListener(this, mStepDetector);mSensorManager.unregisterListener(this, mStepCount); s4、实现SensorEventListener接口,重写方法并获取数据@Overridepublic void onSensorChanged(SensorEvent event)

声明:本文为原创文章,如需转载,请注明来源学修网