اطلاعیه

Collapse
No announcement yet.

مولد موج سینوسی

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

    مولد موج سینوسی

    سلام.اگه ممکنه درباره تولید موج سینوسی در avrتوضیح بدین.ممنون...

    #2
    پاسخ : مولد موج سینوسی

    نوشته اصلی توسط mohsen-iran
    سلام.اگه ممکنه درباره تولید موج سینوسی در avrتوضیح بدین.ممنون...
    سلام ....................

    یه راه خیلی متداولی که وجود داره اینه که شما یه Look Up Table (یا به قولی دیتابیس..) تعریف کنیدو بر حسب اون؛ رفتار متغییر رو توی خروجی پیاده کنید .. موفق باشید ..
    دوستان! مدتی کمتر به سایت میام ..

    دیدگاه


      #3
      پاسخ : مولد موج سینوسی

      سلام
      می تونی OCR را مساوی سینوس قرار بدی و موج سینوسی رو ازش بگیری . فقط گذاشتن مدار RC توی خروجی یادت نره.(sin توی C تعریف شده)

      دیدگاه


        #4
        مولد موج سینوسی

        جدول look up چطور بدست بیارم.ممکنه توضیح بدین

        دیدگاه


          #5
          پاسخ : مولد موج سینوسی

          look up table در CodeVision با دستور FLASH ساخته میشه. شما با چه زبانی می خوای؟
          با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

          دیدگاه


            #6
            پاسخ : مولد موج سینوسی

            با زبان c خیلی بهتره...

            دیدگاه


              #7
              پاسخ : مولد موج سینوسی

              look up table در CodeVision با دستور FLASH ساخته میشه
              احمد جان میشه بگید چطور از دستور flash استفاده میشه ( C )؟ اگه یه نمونه برنامه کوچلو بزارین ممنون میشم
              یا علی...
              ذكات علم ياد دادنه ....

              دیدگاه


                #8
                پاسخ : مولد موج سینوسی

                مثال از یک جدول سینوسی البته مقادیر باید محاسبه شده در جدول قرار بگیره:

                flash unsigned char lookup[256]={128, 128+127*SIN(1*360/255), 128+127*SIN(2*360/255), 128+127*SIN(3*360/255), ..., 128+127*SIN(255*360/255) };example
                با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                دیدگاه


                  #9
                  پاسخ : مولد موج سینوسی

                  اگر اعداد جدول بالا را یکی یکی(مثلا با یک حلقه ی for) در OCRآ‌ لود کنید دیوتی سایکل PWMآ‌ خروجی میکرو بصورت سینوسی بالا و پایین می رود. اگر یک فیلتر RC ( مثلا 1کیلو اهم و 100 نانو ) در خروجی PWM قرار دهید شکل موج سینوسی خواهید دید.

                  هرچه زمان لود کردن سریعتر باشد فرکانس سینوسی شما بیشتر می شود.
                  با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                  دیدگاه


                    #10
                    پاسخ : مولد موج سینوسی

                    سلام...این اعدادی که نوشتین برای چه فرکانس و تولید چه ولتاژیه؟...چه جوری بر حسب اونا،این اعداد محاسبه میشن؟
                    ممنون میشم یک توضیح کامل بدین

                    دیدگاه


                      #11
                      پاسخ : مولد موج سینوسی

                      سلام
                      برای تولید ولتاژ سینوسی با دامنه ی 5 ولت پیک تو پیک. فرکانس هم بستگی به تاخیر بین لود کردن این اعداد در OCR داره. اگه تاخیر نباشه فرکانس ماکزیمم را خواهیم داشت که اونم بستگی به کلاک میکرو داره و سرعت اجرای کدها توسط کمپایلر.
                      این اعداد نقطه های شکل موج سینوسی هستند و محاسبه ی خاصی ندارن!
                      با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                      دیدگاه


                        #12
                        پاسخ : مولد موج سینوسی

                        میتونید از DAC مقاومتی هم استفاده کنید.
                        http://en.wikipedia.org/wiki/Resistor_Ladder


                        و یک راه دیگه هم بجز اسنفاده از جدول look up استفاده از خود تابع سینوس هست.
                        یعنی یک متغیر رو از صفر تا 360 درجه زیاد کنید و بدیدش به تابع سینوس.
                        مشکل اول اینه که تابع سینوس مقدار منفی داره که حداکثر تا یک هست. پس اگر با یک جمعش کنیم مشکل حل میشه.
                        مشکل دوم اینه که حداکثر عددی که تابع سینوس میده 1+ و 1- هست. که چون با 1 جمع شده میشه ازصفر تا 2
                        ولی اگر DAC ما 8 بیت باشه مقدار از صفر تا 255 باید زیاد بشه.
                        پس کافیه که عدد بدست اومده از تابع سینوس رو ( بعد از جمع با عدد یک ) در 127 ضرب کنیم.

                        کد PHP:
                        #include <avr/io.h>
                        #include <math.h>
                        #include <delay.h>

                        #define  DAC_PORT  PORTA
                        #define  DAC_DDR  DDRA

                        int mainvoid ){
                            
                        float xy;
                            
                            
                        DAC_DDR 0xFF;
                            
                            while(
                        1){
                                for(
                        x=&lt2*M_PI x+= 0.05 ){
                                    
                        = (sin(x) + 1) * 127;
                                    
                        DAC_PORT y;
                                    
                        _delay_ms(1);
                                }
                            }

                        چگونه هوشمندانه بپرسیم

                        دیدگاه


                          #13
                          پاسخ : مولد موج سینوسی

                          یعنی تعداد نمونه ها از موج سینوسی به ولتاژ خروجی بستگی نداره؟(اگه تو OCR لود کنم)...پس ولتاژ خروجی چه طوری میتونه تغییر کنه؟
                          در مورد تغییر فرکانس خروجی هم فقط به کلاک میرو و تعداد شمارش های کانتر بستگی داره؟
                          اینطوری در اصل موج SPWM رو تو خروجی نداریم؟(به DAC کاری ندارم)
                          نوشته اصلی توسط ahmadmn
                          مثال از یک جدول سینوسی البته مقادیر باید محاسبه شده در جدول قرار بگیره:

                          flash unsigned char lookup[256]={128, 128+127*SIN(1*360/255), 128+127*SIN(2*360/255), 128+127*SIN(3*360/255), ..., 128+127*SIN(255*360/255) };example
                          این رابطه ای که نوشتین از کجا اومده؟...یعنی به نظر میرسه که 256 تا نمونه از سینوس میگیرین(عدد 255 تو مخرج)...این ضریب سینوس(127 )برای چی هست؟...این آفست(128) برای جلوگیری از مقاریر منفیه؟

                          ممنون میشم به سوالاتم جواب بدین...من یه چندوقتیه تو این موارد به مشکل خوردم :angry:

                          دیدگاه


                            #14
                            پاسخ : مولد موج سینوسی

                            ایمطور که معلومه شما همه چیزو می دونید و پیشنهاد من اینه که بجای سروکله زدن با تئوری مدار رو که از یک میکرو و یک مقاومت+خازن تشکیل شده ببندید و امتحان کنید.

                            به هر حال:
                            شما دارید یک PWM با دیوتی سایکل متغیر ایجاد می کنید.
                            فرض کنید عدد اول جدول یعنی 128 را در OCR لود می کنید. این باعث تولید PWM با دیوتی سایکل 50% خواهد شد پس ولتاژ خروجی RC برابر با 2.5 ولت می شود.
                            کمی صبر کنید و عدد دوم جدول را در OCR لود کنید. ولتاژ خروجی کمی افزایش می یابد.
                            کمی صبر کنید و عدد سوم ...
                            ...
                            صبر کنید و عدد آخر ...
                            و دوباره از اول
                            ...
                            اگر ولتاژ خروجی را در یک اسکوپ ببینید یک موج سینوسی خواهید دید که از 0 تا 5 ولت بالا و پایین می رود.
                            دقیقا
                            شما یک موج سینوسی را به 255 قسمت تقسیم کردید و دامنه های آن را بترتیب داخل OCRآ‌ریختید. مقدار صبر کردن را می توانید تغییر دهید تا فرکانس این سینوسی تغییر کند. افست 128 هم برای جلوگیری از منفی شدن OCRآ‌ است.

                            با عرض پوزش خدمت دایی های عزیزم تا اطلاع ثانوی به اینترنت دسترسی ندارم.

                            دیدگاه


                              #15
                              پاسخ : مولد موج سینوسی

                              این یکم که میگید!! چقدره؟(من دیدم که تو اینتراپت مربوط به compare match مقدار OCR تغییر میکنه...می خوام بدونم دقیقا چرا!!)
                              باید از مد fast PWM استفاده کنم دیگه؟...یه سوال دیگه هم اینکه وقتیکه در زمان copmare match مقدار OCR عوض میشه، در حقیقت در زمان پایان یک سیکل(مثلا رسیدن تایمر به 255) مقدار OCR عوض میشه؟
                              یک سوال هم در مورد فرکانس خروجی:دقیقا با توجه به تعداد نمونه های look up table و فرکانس ماری میکرو(یا فرکانس تایمر) از کجا میتونم فرکانس خرجی مطلوب (مثلا همون 50 یا 60 هرتز) رو بدست بیارم؟
                              راستش هدف من تولید موج SPWM برای فعلا یک اینورتر تک فازه(مرحله به مرحله!)،بعدا سه فاز ....
                              تئوری مطلب رو اگه درست بفمهمم فکر کنم واسه کار عملی بهتره
                              بازم ممنون از جوابهاتون...

                              دیدگاه

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