ویژگی های ماژول قطب نمای GY-511
جریان و میدان مغناطیسی ارتباط مستقیمی با یکدیگر دارند. زمانی که جریان در یک سیم جاری می شود (الکترون ها در یک جهت شروع به حرکت می کنند)، میدان مغناطیسی ایجاد می شود. ایده ی اصلی سنسور های قطب نما هم بر اساس همین رابطه است. جهت میدان مغناطیسی زمین روی جریان حرکت الکترون ها در سنسور تاثیر می گذارد. با اندازه گیری این تغییرات در جریان، سنسور قادر خواهد بود تا جهت ها را تشخیص دهد.
ماژول GY-511 از تراشه ی LSM303DLHC برای تشخیص میدان های مغناطیسی و جهت آن ها استفاده می کند. پروتکل ارتباطی این ماژول I2C است و می توانید با استفاده از 2 پایه SCL و SDA آن را به پردازنده های مختلف از جمله بردهای آردوینو متصل کنید.
دیتاشیت تراشه ی LSM303DLHC رامی توانید از اینجا دانلود کنید.
معرفی پایه ها (Pinout) ماژول قطب نمای GY-511
ماژول GY-511 دارای 8 پایه به شرح زیر است:
- VIN: تغذیه ماژول – 3.3 تا 5 ولت
- 3V: در ماژول یک روگلاتور 5 به 3.3 ولت وجود دارد. درصورت نیاز از این پایه می توانید برای تغذیه ی باقی مدار که نیاز به ولتاژ 3.3 ولت دارند استفاده کنید. بیشترین جریان قابل تامین توسط این پایه، 100 میلی آمپر است.
- GND: زمین
- SCL: پایه کلاک ارتباط I2C
- SDA: پایه دیتا ارتباط I2C
- INT2: وقفه 2
- INT1: وقفه 1
- DRDY یا DataReady: زمانی که مقادیر جدیدی توسط سنسور اندازه گیری شده و در خروجی قرار می گیرد، این پایه فعال می شود.
پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.
نکته
از وقفه های ماژول برای تشخیص سقوط آزاد و تشخیص حرکت استفاده می شود.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرمافزارهای مورد نیاز
راه اندازی ماژول قطب نمای GY-511 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
گام دوم: نصب کتابخانه
کتابخانه ی ماژول را از اینجا دانلود کرده و نصب کنید.
این کتابخانه، مثال های متنوعی برای راه اندازی ماژول قطب نما دارد. در صورت نیاز می توانید از این مثال ها نیز استفاده کنید.
گام سوم: کد
پس از نصب کتابخانه، کد زیر را روی برد آردوینو خود آپلود کنید. سپس پنجره ی سریال را باز کنید تا خروجی قطب نما به شما نمایش داده شود.
همچنین می توانید با استفاده از مثال های کتابخانه، سنسور خود را کالیبره کنید تا اندازه گیری شما دقیق تر شود.
/*
GY-511 Compass
modified on 05 Sep 2020
by Mohammad Reza Akbari @ Electropeak
Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak | Ultimate Robotics Solutions" src="https://electropeak.com/learn/embed/#?secret=4NP2TcRdOA" data-secret="4NP2TcRdOA" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
Library: https://github.com/pololu/lsm303-arduino
*/
// I2C Library
#include <Wire.h>
// LSM303 Compass Library
#include <LSM303.h>
LSM303 cmps;
void setup() {
Serial.begin(9600);
Wire.begin();
cmps.init();
cmps.enableDefault();
Serial.println("Setup complete...");
/*
Calibration values; the default values of +/-32767 for each axis
lead to an assumed magnetometer bias of 0. Use the Calibrate example
program to determine appropriate values for your particular unit.
*/
cmps.m_min = (LSM303::vector<int16_t>){-32767, -32767, -32767};
cmps.m_max = (LSM303::vector<int16_t>){+32767, +32767, +32767};
}
void loop() {
cmps.read();
float heading = cmps.heading();
Serial.print("Heading: ");
Serial.println(heading);
delay(200);
}