风筝
发表于: 2018-8-14 17:27:39 | 显示全部楼层

Arduino开发板可以轻松获取各类传感器的值,这是其非常有用的功能之一。


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

●    光照传感器(Light  sensor)

●    运动传感器(Motion  sensor)

●    温度感应器(Temperature  sensor)

●    磁力传感器(Magnetic fields  sensor)

●    重力传感器(Gravity  sensor)

●    湿度传感器(Humidity  sensor)

●    振动传感器(Vibration  sensor)

●    压力传感器(Pressure  sensor)

●    电场传感器(Electrical fields sensor)

●    声音传感器(Sound sensor)

●    位置传感器(Position sensor)

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


实验1:距离传感器

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

sensors1.png

需要的硬件

●    Arduino Mega2560开发板

●    面包板

●    LED指示灯

●    连接导线

●    470欧姆电阻

●    Sharp GP2Y0A21YK接近传感器


接线图

arduino_proximity.jpg

夏普接近传感器可以检测最近10厘米、最远80厘米的物体。它发出红外光脉冲,然后检测光线反射的角度。物体越远,输出电压越低。如果传感器没有反射,则传感器的输出电压将为0 V。如果物体为10 cm或更近,输出电压将等于5 V.(在本实验中,我们向传感器提供5V电压。 )


传感器的输出连接到Arduino模拟输入。然后,Arduino的模数转换器(ADC)将该值转换为0到1023之间的值。然后将该值映射到0到25​​5之间的值,该值用于设置脉冲的占空比 - 宽度调制输出,控制LED的亮度。结果是物体离接近传感器越近,LED就越亮。


实验代码1

  1. const int pwm = 2  ;  //Initializing Pin for pwm
  2. const int adc = A0 ;  //Initializing Pin for adc


  3. void setup()
  4. {
  5. pinMode(pwm,OUTPUT) ;  // To change LED brightness  
  6. }
  7. void loop()
  8. {
  9.   int sensor_val = analogRead(adc) ;
  10.   sensor_val = map(sensor_val, 0, 1023, 0, 255) ;
  11.   
  12. /*
  13.    -----------map funtion------------
  14.    The above funtion scales the output of adc,which is
  15.    10 bit and gives values btw 0 to 1023, in values btw
  16.    0 to 255 form analogWrite funtion which only recieves
  17.    values btw this range.
  18. */

  19.   analogWrite(pwm,sensor_val) ; // setting sensor value as pwm

  20. }
复制代码

实验2:温度传感器

在这个实验中,Arduino将使用LM35传感器IC测量温度。 LM35是低压IC,需要+4 VDC至+20 VDC的电源。我们可以使用Arduino的+5 V输出为传感器供电。 LM35只有3个引脚,2个用于电源,1个用于模拟输出。输出引脚提供的模拟电压输出与摄氏温度成线性比例。当使用单电源供电时,输出范围为0 V - 1.5V。0V的输出对应于0℃的温度,并且对于温度的每度增加,输出增加10mV。要将输出电压转换为温度,只需将输出电压除以mV为10。例如,如果输出值等于315 mV(0.315 V),则温度为31.5°C。


LM35的引脚配置:

LM-35-arduino-temperature.jpg


需要的硬件

●   LM35温度传感器

●   LED指示灯

●   火柴盒

●   470欧姆电阻器

●   Arduino Mega2560开发板

●   面包板

●   连接导线


接线图

arduino_lm_35.jpg


实验代码2

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

  1. const int adc = 0 ; //naming pin 0 of analog input side as adc
  2. const int high = 8 ; // For turning on and off yellow LED
  3. const int low = 9 ; // For turning on and off Green LED
  4. void setup()
  5. {
  6. Serial.begin(9600) ; //Starting serial Communication at baud rate of 9600
  7. pinMode(high,OUTPUT); //declaring LED pins as OUTPUT
  8. pinMode(low,OUTPUT);
  9. }
  10. void loop()
  11. {
  12. int adc = analogRead(0) ; //reading analog voltage and storing it in an integer
  13. adc = adc * 0.48828125; //converting reading into Celsius
  14. Serial.print("TEMPRATURE = "); //to Display on serial monitor
  15. Serial.print(adc); //Temperature reading
  16. Serial.print("*C"); //TEMPRATURE = 27*C ETC
  17. Serial.println(); //To end the line
  18. delay(1000); //1 Sec delay
  19. /*
  20. LOGIC:
  21. if (temperature (adc) > 70 ° C )
  22. turn on Yellow Leds
  23. turn off Green Leds
  24. else
  25. turn off Yellow Leds
  26. turn on Green Led
  27. */
  28. if(adc>70) // This is the control statement
  29. {
  30. digitalWrite(high,HIGH) ;
  31. digitalWrite(low,LOW) ;
  32. }
  33. else
  34. {
  35. digitalWrite(high,LOW) ;
  36. digitalWrite(low,HIGH) ;
  37. }
复制代码

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 714 | 回复: 1501



手机版|

GMT+8, 2024-12-22 15:15 , Processed in 0.041977 second(s), 9 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表