راه‌اندازی سنسور اثرهال توسط میکروکنترلر ATmega16

الکترونیک و رباتیک -> ماژول ها و سنسور ها 2477 3 کاربر آکادمی پارتینه

سنسورهای اثرهال (Hall Effect Sensors) نوعی از سنسورهای مغناطیسی هستند که از لایه نازکی ماده هادی عمود بر مسیر شارش جریان ساخته شده است. با قرارگیری این سنسور در میدان مغناطیسی ولتاژ خروجی بسیار کوچکی در حد میکرو ولت ایجاد می‌شود. به همین دلیل اغلب سنسورهای اثر هال برای ارتقای حساسیت سنسور، کم‌کردن خطای ناشی از تلفات هیسترزیس و گرفتن ولتاژ مطلوب در خروجی، در داخل خود، تقویت‌کننده داخلی DC، مدارات منطقی برای کلیدزنی و تنظیم‌کننده ولتاژ دارند. از کابرد های این سنسور می توان به تشخیص مکان، تشخیص سرعت یا تشخیص حرکت جهت‌دار  اشاره کرد.

در این آموزش به صورت گام به گام نحوه ی را اندازی این سنسور توسط میکروکنترلر Atmega16 مورد بررسی قرار گرفته و از یک LED برای نشان دادن تأثیر وجود آهنربا در نزدیکی سنسور هال استفاده می‌شود.

مواد اولیه :
# عنوان تعداد لینک
0 میکروکنترلر ATmega16 1 لینک خرید
1 اسیلاتور کریستالی 16 مگاهرتز 1 لینک خرید
2 خازن 100 نانو فاراد 1 لینک خرید
3 خازن 22 پیکوفاراد 1 لینک خرید
4 سیم جامپر 1 لینک خرید
5 برد بورد 1 لینک خرید
6 شستی فشاری 1 لینک خرید
7 LED 1 لینک خرید

مرحله 1 : اثرهال چیست؟

اثرهال به حرکت یک بار الکتریکی در میدان مغناطیسی مربوط می‌شود. برای درک به روش عملی یک باتری را به یک هادی مانند انچه در تصویر (a) می‌بینید، متصل کرده تا مسیری برای شارش بار ایجاد شود.

  شارش الکترون‌ها (-e ) در جهت مخالف جریان فعلی یعنی از ترمینال منفی باتری به ترمینال مثبت درون رسانا خواهد بود. در این لحظه ولتاژ بین دو سر رسانا ، همانطور که در تصویر (b) نشان داده شده صفر خواهد بود. یعنی اختلاف پتانسیل نیز صفر است.

  حال با وارد کردن آهنربا درون رسانا مانند تصویر (c ) میدان مغناطیسی ایجاد کنید.

  در این شرایط مقدار ولتاژ هادی دیگر صفر نخواهد بود. این ولتاژ ایجاد شده به عنوان "ولتاژ هال" شناخته شده و این پدیده نیز به نام" اثر هال" شناخته می شود. 

مرحله 2 : اتصالات و دیاگرام مداری

مداری مطابق با دیاگرام را آماده کنید.

مرحله 3 : کدنویسی و تنظیمات نرم‌افزاری

در این پروژه از میکروکنترلر Atmega16 برای راه‌اندازی سنسورهال استفاده شده است. در اینجا تنها از دو پورت میکروکنترلر استفاده خواهد شد. یکی برای خواندن مقادیر سنسورهال و پورت دیگر برای اتصال LED در نظر گرفته می شود..

 در مرحله اول ، کلیه کتابخانه های لازم را در برنامه فراخوانی کرده و پین ورودی را برای خواندن مقادیر سنسور هال تعریف کنید.

#define hallIn PA0

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

DDRA=0xFE;
PINA=0x01;

در این قسمت یک تابعی تعریف می‌شود. عملکرد آن به این صورت است که با قرار گرفتن آهنربا در نزدیکی سنسور LED روشن و خاموش می شود. این تشخیص براساس تغییر وضعیت پورت A0 است.

     if(bit_is_clear(PINA,hallIn)){       
             PORTA=0b00000010;                   
               }
 
        else{
             PORTA=0b00000000;               
        }

کد کامل برنامه

/* Interfacing Hall Sensor with Atmega16
 */
 
#include<avr/io.h>
#define hallIn PA0                //Connect Hall Sensor Output At PA0
 
int main(void)
{ 
DDRA=0xFE;           // make PA0 as input for hall sensor and PA1 output for LED
 
while(1)
{
PINA=0x01; //initialize PA0
 
if(bit_is_clear(PINA,hallIn)){        // check if Magnet is nearby 
 
      PORTA=0b00000010;                    // Turn ON led
   }
 
  else                                  // if not nearby 
{
  PORTA=0b00000000;    // Turn OFF LED
}
}
}