اطلاعیه

Collapse
No announcement yet.

تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

    حداقل و حداکثر Duty cycle وابسته به دامنه سینوسی است. به عنوان توضیح بیشتر، فرض کنید یک سینوسی در محدوده 0 تا 255 با محور تقارن 127.5 برای تولید pwm با دقت 8 بیت مورد استفاده قرار بگیرد. در پیک مثبت سینوسی مقدار duty cycle برابر با 100 درصد و در پیک منفی مقدار آن 0 درصد خواهد بود. در مقادیر میانی هم duty cycle بسته به مقدار لحظه ای سینوسی تعیین می شود. حال اگر مقدار پیک سینوسی تغییر کند، به همان نسبت در محدوده duty cycle هم تغییر ایجاد می شود. بنابراین این دامنه سینوسی است که در سوال شما برای حدود min و max تاثیر گذار است که امکان تعیین آن از طریق ولوم هم وجود دارد. اما در تولید pwm سینوسی به منظور کاربرد در کنترل دور موتور آسنکرون، این منحنی V/f است که تعیین کننده دامنه سینوسی در هر فرکانس است. هر چند که به دلایل مورد نظر شما می توان در این دامنه تغییرات لازم را ایجاد کرد.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

    دیدگاه


      پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

      بله دقیقا همینطور است
      حالا سوال این است که اگر بخواهیم بدین منظور یک ولوم به مدار اضافه کنیم و دامنه سینوسی را با آن کم و زیاد کنیم برای تغذیه بارهای مختلف به غیر از موتور ، در کدام قسمت از کد شما باید تغییرات لازم را اعمال کنیم و این تغییرات باید به چه شکلی باشد؟؟؟؟
      چون من میخواهم خروجی این اینورتر را به یک ترانس بدهم و خروجی ترانس را به صورت ستاره ببندم و یک سه فاز 380 ولت یا بیشتر و یا کمتر داشته باشم و برای ثابت نگه داشتن ولتاژ خروجی ترانس با فیدبک نیاز دارم تا هر لحظه بتوانم دامنه سینوسی را کنترل کنم که این کنترل با ولوم (به منظور تغییر دامنه) و فیدبک(به منظور ثابت نگه داشتن آن به ازای تغییرات بار) خواهد بود.
      به عبارتی میخواهم یک فانکشن PID کنترلر به کد شما اضافه کنم که بتوانم دامنه سینوسی را با آن کنترل کنم ولی نمیدانم باید کدام قسمت از کد را تغییر دهم تا دامنه سینوسی با PID تغییر کند و نیاز به کمک شما دارم

      دیدگاه


        پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

        اگر در همان بار اول سوال خود را به شکل کامل مانند پست اخیر مطرح می کردید، زودتر به نتیجه می رسیدید. با توضیح جدید به نظر می رسد شما به سینوسی سه فاز 50 هرتز نیاز دارید و تغییر فرکانس مورد نظر شما نیست که در این حالت بسیاری از بخش های کد زائد خواهد بود. برای انجام صورت مسئله مورد نظر شما یک توصیه اساسی را ارائه می کنم که در مرحله اول وقت کافی صرفف کنید و عملکرد کد فعلی را بصورت دقیق درک کنید. در غیر اینصورت دچار یک سیکل معیوب خواهید شد که منجر به سوالات متعدد می شود و در انتها هم به نتیجه مطلوب نخواهید رسید. بنابراین در ابتدا به مرحله ای برسید که کد عملکرد کد فعلی کاملا برای شما روشن باشد و بعد این مسئله را اعلام کنید تا راهنمایی لازم را انجام دهم.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

          با سلام
          این قسمت که استراکچر تعریف شده
          struct
          {
          volatile unsigned char
          dir_f:1,
          deceleration_f:1,
          dir_change_f:1;
          }flags={0,0,0};
          1: همه تگها این عبارت رو دارن !
          مقدار دهی که نیست چون flag رو صفر دادیم پس اون قسمت چی کار می کنه ؟
          بدون امضاء

          دیدگاه


            پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

            منظور از 1: تعریف اعضای ساختار بصورت یک بیتی است.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

              با عرض سلام و سپاس
              من این برنامه رو با Atmel studio 6 شروع کردم فقظ یه مشکلی دارم.
              اگه امکان داره درمورد نحوه نوشتن و خواندن آرایه در حافظه فلش در Atmel studio هم توضیح بدید.
              مثلا همین ارایه sine و نحوه دسترسی به ردیفهای مختلف آن.
              با تشکر.

              دیدگاه


                پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                نوشته اصلی توسط mrr1361
                با عرض سلام و سپاس
                من این برنامه رو با Atmel studio 6 شروع کردم فقظ یه مشکلی دارم.
                اگه امکان داره درمورد نحوه نوشتن و خواندن آرایه در حافظه فلش در Atmel studio هم توضیح بدید.
                مثلا همین ارایه sine و نحوه دسترسی به ردیفهای مختلف آن.
                با تشکر.
                فکر کنم این کتاب بتونه بهت کمک کنه، صفحه 379 به بعد مبحث using flash program memory رو یه نگاه بنداز

                http://www.eca.ir/forum2/index.php?t...0756#msg660756
                اديسون : من هفتصد بار اشتباه نکرده ام ، من يکبار هم اشتباه نکرده ام من زماني موفق شدم که ،هفتصد راهي را که موفقيت آميز نبود اصلاح کردم.
                Gmail: Jsoltanii@gmail.com

                دیدگاه


                  پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                  با تشکر از دوستان
                  1- من با atmega16 سه تا spwm سه فاز رو تولید کردم، لطفاً یه بررسی کنید ببینید مشکلی داره یا نه؟؟
                  2- و اینکه چجور می تونم ایت برنامه رو با mega8 بنویسم؟؟؟ چون 3 تا کانال pwm بیشتر نداره؟؟
                  فایل پروژه و شبیه سازی:
                  https://www.mediafire.com/?dzruk83slvocj4a

                  کد spwm 3phase with atmega 16:
                  کد:
                  #include <mega16.h>
                  flash unsigned char sine[256]={
                  0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
                  0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
                  0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
                  0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
                  0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
                  0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
                  0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
                  0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
                  0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
                  0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
                  0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
                  0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
                  0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
                  0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
                  0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
                  0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c};
                  
                  // Timer 0 output compare interrupt service routine
                  interrupt [TIM0_COMP] void timer0_comp_isr(void)
                  {
                     static unsigned char index=0,x5=0;
                     if(++x5==5)
                     {
                     x5=0;
                     OCR1A=sine[index++];
                     OCR1B=sine[(unsigned char)(++index+84U)];
                     OCR2=sine[(unsigned char)(++index+170U)];
                     }
                   }
                  void main(void)
                  {
                    PORTD=0x00;
                    DDRD=(1<<PORTD7)|(1<<PORTD5)|(1<<PORTD4);
                    // TIM0 Mode: Fast PWM top=0xFF
                    TCCR0=(1<<WGM01)|(1<<WGM00)|(1<<CS00);
                    OCR0=124;
                    // TIM1 Mode: Ph. correct PWM top=0x00FF
                    TCCR1A=(1<<WGM10)|(1<<COM1A1)|(1<<COM1B1);
                    TCCR1B=(1<<CS10);
                    OCR1A=sine[0];
                    OCR1B=sine[84];
                    // Tim2 Mode: Phase correct PWM top=0xFF
                    TCCR2=(1<<WGM20)|(1<<COM21)|(1<<CS20);
                    OCR2=sine[170];
                    TIMSK=(1<<OCIE0);
                    #asm("sei");
                    while (1);
                  }
                  اديسون : من هفتصد بار اشتباه نکرده ام ، من يکبار هم اشتباه نکرده ام من زماني موفق شدم که ،هفتصد راهي را که موفقيت آميز نبود اصلاح کردم.
                  Gmail: Jsoltanii@gmail.com

                  دیدگاه


                    پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                    سلام دوستان
                    من برنامه Pwm سه فاز رو با مگا48 نوشتم ولی فرکانس خروجی 50 هرتز نمیشه و کمتره(حدود 45)
                    به نظرتون اشکال برنامه کجاست؟
                    فک کنم بخاطر اینه که تایمر 16 بیتی هست
                    کد:
                    /
                    *****************************************************
                    Project :3phase SPWM 
                    Date  : 12/24/2014
                    Author : JAVAD SOlTANI
                    Chip type        : ATmega48
                    Program type      : Application
                    AVR Core Clock frequency: 8.000000 MHz
                    Memory model      : Small
                    External RAM size    : 0
                    Data Stack size     : 256
                    *****************************************************/
                    #include <mega48.h>
                    flash unsigned char sine[256]={
                    0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
                    0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
                    0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
                    0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
                    0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
                    0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
                    0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
                    0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
                    0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
                    0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
                    0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
                    0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
                    0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
                    0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
                    0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
                    0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c};
                    
                    // Timer 1 output compare interrupt service routine
                    interrupt [TIM1_COMPA] void timer1_compa_isr(void)
                    {
                       static unsigned char index=0;
                       OCR0A=sine[index++];
                       OCR0B=sine[(unsigned char)(++index+85U)];
                       OCR2A=sine[(unsigned char)(++index+171U)];  
                     }
                    void main(void)
                    {
                      PORTD=0x00;
                      DDRD=(1<<PORTD6)|(1<<PORTD5); 
                      PORTB=0x00;
                      DDRB=1<<PORTB3;
                      OCR0A=sine[0];
                      OCR0B=sine[85];
                      OCR2A=sine[171]; 
                           
                      //TIMER0: N=1, Mode=Phase Correct 8bit
                      TCCR0A=(1<<COM0A1)|(1<<COM0B1)|(1<<WGM00);
                      TCCR0B=(1<<CS00); 
                      //TIMER2: N=1, Mode= phase correct 8 bit 
                      TCCR2A=(1<<COM2A1)|(1<<WGM20);
                      TCCR2B=(1<<CS20);
                      // TIMER1: N=8, Mode= Fast pwm 8bit
                      OCR1AH=77;
                      TCCR1A=(1<<WGM10); 
                      TCCR1B=(1<<WGM12)|(1<<CS11); 
                      TIMSK1=1<<OCIE1A;
                      #asm("sei");
                      while (1);
                    }
                    اديسون : من هفتصد بار اشتباه نکرده ام ، من يکبار هم اشتباه نکرده ام من زماني موفق شدم که ،هفتصد راهي را که موفقيت آميز نبود اصلاح کردم.
                    Gmail: Jsoltanii@gmail.com

                    دیدگاه


                      پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

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

                      [code=c]
                      TCCR1A=(1<<WGM10);
                      TCCR1B=(1<<WGM12)|(1<<CS11);
                      [/code]
                      اوژن: به معنای افکننده و شکست دهنده است
                      دانایی، توانایی است-Knowledge is POWER
                      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                      دیدگاه


                        پاسخ : پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                        نوشته اصلی توسط طراح
                        مقداردهی که برای TCCR1A و TCCR1B انجام داده اید، مطابق اطلاعات ATmega48 مد 13 تایمر است که رزرو شده است و تنظیم آن مجاز نیست.

                        [code=c]
                        TCCR1A=(1<<WGM10);
                        TCCR1B=(1<<WGM12)|(1<<CS11);
                        [/code]
                        با تشکر از پاسختون من دوباره دبتاشیت رو چک کردم ، این تنظیمات مربوط به fast pwm 8-bit هست. پیاده سازی هم که کردم فرکانس خیلی کمتر بود

                        با تشکر از زحماتتوت اگه امکانش هست طریق به دست آوردن جدول ADC ، همچنین کاربرد acceleration,deacceleration را توضیح بدین و اینکه نسبت v/f چجوری ثابت نگه داشته شده

                        با تشکر
                        اديسون : من هفتصد بار اشتباه نکرده ام ، من يکبار هم اشتباه نکرده ام من زماني موفق شدم که ،هفتصد راهي را که موفقيت آميز نبود اصلاح کردم.
                        Gmail: Jsoltanii@gmail.com

                        دیدگاه


                          پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                          نحوه تولید جدول اینجا هست

                          http://www.10bit.ir/?p=117

                          acceleration به معنای شتاب مثبت و deceleration به معنای شتاب منفی است
                          کاربردشم معلوم هست خب زمانی که طی بشه تا موتور به حداکثر سرعتش برسه که میتونی تو نرمی راه اندازی و همچنین عمر بالای قطعات مکانیک و... دخیل باشه



                          در رابطه با بوست هم مقداری توضیح می دهید
                          در یک نگاه کوتاه در کد ورژن 4
                          amplitude پارامتری هست که بوست اونجا قرار تاثیرات خودشو بزاره
                          اما در a_boost که پارامتر حاوی مقدار adc ولوم بوست هست
                          نهایتا ضرب در مقدار جدول سینوسی میشه که میاد قسمت های top و bott موج سینوسی را از حداکثر به سمت کمتر هدایت میکنه
                          میتونید ی توضیح بدید
                          و همچنین %9.8 تا %21.9 چگونه محاسبه شده

                          در رابطه با SVM راهکاری به ذهنم رسیده
                          ایا با تصحیح جدول سینوسی و اضافه کردن قسمت اضافی به ادامه موج ایا قابل انجام هست و از طرفی چون تعداد خانه ها بیشتر خواهد شد کلا زمان بندی فرکانس ها تغییر خواهد کرد

                          بنده سخت افزار را با xmega , awex بسط دادم و کلا از پایه پیاده سازی کردم و کلا نتایج خروجی متفاوت بود با نسخه mega64
                          لزومی برای hi-res ندیدم نظر شما چیست؟
                          هرچه سعی کنیم لایه های نرم افزاری زیاد کرده و از سخت افزار دور کنیم مشکلات(باگ ها) کمتر خواهد شد(امنیت بیشتری خواهید داشت)
                          بهترین جواب دهنده برای سوال شما، خود شما هستید البته بعد تلاش،پشتکار و مطالعه بیشتر
                          میدونی مشکل ما کجاست؟سرمایه و مغز ها رو نمیتونیم یکجا جمع کنیم...

                          تعدادی ماژول GPS GP5MX1513F1 با بالاتریت حساسیت -170db به قیمت خرید بفروش میرسد

                          دیدگاه


                            پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

                            در مورد ولتاژ Boost و لزوم وجود آن مطالب زیادی در اینترنت وجود دارد. بطور خلاصه به دلیل خاصیت اهمی موتور که مستقل از فرکانس است و در فرکانس های پائین که مقاومت ظاهری ناشی از خاصیت سلفی کاهش می یابد، برای غلبه بر این بخش اهمی و جریان کشی لازم، منحنی V/f باید دارای یک عرض از مبدا باشد. در صورت زیاد بودن این مقدار، جریان کشی موتور در فرکانس های پائین بیش از حد مجاز می شود و به همین دلیل یک محدوده در کد برای ولتاژ Boost تعریف شده است. در روش SVM شکل موج هایی تولید می شوند که سینوسی نیستند، اما تفاضل آنها سینوسی است. در مورد فعالیت مورد نظر شما برای پیاده سازی این روش و همچنین سوال بعدی در رابطه با XMEGA به دلیل کلی بودن سوال و مبهم بودن جزئیات، توضیح و اظهار نظر خاصی را نمی توانم ارائه کنم.
                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و

                              با تشکر از جناب طراح
                              قبلاً در یکی از پستهاتون گفته بودین که برای تولید pwm سه فاز سه تا کانال pwm کافیه، من نیاز به 6 تا سیگنال برای اینورترم دارم که dead time هم داشته باشه، تصمیم دارم از attiny861 استفاده کنم که این قابلیت ها رو داره(برای کاربرد خاصی هست ، امامشکل اینجاست که نمیدونم چجوری میشه سرعت خواندن جدول سینوسی رو تعیین کرد چون تمام کانالا اشغال میشه، در جایی گفته بودین که با ترفندهایی میشه اینکارو کرد ولی اشاره ای به روشش نکرده بودین

                              آیا حتماً باید از وقفه compare match استفاده بشه؟ در اپلیکیشن نوت خو اتمل گفته بود که با وقفه کپچر هم میشه اینکارو کرد، ممنون میشم کمک کنید
                              با تشکر

                              اضافه شده در تاریخ :
                              من سعی کردم برنامه رو برای tiny861 بنویسم ولی تو شبیه سازی اصلاً خروجی ندارم :angry:

                              فک کنم مشکل از مدل پروتیوس یا تنظیمات اون باشه،!!!

                              کد:
                              #include <tiny861.h>
                              flash unsigned char sine[256]={
                              0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
                              0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
                              0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
                              0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
                              0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
                              0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
                              0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
                              0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
                              0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
                              0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
                              0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
                              0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
                              0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
                              0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
                              0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
                              0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c};
                              
                              // Timer 0 output compare A interrupt service routine
                              interrupt [TIM0_COMPA] void timer0_compa_isr(void)
                              {
                                 static unsigned char index=0,x5=0;
                                 if(++x5==5)
                                 {
                                 x5=0;
                                 OCR1A=sine[index++];
                                 OCR1B=sine[(unsigned char)(++index+85U)];
                                 OCR1D=sine[(unsigned char)(++index+171U)];
                                 }
                              }
                              void main(void)
                              {
                              PORTB=0x00;
                              DDRB=(1<<PORTB.5)|(1<<PORTB.4)|(1<<PORTB.3)|(1<<PORTB.2)|(1<<PORTB.1)|(1<<PORTB.0);
                              
                              TCCR0A=0x01;
                              TCCR0B=(1<<CS01);
                              OCR0A=124;
                              
                              TCCR1A=(0<<COM1A1)|(1<<COM1A0)|(0<<COM1B1)|(1<<COM1B0)|(1<<PWM1A)|(1<<PWM1B);
                              TCCR1B=(0<<DTPS11)|(1<<DTPS10)|(1<<CS12);
                              TCCR1C=(0<<COM1D1)|(1<<COM1D0)|(1<<PWM1D);
                              TCCR1D=(0<<WGM11)|(1<<WGM10);
                              TCCR1E=(1<<OC1OE5)|(1<<OC1OE4)|(1<<OC1OE3)|(1<<OC1OE2)|(1<<OC1OE1)|(1<<OC1OE0);
                              OCR1A=sine[0];
                              OCR1B=sine[85];
                              OCR1C=255;
                              OCR1D=sine[170];
                              TIMSK=(1<<OCIE1A)|(1<<OCIE0A);
                              #asm("sei")
                              
                              while (1);
                              }
                              با تشکر
                              اديسون : من هفتصد بار اشتباه نکرده ام ، من يکبار هم اشتباه نکرده ام من زماني موفق شدم که ،هفتصد راهي را که موفقيت آميز نبود اصلاح کردم.
                              Gmail: Jsoltanii@gmail.com

                              دیدگاه


                                پاسخ : تولید PWM سینوسی 3 فاز برای ساخت اینورتر و کنترل دور موتور ac

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

                                دیدگاه

                                لطفا صبر کنید...
                                X