Phone

(8)3896.8699-0972924961

Giỏ hàng 0 item(s)

Giỏ hàng trống

No-avatar-100

Cách giao tiếp với Module cảm biến góc gia tốc MPU6050 GY-521

Linh Kiện 69 - 23/06/2015

Chào các bạn!

Hôm nay Linh Kiện 69 xin chia sẻ với các bạn cách thức giao tiếp giữa vi điều khiển với cảm biến góc gia tốc MPU6050 GY-521

MPU-6050 tích hợp 6 trục cảm biến bao gồm:

+ con quay hồi chuyển 3 trục (3-axis MEMS gyroscope)

+ cảm biến gia tốc 3 chiều (3-axis MEMS accelerometer)

Ngoài ra, MPU-6050 còn có 1 đơn vị tăng tốc phần cứng chuyên xử lý tín hiệu (Digital Motion Processor - DSP) do cảm biến thu thập và thực hiện các tính toán cần thiết. Điều này giúp giảm bớt đáng kể phần xử lý tính toán của vi điều khiển, cải thiện tốc độ xử lý và cho ra phản hồi nhanh hơn. Đây chính là 1 điểm khác biệt đáng kể của MPU-6050 so với các cảm biến gia tốc và gyro khác.

MPU-6050 có thể kết hợp với cảm biến từ trường (bên ngoài) để tạo thành bộ cảm biến 9 góc đầy đủ thông qua giao tiếp I2C.

Các cảm biến bên trong MPU-6050 sử dụng bộ chuyển đổi tương tự - số (Anolog to Digital Converter - ADC) 16-bit cho ra kết quả chi tiết về góc quay, tọa độ... Với 16-bit bạn sẽ có 2^16 = 65536 giá trị cho 1 cảm biến.

Tùy thuộc vào yêu cầu của bạn, cảm biến MPU-6050 có thể hoạt động ở chế độ tốc độ xử lý cao hoặc chế độ đo góc quay chính xác (chậm hơn). MPU-6050 có khả năng đo ở phạm vi:

+ con quay hồi chuyển: ± 250 500 1000 2000 dps

+ gia tốc: ± 2 ± 4 ± 8 ± 16g

Hơn nữa, MPU-6050 có sẵn bộ đệm dữ liệu 1024 byte cho phép vi điều khiển phát lệnh cho cảm biến, và nhận về dữ liệu sau khi MPU-6050 tính toán xong.

- Cách lấy dữ liệu từ cảm biến.
MPU6050 chỉ hỗ trợ chuẩn giao tiếp I2C để xuất giá trị đo sang thiết bị khác (Master) hoặc chính nó lại là nơi xử lý, lưu trữ tín hiệu từ các thiết bị khác kết nối vào.
Đầu tiên ta cần nắm được Protocol của chuẩn I2C

[IMG]

Slaver Address của MPU6050 mặc định là 0x68 = 0b1101000
Quá trình truyền hoặc nhận dữ liệu được bắt đầu khi có tín hiệu “Start” và kết thúc bởi tín hiệu “Stop

i2c_start();

i2c_stop();

Một khi đã có điều kiện “start” thì Master phải truyền địa chỉ của thanh ghi cần tác động và hành động tương ứng(read/write )
Đối với MPU6050 quy luật truyền do nhà sản xuất đưa ra:
Quá trình đưa dữ liệu từ vi điều khiển xuống cảm biến (chính là việc cài đặt cấu hình cho cảm biến) Write:

[IMG]



Hàm ghi dữ liệu đến một thanh ghi của MPU6050.



void MPU6050_I2C_ByteWrite(u8* pBuffer, u8 writeAddr)
{
//Gửi bit start
I2C_GenerateSTART(MPU6050_I2C, ENABLE);
while(!I2C_CheckEvent(MPU6050_I2C,I2C_EVENT_MASTER_MODE_SELECT));
//Gửi địa chỉ của MPU6050
I2C_Send7bitAddress(MPU6050_I2C, MPU6050_ADDR,I2C_Direction_Transmitter);
while(!I2C_CheckEvent(MPU6050_I2C, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));
//Truy cập đến 1 thanh ghi MPU6050
I2C_SendData(MPU6050_I2C, writeAddr);
while(!I2C_CheckEvent(MPU6050_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
//Gửi dữ liệu đến thanh ghi vừa truy cập
I2C_SendData(MPU6050_I2C, *pBuffer);
/* Test on EV8 and clear it */
while(!I2C_CheckEvent(MPU6050_I2C, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
//Gửi bit STOP
I2C_GenerateSTOP(MPU6050_I2C, ENABLE);
}


Hàm đọc dữ liệu từ một thanh ghi của MPU6050 rồi ghi vào mảng pBuffer

void MPU6050_I2C_BufferRead(uint8_t* pBuffer, u8 readAddr, u16 NumByteToRead)

Hàm cấu hình cho MPU6050.



void MPU6050_init()
{
w_data[0]=0x80;
MPU6050_I2C_ByteWrite(w_data, PWR_MGMT_1); //Reset Cam Bien
delay_us(5);
w_data[0]=0x00;
MPU6050_I2C_ByteWrite(w_data, PWR_MGMT_1);// Cam bien hoat dong
delay_us(5);
w_data[0]=0x00;
MPU6050_I2C_ByteWrite(w_data, SMPLRT_DIV);
delay_us(5);
w_data[0]=0x07;
MPU6050_I2C_ByteWrite(w_data, CONFIG_MPU);
delay_us(5);
w_data[0]=0x18;
MPU6050_I2C_ByteWrite(w_data, GYRO_CONFIG); // Do phan giai GYRO la +-2000 do/s
delay_us(5);
w_data[0]=0x10;
MPU6050_I2C_ByteWrite(w_data, ACCEL_CONFIG);
delay_us(5);
}


Hàm void MPU6050_get_gyro_acc(int16_t* AccelGyro) lưu lại dữ liệu vào mảng mới theo đúng giá trị bank cao, bank thấp

Hàm void MPU6050_get_value() lấy mẫu cho các giá trị góc đọc được.

Bình luận(0)
Vui lòng Đăng Nhập hoặc đăng ký thành viên để chia sẻ,bình luận và tích lũy điểm.
Trả lời mới
    Đang tải...
Thegioiic-live-support