مقدمه: کلیکی که هرگز نیامد
۲:۴۷ صبح. سه ساعت است که مشغول این کار هستید.
پروژه آردوینو شما عالی به نظر می رسد. ماژول رله روی برد بورد شما قرار دارد، دقیقاً همانطور که آموزش نشان داده است سیم کشی شده است. شما سه بار بررسی کرده اید: VCC به 5V، GND به GND، IN1 به پین دیجیتال 7. کد کامپایل می شود. شما آن را آپلود می کنید. پین 7 HIGH می شود.
هیچ اتفاقی نیفتاد.
بدون کلیک. بدون LED. رله فقط ... آنجا نشسته است. شما را مسخره می کند.
شما ماژول رله را عوض می کنید. باز هم هیچ چیز. شما یک پین آردوینو دیگر را امتحان می کنید. نه. شما کد را دوباره می نویسید تا کاملاً مطمئن شوید که پین را HIGH تنظیم می کنید. تأیید می کند: HIGH. 5 ولت. مولتی متر موافق است.
و رله هنوز فعال نمی شود.
سپس، از روی استیصال یا کنجکاوی ناشی از کافئین، یک خط کد را تغییر می دهید:
digitalWrite(relayPin, LOW); // تغییر یافته از HIGH
کلیک.
رله درگیر می شود. LED روشن می شود. پمپ شما شروع به کار می کند. همه چیز کار می کند.
صبر کنید ... چی؟ رله زمانی فعال می شود که پین را به جای HIGH روی LOW تنظیم کنید؟ این برعکس است. این اشتباه است. این -
در واقع، این دقیقاً همان نحوه کار رله های تریگر سطح پایین است. و هنگامی که دلیل آن را درک کنید، متوجه خواهید شد که آنها عجیب نیستند - در واقع طراحی هوشمندانه تری هستند.
اجازه دهید توضیح دهم.
“تریگر سطح پایین” در واقع به چه معناست (به زبان ساده)
یک رله تریگر سطح پایین زمانی فعال می شود که پین کنترل آن به جای سیگنال HIGH (5V)، یک سیگنال LOW (0V/GND) دریافت کند.
از نظر منطق دیجیتال:
- سیگنال LOW (0V) = رله روشن
- سیگنال HIGH (5V) = رله خاموش
به این منطق فعال-پایین یا منطق معکوس نیز می گویند.
این را با یک رله تریگر سطح بالا مقایسه کنید:
- سیگنال HIGH (5V) = رله روشن
- سیگنال LOW (0V) = رله خاموش
تمام شد. این تفاوت اصلی است. اما در اینجا جایی است که جالب می شود: چرا ماژول های رله از این رویکرد به ظاهر معکوس استفاده می کنند؟
چرا ماژول های رله از تریگر سطح پایین استفاده می کنند (راز در اپتوکوپلر است)
اکثر ماژول های رله فقط یک رله ندارند - آنها یک مدار درایور کامل داخلی دارند. قلب این مدار یک اپتوکوپلر (که به آن اپتو-ایزولاتور نیز می گویند) است، معمولاً یک PC817 یا مشابه آن.
طراحی مدار اپتوکوپلر
در واقع داخل ماژول رله شما این است:
سمت ورودی (سیگنال کنترل):
- پین دیجیتال آردوینو شما به “IN” متصل می شود”
- IN به یک LED در داخل اپتوکوپلر متصل می شود (از طریق یک مقاومت)
- کاتد LED به GND متصل می شود
سمت خروجی (سیم پیچ رله):
- یک فوتوترانزیستور (در داخل اپتوکوپلر) نور LED را تشخیص می دهد
- این ترانزیستور یک ترانزیستور NPN (مانند 2N3904) را هدایت می کند
- ترانزیستور NPN سیم پیچ رله را انرژی می دهد
جزئیات مهم: LED اپتوکوپلر بین VCC و پین IN سیم کشی شده است. این کلید درک تریگر سطح پایین است.
تریگر سطح پایین چگونه کار می کند
وقتی پین IN = HIGH (5V):
- اختلاف ولتاژ در سراسر LED = 5V - 5V = 0V
- هیچ جریانی از LED عبور نمی کند
- LED خاموش می ماند
- فوتوترانزیستور خاموش می ماند
- سیم پیچ رله هیچ برقی دریافت نمی کند
- رله خاموش می ماند
وقتی پین IN = LOW (0V/GND):
- اختلاف ولتاژ در سراسر LED = 5V - 0V = 5V
- جریان از طریق LED جریان می یابد (محدود شده توسط مقاومت)
- LED روشن می شود
- فوتوترانزیستور روشن می شود
- ترانزیستور NPN هدایت می کند
- سیم پیچ رله انرژی می گیرد
- رله روشن می شود
“لحظه آها”: مدار جریان را از VCC به GND از طریق پین IN می کشد. وقتی پین آردوینو شما LOW است، مسیری را به زمین فراهم می کند و مدار را کامل می کند. وقتی HIGH است، هیچ اختلاف ولتاژی وجود ندارد، بنابراین جریانی جریان نمی یابد.
چرا این طراحی در واقع درخشان است
- رفتار ایمن در برابر خرابی: اگر سیم کنترل شما قطع شود یا جدا شود، پین IN به طور موثر HIGH شناور می شود (به طور داخلی توسط شبکه مقاومت بالا کشیده می شود). این به طور پیش فرض رله را خاموش نگه می دارد - ایمن تر از روشن شدن تصادفی.
- محافظت در برابر پین های شناور: در طول بوت شدن آردوینو، پین ها برای چند میلی ثانیه در حالت تعریف نشده قرار دارند. با یک تریگر سطح پایین، این معمولاً منجر به خاموش شدن رله (ایمن) می شود تا روشن شدن رله (به طور بالقوه خطرناک برای بارهای پرقدرت).
- جریان کشی کمتر از میکروکنترلر: هنگامی که رله خاموش است (رایج ترین حالت شما برای بسیاری از برنامه ها)، پین میکروکنترلر HIGH است و تقریباً هیچ جریانی را تامین نمی کند. هنگامی که نیاز به فعال کردن رله دارید، پین LOW می شود و جریان را می کشد - که پین های میکروکنترلر معمولاً در مدیریت آن بهتر از تامین آن هستند.
- سازگاری 3.3 ولت: ESP32 و دستگاه های مشابه 3.3 ولت برای هدایت مطمئن ماژول های رله 5 ولت در پیکربندی سطح بالا مشکل دارند. اما در حالت سطح پایین، پین 3.3 ولت می تواند جریان را به زمین بکشد، حتی زمانی که VCC 5 ولت باشد. این باعث می شود ماژول های تریگر سطح پایین از نظر جهانی سازگارتر باشند.
نکته حرفه ای: به همین دلیل است که اکثر ماژول های رله تجاری به طور پیش فرض روی تریگر سطح پایین تنظیم می شوند - این طراحی قوی تر، سازگارتر و ایمن تر در برابر خرابی است.
نحوه سیم کشی یک رله تریگر سطح پایین (گام به گام)
سیمکشی پایه برای آردوینو اونو (منطق 5 ولت)
اتصالات تغذیه:
- رله VCC ← آردوینو 5V
- رله GND ← آردوینو GND
سیگنال کنترل:
- رله IN ← پین دیجیتال آردوینو (به عنوان مثال، پین 7)
مثال کد:
const int relayPin = 7;
چه اتفاقی دارد میافتد:
- HIGH (5V) رله را خاموش نگه میدارد
- LOW (0V) رله را روشن میکند
سیمکشی برای ESP32 (منطق 3.3 ولت)
ESP32 در حالت HIGH، 3.3 ولت خروجی میدهد که میتواند باعث مشکلاتی در برخی از ماژولهای رله 5 ولت شود. در اینجا یک روش قابل اعتماد ارائه شده است:
اتصالات تغذیه:
- رله VCC ← منبع تغذیه خارجی 5 ولت (یا پین 5 ولت ESP32 در صورت استفاده از تغذیه USB)
- رله GND ← زمین مشترک با ESP32
سیگنال کنترل:
- رله IN ← پین GPIO ESP32 (به عنوان مثال، GPIO 23)
مثال کد:
const int relayPin = 23; // ESP32 GPIO23
چرا این روش با 3.3 ولت کار میکند:
هنگامی که پین ESP32 به LOW (0V) میرود، یک مسیر زمین فراهم میکند. LED اپتوکوپلر توسط منبع تغذیه 5V VCC تغذیه میشود، بنابراین افت ولتاژ کامل 5 ولت در سراسر LED رخ میدهد - به اندازه کافی برای روشن کردن آن و فعال کردن رله.
نکته حرفهای: اگر ماژول رله شما دارای یک جامپر برای JD-VCC (تغذیه رله) جدا از VCC (تغذیه منطقی) است، جامپر را بردارید و JD-VCC را از 5 ولت تغذیه کنید در حالی که VCC را در 3.3 ولت نگه دارید. این امر انزوای کامل و قابلیت اطمینان بهتری را با میکروکنترلرهای 3.3 ولت فراهم میکند.
سطح پایین در مقابل سطح بالا: کدام را باید انتخاب کنید؟
اکثر ماژولهای رله دارای یک جامپر یا سوئیچ برای انتخاب بین حالتهای تحریک سطح پایین و سطح بالا هستند. در اینجا زمان استفاده از هر کدام آورده شده است:
چه زمانی تحریک سطح پایین را انتخاب کنید:
- ✅ استفاده از میکروکنترلرهای 3.3 ولت (ESP32، ESP8266، Raspberry Pi)
- ✅ رفتار ایمن در صورت خرابی (رله به طور پیش فرض در صورت خرابی سیم کنترل خاموش میشود)
- ✅ کار با ماژولهای رله ناشناخته یا آزمایش نشده (این حالت رایجتر/سازگارتر است)
- ✅ برنامه شما نیاز دارد که بار بیشتر اوقات خاموش باشد
- ✅ شما یک مبتدی هستید (احتمال کمتری وجود دارد که مشکلات سازگاری داشته باشید)
مثالهای کاربردی:
- اتوماسیون خانگی (چراغها به طور پیش فرض خاموش هستند)
- سیستمهای هشدار (آژیرها به طور پیش فرض خاموش هستند)
- کنترل پمپ (پمپ خاموش است مگر اینکه به طور فعال فعال شود)
- قفلهای ایمنی (تجهیزات غیرفعال هستند مگر اینکه به طور فعال فعال شوند)
چه زمانی تحریک سطح بالا را انتخاب کنید:
- ✅ شما به رله در طول ریست/بوت آردوینو نیاز دارید (موارد استفاده نادر اما خاص)
- ✅ کار با بارهای نرمالی بسته (NC) که در آن رفتار معکوس میخواهید
- ✅ منطق کد شما با “HIGH = ON” سادهتر است (ترجیح شخصی)
- ✅ اتصال به سیستمهای کنترل فعال-بالا (PLCها، کنترلرهای صنعتی)
مثالهای کاربردی:
- روشنایی اضطراری (در طول قطع برق روشن بمانید)
- فنهای خنک کننده (به طور پیش فرض برای ایمنی روشن هستند)
- سیستمهای قطع باتری (الزامات ایمن در صورت خرابی خاص)
حقیقت صادقانه: برای 95٪ از پروژههای آردوینو/ESP32، تحریک سطح پایین انتخاب بهتری است.
سازگارتر، قابل اعتمادتر و ایمنتر است. زیاد به آن فکر نکنید.
اشتباهات رایج و نحوه رفع آنها
اشتباه شماره 1: “رله من همیشه روشن است!”
علامت: رله به محض روشن کردن آردوینو، قبل از اینکه کد شما اجرا شود، روشن میشود.
علت: در طول بوت، پینهای آردوینو در یک حالت تعریف نشده (شناور) قرار دارند. اگر پین به صورت شناور LOW شود، رله فعال میشود.
رفع:
void setup() {
تنظیم حالت پین قبل از تنظیم آن به عنوان OUTPUT تضمین میکند که در حالت OFF شروع شود.
اشتباه شماره 2: “کار میکند... اما سپس به طور تصادفی فعال میشود”
علامت: رله گهگاه روشن میشود در حالی که نباید، به خصوص با سیمهای بلند یا محیطهای پر سر و صدا.
علت: نویز الکتریکی یا حالتهای پین شناور.
راه حل 1 - اضافه کردن مقاومت Pull-Up خارجی:
یک مقاومت 10 کیلواهم بین پین IN و VCC وصل کنید. این کار IN را HIGH (رله خاموش) نگه میدارد زمانی که آردوینو شما به طور فعال آن را LOW نمیکند.
راه حل 2 - فعال کردن Pull-Up داخلی:
void setup() {
اشتباه شماره 3: “رله ESP32 به طور مداوم کلیک نمیکند”
علامت: رله گاهی اوقات کار میکند، گاهی اوقات دیگر کار نمیکند. LED روی برد رله روشن میشود اما رله کلیک نمیکند.
علت: جریان ناکافی از GPIO 3.3 ولت برای راهاندازی قابل اعتماد LED اپتوکوپلر.
راه حل - استفاده از یک ماژول رله اختصاصی 3.3 ولت:
به دنبال ماژولهای رله باشید که به طور خاص برای ولتاژ تحریک 3.3 ولت (نه فقط سازگار با 3.3 ولت) رتبه بندی شدهاند. اینها دارای مدارهای اپتوکوپلر بهینه شده با الزامات ولتاژ رو به جلو LED پایینتر هستند.
یا - تغذیه VCC ماژول رله در 5 ولت:
حتی اگر ESP32 3.3 ولت است، میتوانید VCC ماژول رله را از 5 ولت (پین 5 ولت ESP32 یا منبع تغذیه خارجی) تغذیه کنید در حالی که GPIO ESP32 جریان را به GND میکشد. این کار جریان LED قویتری را از طریق اپتوکوپلر فراهم میکند.
اشتباه شماره 4: “جامپر را اشتباه تنظیم کردم”
علامت: رفتار رله برعکس چیزی است که کد شما انتظار دارد.
علت: ماژول رله دارای یک جامپر تنظیم شده روی حالت تحریک سطح بالا است.
رفع:
به دنبال یک جامپر 3 پین در نزدیکی ترمینالهای پیچی بگردید، که معمولاً با برچسبهای زیر مشخص شده است:
- H (Trigger سطح بالا)
- COM (مشترک)
- L (Trigger سطح پایین)
جامپر را حرکت دهید تا COM و L را برای حالت trigger سطح پایین به هم متصل کنید.
اگر جامپری وجود ندارد: برخی از ماژولهای رله فقط در سطح پایین ثابت هستند. توضیحات محصول را بررسی کنید یا تست کنید: اگر LOW آن را روشن میکند، trigger سطح پایین است.
اشتباه #5: “رله صدا میدهد اما بار روشن نمیشود”
علامت: صدای کلیک رله را میشنوید، LED روشن میشود، اما لامپ/موتور/پمپ شما فعال نمیشود.
علت: این یک مشکل trigger نیست - این یک مشکل سیمکشی در سمت ولتاژ بالا است.
رفع مشکل - بررسی سیمکشی بار:
COM (مشترک) به منبع تغذیه متصل میشود (به عنوان مثال، 12V+ یا خط AC)
NO (Normally Open) به ترمینال مثبت بار متصل میشود
منفی بار به منفی منبع تغذیه برمیگردد
برای بارهای AC (مانند لامپ):
- COM به سیم برق AC
- NO به لامپ
- ترمینال دیگر لامپ به نول AC
نکته ایمنی مهم:
اگر با ولتاژ برق AC (110V/220V) کار میکنید، قبل از سیمکشی، برق را در قطعکننده مدار خاموش کنید. اگر با سیمکشی AC راحت نیستید، از یک برقکار واجد شرایط استفاده کنید.
کاربردهای عملی: چه زمانی واقعاً به رلههای Trigger سطح پایین نیاز دارید
1. پروژههای اتوماسیون خانگی
سناریو: پریز هوشمند کنترل شده توسط ESP32 برای لامپها.
چرا Trigger سطح پایین:
- ESP32 3.3 ولت است (سازگاری بهتر)
- لامپ باید به طور پیش فرض خاموش باشد (ایمن در برابر خطا)
- Triggerهای تصادفی در طول اتصال مجدد WiFi آزاردهنده خواهد بود
پیاده سازی:
const int relayPin = 23;
2. کنترلر آبیاری باغ
سناریو: پمپ آب زمانبندی شده توسط آردوینو برای باغچهها.
چرا Trigger سطح پایین:
- پمپ به طور پیش فرض خاموش است (از جاری شدن سیل در صورت خرابی آردوینو جلوگیری میکند)
- سیمهای بلند به رله فضای باز (مصونیت در برابر نویز با pull-up)
- ایمن در برابر خطا: سیم قطع شده = بدون آب = گیاه زنده میماند
پیاده سازی:
void waterGarden(int minutes) {
3. مدیریت برق پرینتر سه بعدی
سناریو: روشن کردن خودکار پرینتر قبل از شروع کار چاپ، خاموش کردن پس از اتمام.
چرا Trigger سطح پایین:
- پرینتر در صورت عدم چاپ خاموش است (صرفه جویی در مصرف انرژی، کاهش خطر آتش سوزی)
- OctoPrint (Raspberry Pi) از GPIO 3.3 ولت استفاده میکند
- ایمن در برابر خطا: خرابی سیستم = پرینتر خاموش میماند
4. کنترلر آکواریوم
سناریو: کنترل بخاری مبتنی بر دما با آردوینو.
چرا Trigger سطح پایین:
- بخاری به طور پیش فرض خاموش است (از گرم شدن بیش از حد ماهی در صورت خرابی سنسور جلوگیری میکند)
- سازگاری با آردوینو 5 ولت یا ESP32 3.3 ولت
- رلههای متعدد (چراغها، فیلتر، بخاری) همگی به رفتار ایمن در برابر خطای هماهنگ نیاز دارند
این برای پروژه بعدی شما چه معنایی دارد
رلههای trigger سطح پایین عجیب نیستند - آنها استاندارد هستند. هنگامی که منطق را درونی کنید (“LOW = ON, HIGH = OFF”)، به یک عادت ثانویه تبدیل میشوند. و مزایا - رفتار ایمن در برابر خطا، سازگاری بهتر، مصونیت در برابر نویز - آنها را به انتخابی هوشمندانه برای اکثر پروژههای آردوینو و ESP32 تبدیل میکند.
راهنمای تصمیم گیری سریع:
اگر: از رله Trigger سطح پایین استفاده کنید
- ✅ از ESP32، ESP8266 یا هر میکروکنترلر 3.3 ولت استفاده میکنید
- ✅ بار شما باید به طور پیش فرض خاموش باشد (پمپها، بخاریها، آلارمها)
- ✅ رفتار ایمن در برابر خطا را میخواهید (قطع سیم = رله خاموش)
- ✅ در حال ساخت یک پروژه مبتدی هستید
- ✅ برای سازگاری ارزش قائل هستید تا جنگیدن با سطوح منطقی
اگر: از رله Trigger سطح بالا استفاده کنید
- ✅ برنامه خاص شما نیاز به روشن بودن رله در هنگام بوت میکروکنترلر دارد
- ✅ با سیستمهای کنترل صنعتی (PLC) ارتباط برقرار میکنید
- ✅ دلیل بسیار خاصی دارید (و میدانید چیست)
نرم افزار نکته:
هنگام خرید ماژولهای رله، به دنبال ماژولهایی باشید که از trigger سطح بالا و پایین با یک جامپر پشتیبانی میکنند. این به شما انعطاف پذیری میدهد تا بهترین حالت را برای هر پروژه انتخاب کنید.
انتخاب ماژول رله مناسب
هنگام خرید ماژولهای رله، موارد زیر را بررسی کنید:
برای Arduino Uno / Mega (5V):
- ولتاژ کاری: 5V DC
- ولتاژ Trigger: سازگار با 5 ولت
- جریان Trigger: <15mA (پینهای آردوینو حداکثر 20-40mA منبع میدهند)
- جداسازی اپتوکوپلر: بله (PC817 یا مشابه)
For ESP32 / ESP8266 (3.3V):
- Operating voltage: 5V DC (for relay coil power)
- Trigger voltage: 3.3V compatible OR low-level trigger mode
- Trigger current: <12mA (ESP32 pins source max 12mA)
- Optocoupler isolation: Required
- Separate VCC/JD-VCC: Preferred
Common Specifications:
- Contact rating: 10A @ 250VAC or 10A @ 30VDC (typical)
- Number of channels: 1, 2, 4, 8 (based on your needs)
- Mounting: Screw terminals for easy wiring
- Indicators: LED for power and relay state
VIOX Electric offers a complete range of relay modules optimized for Arduino, ESP32, and industrial control applications. Our relay modules feature:
- True 3.3V/5V compatibility with low-level trigger design
- High-quality optocoupler isolation (PC817)
- Screw terminal connections for secure wiring
- Dual-LED indicators (power + relay state)
- Selectable trigger modes (jumper for high/low level)
Browse VIOX Relay Modules → or Contact our technical team for application-specific recommendations.


