所有关于电路
项目

Arduino读取传感器

2015年6月18日通过蒂姆血性小子

Arduino可以轻松获取传感器值,这是它如此有用的特点之一。

Arduino可以轻松获取传感器值,这是它如此有用的特点之一。

传感器是一种将物理量(如光强或温度)转换为电量的设备。例如,热电偶输出的电压与它的温度成正比。有许多不同类型的传感器:

  • 光传感器
  • 运动传感器
  • 温度传感器
  • 磁场传感器
  • 重力传感器
  • 湿度传感器
  • 湿敏元件
  • 振动传感器
  • 压力传感器
  • 电场传感器
  • 声音传感器
  • 位置传感器

这些传感器被用于数千种不同的应用,包括制造、机械、航空航天、汽车、医药和机器人。

实验1:距离传感器

在本实验中,我们将使用锐利的GP2Y0A21YK接近传感器来控制LED的亮度。

锋利的红外传感器
锋利的红外传感器

硬件要求

  • 1 x Arduino Mega2560
  • 1 x电路试验板
  • 1 x领导
  • 5 ×跳线
  • 1 × 470欧姆电阻器
  • 1个锐利的GP2Y0A21YK接近传感器


接线图

线路图
线路图

这种锐利的近距离传感器可以探测到近10厘米和远80厘米的物体。它会发出红外线脉冲,然后检测出光线反射的角度。物体越远,输出电压越低。如果传感器没有接收到反射,则传感器的输出电压为0v。如果物体是10厘米或更近,输出电压将等于5V(在这个实验中,我们给传感器供电5V)。

传感器的输出连接到Arduino模拟输入。然后Arduino的模数转换器(ADC)将该值转换为0到1023之间的值。然后,这个值被映射到0到255之间的值,这个值被用来设置脉宽调制输出的占空比,控制LED的亮度。其结果是,物体离接近传感器越近,LED就会发出越亮的光。

实验1代码

const int pwm = 2;//初始化pwm引脚常量int adc = A0;//初始化adc void setup() {pinMode(pwm,OUTPUT);//改变LED亮度}void loop() {int sensor_val = analog (adc);sensor_val = map(sensor_val, 0, 1023, 0, 255);/* -----------map function ------------以上函数对adc的输出进行缩放,adc的输出为10位,输出值为0 ~ 1023,输出值为0 ~ 255,形成analogWrite函数,只接收这个范围内的值。* / analogWrite (pwm sensor_val);//设置传感器值为pwm}

Reading_Sensors_With_Arduino.zip

实验二:热传感器

在这个实验中,Arduino将测量温度使用一个LM35传感器IC。LM35是一个低电压IC,它需要一个电源从+4 VDC到+20 VDC。这是理想的,因为我们可以用Arduino的+ 5v输出为传感器供电。LM35只有3个引脚,2为电源和1为模拟输出。输出引脚提供模拟电压输出,与温度c成线性比例。输出范围为0 V - 1.5 V,单电源供电。输出0v对应于温度为0℃,温度每升高一度输出增加10mv。要将输出电压转换为温度,只需将输出电压(mV)除以10。例如输出值为315mv (0.315 V),则温度为31.5℃。


LM35 IC的引脚配置:

销的配置


销的配置

硬件要求

  • 1 x LM35温度传感器
  • 2 x发光二极管
  • 1 x火柴盒
  • 2个470欧姆电阻
  • 1 x Arduino Mega2560
  • 1 x电路试验板
  • 10 x跳线


接线图

线路图
线路图

实验2代码

LM35的输出引脚(引脚2)连接到Arduino的A0。该代码使用函数analogRead()将输出电压转换为0到1023之间的数字。将这个数字乘以0.48828125将该值转换为摄氏度,然后在串行监视器上显示:

const int adc = 0;//模拟输入端命名引脚0为adc常量int high = 8;//打开和关闭黄色LED const int low = 9;//打开和关闭绿色LED void setup() {Serial.begin(9600);//启动串口通讯,波特率为9600//声明LED引脚为输出} void loop() {int adc = analogRead(0);//读取模拟电压并将其存储在一个整数adc = adc * 0.48828125;//将读数转换为摄氏串行。打印("温度= ");//在串行监视器上显示串行.print(adc); //Temperature reading Serial.print("*C"); //TEMPRATURE = 27*C ETC Serial.println(); //To end the line delay(1000); //1 Sec delay /* LOGIC: if (temperature (adc) > 70 ° C ) turn on Yellow Leds turn off Green Leds else turn off Yellow Leds turn on Green Led */ if(adc>70) // This is the control statement { digitalWrite(high,HIGH) ; digitalWrite(low,LOW) ; } else { digitalWrite(high,LOW) ; digitalWrite(low,HIGH) ; }

Reading_Sensors_With_Arduino2.zip

视频

自己尝试一下这个项目吧!BOM。