🔌 ماژول رله با آردوینو: روشن و خاموش کردن یک مدار جدا، با نکات ایمنی
آردوینو از هر پایه فقط ۵ ولت و جریانی کم میدهد؛ برای یک LED کافی است، ولی برای یک پمپ آب ۱۲ ولتی، نوار LED یا فن، نه. اینجا ماژول رله به کار میآید: یک کلید برقی که آردوینو آن را میزند و خود کلید یک مدار کاملاً جدا را وصل و قطع میکند. در این آموزش رله با آردوینو را قدمبهقدم راه میاندازیم: طرز کارش، پایهها، سیمکشی امن با باتری، کد کامل و یک چراغ خودکار.
رله چطور کار میکند؟
داخل رله یک سیمپیچ (آهنربای برقی) و یک تیغهی فلزی متحرک هست. وقتی سیمپیچ برق بگیرد، آهنربا میشود و تیغه را به طرف خودش میکشد؛ همان «تق» که میشنوی. تیغه از یک کنتاکت جدا و به کنتاکت دیگر میچسبد. چون سیمپیچ و تیغه هیچ اتصال برقی با هم ندارند، مدار آردوینو و مدار بار از هم جدا میمانند.
سیمپیچ رلهی ۵ ولتی حدود ۷۰ میلیآمپر میکشد که برای پایهی آردوینو زیاد است. برای همین ماژول رله یک ترانزیستور، یک دیود محافظ (برای ولتاژ برگشتی سیمپیچ) و یک LED نشانگر دارد و بعضیها یک اپتوکوپلر هم دارند. تو فقط پایهی IN را با یک پایهی دیجیتال فرمان میدهی.
پایههای ماژول رله
| سمت | پایه | کار |
|---|---|---|
| فرمان | VCC | ۵ ولت آردوینو |
| فرمان | GND | زمین آردوینو |
| فرمان | IN | سیگنال از یک پایهی دیجیتال |
| بار | COM | مشترک؛ تیغهی متحرک |
| بار | NO | Normally Open؛ فقط وقتی رله فعال است به COM وصل میشود |
| بار | NC | Normally Closed؛ وقتی رله غیرفعال است به COM وصل است |
قطعهها و سیمکشی
- یک آردوینو Uno
- یک ماژول رله ۵ ولت
- یک دکمه
- بار کمولتاژ: یک باتری ۹ ولت با یک LED و مقاومت، یا یک فن کوچک ۵ تا ۱۲ ولت با آداپتورش
| از | به | توضیح |
|---|---|---|
| VCC رله | 5V آردوینو | — |
| GND رله | GND آردوینو | — |
| IN رله | D7 | فرمان روشن/خاموش |
| دکمه | D2 و GND | با INPUT_PULLUP مقاومت نمیخواهد |
| مثبت باتری ۹ ولت | COM رله | مدار بار جداست |
| NO رله | مقاومت، بعد پایهی بلند LED | یا پایهی مثبت فن |
| پایهی کوتاه LED | منفی باتری | به GND آردوینو وصل نمیشود |
کد کامل: دکمهای که رله را روشن و خاموش میکند
// Relay module: a push button toggles a separate low-voltage load.
const int RELAY = 7;
const int BUTTON = 2;
const bool ACTIVE_LOW = false; // true if your module switches ON with LOW
bool relayOn = false;
bool wasPressed = false;
void setRelay(bool on) {
relayOn = on;
if (ACTIVE_LOW) {
digitalWrite(RELAY, on ? LOW : HIGH);
} else {
digitalWrite(RELAY, on ? HIGH : LOW);
}
Serial.println(on ? "Relay ON" : "Relay OFF");
}
void setup() {
Serial.begin(9600);
setRelay(false); // write the OFF level first...
pinMode(RELAY, OUTPUT); // ...then make the pin an output: no click at start-up
pinMode(BUTTON, INPUT_PULLUP);
}
void loop() {
bool pressed = digitalRead(BUTTON) == LOW;
if (pressed && !wasPressed) {
setRelay(!relayOn); // each press flips the relay
}
wasPressed = pressed;
delay(30); // simple debounce
}
توضیح بخشهای مهم
ACTIVE_LOW: خیلی از ماژولها برعکس کار میکنند؛ LOW روشنشان میکند و HIGH خاموش. اگر رلهات از اول روشن بود و با دکمه خاموش شد، این راtrueکن. بقیهی کد دست نمیخورد، چون همهچیز از تابعsetRelayمیگذرد.- ترتیب
setRelay(false)قبل ازpinMode: اول سطح «خاموش» را روی پایه مینویسیم و بعد خروجیاش میکنیم. اینطوری رله لحظهی روشن شدن برد یک «تق» ناخواسته نمیزند؛ برای پمپ یا قفل برقی مهم است. wasPressed: فقط لحظهی فشرده شدن دکمه را حساب میکنیم، نه تمام مدتی که پایین است. بدون آن رله مثل مسلسل تقتق میکند.delay(30): جلوی لرزش کنتاکت دکمه (bounce) را میگیرد.
analogWrite یا PWM به آن فرمان نده؛ برای کم و زیاد کردن سرعت موتور ترانزیستور یا ماسفت لازم است، نه رله.پروژهی کوچک: چراغ خودکار شب با LDR
یک نوار LED دوازدهولتی که خودش با تاریک شدن هوا روشن میشود. یک مقاومت نوری (LDR) را از 5V به A0 و یک مقاومت ۱۰ کیلو از A0 به GND بگذار. نوار LED با آداپتور ۱۲ ولت خودش از راه COM و NO رله تغذیه میشود.
// Automatic night lamp: an LDR on A0 switches a 12 V LED strip via the relay.
const int RELAY = 7;
const int LDR = A0;
const int DARK = 300; // below this: turn the lamp on
const int BRIGHT = 400; // above this: turn it off (the gap is the hysteresis)
bool lampOn = false;
void setup() {
Serial.begin(9600);
digitalWrite(RELAY, LOW);
pinMode(RELAY, OUTPUT);
}
void loop() {
int light = analogRead(LDR); // more light = bigger number
Serial.println(light);
if (!lampOn && light < DARK) {
lampOn = true;
digitalWrite(RELAY, HIGH);
} else if (lampOn && light > BRIGHT) {
lampOn = false;
digitalWrite(RELAY, LOW);
}
delay(200);
}
چرا دو عدد (۳۰۰ و ۴۰۰) و نه یکی؟ غروب، نور آرامآرام کم میشود و دور یک عدد میلرزد. با یک آستانه، رله پشت سر هم روشن و خاموش میشود و زود خراب میشود. فاصلهی بین دو عدد، که به آن هیسترزیس میگویند، این لرزش را حذف میکند. عددها را با دیدن مقدارهای سریال مانیتور برای اتاق خودت تنظیم کن. جزئیات LDR در سنسور نور LDR با آردوینو آمده است.
اجرا در شبیهساز
رله روی آردوینو Uno در تینکرکد فارسی رایگان است و جای خیلی خوبی برای تمرین بیخطر است. مثال آمادهی رله و چراغ جدا دقیقاً همین ایده است: آردوینو با رله یک LED را که با باتری ۹ ولت جدا تغذیه میشود روشن و خاموش میکند. درس رله: کلید برقی بزرگ آن را قدمبهقدم توضیح میدهد و برای فهمیدن فرق NO و NC، مدار بدون کد رله در حالت NC را ببین. اگر رله کار نکرد، دکمهی «چرا کار نمیکند؟» سیمکشی را برایت بررسی میکند.
اشکالهای رایج
- رله برعکس کار میکند (اول روشن است): ماژول Active Low است.
ACTIVE_LOWراtrueکن. - رله تق میکند ولی بار روشن نمیشود: بار را به NC بستهای، یا مدار بار بسته نیست (منفی باتری به بار برنمیگردد).
- آردوینو با هر تق ریست میشود یا عجیب رفتار میکند: موتور یا پمپ روی سمت بار نویز میسازد. برای بار منبع جدا بگذار و روی موتورهای DC یک دیود موازی برعکس ببند.
- رلهی خالی (بدون ماژول) را مستقیم به پایه بستهای: پایهی آردوینو آسیب میبیند. یا ماژول بخر یا ترانزیستور و دیود بگذار.
- LED روی ماژول روشن میشود ولی تقی نمیآید: تغذیهی VCC ضعیف است؛ مثلاً ماژول ۱۲ ولتی را با ۵ ولت راه انداختهای.
رله را با یک سنسور ترکیب کن: آبیاری خودکار با سنسور رطوبت خاک با رله یک پمپ کوچک را روشن میکند و سنسور حرکت PIR میتواند چراغ راهپله را راه بیندازد. همهی آموزشهای ماژولها در بخش سنسورها است.
رله را بیخطر در شبیهساز امتحان کن 🔌سؤالهای رایج
NO و NC در رله یعنی چه؟
NO یعنی «معمولاً باز»: تا رله فعال نشود، مدار قطع است. NC یعنی «معمولاً بسته»: تا رله فعال نشود، مدار وصل است. COM پایهی مشترک بین این دوست.
چرا رلهی من با LOW روشن میشود؟
بسیاری از ماژولهای رله Active Low هستند؛ یعنی با LOW روی پایهی IN فعال میشوند. در کد کافی است HIGH و LOW را جابهجا کنی یا جامپر H/L روی ماژول را عوض کنی.
میتوانم با رله لامپ ۲۲۰ ولت را روشن کنم؟
نه، اگر نوجوانی یا تجربهی برقکاری نداری. برق شهر کشنده است. با باتری و آداپتور ۵ تا ۱۲ ولت تمرین کن و کار با برق شهر را فقط به یک برقکار بزرگسال بسپار.