[SENSOR]/Accel2010. 8. 30. 18:45

[LIS331DLH] 가속도센서 테스트

[LIS331DLH] 가속도센서 테스트

ST사의 고해상도 3축 가속도 센서 LIS331DLH를 테스트 했다. 대략적인 특징은 아래와 같다.
- I2C/SPI digital output interface
- 16 bit data output
- 10000 g high shock survivability
- 2 independent programmable interrupt generators for free-fall and motion detection
- Sleep to wake-up function
- 6D orientation detection


LIS331 회로도



기존 작성되어 있던 LIS3LV02 소스코드로 테스트 했는데... 정상동작을 하지 않는다. 매뉴얼상으로는 크게 변경된것은 없는것 같은데..
3x3mm의 워낙 작은 칩이라 손땜의 문제가 아닐가 몇번을 땜을 했는데 잘 동작을 하지 않는다.


문제는 I2C Address 설정에 문제가 있었다. LIS331의 경우 뒤의 파트에 따라서 데이터 시트도 다르고 Address도 달랐다. LIS331DLH는  Address가 하드웨어 설정에 따라 32h, 30h가 된다. LIS331 데이터 시트에는 39h, 3ah로 나와 있다.





Posted by nexp

댓글을 달아 주세요

[SENSOR]/Accel2008. 11. 4. 20:36

가속도 센서를 이용하여 기울기 측정에 관련 자료

가속도 센서를 이용하여 기울기 측정에 관련 자료


1축 센서를 이용하면 -45 도 에서 45도 까지는 사용 가능하나 그이상은 Sensitivity가 떨어지고 중앙 기준의 기울어진 방방향을 알수가 없다. 2축 이상을 이용하면 두개축이 기울어진 각도를 조합하여 Sensitivity가 일정하며 각도의 방향성도 알수 있다.

Posted by nexp

댓글을 달아 주세요

[SENSOR]/Accel2008. 9. 8. 06:15

[LIS3LV02DL] 3축 가속도 센서 myAccel3LV02 모듈 테스트

[LIS3LV02DL] 3축 가속도 센서 myAccel3LV02 모듈 테스트

사용자 삽입 이미지

[LIS3LV02DL] 3축 가속도센서 (myAccel3LV02 모듈)을 이용하여 SPI방식의 제어 테스트.

LIS3LV02는 SPI, I2C구동이 가능하고, SPI구동을 위해 CS핀을 0으로 하면 된다.

제어 방법은 상당히 간단하며, 초기화 후 각 축의 레지스터에서 값을 읽어오기만 하면 된다.

초기화
디폴트 값이 파워다운 모드 이므로 CTRL_REG1레지스터에 초기 값을 쓰면 된다.
WriteReg(CTRL_REG1, 0xC7);  //1000.0111 Power on, enable all axis, self test off

X, Y,Z축 데이터 읽기
OUTX_L, OUTX_H 레지스터에서 값을 읽어오면 된다. 이때 각축의 데이터 값이 의미 있는 값인지는 STATUS_REG레지스터를 읽어 확인 할 수있다.

    //속도가 문제라면 이부분을 지우고 RDY핀을 GPIO로 읽으면된다.
    while(1)
    {
      ret = ReadReg(STATUS_REG);
      if ((ret & 0x8) != 0)break;
    }

   *data = ReadReg(OUTX_L);
   *data |= ReadReg(OUTX_H)<<8;

SPI인터페이스의 경우 SPI Mode0 로 인터페이스 가능하다.



LIS3LV02축방향 정보



테스트 동영상
가속도센서의 x축 데이터를 읽어서 그래프로 표시 하는 예제



[STM32-USB EVM]을 이용한 가속도 센서(LIS3LV02) 테스트 동영상



AVR쪽 커넥터 처리
왼쪽 부터 GND, PB0, BP1, PB2, PB3, ... VCC
Posted by nexp

댓글을 달아 주세요

  1. 최병무

    관리자의 승인을 기다리고 있는 댓글입니다

    2011.04.07 18:45 [ ADDR : EDIT/ DEL : REPLY ]
  2. 비밀댓글입니다

    2011.12.22 14:57 [ ADDR : EDIT/ DEL : REPLY ]

[SENSOR]/Accel2008. 9. 5. 06:56

[LIS3LV02DL] 3축 가속도 센서 관련 자료

[LIS3LV02DL] 3축 가속도 센서 관련 자료

LIS3LV02DL은 디지털 인터페이스 SPI와 I2C를 선택 할 수 있는 3축 가속도 센서이다. 센서의 가동부는 MEMS 기술로 실리콘을 가공, 제작되었다. 회로 부분은 CMOS 기술로 제작 되었으며 고집적, 저소비전류이다. 또 센서의 특성에 맞춰 내부 트리밍되어 있어 고정밀도 센서 출력을 쉽게 얻을 수 있다.
측정 가능한 가속도의 풀 스케일은 ±2g와 ±6g를 선택할 수 있고, 응답주파수는 640Hz로 고속이므로 폭넓은 분야에서 사용 할 수 있다.

특징
■ 2.16V TO 3.6V SINGLE SUPPLYOPERATION
■ 1.8V COMPATIBLE IOs
■ I2C/SPI DIGITAL OUTPUT INTERFACES
■ PROGRAMMABLE 12 or 16 BIT DATA REPRESENTATION
■ INTERRUPT ACTIVATED BY MOTION
■ PROGRAMMABLE INTERRUPT THRESHOLD
■ EMBEDDED SELF TEST
■ HIGH SHOCK SURVIVABILITY
■ ECO-PACK COMPLIANT

data sheet

 

응용회로






블록 다이어그램
센서부는 그림과 같이 콘덴서가 하프 브리지 상태로 되어 있다. 센서에 가속도가 가해지면 액추에이터가 이동하여 정전용량이 변화하고, 브리지가 비평형상태로 된다. 센서에 인가된 전압 펄스를 차지앰프로 적분하고, 정전용량의 변화를 출력한다. 센서의 정전용량은 평형 상태일 때 수pF, 최대 가속도가 가해졌을 때의 변화는 100pF 정도이다. 차지 앰프가 한 개이므로 센서부의 출력은 다중화(멀티플렉스)되지만 차지 앰프 출력은 역다중화(디멀티플렉스)되므로 각 축의 센서 출력을 독립적으로 얻을 수 있다. 차지 앰프의 클록은 61.5kHz이다.
센서로부터의 전압 출력은 3개의 ΔΣ 변환기(클록 주파수 20.5kHz)에 의해 비트 스트림으로 변환한다. 그 후 필터에서 디 지털 데이터로 변환하고 내부 레지스터에 저장한다. 이 데이터 는 SPI/I2C 인터페이스에 의해 마이컴에서 판독할 수 있다.


레지스터
센서의 설정과 제어는 CTRL_REG1, 2, 3에서 실행한다. 각축의 가속도 측정 데이터의 상태값은 STATUS_REG를 이용한다.

레지스터명 Address 초기값  
WHO_AM_I 0F 111010 물리 어드레스=3Ah
OFFSET_X 16 교정값 X축의 오프셋 교정값
OFFSET_Y 17 교정값 Y축의 오프셋 교정값
OFFSET_Z 18 교정값 Z축의 오프셋 교정값
GAIN_X 19 교정값 X축의 게인 교정값
GAIN_Y 1A 교정값 Y축의 게인 교정값
GAIN_Z 1B 교정값 Z축의 게인 교정값
CTRL_REG1 20 111 필터의 계수와 각 축 동작의 가부, 셀프 테스트 ON/OFF 설정 등
CTRL_REG2 21 0 풀 스케일 ±2g/±6g 선택, 출력 데이터 형식 선택 등
CTRL_REG3 22 1000 방향 검지와 자유 낙하 등의 HPF 설정 등
HP_FILTER RESET 23 더미 판독에 따라 HP_FILTER를 리셋
STATUS_REG 27 0 각 축의 데이터 재기록 상태와 유효/무효 판단
OUTX_L 28 출력값 X축의 가속도 데이터 (LSB)
OUTX_H 29 출력값 X축의 가속도 데이터 (MSB)
OUTY_L 2A 출력값 Y축의 가속도 데이터 (LSB)
OUTY_H 2B 출력값 Y축의 가속도 데이터 (MSB)
OUTZ_L 2C 출력값 Z축의 가속도 데이터 (LSB)
OUTZ_H 2D 출력값 Z축의 가속도 데이터 (MSB)
FF_WU_CFG 30 0 인터럽트 설정용
FF_WU_SRC 31 0 인터럽트 플러그
FF_WU_ACK 32 더미 더미 레지스터
FF_WU_THS_L 34 0 자유 낙하 검지 임계값 (LSB)
FF_WU_THS_H 35 0 자유 낙하 검지 임계값 (MSB)
FF_WU_DURATION 36 0 자유 낙하/웨이크업 이벤트의 최소 주기
DD_CFG 38 0 인터럽트 설정용
DD_SRC 39 0 인터럽트 플러그
DD_ACK 3A 더미 더미 레지스터
DD_THSI_L 3C 0 방향 검지 임계값 (LSB)
DD_THSI_H 3D 0 방향 검지 임계값 (MSB)
DD_THSE_L 3E 0 방향 검지 외부 임계값 (LSB)
DD_THSE_H 3F 0 방향 검지 외부 임계값 (MSB)



주요 레지스터
CTL_REG1


PD1, PD0 : 파워다운 모드 설정
 PD1, PD0 = “00” -> 파워다운 모드 (default value after boot).
 PD1, PD0 = "x1", "1x" -> 일반 동작 모드.

DF1,
DF0 : data rate(필터 설정으로 민감도를 설정할 수 있다. 높을수록 노이즈하지만 감도가 높아진다.)
 default "00" data-rate = 40Hz. By changing the content of DF1,
 “01”, “10” “11” ->160Hz, 640Hz, 2560Hz.

ST : self test function
 0 : 일반 동작 모드, 1: self test모드

Zen : enables Z-axis (The default value is 1)
Yen : enables Y-axis (The default value is 1)
Xen : enables X-axis (The default value is 1)

-> 따라서 초기화시 1100 0111(0xC7)로 설정하면 정상동작 한다.


CTL_REG2



FS Scale 설정.
 0 : +/-2g (default)
 1 : +/-6g

BDU bit is used to inhibit output registers update until both upper and lower register parts are
read. In default mode (BDU= ‘0’) the output register values are updated continuously. If for any
reason it is not sure to read faster than output data rate it is recommended to set BDU bit to
‘1’. In this way the content of output registers is not updated until both MSB and LSB are read
avoiding to read values related to different sample time.

BLE Big Endian, Little Endian 설정
 1 : Big Endian MSB->28h (X-axis), LSB ->29h (X-axis)
 0 : Little Endian

BOOT bit is used to refresh the content of internal registers stored in the flash memory block.
At the device power up the content of the flash memory block is transferred to the internal registers
related to trimming functions to permit a good behavior of the device itself. If for any reason
the content of trimming registers was changed it is sufficient to use this bit to restore
correct values. When BOOT bit is set to ‘1’ the content of internal flash is copied inside corresponding
internal registers and it is used to calibrate the device. These values are factory
trimmed and they are different for every accelerometer. They permit a good behavior of the
device and normally they have not to be changed.
At the end of the boot process the BOOT bit is set again to ‘0’.

IEN bit is used to switch the value present on data-ready pad between Data-ready signal and
Interrupt signal. At power up the Data-ready signal is chosen. It is however necessary to modify

DRDY bit to enable Data-ready signal generation.
DRDY bit is used to enable DataReady pad activation. If DRDY bit is ‘0’ (default value) on DataReady
pad a ‘0’ value is present. If a DataReady signal is desired it is necessary to set to ‘1’
DRDY bit. DataReady signal goes to ‘1’ whenever a new data is available for all the enabled
axes. For example if Z-axis is disabled, DataReady signal goes to ‘1’ when new values are
available for both X and Y axes. DataReady signal comes back to ‘0’ when all the registers
containing values of the enabled axes are read. To be sure not to loose any data coming from
the accelerometer data registers must be read before a new DataReady rising edge is generated.
In this case DataReady signal will have the same frequency of the data rate chosen.

SIM
 SPI모드 설정
 0 : (default value) the 4-wire interface
 1 : 3-wire interface

DAS 12 bit, 16 bit 모드 설정, 최상의 비트는 부호비트 이다.





ECK bit selects whether the clock used in the core comes from internal oscillator or from external
pad OSC_IN. In the latter case internal oscillator is switched off and the pin Pull-Down
is disabled thus reducing power consumption. External clock must be in the range of 1.045
MHz +/- 10% and must have a duty cycle of 50%.
HPDD bit permits to select either filtered or not filtered data to feed the Signal Processing (Direction
Detection) block as described in Figure 10. When HPDD is set to ‘0’ (default mode) the
data used to generate DD interrupt come directly from digital block or temperature compensation
block while if HPDD is set to ‘1’ the interrupt signals are based on High-Pass filtered data.
For additional details about the data flow, please refer to Figure 10.
HPFF bit allows to select between filtered or not filtered data to be processed by the Signal
Processing (WakeUp or FreeFall) block as described in Figure 15. If HPFF is set ‘0’ (default
mode) data used to generate WU or FF interrupt come directly from digital block or temperature
compensation block while if HPFF is set ‘1’ the interrupt signals are based on High-Pass
filtered data. For additional details about the data flow, please refer to Figure 10.
FDS bit decides whether data stored in output registers are High Pass filtered or not. In default
mode (FDS bit set to ‘0’) signal are not filtered while it is possible to access data coming from
HP filter setting FDS bit to ‘1’. For additional details about the data flow, please refer to Figure
10.
CFS<1:0> bit select High-pass filter Cut-off Frequency coefficient. Increasing this number
makes Cut-off Frequency (@-3dB) move to lower values.
The Cut-off Frequency behavior is described by the following equation:
Where HPc = 512, 1024, 2048, 4096 when CFS<1:0>= 00, 01, 10, 11 respectively and ODR
represents the Output Data Rate selectable through the DF1, DF0 bits in CTRL_REG1.
The figure below gives a representation of the possible transfer functions obtained modifying
Output Data Rate and High Pass Filter coefficient (HPc).





가속도센서 출력 데이터
가속도 센서의 출력은 -2(6)g ~ +2(6)g까지 나오며 디지털 값으로 0~11비트(0~2047)까지 표현된다. 비트12 ~ 비트15는 부호를 나타낸다.
예로 1g라면 아래 표와 같이 0x0400(1024) 으로 출력되며, -1g라면 0xFC00 (-1024)로 출력된다.




SPI제어
CS핀이 0일 경우 SPI모드로 동작(1일 경우 I2C모드)
 
- Data Read

bit 0: READ bit. Read일경우 항상 1로 셋팅해야 함.
bit 1: MS bit. When 0 do not increment address, when 1 increment address in multiple reading.
bit 2-7: address AD(5:0). 레시스터의 주소 설정.
bit 8-15: data DO(7:0) (read mode). This is the data that will be read from the device (MSb
first).
bit 16-... : data DO(...-8). Further data in multiple byte reading.




bit 0: WRITE bit. Write동작시 0으로 설정되어야 함.
bit 1: MS bit. When 0 do not increment address, when 1 increment address in multiple writing.
bit 2 -7: address AD(5:0). This is the address field of the indexed register.
bit 8-15: data DI(7:0) (write mode). This is the data that will be written inside the device (MSb
first).
bit 16-... : data DI(...-8). Further data in multiple byte writing.
Posted by nexp

댓글을 달아 주세요

  1. Dennis

    안면도 없는 상태에서 조금 무례합니다만,

    상기 3축 가속도 센서와 관련하여,
    고수님께 간절히 여쭙고 싶은 부분이 있습니다.

    혹시, 가능하시면,
    하기 Mail 주소로 연락주시기 바랍니다.

    dennis.sky@gmail.com

    2008.10.23 15:56 [ ADDR : EDIT/ DEL : REPLY ]
  2. 송광식

    가속도 센서에 2가지 질문 있습니다.

    1. application note(AN2041)에 보면 Table 7.에 FS=2g로 선택 되었을 때의 값들이 보여지는데
    FS=6g로 했을 때 했갈립니다. FS = 6g , Big Endian(BLE=1), DAS =1로 하면 최대 6g는 1_1000_0000_0000_xxxx 이어서 13 bit(17bit)가 되는데 그럼 DAS=1 모드에서 6g를 표현 할 수 없나요?

    2. 화면에 보면 가만둬도 Noise가 끼는 것이 보이는데, 칩안에 내장된 디지털 low pass 필터를 켜도 심한가요?
    심하다면 외부에 디지털 필터를 써서 노이즈를 줄여야 하는데 혹시 사용하시는 필터가 있으신지 궁금합니다. (Ex, only digital low pass filter, low pass fiilter + high pass filter, average filter ...

    2009.02.06 10:07 [ ADDR : EDIT/ DEL : REPLY ]
  3. grumgold

    안녕하세요 위드로봇을 통해서 여기에 오게되었는데...

    저역시 myaccel3lv02로 구현을 할려고 하는데...

    잘않되네요

    혹시 여유가 된다면...

    제 질문 좀 봐주시면 감사하겠습니다.

    밑에 코드는 withrobot에서 제공해주는 avrstudio 버전을 codevision에 맞게 변형했는데

    맞는지 잘모르겠습니다

    참고로 결선은 J1-1 J1-2 => 3.3V
    J1-3 => N.C
    J1-4 => GND

    J2-1 : PB0
    J2-2 : PB1
    J2-3 : PB2
    J2-4 : PB3

    하였습니다

    그리고 결과는

    x 축 => 255
    y 축 => 255
    z 축 => 255
    Who Am I => 0xff로 나오고 있습니다 .

    혹시 뭐가 잘 못되었는지 아시는 분은 확인좀 부탁드리겠습니다



    #include <mega128.h>
    #include <stdio.h>
    #include <math.h>
    #include <spi.h>


    // SPI 통신에 사용되는 핀 설정.
    #define SPI_PORT_DIR_R DDRB
    #define SPI_PORT_R PORTB
    #define SPI_CS_DIR DDRB.0
    #define SPI_CS PORTB.0
    #define SPI_SCLK_DIR DDRB.1
    #define SPI_SCLK PORTB.1
    #define SPI_TX_DIR DDRB.2
    #define SPI_TX PORTB.2
    #define SPI_RX_DIR DDRB.3
    #define SPI_RX PORTB.3


    #define AXIS_X 0
    #define AXIS_Y 1
    #define AXIS_Z 2

    //myAccel3LV02 레지스터 주소 정의
    #define WHO_AM_I (0x000f)
    #define OFFSET_X (0x0016)
    #define OFFSET_Y (0x0017)
    #define OFFSET_Z (0x0018)
    #define GAIN_X (0x0019)
    #define GAIN_Y (0x001a)
    #define GAIN_Z (0x001b)
    #define CTRL_REG1 (0x0020)
    #define CTRL_REG2 (0x0021)
    #define CTRL_REG3 (0x0022)
    #define HP_FILTER RESET (0x0023)
    #define STATUS_REG (0x0027)
    #define OUTX_L (0x0028)
    #define OUTX_H (0x0029)
    #define OUTY_L (0x002a)
    #define OUTY_H (0x002b)
    #define OUTZ_L (0x002c)
    #define OUTZ_H (0x002d)
    #define FF_WU_CFG (0x0030)
    #define FF_WU_SRC (0x0031)
    #define FF_WU_ACK (0x0032)
    #define FF_WU_THS_L (0x0034)
    #define FF_WU_THS_H (0x0035)
    #define FF_WU_DURATION (0x0036)
    #define DD_CFG (0x0038)
    #define DD_SRC (0x0039)
    #define DD_ACK (0x003a)
    #define DD_THSI_L (0x003c)
    #define DD_THSI_H (0x003d)
    #define DD_THSE_L (0x003e)
    #define DD_THSE_H (0x003f)

    // bit mask macro
    #define BM(n) (1 << n)

    void UART_PutCh(char);
    unsigned char UART_GetCh(void);

    void Rs232_init(void)
    {
    UBRR0H=0;
    UBRR0L=103;
    UCSR0A=0x00;
    UCSR0B=0x18;
    UCSR0C=0x06;
    }

    // 1 byte 송신
    void UART_PutCh(char data)
    {
    while ((UCSR0A &0x20)==0x00);
    UDR0=data;
    }
    // 1 byte 수신
    unsigned char UART_GetCh(void)
    {
    while((UCSR0A &0x80)==0x00);
    return UDR0;
    }
    //-----------------------------------------------------------------------------
    #define SPI_CS_ASSERT() SPI_PORT_R &= ~BM(SPI_CS)
    #define SPI_CS_DEASSERT() SPI_PORT_R |= BM(SPI_CS)

    void SPI_Init(void)
    {
    // CS, SCLK, TX - output, RX - input
    SPI_PORT_DIR_R = 0xF7;
    SPI_PORT_R = 0xFF;

    // CS 핀을 high로 설정한다 -> mygyro300SPI의 SPI 모듈 초기화.
    SPI_CS_DEASSERT();

    // SPI enable with master mode, CPOL=1, CPHA=0, clk=Fosc/16=1MHz
    SPCR = 0x59;

    // clk=Fosc/16
    SPSR = 0x00;
    }

    //-----------------------------------------------------------------------------


    //-----------------------------------------------------------------------------
    //myAccel3LV02의 특정 레지스터에서 데이터를 읽어옴
    unsigned char Accel_ReadReg(unsigned char reg)
    {
    unsigned char ret = 0;
    SPI_CS_ASSERT(); // CS를 low로 떨어트려서 SPI 통신 시작.

    SPDR = 0x80|reg; // register address를 송신. Read일 경우 최상의 비트는 High
    while(!(SPSR & 0x80)); // 송신 완료될때까지 대기.
    ret = SPDR; // 수신된 데이터를 저장. 이 데이터는 더미데이터 이다.

    SPDR = 0; // 더미 데이터를 송신.
    while(!(SPSR & 0x80)); // 송신 완료될때까지 대기.
    ret = SPDR; // 수신된 data byte를 저장.

    SPI_CS_DEASSERT(); // CS를 high로 올려주면서 SPI 통신 종료.

    return ret;
    }

    //myAccel3LV02의 특정 레지스터에 데이터를 기록
    void Accel_WriteReg(unsigned char reg, unsigned char data)
    {
    SPI_CS_ASSERT(); // CS를 low로 떨어트려서 SPI 통신 시작.

    SPDR = reg; // register address를 송신.
    while(!(SPSR & 0x80)); // 송신 완료될때까지 대기.

    SPDR = data; // data 송신.
    while(!(SPSR & 0x80)); // 송신 완료될때까지 대기.

    SPI_CS_DEASSERT(); // CS를 high로 올려주면서 SPI 통신 종료.
    }

    //myAccel3LV02의 각축의 가속도 값을 읽어옴
    void GetAccelValue(unsigned char Axis, unsigned short *data)
    {
    unsigned char ret;

    while(1)
    {
    ret = Accel_ReadReg(STATUS_REG);
    if ((ret & 0x8) != 0)break;
    }

    switch(Axis)
    {
    case AXIS_X:

    *data = Accel_ReadReg(OUTX_L);
    *data |= Accel_ReadReg(OUTX_H)<<8;
    break;

    case AXIS_Y:
    *data = Accel_ReadReg(OUTY_L);
    *data |= Accel_ReadReg(OUTY_H)<<8;
    break;

    case AXIS_Z:
    *data = Accel_ReadReg(OUTZ_L);
    *data |= (Accel_ReadReg(OUTZ_H)<<8);
    break;

    default:
    *data = 0;
    break;
    }
    }
    //-----------------------------------------------------------------------------


    //-----------------------------------------------------------------------------
    int main(void)
    {
    char c;
    unsigned short data;

    Rs232_init(); // UART 초기화.
    SPI_Init(); // SPI 모듈 초기화.

    Accel_WriteReg(CTRL_REG1, 0xC7); //myAccel3LV02 초기화 1000.0111 Power on, enable all axis, self test off
    //Accel_WriteReg(CTRL_REG2, 0x80); //6g 로 설정

    while(1)
    {
    c = UART_GetCh(); // PC에서 명령이 들어올 때 까지 대기.
    if (c == 'r') // 수신된 명령이 'r'이면
    {
    GetAccelValue(AXIS_X, &data); // myAccel3LV02에서 X축 값을 읽어온다.

    printf("%d\r\n", 0x0FFF&data);
    }
    else if (c == 'y') // 수신된 명령이 'y'이면
    {
    GetAccelValue(AXIS_Y, &data); // myAccel3LV02에서 X축 값을 읽어온다.

    printf("%d\r\n", 0x0FFF&data);
    }
    else if (c == 'z') // 수신된 명령이 'z'이면
    {
    GetAccelValue(AXIS_Z, &data); // myAccel3LV02에서 X축 값을 읽어온다.

    printf("%d\r\n", 0x0FFF&data);
    }
    else if(c == 't')
    {
    data = Accel_ReadReg(WHO_AM_I); // myAccel3lv02의 ID값을 읽어온다. 0x3A 값이되어야 정상

    printf("WHO_AM_I : 0x%x\r\n", data);
    }
    }
    }
    //-----------------------------------------------------------------------------

    2009.08.01 22:12 [ ADDR : EDIT/ DEL : REPLY ]
  4. 김진석

    죄송합니다만
    제가 이 가속도 센서를 spi통신을 통해
    받아서 초기 설정만 해주고 값을 받았는데
    값의 범위가 -2g ~ 2g 까지 되어 있는데요~ 여기서 adc 값이 0이면 -2g를 뜻하고
    2047이 중력 가속도 0를 뜻하고, 4095 이면 2g를 뜻하는게 맞나요?

    2009.11.14 14:09 [ ADDR : EDIT/ DEL : REPLY ]

[SENSOR]/Accel2008. 3. 24. 12:45

MMA7260 가속도 센서 자료

MMA7260 가속도 센서 자료

데이터 시트









모 업체에서 판매하는 모듈 40000원 정도....





Posted by nexp

댓글을 달아 주세요

  1. 임영승

    위 MMA7260Q를 사용한 AVR 예제 프로그램이 있으면 공유 부탁드립니다. 바로 위의 pdf file이 열리지 않습니다.

    2009.02.05 23:46 [ ADDR : EDIT/ DEL : REPLY ]
  2. 예제가 위 링크에 있네요. 수고하세용~
    22,000원 하던데용~
    http://www.newtc.co.kr/download/AM-3AXIS/Window_Example.zip

    2009.02.13 23:37 [ ADDR : EDIT/ DEL : REPLY ]