در آموزش ماژول سنسور میدان مغناطیسی Reed Switch به صورت کامل به بررسی و تحلیل سنسور میدان مغناطیسی پرداختیم. همانطور که در آموزش ماژول Reed Switch از پکیج ۳۷ سنسور آردوینو Arduino اشاره شد. سنسور Reed switch در واقع یک کلید الکتریکی است و در حالت عادی به صورت باز است. با ایجاد میدان مغناطیسی در نزدیکی سنسور، سوییچ بسته شده و میدان مغناطیسی توسط پایههای دیجیتال و آنالوگ ماژول تشخیص داده میشود. در انتهای آموزش یک پروژه بسیار جذاب با عنوان کنترل سرو موتور از طریق سنسور میدان مغناطیسی تعریف کردیم که توسط یکی از کاربران خلاق دیجی اسپارک اجرا و ارسال شد. در ادامه این آموزش با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک به بررسی کامل پروژه خواهیم پرداخت.
هدف از آموزش Reed Switch
همانطور که گفته شد میخواهیم در اثر تحریک سنسور رید سوئیچ Reed Switch دو عدد سروو موتور به صورت معکوس نسبت به همدیگر در دامنه ۲۶۰ درجه حرکت کنند. سپس رله سوئیچ کند و بعد از دور شدن میدان مغناطیسی از سنسور reed Switch، رله قطع شود و شافتهای هر دو سرو به نرمی در موقعیت ۰ درجه قرار بگیرند. در ادامه به بررسی کد میپردازیم.
ماژول میدان مغناطیسی Reed Switch
ماژول رید سوییچ Reed Switch به عبارتی سنسور میدان مغناطیسی، دارای سنسور DDR می باشد. در واقع سنسور Reed همانند یک کلید در مدار عمل میکند. سنسور Reed switch در واقع یک کلید الکتریکی است که در حالت عادی به صورت باز است. با ایجاد میدان مغناطیسی در نزدیکی سنسور، سوییچ بسته شده و میدان مغناطیسی توسط پایه های دیجیتال و آنالوگ ماژول تشخیص داده میشود. بر روی ماژول Reed Switch یک مولتی ترن قرار گرفته است، با تغییر مولتی ترن میتوان حساسیت سنسور را تنظیم کرد. ماژول Reed Switch دارای ۴ پایه به ترتیب Analog , Digital, Vcc , Gnd است.
سرو موتور SG90 Servo Motor
سرو موتور SG90 ماژولی با ابعاد کوچک و کم وزن با توان خروجی بالایی است. شافت خروجی سرو موتور Servo motor SG90 توانایی چرخش با زاویه ۱۸۰ درجه در هر مسیر ۹۰ درجه را دارند. خروجی سرو موتورها به صورت پالس بوده و در حالت “۰” با پالس ۱٫۵ میلی ثانیه در حالت وسط ، در “۹۰” با پالس ۲ میلی ثانیه تنها در جهت راست، در “۹۰-” با پالس ۱ میلی ثانیه تنها در حالت چپ خواهد چرخید. ولتاژ کاری سرو موتور Servo motor SG90 بین ۴٫۸ تا ۵ ولت DC است. سرو موتور SG90 دارای سه پایه به ترتیب GND , VCC , Signal میباشد. سیم قهوه ای پایه GND ، سیم قرمز پایه VCC و سیم نارنجی پایه سیگنال (S) میباشد.
اتصالات مدار به آردوینو
- پایه دیجیتال (D) ماژول Reed Switch را به پایه ۸ آردوینو اتصال دهید.
- پایه VCC ماژول Reed Switch را به پایه ۵ ولت آردوینو اتصال دهید.
- پایه GND ماژول Reed Switch را به پایه GND آردوینو اتصال دهید.
- پایه سیگنال (S) ماژول رله ۵ ولت تک کانال را به پایه ۶ آردوینو اتصال دهید.
- پایه VCC را به ماژول رله ۵ ولت تک کانال را به پایه ۵ ولت آردوینو اتصال دهید.
- پایه GND ماژول رله ۵ ولت تک کانال را به پایه GND آردوینو اتصال دهید.
- پایه سیگنال (S) (سیم نارنجی) سرو ۱ را به پایه ۱۱ آردوینو اتصال دهید.
- پایه VCC ( سیم قرمز) سرو ۱ را به پایه ۵ ولت آردوینو اتصال دهید
- پایه GND ( سیم قهوه ای ) سرو ۱ را به پایه GND آردوینو اتصال دهید.
- پایه سیگنال (S) (سیم نارنجی) سرو ۲ را به پایه ۱۲ آردوینو اتصال دهید.
- پایه VCC ( سیم قرمز) سرو ۲ را به پایه ۵ ولت آردوینو اتصال دهید.
- پایه GND ( سیم قهوه ای ) سرو ۲ را به پایه GND آردوینو اتصال دهید.
فراخوانی کتابخانه آردوینو
در این آموزش برای راه اندازی سرو موتور نیاز به کتابخانه Servo.h خواهیم داشت. کتابخانه سرو Servo به صورت پیش فرض در مسیر Sketch / Include library / Arduino Libraries قرار دارد. میتوانید با کلیک بر روی کتابخانه Servo در مسیر گفته شده، آن را فراخوانی کنید. همچنین لینک دانلود کتابخانه در صفحه محصول سرو موتور SG90 Servo Motor در قسمت دانلود قرار دارد. با کلیک بر روی آن و دانلود کتابخانه Servo، آن در محل نصب آردوینو Arduino / Library ذخیره کنید. اگر هم کاربر تازهکار آردوینو هستید و شیوه نصب کتابخانه را نمیدانید؛ به پست آموزش نصب کتابخانه در نرم افزار آردوینو مراجعه کنید.
کد کنترل سرو موتور با Reed Switch
#include <Servo.h> // کتابخانه servo را نصب کنید #define SERVO_PIN2 12 // تعریف پایه سیگنال سرو۲ به عنوان پایه ۱۲ آردوینو #define SERVO_PIN1 11 // تعریف پایه سیگنال سرو۱ به عنوان پایه ۱۱ آردوینو #define Reed 8 // تعریف پایه ۸ آردوینو به عنوان پایه دیجیتال Reed switch #define Relay 6 // تعریف پایه ۶ آردوینو به عنوان رله #define rangeMax 260 //رنج جرخش سرو موتور #define rangeMin 20 //رنج جرخش سرو موتور int val ; int i=rangeMin ,j=rangeMax; // تعریف متغیر به عنوان min , max Servo myservo1 ; // انتخاب سرو ۱ Servo myservo2 ; // انتخاب سرو ۲ void setup () { Serial.begin(9600); pinMode (Reed, INPUT) ; // تعریف سنسور Reed به عنوان ورودی pinMode (Relay, OUTPUT) ; // تعریف رله به عنوان خروجی myservo1.attach(SERVO_PIN1); // تعریف سرو ۱ myservo2.attach(SERVO_PIN2); // تعریف سرو ۲ myservo1.write(0); myservo2.write(0); } void loop (){ val = digitalRead (Reed) ; // توسط پایه ۸ آردوینو دیتای پایه دیجیتال سنسور reed خوانده میشود if (val == HIGH) // هنگامی که سنسور reed سیگنال را دریافت میکند { for(i =rangeMin, j =rangeMax ; i<rangeMax || j >rangeMin ;i++,j--){ //چرخش بین رنج پایین و بالا هر سرو به طور معکوس myservo1.write(j); myservo2.write(i); delay(20); } digitalWrite (Relay, HIGH); // و سپس رله فعال خواهد شد } else // در غیر اینصورت { digitalWrite (Relay, LOW); // رله غیر فعال خواهد شد //برگشت به ۰ درجه ، هردو سرو for(; i>0 || j>0;i--,j--){ myservo1.write(j); myservo2.write(i); delay(20); } } }
وسایل مورد نیاز:
شیلد آردوینو پروتوتایپ – Arduino Shield UNO Prototype
ماژول تشخیص میدان مغناطیسی – Reed Switch از پکیج ۳۷ سنسور آردوینو
ماژول رله ۵ ولت تک کانال از پکیج ۳۷ سنسور آردوینو
تحلیل کدهای آردوینو Arduino
در ابتدا توسط کلید میانبری که برای انتقال کد در نظر گرفته شده است، کدها را به نرم افزار آردوینو انتقال دهید. مطابق اتصالات گفته شده در آموزش، اتصالات را برقرار سپس برنامه را کامپایل کنید. همانطور که در آموزش Reed Switch اشاره شده، با ایجاد میدان مغناطیسی در مجاورت سنسور Reed Switch، سنسور Reed تحریک شده و عمل خواهد کرد. حال طبق کد در خروجی سنسور Reed Switch دو سرو موتور و یک رله Relay به ماژول رید سوییچ متصل میکنیم. با نزدیک کردن آهنربا به سنسور Reed Switch، هر دو سروو موتور به صورت معکوس نسبت به همدیگر در دامنه ۲۶۰ درجه حرکت میکنند.
تعریف زاویه چرخش سرو موتور
دو حالت برای چرخش دو سرو موتور در کد برنامه تعریف میکنیم:
حالت اول Range MAX
#define rangeMax 260
حالت دوم Rane MIN
#define rangeMin 2
سپس رله سوئیچ خواهد کرد و بعد از دور شدن میدان مغناطیسی از سنسور reed Switch، رله قطع میشود و در نهایت شافتهای هر دو سرو به نرمی در موقعیت ۰ درجه قرار میگیرند.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام
آموزش خیلی متفاوتی بود و ندیده بودم
از زحمات شما ممنونم.
سلام
از توجه شما ممنونم.
این آموزش پروژه تعریف شده برای سنسور رید سوییچ از پکیج ۳۷ سنسور آردوینو است. حتما پروژه های هر آموزش را دنبال کنید.
سلام ایا امکانش هست بدون ماژول رید سوییچ هم چهت چرخش سروو رو تغییر داد . ممنون
سلام
متوجه منظور شما نشدم.
در این پروژه از سنسور رید سوییچ به عنوان ورودی استفاده شده است. دیتا از پایه رید سوییچ خوانده شده و سپس به سرو فرمان میدهد.
برای راه اندازی سرو موتور به پست آموزش سرو موتور مراجعه کنید.
همچنین دوره های آردوینو، هر هفته در تهران برگزار میگردد و میتوانید ثبت نام نمایید.
باسلام و خسته نباشید.
امکان اضافه کردن ماژول wifi هم به uno R3 وجود داره؟
باتشکر.
سلام
بله میتوانید ماژول وای فای را به برد Arduino UNO اتصال دهید.
در این خصوص به سری آموزش های ESP8266 مراجعه کنید و سوالات خود را از آن طریق بپرسید.
سلام خانوم مهندس خداقوت
مهندس من یک سنسوربامدارالکترونیکی میخوام که میدان مغناطیسی یامیدان الکتریکی اطراف کابل های برق فشارقوی وضعیف وتشخیص بده وخروجی سنجش وبه رله فرمان بده
باتوجه به میدان مغناطیسی قوی که اطراف کابل هست ازچندمتری تشخیص میده این مدار
با سلام
در این خصوص اطلاعی ندارم.