خانه / میکروکنترلرها / بردهای آردوینو Arduino / پروژه های آردوینو / راه اندازی سنسور اثر هال با آردوینو

 

راه اندازی سنسور اثر هال با آردوینو

راه اندازی سنسور اثر هال با آردوینو

سنسور ها همیشه یکی از اجزای ضروری هر پروژه ای بوده اند . وظیفه آن ها تبدیل داده های بدست آمده از محیط به مقادیر دیجیتال و قابل پردازش برای مدارات الکترونیکی است .در بازار انواع مختلفی از سنسورها یافت می شود که می توانید بسته به نیاز خود یکی از آن ها را انتخاب کنید . ما در این پروژه به راه اندازی سنسور اثر هال با آردوینو میپردازیم. این سنسور توانایی تشخیص آهنربا و قطب های آن را دارد .

سوال اینجاست که کاربرد تشخیص آهنربا چیست ؟

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

برای مثال یکی از کاربرد های این سنسور اندازه گیری سرعت حرکت دوچرخه یا هر جسم دوار دیگری است . همچنین از این سنسور در موتور های براشلس برای تشخیص موقعیت آهنرباهای روتور و تحریک به موقع سیم پیچ های استاتور استفاده می شود .

مقاله مرتبط : موتور های براشلس یا بدون جاروبک

کاربردهای بیشماری برای این سنسور وجود دارد پس به سراغ آموزش راه اندازی این سنسور برویم تا به ابزار دیگری برای پروژه های بعدی مجهز شویم .

در این آموزش ما از تابع وقفه آردوینو برای تشخیص مجاورت آهنربا با سنسور و روشن کردن یک LED استفاده می کنیم .

اگر قبلا با آردوینو کار نکردید این مقاله را بخونید: بردهای آردوینو

در اکثر مواقع به دلیل کاربردهایی که در آن ها نیازمند سرعت خواندن و اجرای بالا هستیم سنسور اثر هال فقط با وقفه ها استفاده می شود.

وسایل مورد نیاز برای راه اندازی سنسور اثر هال با آردوینو

  1. سنسور اثر هال (هر مدل دیجیتال آن)
  2. برد آردوینو (هر مدل)
  3. مقاومت های 10k اهم و 1kاهم
  4. ال ای دی
  5. سیم
حتما در ادامه این مطلب را هم بخوانید:  کنترل موتور DC به وسیله بلوتوث

سنسور اثر هال :

قبل از شروع کار و بستن مدار نکات مهمی در مورد این سنسور هست که ابتدا به آن ها میپردازیم :

سنسور اثر هال دو نوع مختلف دارد : آنالوگ و دیجیتال . نوع دیجیتال آن فقط توانایی تشخیص حضور یا عدم حضور یک آهنربا در اطراف خود را دارد (0یا1) اما  در مدل آنالوگ خروجی سنسور با توجه به میدان مغناطیسی اطراف آن تغییر می کند و می توان با استفاده از آن قدرت آهنربا یا فاصله آن را نیز تشخیص داد .

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

همانگونه که از نام آن پیداست سنسور اثر هال با پدیده “اثر هال ” کار می کند . بر اساس این پدیده “هنگامی که یک رسانا یا نیمه رسانا که از آن جریانی در یک جهت عبور می کند را به طور عمود در یک میدان مغناطیسی قرار دهیم می توانیم یک اختلاف پتانسیل را در دو سر رسانا عمود بر جهت جریان اندازه گیری کنیم “.

با استفاده از این پدیده سنسور اثر هال حضور آهنربا در اطراف خود را تشخیص می دهد .

شماتیک مدار و توضیحات مدار راه اندازی سنسور اثر هال با آردوینو :

راه اندازی سنسور اثر هال با آردوینو

همانطور که از شکل پیداست اتصالات مدار بسیار ساده است . مهمترین نکته تشخیص درست پایه های سنسور اثر هال است که اگر طرف نوشته دار سنسور را رو به خود بگیرید اولین پایه از سمت چپ Vcc و پایه های بعدی به ترتیب خروجی و Gnd خواهند بود.

همانگونه که قبل تر گفته شد ما در این مدار از وقفه ها استفاده می کنیم بنابراین خروجی سنسور را به پایه شماره2 آردوینو وصل می کنیم . پایه شماره 3 نیز به یک ال ای دی متصل شده که با نزدیک کردن یک آهنربا به سنسور روشن می شود .

حتما در ادامه این مطلب را هم بخوانید:  ساخت کنترل کننده دما با آردوینو

اگر مدار را روی بردبرد ببندیم شکلی شبیه زیر خواهد داشت :

راه اندازی سنسور اثر هال با آردوینو

کد آردوینو :

کد کامل این پروژه بسیار کوتاه است و در پایین این صفحه قرار دارد . می توانید آن را مستقیما بر روی برد خود آپلود کنید .

در ادامه توضیحات کد و چگونگی کارکرد مدار شرح داده شده .

ما یک ورودی داریم که سنسور هست و یک خروجی که LED هست .سنسور باید به عنوان یک وقفه ورودی به آردوینو متصل شود.

بنابراین داخل تابع setup پین ها را پیکره بندی بندی میکنیم و پایه 2 را به عنوان یک وقفه تعریف می کنیم . در اینجا پایه 2 Hall_sensor و پایه 3 LED نام گذاری شده .

void setup() {
 pinMode(LED, OUTPUT); //LED is a output pin
 pinMode(Hall_sensor, INPUT_PULLUP); //Hall sensor is input pin
 attachInterrupt(digitalPinToInterrupt(Hall_sensor), toggle, CHANGE); //Pin two is interrupt pin which will call toggle function
}

هنگامی که وقفه تشخیص داده میشود تابع toggle فراخوانی میشود . پارامتر های وقفه زیادی مانند Toggle,Change,Rise,Fallوغیره وجود دارند اما ما فقط میخواهیم تغییر خروجی سنسور را تشخیص دهیم .

داخل تابع toggle از متغییری به نام state استفاده میکنیم که هر در هربار فراخوانی تابعtoggleمقدار خود را از 0 به 1 یا بلعکس تغییر می دهد و از آن برای روشن یا خاموش کردن LED استفاده می کنیم .

void toggle() {
 state = !state;
}

و در آخر داخل حلقهloop LED را کنترل میکنیم . متغیر state با هر بار نزدیک کردن آهنربا به سنسور تغییر مقدار می دهد بنابراین از آن برای روشن یا خاموش کردن LEDاستفاده می کنیم .

void loop() {
 digitalWrite(LED, state);
}

کارکرد مدار :

بعد از بستن مدار روی بردبرد کد رو روی آردوینو آپلود کنید و تغذیه مدار رو وصل کنید .

حتما در ادامه این مطلب را هم بخوانید:  تجزیه و تحلیل کدهای پروژه دیتالاگر با Arduino : بخش سوم

من از یک باتری کتابی 9ولت استفاده کردم .شما میتونید به دلخواه خودتون از هر منبع دیگری هم استفاده کنید .

حالا با نزدیک آهنربا به سنسور LED روشن خواهد شد وبا دور کردن آهنربا LED  خاموش میشود .

نکته : سنسور اثر هال به قطب حساس است . به این معنی که هر روی سنسور فقط توانایی تشخیص یک قطب مغناطیسی را دارد و بنابراین برای مثال با نزدیک قطبS آهنربا به وجهی از سنسور که توانایی تشخیص قطبNرا دارد LED روشن نخواهد شد.

راه اندازی سنسور اثر هال با آردوینو

آنچه در داخل سنسور اتفاق می افتد این است که با نزدیک کردن آهنربا سنسور تغییر وضعیت می دهد و این تغییر توسط پایه وقفه تشخیص داده می شود که منجر به فراخوانی تابعtoggle و تغییر مقدار متغیر stateاز “0” به “1” می شود . بنابراین LED روشن می شود .با دور کردن آهنربا از سنسور تمامی این اتفاقات تکرار می شوند که این بار منجر به تغییر مقدار متغییر stateاز “1” به “0” می شود و بنابراین LED خاموش می شود .

این چرخه با هر بار نزدیک و دور کردن آهنربا تکرار می شود .

const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;
int val=0;

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(interruptPin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(interruptPin), test, CHANGE);
Serial.begin(9600);
}

void loop() {
digitalWrite(ledPin, state);
Serial.println(val/2);
}

void test() {
state = !state;
val++;
}

 

مقالات مرتبط :

منبع:cicuitdigest

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *