ساخت مگنومتر با آردوینو (مغناطیس سنج QMC5883L)
مغناطیس سنج ها میدان مغناطیسی را در امتداد یک یا چند محور اندازهگیری میکنند. با یک مغناطیس سنج می توانید آردوینو خود را به یک قطب نما دیجیتال تبدیل کنید. آنها برای سیستم های ناوبری و هدایت در وسایل نقلیه کنترل از راه دور عالی هستند. حتی می توانید از آنها برای تشخیص جریان الکتریکی در سیم ها استفاده کنید.
در این مقاله قصد داریم از یک مغناطیس سنج برای ساخت قطب نمای دیجیتال با آردوینو استفاده کنیم. متوجه شدم که اگرچه مغناطیس سنج من به عنوان HMC5883L برچسب گذاری شده بود، اما در واقع یک QMC5883L بود. کتابخانه های نوشته شده برای HMC5883L با QMC5883L کار نمی کنند. بنابراین وقتی یک مغناطیسسنج آنلاین میخرید، احتمال زیادی وجود دارد که HMC5883L شما در واقع یک QMC5883L باشد. در حال حاضر آموزش های زیادی برای HMC5883L به صورت آنلاین وجود دارد، بنابراین در این مقاله نحوه راه اندازی و برنامه ریزی مغناطیس سنج QMC5883L را خواهیم دید.
معرفی مگنتومتر QMC5883L
QMC5883L دارای 5 پین است: Vcc، GND، SCL، SDA و DRDY:
تراشه حسگر در بالای برد قرار دارد. مغناطیسسنجها و سایر حسگرهای جهت دار دارای فلشهایی بر روی خود خواهند بود. اینها جهت گیری سنسور را نسبت به PCB به شما نشان می دهند. این مغناطیس سنج میدان های مغناطیسی را در سه محور x، y و z تشخیص می دهد. محور z به بالا و پایین، عمود بر محورهای x و y اشاره می کند.
اتصال مغناطیس سنج QMC5883L به آردوینو
QMC5883L از I2C برای ارتباط با آردوینو استفاده می کند، بنابراین برای اتصال آن تنها به دو سیم داده و دو سیم برق نیاز است. مغناطیس سنج را به این صورت به آردوینو وصل کنید:
در اینجا قطعات مورد نیاز آمده است:
- آردوینو اونو
- سیم جامپر
- مغناطیس سنج QMC5883L
برنامه نویسی مگنومتر در آردوینو
ما کتابخانه ای از Sunfounder را برای برنامه ریزی مغناطیس سنج استفاده خواهیم کرد. این کتابخانه در فایل دانلودی انتهای صفحه قرار داده شده است. این برنامه مقادیر خام را از هر محور مغناطیس سنج به نمایشگر سریال خروجی می دهد.
کد کامل در انتهای صفحه قرار داده شده است در اینجا قسمت های مختلف کد را بررسی میکنیم.
از آنجایی که مغناطیس سنج از ارتباط I2C استفاده می کند، باید کتابخانه Wire را اضافه کنیم. ما همچنین باید کتابخانه QMC5883L را نیز اضافه کنیم. سپس یک شی به نام compass ایجاد می کنیم که عضوی از کلاس QMC5883L است تا بتوانیم به توابع موجود در کتابخانه دسترسی داشته باشیم.
#include <Wire.h> #include <QMC5883L.h> QMC5883L compass;
در بخش setup() رابط I2C را با Wire.begin() مقداردهی اولیه می کنیم. سپس مانیتور سریال را مقداردهی اولیه می کنیم و شی قطب نما را با تابع init() از کلاس QMC5883L مقداردهی اولیه می کنیم.
void setup() { Wire.begin(); Serial.begin(9600); compass.init(); }
در بخش loop() باید چند متغیر int را ایجاد کنیم. QMC5883L میزان مغناطیس جداگانه ای را برای هر محور خروجی می دهد. بنابراین بیایید متغیرهایی را برای هر محور اعلام کنیم یعنی x، y و z. اکنون می توانیم خوانش های سنسور را دریافت کنیم.
کتابخانه QMC5883L تابعی به نام read() دارد که مقادیر را از حسگر می گیرد. تابع read() سه پارامتر دارد. اولین پارامتر متغیری است که قرائت را از محور x حسگر ذخیره می کند. پارامتر دوم متغیری است که قرائت را از محور y حسگر ذخیره می کند. سومین پارامتر متغیری است که قرائت محور z را ذخیره می کند.
اکنون فقط باید متغیرهای x، y و z را در سریال مانیتور چاپ کنیم. بنابراین ما یک سری توابع ()Serial.print برای چاپ متغیرهای x، y و z داریم. در انتهای حلقه، 250 میلی ثانیه صبر می کنیم تا سرعت خروجی کمی کاهش یابد.
void loop() { int x, y, z; compass.read(&x, &y, &z); Serial.print("x: "); Serial.print(x); Serial.print(" y: "); Serial.print(y); Serial.print(" z: "); Serial.println(z); delay(250); }
هنگامی که مغناطیس سنج وصل شد و کد در آردوینو آپلود شد، مانیتور سریال را باز کنید:
مقادیر خامی که در اینجا می بینید، بزرگی میدان مغناطیسی در امتداد هر محور در واحد میکروتسلا است.
اگر آهنربای میله ای دارید، قطب شمال آهنربا را در مقابل محور x قرار دهید تا مقدار x به میزان قابل توجهی کاهش یابد. اگر آهنربا را جلوی محورهای y و z قرار دهید، مقادیر آنها نیز باید کاهش یابد.
اما حتی بدون آهنربا، حسگر آنقدر حساس است که میدان مغناطیسی زمین را تشخیص دهد. بنابراین اکنون بیایید از این قرائت ها برای ایجاد یک قطب نما استفاده کنیم.
موارد موجود در فایل : سورس ها و کتابخانه
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام خسته نباشید اقامن زیاد از این موضوع سردرنمیارم میشه لطف کنید مدارمگنومتر کاربردی با ایسی pic یا avr معرفی کنید یا بیشتر توضیح بدید که باید چه کار کنم تا بتونم بسازمش ممنون میشم
سلام عزیز
برای یادگیری کار با آردوینو میتوانید دوره آموزش آردوینو را مشاهده کنید
سلام چطور میشه این مقادیر را با یک کلید فشاری قطع و وصل کرد یعنی با فشار دادن کلید استارت بشه همیجوری مقادیر نفرسته
سلام عزیز
یک شرط ایجاد کنید در صورت فشردن دکمه وارد یک حلقه while خالی بشه و در صورت فشردن دوباره کلید break بشه
برای یادگیری برنامه نویسی آردوینو میتونید دوره آردوینو را مشاهده کنید