ویژگی های ماژول اپتوکوپلر PC817
اپتوکوپلر یک قطعه الکترونیکی است که همانطور که از نام آن پیداست، وظیفه ی آن کوپل کردن یا اتصال دو نقطه با استفاده از فرمانهای نوری میباشد.
داخل اپتوکوپلرها یک دیود نوری به همراه یک فتوترانزیستور قرار گرفته که هردو نسبت به محیط خارج اپتوکوپلر ایزوله شده اند؛ بدین معنی که فتوترانزیستور داخلی تنها میتواند نور ساطع شده توسط دیود نوری داخلی را دریافت کند. بیس فتوترانزیستور توسط نور دریافتی از طرف دیود نوری تحریک میشود و میتواند با توجه به آن، جریان را از خود عبور بدهد.
از اپتو کوپلر برای کاربردهایی که نیاز است دو مدار، از هم جدا و ایزوله باشند، استفاده می شود. برای مثال وقتی که می خواهیم مدار کنترلی (مثلا پردازنده ها) از مدار قدرت (مثلا رله و موتور و …) جدا باشند و نویز مدار قدرت روی مدار کنترلی تاثیری نداشته باشد، از اپتوکوپلر استفاده می کنیم.
Warning
جریان خروجی اپتوکوپلر ها کم است. برای مثال، جریان خروجی PC817 حداکثر 50 میلی آمپر است. درنتیجه نمی توان قطعاتی با جریان مصرفی بالا (مثل موتور و …) را مستقیما به خروجی اپتوکوپلر وصل کرد. بدین منظور باید از یک ترانزیستور برای تأمین جریان استفاده کنید.
ساختار داخلی اپتوکوپلرها مانند شکل زیر است:
معرفی پایه ها (Pinout) ماژول اپتوکوپلر PC817
هر کانال اپتوکولر PC817 دارا ی4 پایه است. عملکرد این پایه ها به شرح زیر است:
پایه های سمت ورودی:
• IN: ورودی – 5 تا 30 ولت
• GND: زمین
پایه های سمت خروجی:
• OUT: پایه کلکتور (Collector) فتوترانزیستور
• GND: پایه امیتر (Emitter) فتوترانزیستور
پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.
Note
برای هر کانال یک جامپر وجود دارد. اگر جامپر وصل باشد، پایه G ورودی و خروجی به یکدیگر متصل هستند. ولی اگر جامپر وصل نباشد، این دو پایه جدا از هم هستند.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول اپتوکوپلر PC817 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر، ماژول را به آردوینو وصل کنید.
گام دوم: کد
کد زیر را روی برد آردوینو آپلود کنید. این کد، ورودی اپتو کوپلر را به طور مداوم یک ثانیه وصل و یک ثانیه قطع می کند.
/*
PC817 Optocoupler
modified on 29 Sep 2020
by Mohammad Reza Akbari @ Electropeak
Home
Based on Adafruit Example
*/
void setup() {
pinMode(2, OUTPUT);
}
void loop() {
digitalWrite(2, HIGH);
delay(1000);
digitalWrite(2, LOW);
delay(1000);
}