AVR, در کوچه پس کوچه های الکترونیک

تولید PWM چند کانالی توسط AVR

در این قسمت از سری آموزش های “در کوچه پس کوچه های الکترونیک” با روش تولید PWM چند کانالی توسط AVR  یا به عبارتی Multi channel PWM آشنا می شویم و بعد از فهمیدن روش کار ، با انواع کامپایلرها و زبان های Basic و C و ++C روش پیاده سازی چند کانالی PWM رو بررسی می کنیم. همونطور که می دونید میکروکنترلرهای موجود همگی حداقل دارای یک واحد PWM هستند. اما زمانی که در یک پروژه نیاز به تعداد زیادی کانال PWM باشد ، قطعا PWM سخت افزاری جوابگو نیست! پس راه حل چیست؟!

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

ممکنه برای شما سوال پیش اومده باشه که حداکثر چند کانال به این روش می تونیم داشته باشیم؟ برای رسیدن به جواب سوال بالا و بحث های پیرامون این موضوع ویدئو زیر رو ببینید!



برای دیدن ویدئو با کیفیت بهتر از لینک های ذیل استفاده کنید: دریافت از مدیافایر

منابع آموزشی جهت یادگیری بیشتر


author-avatar

درباره مرتضی زندی

خلق کردن شماره 1 علاقه مندی های من هست. برنامه نویسی بهترین ابزاری بوده که تا الان برای این کار پیدا کردم. بیس الکترونیک دارم و دستی بر آتش در دنیای رشته های مجاور. تجربه سال ها فعالیت در تیم های R&D رو دارم، در این بین در حوزه ی امبدد سیستم ها فعالیتم پررنگ تر هست. عاشق یادگیری و یاد دادن هستم و تلاش می کنم تجربیاتم رو به زبانی ساده از طریق EasyMCU.org به نحوی کاربردی و موثر با علاقه مندان این حوزه به اشتراک بذارم.

6 نظر در “تولید PWM چند کانالی توسط AVR

  1. Sp گفت:

    سلام وقت بخیر ممنون از زحمات شما لطفا فایل pdf از برنامه نوشته شده در سایت قرار بدید

    1. mZandi گفت:

      با سلام
      ممنون از نظر شما، انچام خواهد شد.

  2. مهران گفت:

    سلام. ببخشید فرکانس 50 کیلوهرتز را چطوری میشه روی این حالت پیاده کرد؟؟ از روش شما حساب میکنم به نتیجه نمیرسم. میشه راهنمایی بفرمایید. مممنون میشم.

    1. mZandi گفت:

      سلام و درود.

      در ویدئو راجع به ماکسیمم فرکانس قدری صحبت شده و یک رابطه ارائه شده، با کریستال 8 مگاهرتزی، از اونجایی که PWM ها به صورت نرم افزاری ساخته می شوند، به نظر می رسه که 50 کیلو هرتز فرکانس خیلی زیادی باشه!
      دقت کنید که در PWM ، بین میزان فرکانس و تفکیک پذیری DutyCyle همیشه یک trade-off وجود داره!

      با آرزوی موفقیت

  3. سهیل گفت:

    با سلام من این برنامه را در کدویژن نوشتم ولی عمل نمی کنه می تونید این برنامه را ویرایش و به ایمیل من ارسال کنید
    باتشکر.
    #define CPU 8000000
    #include
    #include
    #include
    #include
    int count=0;
    int Npwm[8];
    void main(void)
    {
    int i=0;
    DDRD=1<<0|1<<1;
    TIMSK=1<<0;
    TCNT0=236;
    TCCR0=1<<1;
    #asm("sei")
    while (1)
    {
    for(i=0;icount){
    PORTD |=1;
    }
    else{
    PORTD &=~(1);
    }

    if(Npwm[1]>count){
    PORTD |=1<<1;
    }
    else{
    PORTD &=~(1<count){
    PORTD |=1<<2;
    }
    else{
    PORTD &=~(1<count){
    PORTD |=1<<3;
    }
    else{
    PORTD &=~(1<count){
    PORTD |=1<<4;
    }
    else{
    PORTD &=~(1<count){
    PORTD |=1<<5;
    }
    else{
    PORTD &=~(1<count){
    PORTD |=1<<6;
    }
    else{
    PORTD &=~(1<count){
    PORTD |=1<<7;
    }
    else{
    PORTD &=~(1<99){
    count=0;
    }
    TCNT0=236;
    TCCR0=1<<1;
    }

    1. Admin گفت:

      سلام.

      ضبط و تولید و ویرایش هر کدام از این آموزش ها چندین ساعت بلکه روز ، زمان برده، این موضوع با 3 زبان برنامه نویسی خط به خط توضیح داده شده، در دو IDE روال کار نمایش داده شده ، پروژه شبیه سازی شده و عملکردش نشان داده شده، توضیحات برای کدویژن هم داده شده …
      اگر ویدئو آموزشی رو کامل و با دقت ببینید مطمئنن می تونید جواب بگیرید. لطفا حداقل برای کار خودتون وقت بذارید …

      موفق باشید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این سایت از اکیسمت برای کاهش جفنگ استفاده می‌کند. درباره چگونگی پردازش داده‌های دیدگاه خود بیشتر بدانید.