Tôi đã tìm kiếm diễn đàn này một chút về con quay hồi chuyển L3G4200D và chưa thấy vấn đề này được đề cập, nhưng tôi đã thấy những người khác nói về nó trên các diễn đàn khác. Tôi đang thấy một giá trị lớn kỳ lạ trong đầu ra của mình khi con quay hồi chuyển đứng yên. Thật không may, dường như không ai có thể trả lời tại sao lại như vậy, vì vậy tôi nghĩ rằng tôi sẽ hỏi xung quanh
Vì vậy, tôi đang thu thập dữ liệu từ con quay hồi chuyển bằng i2c ở tốc độ 400kHz (chế độ nhanh), thu thập dữ liệu con quay hồi chuyển bằng cách sử dụng đa đọc (sáu byte mỗi lần). Lấy mẫu ở tần số 100Hz (cũng đã thử 800Hz trên cùng), cũng đã thử với tính năng bật và tắt ở các giá trị khác nhau. Tôi không sử dụng mã pin ngắt, nhưng tôi đang sử dụng thuộc tính 'chặn cập nhật dữ liệu' trong GYRCTRLREG4, để dữ liệu không xuất ra cho đến khi cả LSB và MSB được đọc. Full 2000dps và không làm bất cứ điều gì với FIFO. Tôi có thể đăng các giá trị đăng ký chính xác của mình nếu nó giúp, nhưng con số hầu hết các bạn sẽ không có biểu dữ liệu để xử lý.
Hình ảnh dưới đây cho thấy vấn đề của tôi. Dữ liệu được xuất ra tốt, được tính toán chính xác (theo hiểu biết của tôi) và tiếng ồn nói chung là rất chấp nhận được. Nhưng sau đó tôi nhận thấy những 'cú đánh' khó chịu này xuất hiện ngẫu nhiên khi thiết bị đứng yên. Nếu tôi để yên trong vài giây, tôi sẽ nhận được một trong những mũi nhọn này, luôn bằng khoảng 250-255 (do đó ~ 18 khi được chuyển đổi, sử dụng '(đầu ra * 70) / 1000'). Các gai, như tôi nói, là ngẫu nhiên, có thể xuất hiện trong bất kỳ mặt phẳng nào (trong hình bên dưới, bạn có thể thấy gai đầu tiên trong mặt phẳng X, thứ hai trong Y), luôn ở cùng một giá trị và một, hai hoặc tất cả ba có thể xảy ra cùng một lúc. Giá trị lớn chỉ dành cho một mẫu duy nhất, sau đó trở lại bình thường.
Tôi đã thấy trong một chủ đề khác ở đâu đó rằng tôi nên sử dụng chức năng chờ dữ liệu khối trong GYRCTRLREG4, như tôi đã đề cập trước đây, nhưng không thay đổi. Tôi đã thu hẹp vấn đề xuống khi MSB bằng 0 hoặc cao hơn, tức là số dương, khi kết hợp MSB và LSB, tôi nhận được những con số lớn này. Ví dụ: tôi lấy hai byte cần thiết cho mặt phẳng X, tôi nhận được -6 trong LSB và 0 trong MSB, kết hợp chúng mang lại cho tôi 250, sau đó chuyển đổi cho (250 * 70) / 1000 = 17,5 dps ( tức là quá lớn cho văn phòng phẩm / không chính xác). Trong cùng một mẫu, hai byte cho mặt phẳng Y là -3 LSB và -1 MSN, kết hợp chúng cho -3 và chuyển đổi cho -0,21 (nghĩa là mong đợi / chính xác).
Đã gặp vấn đề này trong nhiều ngày nay, tôi cũng thấy một chút các đột biến ngẫu nhiên này với từ kế của mình, vì vậy tôi nghĩ rằng tôi đang đọc thiết bị (thông qua i2c) không chính xác?
Bất kỳ đề xuất hoặc những điều để thử là thực sự hoan nghênh!