본문 바로가기

[MSP430]/MSP430i

MSP430i - SD24 내장 온도센서 테스트 (휴대폰 블루투스를 이용한 온도 그래프표시)

MSP430i - SD24 내장 온도센서 테스트 (휴대폰 블루투스를 이용한 온도 그래프표시)





MSP430i 시리즈는 저가격의 스마트 미터링 분야에 적용하기 좋은 MCU이다. 

이러한 특징에 맞게 MSP430i2041과 블루투스를 이용하여 온도를 측정 하고 스마트폰으로 확인할 수 있는 예제를 작성해 보았다.


MSP430i 시리즈에는 자체 내부 온도 센서가 내장되어 있다. 이를 이용하면 좀더 간단하게 온도 데이터를 획득할 수 있다.



MSP430 내부 온도 센서 특성 그래프



  Vsensor = 1.32mV * DegK + Vsensor_offset (assuming 0mv for offset)

  Vsensor = (SD24MEM0)/32767 * Vref(mV)


  DegK = (SD24MEM0 * 1200)/32767/2.158 = (SD24MEM0 * 1200)/70711

  DegC =  DegK - 273

  DegF = (DegC * 9/5) + 32





MSP430 내부 온도 센서 초기화 코드

A0.6+           A0.6-




void ADC_Init(void)

{

    SD24CTL = SD24REFS;                         // Internal ref

    SD24CCTL0  |= SD24SNGL | SD24DF | SD24IE;   // Enable interrupt

    SD24INCTL0 |= SD24INCH_6;                   // Internal temp sensor

}





MSP430i 온도센서 테스트 동영상

MSP430i 내장온도센서의 온도데이터를 블루투스를 통해 스마트폰으로 전송하고 그래프로 표시하는 테스트





MSP430i SD24 내장 온도센서 테스트 코드
void main(void)
{
unsigned int cnt = 0;
    SystemInit();

Led1Init();
Led1On();

U0_Init(BAUD_57600);
DebugPrint("MSP430 ADC Test\r\n");
    
    
    ADC_Init();

        
    __delay_cycles(3200);                          // Delay ~200us for 1.2V ref to settle

    while(1) {
        SD24CCTL0 |= SD24SC;                    // Set bit to start conversion
        __bis_SR_register(LPM0_bits | GIE);     // Enter LPM0 w/ interrupts
        __no_operation();                       // For debugger

        // Calculate Temperatures in different scales
        results[1] = ((unsigned long)results[0] * 1200)/70711;
        results[2] = results[1] - 273 + TEMP_OFFSET;
        DebugPrint("%d\n", results[2]);
        Delay(1000); 
        __no_operation();                       // SET BREAKPOINT HERE
    }
}



반응형