profile image

L o a d i n g . . .

 

  안녕하세요. 이번 챕터에서는 아날로그 디바이스(Analog Device)에서 제조하고 판매하는 TMP36 온도센서를 사용해 보도록 하겠습니다. 본 챕터에서는 .NET MF 4.2 기반의 넷두이노에서 아날로그 데이터를 읽어오는 과정을 설명하게 됩니다.

⊙ 준비물

  • 넷두이노
  • TMP36 온도센서
  • 전선

 TMP36의 스펙

  TMP36은 정밀도가 높진 않지만 일반적으로 무난하게 사용할 수 있는 온도센서 입니다. 우선 스펙을 보시겠습니다.

  뭔가 많아서 어지러우신가요?? ㅠㅠ 많네요... 쓸데없는거 다 치우고 필요한것만 보도록 합시다.

  동작 환경운 2.7v에서 5.5v 사이, 온도는 -40도에서 +125도까지 측정이 가능하네요 ~

 전선 작업

 

  넷두이노는 5v의 출력을 지원하지만 본 챕터에서는 3.3v를 사용합니다. ARM기반 마이크로 프로세서는 디지털 또는 아날로그 입력이 3.3v로 동작하기 때문입니다. (넷두이노 <-(3.3v 신호) -> 센서)

 코딩 하기

  먼저 메인문에서 아날로그 0번 핀을 선언해야 합니다.

// .NET Micro Framework 4.2 에서의 아날로그 선언
AnalogInput input = new AnalogInput(AnalogChannels.ANALOG_PIN_A0);

  .NET MF 4.1에서는 아날로그핀 선언이 AnalogInput input = new AnalogInput(Pins.GPIO_PIN_A0); 라는 형태였으나 .NET MF 4.2에서는 위의 형태로 변경되었습니다.
  제가 쓰고 있는 넷두이노는 .NET MF 4.2로 업그레이드 된 상태이기 때문에 위 소스로 선언하였습니다. 참고하시길 바랍니다 ~~

그리고 값을 읽어들이는 부분과 계산, 출력하는 부분을 작성합니다.

while (true)
{
	// TMP36의 아날로그 출력핀 0번으로부터 데이터를 읽어온다.
	int read = input.ReadRaw(); //  -> .NET MF 4.2

	// 읽어온 값을 전압으로 변환한다. (읽어온 값 * 입력 전압 3.3v / 10비트 분해능)
	Double voltage = read * 3.3 / 1024;

	// 변환된 전압을 섭씨(C)로 변환한다.
	Double tempC = (voltage - 0.5) * 100;

	// 변환된 전압을 화씨(F)로 변환한다. 
	Double tempF = (tempC * 9 / 5) + 32;

	// 콘솔에 출력한다.
	Debug.Print("화씨온도: " + tempF + "F -- 섭씨온도: " + tempC + "C");

	// 1초에 한번씩 출력한다.
	Thread.Sleep(1000);
}

  위와 마찬가지로 .NET MF 4.1 에서는 아날로그 데이터를 읽어들이는 함수가 Read(); 이었으나, .NET MF 4.2에서는 ReadRaw(); 로 변경되었습니다. 참고하세요 ~

 작동 영상

 

 

 소스 코드

using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using SecretLabs.NETMF.Hardware;
using SecretLabs.NETMF.Hardware.Netduino;

namespace Netduino_TMP36
{
    public class Program
    {
        public static void Main()
        {
            // AnalogInput input = new AnalogInput(Pins.GPIO_PIN_A0);   -> .NET Micro Framework 4.1 에서의 아날로그핀 선언
            AnalogInput input = new AnalogInput(AnalogChannels.ANALOG_PIN_A0);  // -> .NET Micro Framework 4.2 에서의 아날로그핀 선언
            
            while (true)
            {
                // TMP36의 아날로그 출력핀으로부터 데이터를 읽어온다.
                // int read = input.Read();     -> .NET MF 4.1
                int read = input.ReadRaw(); //  -> .NET MF 4.2

                // 읽어온 값을 전압으로 변환한다. (입력 전압 3.3v)
                Double voltage = read * 3.3 / 1024;

                // 변환된 전압을 섭씨(C)로 변환한다.
                Double tempC = (voltage - 0.5) * 100;

                // 변환된 전압을 화씨(F)로 변환한다. 
                Double tempF = (tempC * 9 / 5) + 32;

                // 콘솔에 출력한다.
                Debug.Print("화씨온도: " + tempF + "F -- 섭씨온도: " + tempC + "C");

                // 1초에 한번씩 출력한다.
                Thread.Sleep(1000);
            }
        }
    }
}
[Need a translation?]

English Korean Japanese Chinese (Simplified) Chinese (Traditional) French German Russian Spanish Ukrainian


복사했습니다!