[MSP430]/MSP430-S2013. 10. 27. 23:00

MSP430G2433 Capacitive-touch I/O 터치센서 그래프 표시 예제

MSP430G2433 Capacitive-touch I/O  터치센서 그래프 표시 예제





MSP430G 시리즈는 Cap touch I/O 모듈을 이용하여 저렴한 터치 센서 솔루션을 제공한다.

정전용량 터치센서는 PCB환경(구조, 크기, 노드간 간격, 재질등)에 따라 값을 보정해 주어야 한다. 특히 터치 부분에 아크릴이나 스티커 등을 붙이면 전체 설정값이 변경되므로 각 센서별 설정이 필요하다.

터치센싱 값을 그래프로 표시하면 감도를 눈으로 보면서 편리하게 설정할수 있다.



정전용량 터치및 스위치를 테스트 할 수 있는 SW_BD 를 이용하여 정전용량 터치센서 값을 그래프로 출력하는 테스트를 해보았다.

코드는 MSP430G2433 Cap touch I/O 터치센서 테스트 예제코드를 수정하여 테스트 하였다.




터치 센서에 접촉되는 면적(손가락의 터치 감도)에 따라 센싱값이 변경되는 것을 확인할수 있다.


Posted by nexp

댓글을 달아 주세요

[MSP430]/MSP430-S2013. 8. 11. 23:00

MSP430G2553 Cap touch I/O 터치센서 테스트

MSP430G2553 Cap touch I/O 터치센서 테스트




MSP430G2553의 특징은 저전력에 24채널의 CAP Touch I/O를 가지고 있어 터치센서 솔루션으로 적합하다.

Cap touch I/O를 이용하여 터치센서 스위치를 테스트 하는 예제를 작성해 보았다. 기존 사용했던 터치센서 솔루션중에는 가장 감도도 좋고 사용하기 편리한것 같다.



MSP430G2553에는 아래와 같이 Pin Oscillator 모듈이 하드웨어 적으로 존재하기 때문에 소프트웨어 부담없이 터치센서를 구현할 수 있다. 당연히 저전력으로 구동된다.





MSP430G2253에는  24채널(P1, P3)의 CAP IO가 있고 PxSEL, PxSEL2 레지스터를 이용하여 Cap Touch IO로 설정할수 ㅇ






MSP430F2553 Cap touch I/O 터치센서 테스트 동영상

MSP430G2253을 이용하여 터치센서를 인식할때 마다 LED를 토글하는 간단한 예제를 작성해 보았다.






터치센서 파라미터 설정 코드

터치센서로 이용할 핀 설정 및 각종 초기 파라미터값을 설정할수 있다.

const struct Element Totuch_E1 = {


              .inputPxselRegister = (uint8_t *)&P3SEL,  

              .inputPxsel2Register = (uint8_t *)&P3SEL2,  

              .inputBits = BIT0,

              // When using an abstracted function to measure the element

              // the 100*(maxResponse - threshold) < 0xFFFF

              // ie maxResponse - threshold < 655

              .maxResponse = 655,

              .threshold = 400

};



const struct Sensor Touch_Button1 =

               { 

                  .halDefinition = RO_PINOSC_TA0_WDTp,

                  .numElements = 1,

                  .baseOffset = 4,

                  // Pointer to elements

                  .arrayPtr[0] = &Totuch_E1,  // point to first element

                  // Timer Information

                  .measGateSource= GATE_WDT_SMCLK,     //  0->SMCLK, 1-> ACLK

                  //.accumulationCycles= WDTp_GATE_32768             //32768

                  .accumulationCycles= WDTp_GATE_8192               // 8192

                  //.accumulationCycles= WDTp_GATE_512             //512

                  //.accumulationCycles= WDTp_GATE_64             //64                  

               };



터치센서 처리 코드

터치 인식을 하였을 경우 처리하는 함수

void CapTouchActiveMode()

{

    unsigned char idleCounter, activeCounter;

    unsigned char centerButtonTouched[4] = {0,};


    idleCounter = 0;      

    activeCounter = 0;

  

    while (idleCounter++ < MAX_IDLE_TIME)

    {  

         if(TI_CAPT_Button(&Touch_Button1))

        { 

            // Middle button was touched  

            if (centerButtonTouched[0]==0)

            {


                centerButtonTouched[0] = 1;

                Led1Toggle();

                Tbi(PORT1, BIT0);

                

                DebugPrint("S1\r\n");

            }

            idleCounter = 0;

        }

        else    

        { 

            centerButtonTouched[0] = 0;

        }


   :

}



MSP430F2553 Cap touch I/O 테스트 소스코드

void main(void)

{   

    SystemInit();

    

Led1Init();

Led2Init();

//Touch GPIO설정

Sbi(P1DIR, BIT0|BIT3);

Cbi(PORT1, BIT0|BIT3);

Sbi(P2DIR, BIT0|BIT1);

Cbi(PORT2, BIT0|BIT1);

    

//초기값 측정

MeasureCapBaseLine();


//MSP430G 시리얼 포트 초기화

DebugInit(BAUD_115200);

DebugPrint("MSP430G EVM Touch Test Program.\r\n");

while (1)

{

//터치센서 처리

CapTouchActiveMode();

}

}


Posted by nexp

댓글을 달아 주세요