🧲 سنسور اثر هال (Hall Effect Sensor (A3144))
| اسم انگلیسی | Hall Effect Sensor (A3144) |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 🌡️ سنسورها |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
سنسور اثر هال (Hall Effect Sensor) قطعهای است که میدان مغناطیسی را بدون هیچ تماسی حس میکند. وقتی آهنربا به آن نزدیک شود، ولتاژ کوچکی در تراشه ساخته میشود که مدار داخلی آن را به خروجی قابل خواندن تبدیل میکند. دو نوع رایج داریم: A3144 که دیجیتال است و فقط میگوید «آهنربا هست یا نه»، و 49E که آنالوگ است و شدت میدان را میدهد. با نوع دیجیتال دورسنج چرخ، سرعتسنج دوچرخه، کلید بیتماس و شمارندهی دور موتور میسازی. این صفحه با A3144 یک دورسنج RPM میسازد.
سنسور هال در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را ندارد. برای نوع دیجیتال، یک wokwi-pushbutton بین پین 2 و GND جایگزین خوبی است: هر فشار مثل یک بار رد شدن آهنربا از جلوی سنسور است و خروجی را LOW میکند. برای نوع آنالوگ 49E هم یک پتانسیومتر روی A0 همان نقش را بازی میکند.
{
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-pushbutton", "id": "btn1", "top": -100, "left": 150, "attrs": { "color": "blue" } }
],
"connections": [
[ "btn1:1.l", "uno:2", "green", [] ],
[ "btn1:2.l", "uno:GND.1", "black", [] ]
]
}
خود سنسور هال در تینکرکد فارسی در هر دو مود رایگان شبیهسازی میشود.
سیمکشی با آردوینو
A3144 را طوری بگیر که سمت نوشتهدار رو به تو باشد و پایهها رو به پایین: از چپ به راست VCC، GND و OUT. خروجیاش «کلکتور باز» است، یعنی فقط میتواند خط را به زمین بکشد و برای HIGH شدن یک مقاومت پولآپ لازم دارد.
| پایهی قطعه | وصل به |
|---|---|
| VCC (پایهی ۱) | 5V |
| GND (پایهی ۲) | GND |
| OUT (پایهی ۳) | پین 2، با پولآپ داخلی (یا یک مقاومت ۱۰ کیلو به 5V) |
| آهنربا | روی چرخ یا پره، با فاصلهی چند میلیمتر از سمت نوشتهدار |
کد نمونه
هر بار آهنربا از جلوی سنسور رد شود، خروجی از HIGH به LOW میافتد و یک وقفه شمارنده را زیاد میکند. هر یک ثانیه، تعداد پالسها در ۶۰ ضرب میشود تا دور در دقیقه (RPM) به دست بیاید. اگر روی چرخ بیش از یک آهنربا گذاشتی، MAGNETS را عوض کن. دربارهی خود وقفه، درس وقفهها (Interrupts) را ببین.
// A3144 hall sensor on pin 2: revolutions per minute with an interrupt.
const int HALL_PIN = 2;
const int MAGNETS = 1; // magnets on the wheel
volatile unsigned long pulses = 0;
unsigned long lastReport = 0;
void onMagnet() {
pulses++;
}
void setup() {
Serial.begin(9600);
pinMode(HALL_PIN, INPUT_PULLUP); // the A3144 output is open-collector
attachInterrupt(digitalPinToInterrupt(HALL_PIN), onMagnet, FALLING);
}
void loop() {
if (millis() - lastReport >= 1000) {
lastReport = millis();
noInterrupts();
unsigned long count = pulses;
pulses = 0;
interrupts();
unsigned long rpm = count * 60UL / MAGNETS;
Serial.print("rpm:");
Serial.println(rpm);
}
}
با پنجرهی یک ثانیهای، دقت حدود ۶۰ دور در دقیقه است؛ برای چرخهای کند، پنجره را بلندتر کن یا بهجای شمردن پالس، زمان بین دو پالس را با micros اندازه بگیر.
اشتباههای رایج
- نبودن پولآپ: بدون
INPUT_PULLUPیا مقاومت ۱۰ کیلو، خروجی کلکتور باز هیچوقت درست HIGH نمیشود و شمارش بیمعنی است. - قطب اشتباه آهنربا: A3144 تکقطبی است و فقط به یک قطب (جنوب، رو به سمت نوشتهدار) واکنش میدهد. اگر کار نکرد، آهنربا را برگردان.
- آهنربای ضعیف یا دور: آهنربای تبلیغاتی یخچال معمولاً کافی نیست. یک آهنربای نئودیمیم کوچک در فاصلهی کمتر از یک سانتیمتر بگذار.
- انتظار عدد آنالوگ از A3144: این مدل فقط صفر و یک میدهد. اگر شدت میدان را میخواهی، 49E را روی A0 بخوان؛ بدون آهنربا حدود نصف ولتاژ تغذیه میدهد و با هر قطب بالا یا پایین میرود.
آموزشهای مرتبط
- رید سوییچ؛ سنسور مغناطیسی سادهتر
- موتور DC؛ دورش را با سنسور هال بشمار
- دکمه و وقفه روی رزبری پای پیکو
- نمودار سریال برای دیدن RPM
سؤالهای رایج
فرق سنسور هال A3144 و 49E چیست؟
A3144 دیجیتال است و فقط میگوید آهنربا نزدیک هست یا نه؛ برای شمردن دور و کلید بیتماس عالی است. 49E آنالوگ است و شدت و جهت میدان را به صورت ولتاژ میدهد.
چرا سنسور هال من به آهنربا واکنش نمیدهد؟
یا مقاومت پولآپ روی خروجی نیست، یا قطب اشتباه آهنربا رو به سنسور است، یا آهنربا ضعیف و دور است. A3144 فقط به یک قطب حساس است؛ آهنربا را برگردان.
ووکوی سنسور هال دارد؟
تا جایی که میدانیم نه. در ووکوی یک دکمه بین پین و GND نقش نوع دیجیتال را بازی میکند. خود سنسور هال در تینکرکد فارسی رایگان شبیهسازی میشود.