اطلاعیه

Collapse
No announcement yet.

تولید موج سینوسی با AVR

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

    پاسخ : پاسخ : تولید موج سینوسی با AVR

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

    دیدگاه


      پاسخ : تولید موج سینوسی با AVR

      با سلام خدمت تمامی دوستان عزیز
      آقایون تو این تاپیک هیچ کسی نگفته این کدهایی که توی table هستش و از اونا برای تولید شکل موج سینوسی استفاده میکنیم از کجا اومده oo: :angry: اگه کسی میدونه یه توضیح مختصری بده عالی میشه :applause:
      خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
      [hr]

      دیدگاه


        پاسخ : تولید موج سینوسی با AVR

        نوشته اصلی توسط 4850
        با سلام خدمت تمامی دوستان عزیز
        آقایون تو این تاپیک هیچ کسی نگفته این کدهایی که توی table هستش و از اونا برای تولید شکل موج سینوسی استفاده میکنیم از کجا اومده oo: :angry: اگه کسی میدونه یه توضیح مختصری بده عالی میشه :applause:
        یادمه توضیح داده شده بود. بگرد اگر پیدا نکردی، بگو بیام بگردم پیدا کنم.

        دیدگاه


          پاسخ : تولید موج سینوسی با AVR

          نه من که پیداش نکردم :sad:
          ضمنا تو برنامه چطوری دامنه ولتاژ رو کم و زیاد می کنین ، الگوریتم برنامه چطوری میشه ؟؟؟؟؟؟؟؟
          خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
          [hr]

          دیدگاه


            پاسخ : تولید موج سینوسی با AVR

            نوشته اصلی توسط 4850
            نه من که پیداش نکردم :sad:
            ضمنا تو برنامه چطوری دامنه ولتاژ رو کم و زیاد می کنین ، الگوریتم برنامه چطوری میشه ؟؟؟؟؟؟؟؟
            منم پیدا نکردم ولی خب با اجازه جناب کی نژاد مختصر میگم:
            شما 360 درجه (یک سیکل کامل) رو به تعداد نمونه هایی که میخوای تقسیم میکنی.(در اینجا 256 تا)
            بعد سینوس همشونو حساب میکنی که میشه یه چیزی بین 1+ تا 1- .
            حالا در 128 ضرب میکنی و طبعا میشه بین 128+ و 128- .(نقطه تقارن صفر)
            بعد همه رو با 128 جمع میکنی بشه بین 0 تا 256. (یعنی نقطه تقارن رو از 0 به 128 منتقل میکنی)
            میتونید با کمک اکسل اتوماتیک این کارها رو انجام بدید.
            در مورد سوال دوم تون هم صفحه 2 و 3 و 6 همین تاپیک رو نگاه کنید.
            همچنین صفحه 2 این تاپیک http://www.eca.ir/forum2/index.php?topic=47979.15


            دیدگاه


              پاسخ : تولید موج سینوسی با AVR

              دوست عزیز freedom_truth
              دست گلت درد نکنه واقعا ممنون یکی طلبت :job:
              خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
              [hr]

              دیدگاه


                پاسخ : تولید موج سینوسی با AVR

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

                دیدگاه


                  پاسخ : تولید موج سینوسی با AVR

                  سلام مجدد خدمت جناب کیآ‌نژاد
                  بنده در ادامه کار تولید spwm با pic، در حال حاضر سینوسی رو دارم ولی بعد از
                  اضافه کردن dead-time توسط خود pic شکل موج کمی خراب میشه.
                  البته با توجه به این که ما دیوتی سایکل رو بین 0 تا 255 در نظر گرفتیم منطقیه.
                  پریود کریر من 64 میکرو ثانیه و ددتایم هم 5 میکروثانیه هست.
                  تو عکس زیر هم مشخصه شکل موجی که ددتایم داره در دیوتیآ‌سایکلآ‌های زیر 5 میکروثانیه اصطلاحاً برش خورده.


                  حالا میخواستم اگر ممکنه ببینید در مدار شما بعد از IR2130 تو فرکانسهای بالای 50 هم این ایراد وجود داره؟
                  اگر بتونید یک عکس از شکل موج برای مقایسه بزارید هم ممنون میشم.

                  دیدگاه


                    پاسخ : تولید موج سینوسی با AVR

                    5 میکرو ثانیه در فرکانس Carrier معادل 15625، عدد بزرگی برای Dead time است که باعث می شود در مرحله ای که عرض پالس ها برای ساختن پیک منفی از یک حد کوچکتر می شوند، خروجی به کلی صفر شود (این عدد در IR2130 برابر 2.5 میکروثانیه و در IR2132 برابر 0.8 میکروثانیه است). برای بهتر شدن این وضعیت بهتر است مقدار Dead time و فرکانس Carrier را کاهش دهید.
                    اوژن: به معنای افکننده و شکست دهنده است
                    دانایی، توانایی است-Knowledge is POWER
                    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                    دیدگاه


                      پاسخ : تولید موج سینوسی با AVR

                      سلام من برای انجام یک پروژه لازم دارم که روی چند تا از پایه های میکرو( به غیر از پایه های خروجی pwm)
                      به صورت نرم افزاری pwm با فرکانس قابل تنظیم درست کنم لطفا اگر کسی اطلاعاتی تو این مورد داره راهنمایی کنه
                      اکثر تاپیک ها رو هم مطالعه کردم و چند مدل برنامه هم نوشتم ولی نتیجه ای نگرفتم :sad:
                      من نه آنم که زبونی کشم از چرخ فلک
                      چرخ بر هم زنم ار غیر مرادم باشد

                      دیدگاه


                        پاسخ : تولید موج سینوسی با AVR

                        نوشته اصلی توسط A.karami
                        سلام من برای انجام یک پروژه لازم دارم که روی چند تا از پایه های میکرو( به غیر از پایه های خروجی pwm)
                        به صورت نرم افزاری pwm با فرکانس قابل تنظیم درست کنم لطفا اگر کسی اطلاعاتی تو این مورد داره راهنمایی کنه
                        اکثر تاپیک ها رو هم مطالعه کردم و چند مدل برنامه هم نوشتم ولی نتیجه ای نگرفتم :sad:
                        شاید این تاپیک بتونه کمکت کنه
                        http://www.eca.ir/forum2/index.php?topic=64272.0
                        خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
                        [hr]

                        دیدگاه


                          پاسخ : تولید موج سینوسی با AVR

                          نوشته اصلی توسط امین غفاری
                          شاید این تاپیک بتونه کمکت کنه
                          http://www.eca.ir/forum2/index.php?topic=64272.0
                          با تشکر آقای غفاری کل تاپیک بالا رو مطالعه کردم یک روش نزم افزاری که آقای صاحبی پیشنهاد داده بودن رو برای کار خودم قبلا تست کردم ولی برای تولید شکل موج سینوسی جواب نداد
                          من برای این که بتونم شکل موج رو به صورت pwmنرم افزاری ایجاد کنم این روال رو انجام دادم
                          1- تایمر 16 بیتی رو تو حالت شمارنده معمولی قرار دادم با فرکانس نزدیک به 20 کیلو
                          2- تایمر صفر رو برای خوندن دیتای 255 عضوی (شکل موج سینوسی)روی فرکانس 50 هرتز تنظیم کردم و براش وقفه سر ریز شدن هم گذاشتم تا کل شکل موج با فرکانس 50 هرتز درست بشه
                          3- داخل وقفه سرریز پله پله اطلاعات جدول رو خوندم(یعنی بعد از هر سر ریز یک گام از جدول خونده میشه)و داخل یک متغیر ریخته میشه

                          4-داخل do-loop اصلی شرط گذاشتم که اگه مقدار تایمر 16 بیتی برابر 0 شد پین مورد نظرم یک بشه
                          و یک شرط دیگه که وقتی مقدار تایمر 16 بیتی برابر مقدار خوانده شده از جدول شد تغیر حالت بدهد و صفر بشه


                          فکر کنم دقیقا حالتfast pwm رو شبیه سازی کردم ولی نمیدونم مشکل کار کجاست که جواب نمیده :angry:
                          من نه آنم که زبونی کشم از چرخ فلک
                          چرخ بر هم زنم ار غیر مرادم باشد

                          دیدگاه


                            پاسخ : تولید موج سینوسی با AVR

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

                            دیدگاه


                              پاسخ : پاسخ : تولید موج سینوسی با AVR

                              نوشته اصلی توسط طراح
                              روشی که بکار برده اید، بصورت کلی صحیح است. اما به دلیل سرعت بالای تایمر بجای بررسی برابر بودن آن با یک مقدار مشخص باید وضعیت بزرگتر (یا کوچکتر بودن) از آن مقدار را هم در شرط خود وارد کنید. به عنوان مثال فرض کنید مقدار Compare value برابر با 1000 باشد. از نظر سخت افزاری، عبور از 1000 (و نه مساوی شدن با آن) به معنای شرایط Compare match است. برای شبیه سازی این عملکرد بصورت نرم افزاری، در شرطی که قرار می دهید بجای برابری مقدار تایمر با 1001 باید بزرگتر یا مساوی بودن با این عدد را در حلقه بررسی کنید تا اگر در لحظه خواندن مقدار تایمر، مثلا بجای 1001 عدد 1002 خوانده شد، باز هم این مقایسه نرم افزاری به درستی عمل کند. برای راهنمایی بهتر، نمونه کد خود را قرار دهید.
                              سلام مهندس ممنون از پاسختون نکته ها رو تو برنامه لحاظ کردم با گذاشتن این شرایط شکل موج نامتوازن سینوسی تشکیل شده ولی هنوز جای کار داره

                              خودم اشکالی که توی این برنامه میبینم اینه که برای تنظیم یک تایمر برای فرکانس کریر نمیتونم اونو مقدار اولیه بدم چون دقیقا دارم اعداد 1تا 255 خود تایمر رو با متغیرم مقایسه میکنم برا ی همین آوردم تایمر رو بعد از رسیدن به عدد محاسبه شده صفر میکنم (اینجا برای کریر 20 کیلو عدد 400 و پریسیکال 1)
                              راه حل دیگه ای هم تا حالا به نظرم نرسیده
                              این هم لینک برنامه+فایل پروتئوس
                              http://uplod.ir/q1o9z79wf7rb/Software-pwm.zip.htm
                              البته برنامه با بسکام نوشته شده چون من با کار مستقیم روی ریجستر ها و با زبان c مشکل دارم این جور برنامه ها رو اول با بسکام تست میکنم بعد از روی کتاب یا کد ویزاد ریجستر ها رو تک تک تو c مقدار دهی میکنم و برنامم رو اونجا ادامه میدم
                              که باید برای رفع این مشکل باید حرکت جدی بکنم :redface:
                              چند باری هم تصمیم گرفتم که تو دوره های آموزشی شما شرکت کنم اما از کم سعادتی من فرصتی پیش نیومده
                              اگه شما منبع خوبی میشناسین معرفی کنین
                              من نه آنم که زبونی کشم از چرخ فلک
                              چرخ بر هم زنم ار غیر مرادم باشد

                              دیدگاه


                                پاسخ : تولید موج سینوسی با AVR

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

                                دیدگاه

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