第十三课--制作感温杯电路/zh
目的
为了加深对LM35温度传感器以及AD采样的的理解,本课结合LM35做个模拟的感温杯。
设备
Microduino-CoreSTM32小巧精悍,其内核来自于ARM公司具有突破性的Cortex-M3内核的32位闪存微控制器。该内核是专门设计于满足集高性能、低功耗、实时应用、具有竞争性价格于一体的嵌入式领域的要求。
- 其他硬件设备
- 面包板跳线 一盒
- 面包板 一块
- LM35D温度传感器 一个
- RGB led灯 一个
- 470欧电阻 一个
原理图
RGB LED灯能够显示红绿蓝三种颜色,有共阳极和共阴极之分,本课采用的是共阳极的RGB LED灯,也就是下图所示的公共端接正极,其它三个引脚接负极。
下图为本课的原理图,LM35接法不变,RGB LED灯的公共端通过电阻接到Microduino-CoreSTM32/zh的Vcc引脚,绿、蓝、红引脚分别接在Microduino-CoreSTM32/zh的D2、D3、D4引脚。
程序
int A0=14; //temperature sensor connected to pin 14
void setup()
{
pinMode(A0,INPUT_ANALOG); //set up pin for ananlog input
pinMode(2,OUTPUT); //green light pin
pinMode(3,OUTPUT); //blue light pin
pinMode(4,OUTPUT); //red light pin
SerialUSB.begin();
}
void loop()
{
int n= analogRead(A0); // read the input pin
float temperature = n * (5.0/4096.0*100); //convert ADC reading (12 bits) to temperature
if(temperature<21) // Low temperature zone
{
digitalWrite(2,LOW); //green light is on
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
}
else if((temperature>=21)&&(temperature<=23)) //medium temperature zone
{
digitalWrite(2,HIGH);
digitalWrite(3,LOW); //blue light is on
digitalWrite(4,HIGH);
}
else if(temperature>23)//High temperature zone
{
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);//red light is on
}
SerialUSB.println( temperature); // print the temperature value
delay(1000);
}
温度设置了低温,中温,高温三个区,指示灯分别是绿、蓝、红。
调试
步骤一:按照实验原理图连接好电路图。
步骤二:复制代码到Maple IDE中编译。
步骤三:下载程序代码。
步骤四:改变传感器周围的温度,观察REG LED等的状态。可以通过手握住LM35温度传感器来升温,通过在LM35附近放一装有凉水的凉水杯来降温。
结果
- 首先温度稳定在20度左右,RGB LED灯为绿色。
- 用手握住LM35传感器后,RGB LED灯不断有绿色变为蓝色,然后由蓝色转为红色,最后最后稳定在红色。
- 松开手,REG LED等慢慢由红色变为蓝色,然后由蓝色变为绿色,最后稳定在绿色。