ترفند قطعات الکترونیک مدارهای الکترونیک میکروکنترلر AVR

آموزش ساخت دیمر دیجیتال با استفاده از میکروکنترلرهای AVR

نوشته شده توسط علی زاهدی

گاهی برای کنترل نور لامپ، سرعت موتور و … ولتاژ را کنترل کنیم. به عبارت دیگر زمانی که ولتاژ ورودی لامپ را کاهش دهیم نور آن نیز کاهش خواهد یافت. اما چطور میتوان ولتاژ برق را کاهش داد. یکی از بهترین راه ها برای کنترل ولتاژ ورودی وسایل مختلف استفاده از مدار دیمر است. این مدار بسته به نوع آن از چند قطعه ساده برای کنترل ولتاژ ورودی وسایل برقی استفاده می‌کند. دیمر ها انواع مختلفی دارند. دیمر ها عموما به دو دسته DC و AC و هرکدام آنها به دو دسته دیجیتال و آنالوگ تقسیم می‌شود. در این آموزش قصد داریم تا مدار و همچنین نحوه ساخت یک دیمر دیجیتال را با یک دیگر بررسی کنیم. در ادامه با مرجع تخصصی بردهای امبدد به زبان فارسی، دیجی اسپارک همراه باشید.

 


دیمر چیست؟


دیمر وسیله ای است که از آن عموما برای کنترل نور لامپ و دور موتور ها استفاده می شود. این مدار با دریافت ولتاژ، در خروجی ولتاژی قابل تنظیم بین ۰ تا ولتاژ منبع را ارائه می‌دهد. عملکرد مدار به گونه ای است که با اتسفاده از مداری نسیتا ساده  قسمتی از موج ورودی را به صورت عمودی برش می‌دهد. البته این موضوع وابسته به نوع دیمر نیز است. دیمر ها در دسته بندی های مختلفی قرار می‌گیرند. که از جمله آنها میتوان به دیمر AC یا DC و همچنین دیمر آنالوگ و دیجیتال اشاره نمود. ساده ترین نوع دیمر، دیمر مکانیکی یا همان آنالوگ است. که از یک ولوم برای تنظیم ولتاژ خروجی استفاده می شود. مدار دیمر مکانیکی را می‌توانید در را در تصویر زیر مشاهده می‌کنید.

در مدار بالا سیم فاز وارد یکی از پابه های مصرف کننده شده و پایه دیگر مصرف کننده به مدار دیمر متصل شده است. به عبارت دیگر مدار دیمر با مصرف کننده سری شده است. در این مدار از مقاومت VR1 برای کنترل مقدار جابه‌جایی فاز روی گیت ترایاک به کار می‌رود. این کار ولتاژ اعمال شده به مصرف کننده را در زمان‌های مختلف تناوب AC کنترل می‌کند. ولتاژ پایه گیت از ترکیب مقاومت متغیر VR1 به همراه مقاومت R1 و خازن C1 به همراه دیاک به دست می‌آید.

در آغاز یک دوره تناوب خازن موجود در مدار توسط مقاومت های VR1 و R1 شارژ می‌شود. این عملیتات تا زمانی که خازن بتواند دیاک را وارد حالت هدایت کند، ادامه خواهد داشت. زمانی دیاک شروع به هدایت کند. به خازن اجازه می‌دهد تا بار ذخیره شده در خود را بر روی پایه گیت ترایاک تخلیه کرده و آن را روشن کند. وقتی که ترایاک به اشباع برسد. مدار کنترل فازِ تحریکِ گیتِ موازی با خود را اتصال کوتاه کرده و باقیمانده نیم موج را کنترل می‌کند. شکل موج a مربوط به ولتاژ ورودی دیمر و شکل موج های b و c مربوط به خروجی مدار در حالت های مختلف است.

 


ترایاک چیست؟


ترایاک کوتاه شده عبارت triode for alternate current و به معنی تریود جریان متناوب است. این قطعه به عنوان یک تریستور دوطرفه نیز شناخته می‌شد. ترایاک یک نیمه هادی با عملکردی مشابه یک جفت تریستور SCR است. تریاک دقیقاً مانند دو تریستور معمولی عمل می‌کند که به صورت موازی معکوس به یکدیگر متصل شده‌اند. در واقع دو گیت به هم متصل شده و آند یک دستگاه به کاتد دیگری متصل است. این طراحی به ترایاک اجازه می دهد که بین هر دو نیمه یک موج AC سوئیچ کرده و جابجا شود.

 


دیمر دیجیتال


تا به اینجا با دیمر مکانیکی یا آنالوگ آشنا شدیم که با استفاده از یک ولوم توان AC را کنترل می‌کرد. اما این مدار دستی است و قابلیت هوشمند سازی و یا کنترل از راه دور را ندارد. برای هوشمند سازی و یا کنترل از راه دور بایستی از دیمر دیجیتال استفاده شود. یکی از تفاوت های مدار دیمر دیجیتال و آنالوگ استفاده از میکروکنترلر در بخش فرمان مدار دیمر دیجیتال است. با استفاده از این مدار میتوانید نور لامپ و یا ولتاژ ورودی وسایل برقی دیگر را از راه دور و یا به صورت هوشمند کنترل کنید. مدار دیمر دیجیتال از بخش های مختلفی تشکیل می‌شود. که بخش های اصلی این مدار عبارتند از؛

  1. بخش  آشکار ساز عبور از صفر (Zero Crossing)
  2. بخش قدرت
  3. بخش فرمان

 


بخش آشکار ساز عبور از صفر


برای کنترل توان AC در دیمر های دیجیتال نیاز است که پالس خورجی میکروکنترلر با برق شهر همزمان ( یا اصتلاحا Sync باشد). برای این کار بایستی زمانی که موج سینوسی برق شهر به نقطه صفر میرسد، این نقطه تشخیص داده شود و پالسی به سمت میکروکنترلر ارسال شود. این عمل باعث بالا ارسال صحیح پالس از میکروکنترلر به سمت ترایاک می‌شود. مدار های مختلفی برای تشخیص صفر موج سینوسی برق شهر و اعلام آن به میکروکنترلر وجود دارد.

در مدار بالا پس از از تبدیل ولتاژ ۲۲۰ ولت به ۱۲ ولت توسط ترانس، از یک دیود پل برای یکسو سازی ولتاژ AC استفاده شده است. پس از آن توسط یک مقاومت، یک پتانسیومتر و یک ترانزیستورنقطه صفر موج AC تشخیص داده می‌شود. هر بار که موج AC از نقطه صفر  عبور کند یک پال مربعی با ولتاژ ۵ ولت روی پابه میکروکنترلر قرار میگیرد. همانطور که گفته شد این عمل برای همگام سازی پالس های خروجی میکروکنترلر با موج AC برق شهر انجام می‌شود.

توجه: خطر برق گرفتگی در این مدار بسیار بالا است. با توجه به این که این مدار مستقیما با برق ۲۲۰ ولت سر و کار دارد. هنگام بستن اتصالات و استفاده از این مدار بسیار احتیاط کنید. در صورتی که یکی از سیم های برق را لمس کنید. دچار برق گرفتگی خواهید شد.

 


بخش قدرت


بخش قدرت مدار دیمر دیجیتال از از یک عدد ترایاک و یک اپتو ترایاک تشکیل شده است. در بخش قبلی با ترایاک و نحوه عملکرد آن آشنا شدیم. اما شاید قطعه اپتو ترایاک کمی برای شما نا آشنا باشد. اپتو ترایاک قطعه ای شبیه به اپتو کوپلر است اما با این تفاوت که در قسمت خروجی آن بجای  فوتو ترانزیستور از فوتو ترایاک استفاده است. داخل این قطعه یک دیود نوری و یک فوتو ترایاک قرار دارد که هر دو آنها نسبت به محیط بیرون ایزوله شده اند. به عبارت دیگر فوتوترایاک داخلی تنها می تواند نور ساطع شده توسط دیود نوری داخلی را دریافت کند.

همانطور که در بخش قبلی گفته شد. این مدار مستقیما با برق ۲۲۰ ولت در ارتباط است. پس لازم است بسیار احتیاط کنید تا دچار برق گرفتگی نشوید. در تصویر زیر میتوانید مدار بخش قدرت یک دیمر دیجیتال را مشاهده کنید.

 


بخش فرمان


این بخش که مهم ترین بخش مدار است، شامل یک میکروکنترلر به همراه دو کلید برای تنظیم توان خروجی است. در این آموزش برای از دو کلید برای تنظیم نور لامپ استفاده شده است. اما شما میتوانید از روش های دیگر برای تظیم این نور استفاده کنید. برای مثال استفاده از ماژول بلوتوث برای کنترل نور لامپ با استفاده از موبایل می‌تواند روش جالبی باشد. انتخاب روش کنترل خروجی کاملا بستگی به خلاقیت شما دارد.

پالس دریافتی از مدار آشکارساز عبور از صفر توسط یکی از پایه های اینتراپت میکروکنترلر دریافت شده و سپس یک پالس PWM با Duty Cycle متغیر اینجاد می‌شود. برای کنترل توان خروجی مدار دیمر دیجیتال Duty Cycle را تغیر می‌دهیم. پالس تولید شده توسط یکی از پایه های میکروکنترلر که به صورت خروجی تعریف شده است. به سمت قطعه اپتو ترایاک ارسال شده و با توجه به مدار بخش فرمان ولتاژ خروجی تغیر خواهد کرد.

 


اتصالات پروژه


در این آموزش با بخش های مختلف مدار یک دیمر دیجیتال آشنا شدیم. حالا بایستی این بخش هارا بصورت یک پارچه بر روی یک مدار قرار دهیم. در تصویر زیر میتوانید اتصالات این پروژه را مشاهده کنید.

همانطور که در تصویر بالا مشاهده می‌کنید. در این مدار یک ترمینال در ورودی برای اتصال برق ۲۲۰ ولت قرار داده شده است. این ولتاژ وارد یک ترمینال دیگر شده که آن نشانگر اتصال این ولتاژ به ترانس است. وظیفه ترانس در این مدار کاهش ولتاژ ۲۲۰ به ۱۲ ولت است. سپس در ادامه بعد از ترانس، یک دیود پل برای یک سو سازی موج AC قرار داده شده است. خروجی مثبت دیود پل به ۲ خط تقسیم می شود. خط اول وارد بخش عبور از صفر می شود که بالا تر راجع به آن توضیح دادیم. خط دوم واردرگولاتور ۵ ولت می شود تا ولتاژ تغذیه میکروکنترلر تامین شود. ولتاژ ۲۲۰ که در قسمت ورودی قرار دارد به خروجی نیز متصل است. نکته قابل توسجه این است که مدار دیمر بر روی این خط با مصرف کننده سری می‌شود. خورجی مدار آشکار ساز عبور از صفر به پایه INT1 یعنی پین D3 متصل شده و خروجی PWM که به قطعه اپتو ترایاک متصل می‌شود، روی پورت D4 قرار دارد.

 


کدنویسی پروژه


برای کدنویسی بر روی میکروکنترلر های AVR از کامپایلر های مختلفی می‌توانید استفاده کنید. در این آموزش ما برای کد نویسی بر روی این میکروکنترلرها کامپایلر کدویژن را انتخاب کردیم. برای شروع کدنویسی در این نرم‌ افزار ابتدا بایستی پروژه جدید داخل این نرم افزار ساخته و میکروکنترلر مورد نظر خود را انتخاب کنید. در صورتی که آشنایی کافی با این نرم افزار را ندارید به آموزش نحوه ی ساخت پروژه جدید و پروگرام کردن میکروکنترلر مراجعه کنید.

#include <mega8.h>
#include <delay.h>

eeprom unsigned int dutycycle;

interrupt [EXT_INT1] void ext_int1_isr(void)
  {
  //Timer1 Start
    TCCR1B=(0<<CS12) | (0<<CS11) | (1<<CS10);
    //Timer1= &HFFFF -dutycycle
    OCR1AH=(0xFF-dutycycle)>>8;
    OCR1AL=(0xFF-dutycycle)&0xff;
  }

interrupt [TIM1_COMPA] void timer1_compa_isr(void)
  {
  //Timer1 Stop
  TCCR1B=(0<<CS12) | (0<<CS11) | (0<<CS10);
  //Timer1 = 0;
  TCNT1H=0x00;
  TCNT1L=0x00;
  //Pulse
  PORTD.4=0;
  delay_us(10);
  PORTD.4=1;
  }

void main(void)
  {
   // Input/Output Ports initialization
  DDRD.6=DDRD.7=0;
  DDRD.4=1;
  // Timer/Counter 1 initialization
  TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
  TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
  OCR1AH=0xFF;
  OCR1AL=0xFF;
  // Timer(s)/Counter(s) Interrupt(s) initialization
  TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (1<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<TOIE0);
  // External Interrupt(s) initialization
  GICR|=(1<<INT1) | (0<<INT0);
  MCUCR=(1<<ISC11) | (1<<ISC10) | (0<<ISC01) | (0<<ISC00);
  GIFR=(1<<INTF1) | (0<<INTF0);
  // Global enable interrupts
  #asm("sei")
  while (1)
    {
    if(PIND.6==0)
      {
      if(dutycycle>=32767)dutycycle=32767;
      else dutycycle=dutycycle+100;
      }
    if(PIND.7==0)
      {
      if(dutycycle<=200)dutycycle=200;
      else dutycycle=dutycycle-100;
      }
    }
  }

توجه داشته باشید که مد بالا برای مقدار کریستال ۸ مگاهرتز نوشته شده است. پس هنگام تنظیم فیوز بیت ها موقع پروگرام آنهار را بر روی ۸ مگاهرتز داخلی تنظیم کنید. در صورتی که علاقمند به استفاده از کریستال های دیگر هستید بایستی مقادیر تنظیم شده برای تایمر را تغییر دهید.

 


نحوه عملکرد کد پروژه


در کد بالا پس از اضافه کردن کتابخانه های مورد نیاز برنامه، در قسمت ابتدای تابع main دو پریفرال تایمر شماره ۱ و وقفه خارجی شماره ۱ فعال شده است. وقفه خارجی شماره ۱ بر روی لبه بالا رونده تنظیم شده است. همانطور که در بخش های قبلی توضیح داده شد از مدار آشکار ساز عبور از صفر برای همگام سازی موج AC ورودی و خورجی مدار دیمر دیجیتال استفاده می‌شود. پش از اعلام نقطه صفر به میکروکنترلر یک پالس PWM با ستفاده از تایمر شماره یک ساخته می‌شود. پهنای این پالس با توجه به متغیر dutycycle تنظیم می‌شود. داخل حلقه while تنها شرط کلید ها برای تنظیم مقدار متغیر dutycycle نوشته شده است.

عملکرد کد به این صورت است که مقدار زمانی که نقطه صفر توسط مدار عبور از صفر تشخیص داده می‌شود، در روتین اینتراپت تایمر با مدت زمان سر ریز وابسته به متغیر dutycycle فعال می شود. سپس پس از اتمام مدت زمان سرریز تایمر ابتدا داخل روتین تایمر مقادیر تنظیم شده برای تایمر صفر شده و همچنین تایمر نیز غیر فعال شده و سپس پالس قرار گرفته در خروجی به مدت ۱۰ میکروثانیه صفر می‌شود. و مراحل این حلقه با هر بار تشخیص نقطه صفر در موج AC ورودی تکرار می‌شود.

 

 


جمع بندی


با توجه به حرکت همه وسایل موجود در اطراف ما به سمت IOT و هوشمند سازی، نور پردازی خانه و محل کار نیز تحت تاثیر این حرکت قرار می‌گیرد. برای کنترل نور خانه یا محل کار دو راه وجود دارد. راه اول استفاده از لامپ های هوشمند یا قابل کنترل از راه دور است. این راه ممکن است هزینه بسیار زیادی برای شما داشته باشد. اما راه دوم استفاده از مدار دیمر دیجیتال سر راه برق لامپ است. همانطور که در طول آموزش گفته شد. این مدار به شما اجازه می‌دهد تا ولتاژ خط AC برق را کنترل کنید. با توجه به این که در مدار دیمر دیجیتال به جای ولوم از میکروکنترلر برای کنترل خروجی استفاده شده است. این مدار قابلیت پیاده سازی ایده های مختلفی بسته به خلاقیت شما را دارد.

 


لوازم مورد نیاز


لیست قطعات و لوازمی که برای اجرای این آموزش نیاز دارید، در زیر قرار داده شده است.

  • میکروکنترلر ATmega8
  • ترانس ۱۲ ولت دو سیم
  • دیود پل
  • ترانزیستور NPN
  • مقاومت
  • پتانسومتر
  • ترایاک
  • اپتو ترایاک
  • کلید فشاری

 

چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید. بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریع‌ترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند می‌توانید از همین طریق اطلاع رسانی کنید.

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

علی زاهدی

برنامه نویس و طراح سیستم های مبتنی بر میکروکنترلر

دانسته هایتان را مانند یک ساعت مچی در دست کنید، نه صرفا به این خاطر که نشان دهید آن را دارید. بلکه به این خاطر که اگر کسی از شما ساعت را پرسید، برایش بگویید.
لرد چسترفیلد

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۸ دیدگاه

    • با سلام
      همچین ماژولی داخل فروشگاه موجود نیست و شماتیک این مدار داخل آموزش قرار گرفته تا خود شما برای ساخت این مدار اقدام کنید.

  • با عرض سلام و خسته نباشد .. من این دیمر را برای کنترل دور موتور DC ۱۲ ولتی میخواستم و اینکه بشه مقدارو رو روی سون سگمنت دید ممکنه راهنماییم کنین ، بنده از برنامه نویسی اصلا اطلاعاتی ندارم ولی علاقه مند به الکترونیک هستم .. ممنون میشم راهنماییم کنین تا پروژه را بسازم

    • با سلام دیمری که در این آموزش است. AC بوده و مناسب مدارات DC نیست. برای ساخت مدار ابتدا بایستی اصول ابتدایی آن را فرا بگیرید.

      • با سلام
        این مدار شامل قطعات زیر است:
        میکروکنترلر ATmega8
        ترانس ۱۲ ولت دو سیم
        دیود پل
        ترانزیستور C945
        مقاومت مطابق شماتیک
        پتانسومتر
        ترایاک BTA16
        اپتو ترایاک MOC3021

  • با سلام. قطعه P1 که به پایه های D0 و D1 میکرو وصل شده چیه جناب مهندس؟ توی کد و توضیحات صحبتی ازش نکردید. با تشکر

    • با سلام
      این قطعه یک پین هدر است که برای دیباگ برنامه بر روی پایه های UART این میکروکنترلر قرار گرفته است. اما داخل کد برنامه ای برای آن وجود ندارد. شما میتوانید با فعال کردن UART از این پین هدر داده های مورد نظر خود مانند ولتاژ خوانده شده را به سمت کامپیوتر ارسال کرده و آنجا مشاهده کنید.

    • سلام ببخشید اگه به جای moc3021 از moc3041m استفاده کنم نیازی به مدار تشخیص صفر ندارم؟ خواهش میکنم جواب بدین خیلی گیرم

      • سلام
        بله در صورتی که از این قطعه استفاده کنید. با توجه به این که مدار تشخیص عبور از صفر داخل این قطعه قرار دارد دیگر نیازی بخش عبور از صفر در PCB ندارید.

  • با سلام و احترام
    بنده قصد دارم یک دیمر هوشمند کنترل شونده با وای فای بسازم.
    باید ماژول وای فای بخرم؟
    و این که باید چطور به دیمر متصل کنم؟

    • با سلام
      میتوانید همین سیستم را با کمی تغیرات بر روی میکروکنترلر های ESP8266 و یا ESP32 اجرا کنید. و از قابلیت وای فای آن استفاده کنید.

  • سلام جناب مهندس ، امکانش هست فایل کدنویسی این پروژه رو در اختیار بنده قرار بدید.

    • با سلام
      سورس کد این پروژه داخل آموزش قرار داده شده است. و چیزی غیر از مواردی که در این آموزش گفته شده است مورد نیاز نیست

  • سلام ، من می خوام از این مدار برای کنترل روشنایی لامپ استفاده کنم ، این مدار چند وات می تونه تحمل کنه ؟

    • با سلام
      توان خروجی مدار بستگی به Triac مورد استفاده در مدار دارد. در این مدار از BTA16 استفاده شده است. با توجه به جریان و ولتاژ خروجی میتوانید. توان مصرفی را محاسبه کنید.

      • سلام استاد
        یعنی اگه ولتاژ رو رو ۱۱۰ ولت تنظیم کنیم با تغییر وات خروجی ولتاژ دیگه تغییری نمیکنه

        • با سلام
          توجه داشته باشید که در این مدار از ترانس با مشخصات خاص خود استفاده شده است. در صورتی که ولتاژ ورودی مدار تغیر کند. بایستی دیگر المان های مدار نیز مطابق ورودی تغیر کند.

  • سلام
    ممنون بابت مطالب خوبتون
    آیا در این مدار حتما باید از ترانس ۱۲ ولت استفاده بشه یا میشه مستقیم برق ۲۲۰ ولت رو با مقاومت به پل دیود وصل کرد؟ چون من دیدم مدار های مشابهی هستن که اینکار رو کردن

    • با سلام
      بله مدار های دیگری نیز برای ساخت دیمر دیجیتال وجود دارد اما در این آموزش این مدار استفاده و تست شده است.

    • با سلام
      در این آموزش فایل PCB قرار ندارد. شماتیک و کد پروژه در این آموزش قرار گرفته شده و بایستی PCB را با توجه به نیاز پروژه خود طراحی کنید.

  • سلام
    ببخشید این مدار را برای موتور ac پیاده کرده ام ولی موتور ریپ می خورد و ولتاژ خروجی متغیر است. تغیر دور موتور ac را داریم ولی موتور ریپ می زند. برای رفع ریپ موتور چه کار باید کرد

    • با سلام
      بهتر است برای کنترل دور موتور های AC از اینورتر ها استفاده کنید. کاهش ولتاژ موتور باعث عملکرد نامناسب آن می‌شود.