اطلاعیه

Collapse
No announcement yet.

تولید پالس pwm با duty cycle متفاوت

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

    تولید پالس pwm با duty cycle متفاوت

    سلام دوستان من میخوام یک مدار فیدبک دار بسازم که که شامل یک منبع ولتاژیه که به یه FET وصل شده و از طرف دیگش ولتاژ خروجی رو تحویل میگریم حدف من ثابت نگه داشتن این ولتاژ خروجی تحت کم و زیاد کردن منبع یا هر عامل دیگه مثلا اضافه کردن مصرف کننده. فیدبک من شامل یه مبدل ولتاژ آنالوگ به دیجیتاله که از خزوجی نمونه میگیره و بصورت دیجیتال به میکرو میده و میکرو با توجه به در نظر گرفتن یه ولتاژ خاص موج PWM با دیوتی سایکل متفاوت به سمت سوئیچ (FET) هدایت میکنه تا ولتاژ خروجی مثلا سر 5 ولت ثابت بمونه برنامه ای نوشتم اینه
    #include <mega16.h>
    #include <delay.h>
    // Timer 0 overflow interrupt service routine
    interrupt [TIM0_OVF] void timer0_ovf_isr(void)
    {
    // Reinitialize Timer 0 value
    TCNT0=0xEC;
    // Place your code here

    }

    // Timer 0 output compare interrupt service routine
    interrupt [TIM0_COMP] void timer0_comp_isr(void)
    {
    // Place your code here

    }

    // Declare your global variables here

    void main(void)
    {
    // Declare your local variables here

    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTA=0x00;
    DDRA=0x00;

    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=Out
    // State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=0
    PORTB=0x00;
    DDRB=0x09;

    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTD=0x00;
    DDRD=0x00;

    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 1000.000 kHz
    // Mode: Fast PWM top=FFh
    // OC0 output: Non-Inverted PWM
    TCCR0=0x6A;
    TCNT0=0xEC;
    OCR0=0x01;

    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;

    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;


    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;
    TIMSK=0x03;
    ACSR=0x80;
    SFIOR=0x00;


    #asm("sei&quot

    while (1)
    {
    if(PINA<0x05)
    OCR0++;
    else
    OCR0--;
    delay_us(5);
    };
    }

    که نمیدونم درست هست یا نه
    چون تو پروتئوس جواب نداد
    و یه مشکل دیگه که دارم اینه که چطوری آنالوگ رو به دیجیتال تبدیل کنم البته بطور پیش فرض از روش نردبانی استفاده کردم شمای کل مدار رو میذارم.
    ممنون اگه کمکم کنید و مشکل کارمو بگین.
    دوتا منبع بالایی 10 ولت و اونی که واسه آی سی هست 5 ولت

    #2
    پاسخ : تولید پالس pwm با duty cycle متفاوت

    نقشه کو :job:
    بعدا یه جمله قشنگ مینویسم

    دیدگاه


      #3
      پاسخ : تولید پالس pwm با duty cycle متفاوت

      شما دارید یه کنترل حلقه بسته انجام می دهید من تو برنامتون چیزی ندیدم که فیدبک رو لحاظ کرده باشه
      باید از یه تکنیک مثل PI یا PID برای اینکار استفاده کنید

      دیدگاه


        #4
        پاسخ : تولید پالس pwm با duty cycle متفاوت

        با سلام
        البته من در codvision مهارتی ندارم:
        1-شما میتونید از مبدل انالوگ دجیتال خود avr استفاده کنید
        2-خروجی باید از طریق اپتوکوپلر به موسفت وصل بشه
        3-یک سلف باید بین درین و خط مثبت تغذیه قرار بگیره
        4-بایک دیود وخازن ازروی سلف یا موسفت خروجی بگیرین
        البته این اساس یک تغذیه سوچینگه
        به اینها دقت کنید
        http://cktse.eie.polyu.edu.hk/NSR/presentation/SMPS-lecture-1.pdf
        http://www.9h1lo.net/smpsdesign.pdf
        بعدا یه جمله قشنگ مینویسم

        دیدگاه


          #5
          پاسخ : تولید پالس pwm با duty cycle متفاوت

          برای ساده سازی و پیاده سازی اولیه مدار رو اینطور بستم در واقع هدف ما ساختن یک مدار buck هست و همه اون سلف و دیودی که فرمودید شاملش میشه اما همونطور که می دونید نرم افزار پروتئوس اونقدری قدرت نداره که بخواد یه مدار شامل سلف رو تحلیل کنه راستی به نظر شما اگر از مبدل A-D میکرو استفاده کنم به تو ولتاژای بالا به میکرو آسیبی نمیرسه؟

          دیدگاه


            #6
            پاسخ : تولید پالس pwm با duty cycle متفاوت

            فکر میکنم برای ساخت مدار Buck پاسخ میکرو کنترلر کم باشه و برای جلو گیری از اضافه ولتاژ باید سرعت پاسخ رو کم کنید که عمل رگولاسیون رو به هم میریزه

            دیدگاه


              #7
              پاسخ : تولید پالس pwm با duty cycle متفاوت

              و یه مشکل دیگه که دارم اینه که چطوری آنالوگ رو به دیجیتال تبدیل کنم البته بطور پیش فرض از روش نردبانی استفاده کردم شمای کل مدار رو میذارم.
              چرا ار آنالوگ به دیجیتال میکرو یا یه چیپ تبدیل خارجی استفاده نمیکنید؟
              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

              دیدگاه


                #8
                پاسخ : تولید پالس pwm با duty cycle متفاوت

                نوشته اصلی توسط jalal gilani
                فکر میکنم برای ساخت مدار Buck پاسخ میکرو کنترلر کم باشه و برای جلو گیری از اضافه ولتاژ باید سرعت پاسخ رو کم کنید که عمل رگولاسیون رو به هم میریزه
                تو فیدبک buck نمیخوام از آی سی استفاده کنم

                دیدگاه


                  #9
                  پاسخ : تولید پالس pwm با duty cycle متفاوت

                  من در این سایت خوانده ام که avr به راحتی در فرکانس 20 مگاهرتز جواب میذه
                  اگر اینطور باشه مشگل سرعت نخواهیذ داشت
                  فکر میکنم برای ساخت مدار Buck پاسخ میکرو کنترلر کم باشه و برای جلو گیری از اضافه ولتاژ باید سرعت پاسخ رو کم کنید که عمل رگولاسیون رو به هم میریزه
                  منطورتون از اضافه ولت جیه
                  بعدا یه جمله قشنگ مینویسم

                  دیدگاه


                    #10
                    پاسخ : تولید پالس pwm با duty cycle متفاوت

                    درسته که سرعت کلاک میکروی AVR تا 20 مگاهرتزه ولی برای بستن حلقه فیدبک چدنین دستور باید استفاده بشه و یه عمل آنالوگ به دیجیتال فقط تبدیل آنالوگ به دیجیتال در سریعترین حالت حدود 65 میکرو ثانیه طول می کشه با احتساب دستور های دیگه شاید چیزی حدود 100 میکرو ثانیه حالا اگه یه بار زیاد این تازه میشه سرعت نمونه گیری حالا باید از یه تکنیک فید بک مثل PI یا PID هم استفاده بشه با سرعت نمونه برداری 100 میکرو ثانیه پاسخ پله مدار چی میشه ؟ الان نمیتونم دقیق بگم .
                    به همین دلیل هم گفتم فکر میکنم برای ساخت مدار Buck پاسخ میکرو کنترلر کم باشه.
                    اظافه ولتاژ از همین پاسخ پله مدار که سرعت زیادی نداره بوجود میاد اگه یه جریان زیاد یک باره ار مدار قطع بشه تا مدار فیدبک بتونه پاسخ بده ولتاژ افزایش پیدا می کنه.

                    دیدگاه


                      #11
                      پاسخ : تولید پالس pwm با duty cycle متفاوت

                      میتونین بیشتر راهنمایی کنین؟ مثلا در مورد همین PI و PID

                      دیدگاه


                        #12
                        پاسخ : تولید پالس pwm با duty cycle متفاوت

                        کاری که شما می خواهید انجام دهید یه کنترل حلقه بسته است برای پایداری و سرعت عملکرد سیستم های حلقه بسته از روشهای زیر استفاده میشود
                        Proportional
                        Integral
                        Derivative

                        معمولا ترکیبی از P با دو روش دیگر استفاده می شود به عنوان مثال برای کنترل دور موتور معمولا از روش PI و برای کنترل دما از PID استفاده می شود شما می خواهید کنترل ولتاژ انجام دهید که خیلی با دیگر سیستم های حلقه بسته متفاوت نیست .
                        PDF زیر را مطالعه کنید اطلاعات خوبی به همراه دارد.
                        http://s1.picofile.com/file/7259023331/motor_control.rar.html

                        دیدگاه

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