'자이로센서'에 해당되는 글 2건

  1. 2013.05.18 MSP430FR5739 EVM - 6축 가속도 자이로 센서 테스트
  2. 2012.09.10 [L3G4200D] 3축 자이로센서 테스트
[MSP430]/MSP430_FRAM2013. 5. 18. 22:30

MSP430FR5739 EVM - 6축 가속도 자이로 센서 테스트

MSP430FR5739 EVM - 6축 가속도 자이로 센서 테스트

 

 

 

MSP430FR5739는 FRAM기반의 저전력 MCU로 1조번의 기록에도 문제가 없다고 하니 데이터 기록이 빈번한 센서 데이터 로깅 시스템에 적용하면 좋다.

따라서 MSP430F5739를 이용하여 6축 가속도, 자이로 센서 데이터 로깅 시스템을 테스트 해 보았다.

 

 

테스트를 위해 [NET-EVM] 보드를 이용하였고 센서는 6축 SD746을 이용했다. 6축 자이로, 가속도 센서는 SPI방식으로 제어하고 CS는 A_8번 커넥터인 P3.7에 연결되어 있다.

 

 

 

 

MSP430FR5739 SD746제어 HAL 드라이버 코드

주의 사항은 SD746과 통신을 위해  SPI모드를 1으로 설정해야 정상 동작 한다.

 //-----------------------------------------------------------------------------
#define _SPI1_ENABLE    1

 

//USCIA1 for MSP430FR5739
#define _SPI1_PxSEL   P2SEL0
#define _SPI1_PxSEL1   P2SEL1
#define _SPI1_PxDIR   P2DIR
#define _SPI1_PxIN    P2IN

#define _SPI1_SIMO    BIT5
#define _SPI1_SOMI    BIT6
#define _SPI1_UCLK    BIT4

 

#define MY_SD746_SPI_MODE   1

#define ACCEL_CS_INIT()    Sbi(P3DIR, BIT7)
#define ACCEL_CS_ASSERT()   Cbi(P3OUT, BIT7)
#define ACCEL_CS_DEASSERT()   Sbi(P3OUT, BIT7)

#define MYSD746_SPI_INIT()   SPI1_Init();SPI1_SetMode(_SPI_MODE1)
#define ACCEL_Read     SPI1_WriteReadByte
#define ACCEL_Write     SPI1_WriteReadByte
//-----------------------------------------------------------------------------

 

 

 

MSP430FR5739 6축 가속도 자이로 센서 테스트 동영상

 

 

 

6축 가속도, 자이로 센서 데이터를 MSP430FR5739의 FRAM영역에 저장하고 확인을 위해 시리얼 포트로 전송하여 그래프로 표시 했다. 

Posted by nexp

댓글을 달아 주세요

[SENSOR]/Gyro2012. 9. 10. 00:24

[L3G4200D] 3축 자이로센서 테스트

[L3G4200D] 3축 자이로센서 테스트

 

 

 

 

 

L3G4200_DS.pdf

 

 - Three selectable full scales (250/500/2000 dps)
 - I2C/SPI digital output interface
 - 16 bit-rate value data output
 - 8-bit temperature data output

 

 

L3G4200D 블록도

 

 

 

 

 

 

 

 

//L3G4200D의 특정 레지스터 값을 읽음
unsigned char L3G4200_Read(unsigned char reg)

#ifdef L3GI2C_I2C_MODE
    // device address 및 write mode 설정
    L3GI2C_START(L3G4200D_SLAVE_ADDR + I2C_WRITE);
    if (len > 1)
        L3GI2C_WRITE(addr | L3G4200D_READ_MULTIPLE);
    else
        L3GI2C_WRITE(addr);

    // read로 전환해서 REPEATED START
    L3GI2C_START(L3G4200D_SLAVE_ADDR + I2C_READ);
    while(--len > 0)
    {
        *data++ = L3GI2C_READ_ACK();
    }
    *data = L3GI2C_READ_NAK();
    L3GI2C_STOP();
#endif


}

 

 

//L3G4200D의 특정 레지스터에 데이터를 기록
void L3G4200_Write(unsigned char reg, unsigned char data)
{
#ifdef L3GI2C_I2C_MODE
 L3GI2C_START(L3G4200D_SLAVE_ADDR+I2C_WRITE);     // device address 및 write mode 설정
 
    L3GI2C_WRITE(addr);
    while(len--)
        L3GI2C_WRITE(*data++);
    L3GI2C_STOP();
#endif
}

 

 

 

L3G4200D 자이로센서 테스트 동영상

자이로 센서의 각속도값을 적분하여 절대 위치를 표시하도록 해 보았다. 이번 테스트에는 샘플레이트가 높지 않고, 센서 자체에 드리프트가 있기 때문에 고속으로 움직이면 누적 오차가 발생하는 것을 볼수 있는데... 그렇다고 해도 다른 자이로 센서보다는 아주 안정적인것 같다.

 

 

 

 

Posted by nexp

댓글을 달아 주세요