[INTERFACE]/ESP82662017. 9. 7. 04:44

ESP8266 SPI 테스트 - MAX31855 를 이용한 써모 커플 온도 읽기

ESP8266 SPI 테스트 - MAX31855 를 이용한 써모 커플 온도 읽기



[ESP8266-SSM EVM] 보드의 SPI포트는 IO12~IO14에 할당 되어 있다. Arduino Code 이므로 라이브러리 함수를 사용하면 쉽게 출력 할수 있다.








SPI 방식의 MAX31855 온도 센서 모듈을 이용하여 온도 값을 읽어 오는 예제를 테스트 해 보았다.

MAX31855 온도 센서 모듈은 SSM-EVM Type 핀맵에 호환되고 SSM-EVM 확장 테스트 보드에 연결하면 쉽게 테스트 가능하다.


MAX31855를 테스트 하기 위해 기존 SPI 코드를 이용해도 되지만 Ardino 예제를 이용해 보고 싶어서  Arduino 라이브러리를 검색해서 추가 하였다.



기본 제공 예제를 이용하면 써모커플의 온도 값을 가져오는 것을 확인 할 수 있다.

#include <MAX31855.h> // Include MAX31855 Sensor library

/*******************************************************************************************************************

** Declare all program constants                                                                                  **

*******************************************************************************************************************/

const uint32_t SERIAL_SPEED     = 115200; ///< Set the baud rate for Serial I/O

const uint8_t  SPI_CHIP_SELECT  =      15; ///< Chip-Select PIN for SPI

const uint8_t  SPI_MISO         =   MISO; ///< Master-In, Slave-Out PIN for SPI

const uint8_t  SPI_SYSTEM_CLOCK =    SCK; ///< System Clock PIN for SPI


/*******************************************************************************************************************

** Declare global variables and instantiate classes                                                               **

*******************************************************************************************************************/

MAX31855_Class MAX31855; ///< Create an instance of MAX31855


/***************************************************************************************************************//*!

* @brief    Arduino method called once at startup to initialize the system

* @details  This is an Arduino IDE method which is called first upon boot or restart. It is only called one time

*           and then control goes to the main "loop()" method, from which control never returns

* @return   void

*******************************************************************************************************************/

void setup()

{

  Serial.begin(SERIAL_SPEED);

  #ifdef  __AVR_ATmega32U4__  // If this is a 32U4 processor, then wait 3 seconds for the interface to initialize

    delay(3000);

  #endif

  Serial.println(F("Starting software SPI demo program for MAX31855"));

  Serial.print(F("Initializing MAX31855 sensor\n"));

  /********************************************************************************************

  ** Uncomment out either the hardware or software SPI call, depending upon which is in use  **

  ********************************************************************************************/

  while (!MAX31855.begin(SPI_CHIP_SELECT))                            // Hardware SPI for MAX31855

//while (!MAX31855.begin(SPI_CHIP_SELECT,SPI_MISO,SPI_SYSTSEM_CLOCK)) // Software SPI for MAX31855

  {

    Serial.println(F("Unable to start MAX31855. Waiting 3 seconds."));

    delay(3000);

  } // of loop until device is located

 Serial.println();

} // of method setup()


/***************************************************************************************************************//*!

* @brief    Arduino method for the main program loop

* @details  This is the main program for the Arduino IDE, it is an infinite loop and keeps on repeating.

* @return   void

*******************************************************************************************************************/

void loop()

{

  int32_t ambientTemperature = MAX31855.readAmbient(); // retrieve MAX31855 die ambient temperature

  int32_t probeTemperature   = MAX31855.readProbe();   // retrieve thermocouple probe temp

  uint8_t faultCode          = MAX31855.fault();       // retrieve any error codes

  if ( faultCode )                                     // Display error code if present

  {

    Serial.print("Fault code ");

    Serial.print(faultCode);

    Serial.println(" returned.");

  }

  else

  {

    Serial.print("Ambient Temperature is ");

    Serial.print((float)ambientTemperature/1000,3);

    Serial.println("\xC2\xB0""C");

    Serial.print("Probe Temperature is   ");

    Serial.print((float)probeTemperature/1000,3);

    Serial.println("\xC2\xB0""C\n");

  } // of if-then-else an error occurred

  delay(5000);

} // of method loop()




실행하면 MAX31855에 연결된 써모커플의 온도 값을 읽어오는 것을 확인 할 수 있다.



Posted by nexp

댓글을 달아 주세요