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

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

0

سنسور اثرهال

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

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

سنسور اثر هال 3144 به یک مقاومت pull-up نیاز دارد. مقاومت های pull-up داخلی پین‌های ورودی آردوینو می‌توانند بجای اتصال یک مقاومت بین پین‌های VCC و خروجی سنسور بکاربرده شوند. مقاومت pull-up داخلی آردوینو با دستور digitalWrite(pin,INPUT_PULLUP) فعال می‌شود.

کدهای سنسور اثر هال دور در دقیقه، زمان هر دور و سرعت دوچرخه با لاستیک‌های 700× 32، با محیط 2.16 متر را تعیین می‌کنند. نتایج برروی مانیتور سریال نمایش داده می‌شوند.

 

سنسور اثر هال
شکل 1. اتصالات سنسور اثرهال و آردوینو
مقاومت pull-up
مقاومت pull-up
اتصال بهقطعه
Arduino VCC (سمت چپ سمت صاف سنسور) Hall VCC
Arduino GND Hall GND
پین 8 Arduino (سمت راست سمت صاف سنسور)Hall out
int switchPin = 8; // Hall effect sensor pin
int switchState = LOW; // set switch to LOW
int revolution = 0; // number of revolutions
float circum = 2.16; // tyre circumference
unsigned long time = 0; // time (ms) per revolution
float speed, rpm;
int reading;
void setup()
{ // pull-up resistor on hall
pinMode(switchPin, INPUT_PULLUP); // effect sensor pin
Serial.begin(9600); // set baud rate for Serial Monitor
}
void loop()
{
reading = digitalRead(switchPin); // read Hall switch
if(reading != switchState) // switch state changed
{
if (reading == HIGH && switchState == LOW)
{ // start of new revolution
revolution = revolution +1; // increment number of revolutions
time = millis() - time; // time (ms) since last revolution
speed = 3600.0*circum/time; // speed calculationin km/h
rpm = 60000.0/time; // revolutions per minute
Serial.print(revolution); // print number of revolutions
Serial.print("\t"); // and a tab
Serial.print(speed,1); // print speed to 1DP
Serial.print("km/h\t"); // with " km/h" and tab

Serial.print(rpm,0);Serial.println("rpm"); // print rpm, "rpm"
time = millis(); //update revolution time
}
switchState = reading; // update hall switch state
}
} 

 تابع  () time= millis زمان سپری شده از زمان شروع برنامه را برحسب میکرو ثانیه برمی گراند که از نوع unsigned long است.

 تیم ردرونیک (redronic) مجموعه ای از آموزش ها و پروژه های مرتبط با آردوینو را برای شما علاقمندان به الکترونیک و برنامه نویسی  فراهم کرده است. جهت مشاهده این پروژه ها اینجا کلیک کنید

Choose your Reaction!
دیدگاه خود را بنویسید

آدرس ایمیل شما منتشر نخواهد شد.

redronic.com