دهنده – کشنده یا push-pull و درین باز یا open-drain دو گونه ی خروجی دیجیتال (دوحالته) میکروکنترلر هستند .

خروجی درین-باز یا Open-drain
در گونه ی خروجی درین-باز Open-drain ( مشابه Open collector ) تنها یک NMOS بکار برده میشه که Drain این ماسفت که همون پایه ی خروجی میکروکنترلر هست به جایی بسته نیست. نامگذاری این گونه ی خروجی هم بر همین بنیان بوده.
ماسفت NMOS همچون یک سوئیچ ساده تنها میتواند پایه ی خروجی رو به زمین ببندد و میکروکنترلر تنها میتونه جریان رو فروکش (sink) کنه.
هنگامی که ترانزیستور خاموش است-> پایه ی خروجی به جایی بسته نیست.
هنگامی که ترانزیستور روشن است-> پایه ی خروجی بسته به امیتر که به زمین بسته شده.
خروجی دهنده-کشنده یا Push-pull
در خروجی دهنده-کشنده یا Push-pull ، یک NMOS و یک PMOS بکار برده میشه، همچون یک کلید SPDT کار میکنه و میتونه پایه ی میکروکنترلر رو هم به زمین و هم به ولتاژ بالا ( VDD) ببنده.
کلید SPDT : کلیدی است که یک پایه ی ورودی دارد که میتواند به یکی از دو پایه ی خروجی بسته شود.
در فاز کشنده یا Pull phase ماسفت NMOS روشن میشه :
- پایه ی خروجی میکروکنترلر به زمین بسته میشه.
- پایه ی میکروکنترلر، جریان رو به ولتاژ پایین فرومیکشه ( سینک= Sink میکنه ) .
- سوی جریان به درون.
در فاز دهنده یا Push phase ماسفت PMOS روشن میشه:
- پایه ی خروجی میکروکنترلر به ولتاژ بالا بسته میشه.
- پایه ی میکرو، جریان رو از ولتاژ بالا فرامیده (سورس میکنه).
- سوی جریان به بیرون.

نمونه بکار گیری از Push-pull و Open-drain برای روشن کردن led
پندارید میخواهیم یک led رو روشن کنیم. برای روشن کردن led باید در دو سوی این مصرف کننده ناهمسانی ولتاژ (اختلاف ولتاژ) بسازیم ، تاجریان) از بار (مصرف کننده) رد شود و led روشن گردد.
سوی جریان هم مهم هست و در led ها سوی جریان باید از آند به سوی کاتد باشه. پس ولتاژ بالا یا VCC رو با یک مقاومت به آند و کاتد رو هم به زمین متصل میکنیم. مقاومت برای مهار جریانی است که از LED رد میشود.

در ادامه میخواهیم این led رو با یکی از پایه های میکروکنترلر روشن و خاموش کنیم. دو گزینه داریم ، میتونیم پایه ی میکروکنترلر رو جای زمین یا ولتاژ بالا (VCC) بذاریم.

پایه ی میکرو بجای ولتاژ بالا
اگر پایه ی میکروکنترلر رو جایگزین ولتاژ بالا (VCC) کنیم ، هنگامی که بخواهیم led روشن بشه ، پایه ی میکروکنترلر باید VCC باشه و هنگام خاموش، پایه ی میکروکنترلر باید زمین بشه. چون درین-باز نمیتونه پایه ی میکروکنترلر رو به VCC ببنده در این سیم بندی باید خروجی دهنده-کشنده یا Push-pull بکار ببریم.
در فاز دهندگی یا Push phase پایه ی میکروکنترلر به VCC بسته میشه ، میکروکنترلر جریان رو فرامیده (سورس میکنه) و سوی جریان به بیرون میکروکنترلر هست و led روشن میشه.
در فاز کشندگی یا Pull phase پایه ی میکروکنترلر به زمین بسته است و از آنجا که دو سوی بار به زمین بسته هست ، در دو سوی بار ، ناهمسانی ولتاژ نداریم و جریانی هم نیست و led هم خاموشه.

پایه ی میکرو بجای زمین و بکارگیری خروجی دهنده-کشنده
اگر پایه ی میکروکنترلر رو جایگزین زمین کنیم و طرف دیگر بار به VCC وصل باشد ، هم خروجی Push-pull و هم Open-drain را میتوان بکار برد.
نخست خروجی دهنده-کشنده یا Push-pull رو بررسی میکنیم. در فاز کشندگی یا Pull phase پایه ی میکروکنترلر زمین میشه ، یک سوی led به ولتاژ بالا (vcc) و سوی دیگه با بکارگیری پایه ی میکرو به زمین بسته میشه. و جریان در led روان میشه و led روشن میشه. در این شیوه، سوی جریان به درون میکرو هست و میکروکنترلر جریان رو فرومیبره (سینک میکنه).
در فاز دهندگی یا Push phase پایه ی میکرو به VCC بسته میشه و چون ناهمسانی ولتاژ در دو سوی led نیست، led خاموشه.

پایه ی میکرو بجای زمین و بکارگیری خروجی درین-باز
اگر پایه ی میکروکنترلر رو بجای زمین بذاریم، خروجی درین-باز یا Open-drain هم میشه بکار برد. در درین-باز پایه ی میکرو تنها میتونه به زمین بسته بشه. هنگامی که پایه ی میکرو زمین بشه در دو سر led ناهمسانی ولتاژ پدید میاد و جریان ردشونده از LED روشنش میکنه.
هنگامیکه NMOS خاموشه، میخواهیم که led هم خاموش باشه. برای خاموش بودن led :
1. نبود گذرگاهی پیوسته برای ردشدن جریان
هنگامی که NMOS خاموشه، راهی برای گذر جریان نیست و led هم خاموشه.
2. نبود ناهمسانی ولتاژ در دو سر led
ولی اگر بجای led، ورودی دیجیتال میکروکنترلر دیگه ای اونجا باشه، برای پیشگیری از نویز افتادن روی پایه و زمین شدن ناخواسته ی پایه ی میکرو، بایستی ولتاز روی پایه را هنگامی که NMOS خاموش است، با یک مقاومت بالاکش ( pull-up ) تثبیت کنیم.نیاز هست که پایه ی میکرو رو با یک مقاومت 5 تا 10 کیلو به VCC ببندیم.

کاربرد Push-pull و Open-drain
خروجی دهنده-کشنده یا push-pull رو هنگامی بکار میبریم که نیاز باشه پایه ی میکروکنترلر به VCC بسته بشه و جریان بار رو فراهم کنه.
خروجی درین-باز یا Open-drain رو هنگامی بکار میبریم که نیاز نباشه و یا نباید پایه ی میکروکنترلر به ولتاژ بالا بسته بشه.
کاربرد درین-باز در پروتکل ارتباطی تک سیم یا 1-wire در حسگر های دما و نم
برای نمونه پایه داده در حسگر دما و نم AM2302 یا حسگر دمای DS18B20 با یک مقاومت بالاکش به ولتاژ بالا بسته میشه و میکروکنترلر و حسگر هر دو تنها میتونن این پایه رو زمین کنند و این پایه هیچ جوره نباید مستقیم به VCC بسته بشه.
کاربرد درین-باز در پروتکل I2C



