چگونه سنسور mpu 6050 را در ماژول gy87 فعال کنم؟

1 سال قبل
65 بازدید

0

سلام بزرگوار

بنده چند روز پیش ماژول ژیروسکوپ شتاب سنج مگنتومتر GY 87 را خریداری کردم و دقیقا طبق آموزشی که درسایت جهت راه اندازی ماژول قرار دادید عمل کردم .

همه ی سنسورها مقادیری را برمی گردانند غیر از سنسور MPU 6050  که خطای CONNECTION FAILED را در پنجره ی سریال مانیتور پرینت می کند و بعد از آن مقادیر اشتباه و بی ربط بر می گرداند.

ابتدا تصور میکردم سنسور ایراد دارد برای همین یک فایل جدید ایجاد کردم و صرفا کتابخانه MPU6050 LIGHT را در آن اضافه کردم و سنسور به خوبی کار کرد ولی متاسفانه این کتابخانه در کنار کتابخانه HMC8553 مگنتومتر را از کار می اندازد.

لطفا ضمن اینکه فایل آموزش را بررسی و اصلاح می نمایید بفرمایید چگونه می توانم این مشکل را برطرف کنم؟

ارادتمندم

09 آذر 02 در 01:45
ابوالحسن نیکوصفت راد
1

افزودن دیدگاه

1 پاسخ ثبت شده است
0

با سلام

همیشه زمانی که با ماژول های I2C کار میکنید و مشکل در پروتکل های ارتباطی دارید از دستور I2C Scanner که در بخش نمونه آموزش های خود برنامه آردوینو هست استفاده کنید تا ID تمامی IC ها را به دست آورید و با کد پروژه مقایسه کنید.

این مورد را بررسی کنید و اعلام کنید که چه شماره ID هایی را برای شما برمیگرداند، تا بررسی کنم مشکل کد در چه جایی می باشد.

 

ویرایش اول:

با بررسی هر کدام از لایبراری ها به صورت زیر می باشد.

برای MPU6050 :  // Default I2C address of the MPU6050 (0x69 if AD0 pin set to HIGH)
#define MPU6050_DEFAULT_ADDRESS 0x68.

برای BMP : #define BMP085_I2CADDR 0x77 //!< BMP085 I2C address

برای HMC : #define COMPASS_I2C_ADDRESS  0x3C >> 1 

که طبق توضیحات این میکرو به صورت زیر می باشد.

/* NOTE:
 * There are both 7- and 8-bit versions of I2C addresses.
 * 7 bits identify the device, and the eighth bit determines
 * if it's being written to or read from. The Wire library uses
 * 7 bit addresses throughout. If you have a datasheet or sample code 
 * that uses 8 bit address, you'll want to drop the low bit
 * (i.e. shift the value one bit to the right), yielding an 
 * address between 0 and 127.
 * 
 * The HMC datasheet says...
 * " The default (factory) HMC5883L 7-bit slave address is 0x3C for write operations, or 0x3D for read operations. "
 * which is of course silly, what they mean is that these are 8=bit addresses and thus we want to shift right 
 * one of them to get the 7-bit address that Wire wants
 * 
 * 0x3C = 111100
 * >> 1 = 11110
 *      = 0x1E
 * 
 * 0x3D = 111101
 * >> 1 = 11110
 *      = 0x1E
 *   
 */

 

متاسفانه این لایبراری اجازه عوض کردن آدرس از طریق کد را نمیدهد و باید دستی خط مربوط به i2c_address که در فایل HMC5883L_Simple.h قرار دارد را عوض کنید.

یا می توانید از لایبراری که خودتان استفاده کرده اید به جای این لایبراری استفاده کنید.

فقط به نظر میرسد که دستور 

accelgyro.setI2CBypassEnabled(true); // set bypass mode for gateway to hmc5883L

برای وصل شدن HMC به میکرو شما لازم است زده شود.

در صورتی که همچنان مشکل در راه‌اندازی داشتید اعلام کنید تا بررسی های بیشتری انجام بشود.

البته با توجه به توضیحاتی که برای HMC داده شده است به نظر می آید آدرس 1E درست می باشد. بهتر است باز بررسی کنید.

یک احتمال نیز همین خط بالا می باشد و با خاموش کردن این خط امکان دارد مشکل حل شود.

11 آذر 02 در 05:33
محمد دمیرچی
4610

Scanning... I2C device found at address 0x1E ! I2C device found at address 0x68 ! I2C device found at address 0x77 ! done  – ابوالحسن نیکوصفت راد 02-09-12 در 09:25

درود بر شما با لایبرری دیگر تست کردم و مشکل حل شد ولی مشکل دیگری که وجود دارد مقدار z مربوط به مگنتومتر همواره 0 است می خواستم بدونم مشکل از چیپ هست ؟  – ابوالحسن نیکوصفت راد 02-09-17 در 06:01

از آهنروبا برای اندازه گیری مقدار این بخش از سنسور استفاده میکنید؟؟  – محمد دمیرچی 02-09-18 در 05:16

بله  – ابوالحسن نیکوصفت راد 02-09-18 در 11:39

اطلاع دارید که اگر آهنروبا قوی رو نزدیک این جور سنسور ها بکنید IC خراب میشود. سنسور های خیلی دقیق تر اگر نزدیک وسایل فلزی هم بشن خراب میشن.  – محمد دمیرچی 02-09-19 در 05:03

افزودن دیدگاه


انجمن کافه‌ربات © 1400