센서 > MPU6050 초기화 함수

TODAY286 TOTAL2,276,508
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 센서 | 자이로센서 | MPU6050 초기화 함수

페이지 정보

작성자 키트 작성일2017-08-21 16:24 조회1,239회 댓글0건

본문

3660040649_3IK05Pmc_MPU6050_-_36.PNG3Ftype3Dw740

 

지난 강좌의 글에서 초기화 함수에서 건드리는 레지스터는 적색 사각형으로 테두리한

하늘색 레지스터들입니다.

//

void mpu6050_setSleepDisabled(){
    mpu6050_writeBit(MPU6050_RA_PWR_MGMT_1,MPU6050_PWR1_SLEEP_BIT,0); // 0x6B&=~0x40 (bit6=0)
}
//
void mpu6050_init(){
    delay_ms(100);              //allow mpu6050 chip clocks to start up
    mpu6050_setSleepDisabled(); //set sleep disabled
    delay_ms(10);               //wake up delay needed sleep disabled
    //set clock source
    //  it is highly recommended that the device be configured to use one of the gyroscopes (or an external clock source)
    //  as the clock reference for improved stability
    mpu6050_writeBits(MPU6050_RA_PWR_MGMT_1,MPU6050_PWR1_CLKSEL_BIT,MPU6050_PWR1_CLKSEL_LENGTH,MPU6050_CLOCK_PLL_XGYRO); // 0x6B(bit0~bit2)=1
    //set DLPF bandwidth to 42Hz
    mpu6050_writeBits(MPU6050_RA_CONFIG,MPU6050_CFG_DLPF_CFG_BIT,MPU6050_CFG_DLPF_CFG_LENGTH,MPU6050_DLPF_BW_42); // 0x1A(bit2~bit0)=3
    //set sampe rate
    mpu6050_writeByte(MPU6050_RA_SMPLRT_DIV,4); //1khz/ (1+4)=200Hz// 0x19=4
    //set gyro range
    mpu6050_writeBits(MPU6050_RA_GYRO_CONFIG,MPU6050_GCONFIG_FS_SEL_BIT,MPU6050_GCONFIG_FS_SEL_LENGTH,3); // 0x1B(bit4,3)=0x18, MPU6050_GYRO_FS_2000
    //set accel range
    mpu6050_writeBits(MPU6050_RA_ACCEL_CONFIG,MPU6050_ACONFIG_AFS_SEL_BIT,MPU6050_ACONFIG_AFS_SEL_LENGTH,0); // 0x1C(bit4,3)=0, MPU6050_ACCEL_FS_2
}

//

녹색의 슬립모드 해제는 앞글에서 이미 설명 해드렸고

 

//

void mpu6050_setSleepDisabled(){
    mpu6050_writeBit(MPU6050_RA_PWR_MGMT_1,MPU6050_PWR1_SLEEP_BIT,0); // 0x6B&=~0x40 (bit6=0)
}
//
void mpu6050_init(){
    delay_ms(100);              //allow mpu6050 chip clocks to start up
    mpu6050_setSleepDisabled(); //set sleep disabled
    delay_ms(10);               //wake up delay needed sleep disabled
    //set clock source
    //  it is highly recommended that the device be configured to use one of the gyroscopes (or an external clock source)
    //  as the clock reference for improved stability
    mpu6050_writeBits(MPU6050_RA_PWR_MGMT_1,MPU6050_PWR1_CLKSEL_BIT,MPU6050_PWR1_CLKSEL_LENGTH,MPU6050_CLOCK_PLL_XGYRO); // 0x6B(bit0~bit2)=1
    //set DLPF bandwidth to 42Hz
    mpu6050_writeBits(MPU6050_RA_CONFIG,MPU6050_CFG_DLPF_CFG_BIT,MPU6050_CFG_DLPF_CFG_LENGTH,MPU6050_DLPF_BW_42); // 0x1A(bit2~bit0)=3
    //set sampe rate
    mpu6050_writeByte(MPU6050_RA_SMPLRT_DIV,4); //1khz/ (1+4)=200Hz// 0x19=4
    //set gyro range
    mpu6050_writeBits(MPU6050_RA_GYRO_CONFIG,MPU6050_GCONFIG_FS_SEL_BIT,MPU6050_GCONFIG_FS_SEL_LENGTH,3); // 0x1B(bit4,3)=0x18, MPU6050_GYRO_FS_2000
    //set accel range
    mpu6050_writeBits(MPU6050_RA_ACCEL_CONFIG,MPU6050_ACONFIG_AFS_SEL_BIT,MPU6050_ACONFIG_AFS_SEL_LENGTH,0); // 0x1C(bit4,3)=0, MPU6050_ACCEL_FS_2
}

//

나머지 레지스터들의 설정은

이전 강좌 소스코드의 선언들과 데이터시트를 보고서 공부하시면 되겠습니다.

 

3660040649_wbpVzQIS_MPU6050_-_37.PNG3Ftype3Dw740

 

이 레지스터들도 Write 버튼을 클릭해서 초기화를 해줍니다.

제일아래 0x1C 레지스터는 읽은 값과 쓸 값이 동일하므로 쓸 필요가 없겠죠..^^

댓글 0

조회수 1,239

등록된 댓글이 없습니다.

센서HOME > 센서 > 자이로센서 목록

게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기