اطلاعیه

Collapse
No announcement yet.

محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

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

    #16
    پاسخ : پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevisi

    نوشته اصلی توسط mmh1
    اره این فکر خوبی هست
    من روشم رو می گم
    داداش مجتبی هم بگه
    هر کدوم راحتر و بهتر بود
    داداش اریک انتخاب کنه
    خب بریم سر برنامه تایمر

    نگا کن برای هر تایمری یه منبع کلاک انتخاب می شه
    مثلا می گیم منبع کلاک ما کریستال باشه
    و مثلا اگر داخل متغیر های تایمر یه عدد بریزیم و فقط کریستال رو تغییر بدیم زمان ایجاد شده توسط تایمر تغییر می کنه
    یعنی اگه یه نایمری هر 10 ثانیه داره یه وقفه ایجاد می کنه اگه ما بیایم کریستال رو نصف کنیم تقریبا می شه گفت هر 20 ثانیه یه وقفه ایجاد می کنه
    خب حالا کد ویژن به ما این امکان رو می ده که به جای این که از کریستال استفاده کنیم
    از یه منبع کلاک دیگه استفاده کنیم
    در این روش ما بایدمنبع کلاک رو به جای کریستال منبع خارجی انتخاب کنیم
    یعنی باید به پایه 1 آی سی پالس بدیم و آی سی بر طبق اون وقفه رو ایجاد کنه
    در این رو آی سی هر 256 پالسی که به پایه 1 اش که به عنوان منبع کلاکش انتخاب شده برسه یه وقفه ایجاد می کنه و یه متغییری مثل a رو زیاد می کنه
    فکر کن بعد از یک ثانیه عدد داخل متغیر شد 100
    حالا ما باید 100 رو ضرب در 256 کنیم
    بنابر این 25600 عدد فرکانس ما خوااهد شد و ما یه فرکانس متر ساختیم :applause: :applause:
    حالا می ریم سر تحلیل ریز برنامهوقفه تایمر که به ازای گذشت هر 256 پالس یه بار سر ریز می شهبا این گزینه که اولین گزینه حلقه هست ما دستور می دیم که تایمر صفر روشن بشه و حساس بشه به لبه پایین رونده که هر 256 لبه پایین رونده که اتفاق افتاد یه وقفه ایجاد کنهاین تیکه از برنامه به زبان اسمبلی هست
    معنی اون این هست که به مدت یک ثانیه برنامه رو متوقف کن و منتظر وقفه باشدر اینجا هم عدد داخل وقفه ضرب در 256 شده
    اینجام تایمر صفر رو دو باره خاموش کردیم
    اینجام مقادیر داخل تایمر رو صفر کردیم

    امیدوارم خوب توضیح داده باشم
    کامل فهمیدم داداش .. خوی توضیح دادی

    خوب حالا ما فرکانس رو داریم، حالا چطور میتونیم زمان یک بودن پالس ( عرض پالس) رو حساب کنیم؟؟؟ تا اونجا که یادمه فرمولش اینطوری بود که دیوتی سالکل برابر بود با عرض پالس ضرب در فرکانس.. یا فرمول دیگه ای مد نظرته؟؟ :smile:
    به رویاهات فکر کن!!

    دیدگاه


      #17
      پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

      عالی هست
      والا یه فرمولی رو یکی از فامیلا به دست ما رسونده بود برای عرض پالس که باتوجه به مدرک تحصیلیش (فوق لیسانس) فکر نمی کنم اشتباه کرده باشه


      خب همانطور که پیداست
      b چیزی هس که تو می خوای
      v ولتاژ حداکثری هست (مثل ولتاژ شهر که 310 ولت هست) و برابر خواهد بود با تغذیه ماژولت
      البته اگر اسیلوسکوپ داری یا امکان دسترسی به اون رو داری شکل pwm رو داخل اسکوپ ببین
      و ولتاژ پیک رو محاسبه کن تا کارت خیلی دقیق بشه
      t دوره تناوب هست که برابر اس با 1 تقسیم بر f
      به همین دلیل ما باید فرکانس متر داشته باشیم
      و اما vrms
      می دونی که وقتی موج از حالت صاف dc خارج می شه یه اصتلاحی میاد رو کار به نام ولتاژ موثر
      که مقدار اون کمتر از ولتاژ واقعی هست
      مثلا پیک برق شهر 310 هست ولی ولت متر ولتاژ موثرش رو اندازه می گیره و 220 نشون می ده
      حالا تو باید بیای به وسیله ADC مقدار دقیق ولتاژ موثر رو بخونی که حتمی کمتر از مقدار پیک سیکل هات خواهد بود
      بعد هم بزار تو فرمول و دیگه ...

      دیدگاه


        #18
        پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

        ایول تا حالا بااین فرمول برخورد نکرده بودم، دستت درد نکنه :smile:
        روش جالبیه ولی چون من این موارد رو باید برای 3 تا ماژول التراسونیک بکار ببرم و تازه انکودر های موتور ها هم هست ( برای ساخت یه رباته) باید ببینم برای کارای دیگه پایه اینا کم میارم یا نه :read:

        برنامه اینو مینویسم بهت نتیجه رو خبر میدم.

        راستی برنامه فرکانس متر رو نوشتم یه بار تو پروتئوس اجراش کردم ( برای تولید پالس از فانکشن ژنراتور استفاده کردم) ولی مثل اینکه فرکانس رو تا یه حدی درست نشون میده.. آره؟؟ فکر کنم بستگی به فرکانس میکرو داشته باشه،درسته؟؟ فرکانس رو رو 1 مگاهرتز گذاشته بودم. البته همش تو محیط پرتئوس :smile:
        به رویاهات فکر کن!!

        دیدگاه


          #19
          پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

          نوشته اصلی توسط اریک ماطوسیان
          راستی برنامه فرکانس متر رو نوشتم یه بار تو پروتئوس اجراش کردم ( برای تولید پالس از فانکشن ژنراتور استفاده کردم) ولی مثل اینکه فرکانس رو تا یه حدی درست نشون میده.. آره؟؟ فکر کنم بستگی به فرکانس میکرو داشته باشه،درسته؟؟ فرکانس رو رو 1 مگاهرتز گذاشته بودم. البته همش تو محیط پرتئوس :smile:
          اره تا یه حدی نشون می ده
          ولی سقفش بالاست
          فک کنم تا 300 کیلو رو به راحتی اندازه گیری کنه
          البته می شه با کاهش دقت تا 1 مگ هم رسوند
          ولی فک نکنم نیازی داشته باشی
          ولی اگه نیاز داشتی بگو برنامه رو برات تغییر بدم داداش اریک
          3 تا ماژول التراسونیک بکار ببرم و تازه انکودر های موتور ها هم هست ( برای ساخت یه رباته) باید ببینم برای کارای دیگه پایه اینا کم میارم یا نه
          می شه اسم ماژولش رو بگی
          این یکی دیگه کار کردن با ماژولش از سنسورش سخت تر هست
          ببینم چی کار می کنی
          البته این روش فقط فرمول هست و من تا به حال خودم امتحان نکردم
          یا علی

          دیدگاه


            #20
            پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

            نوشته اصلی توسط mmh1
            اره تا یه حدی نشون می ده
            ولی سقفش بالاست
            فک کنم تا 300 کیلو رو به راحتی اندازه گیری کنه
            البته می شه با کاهش دقت تا 1 مگ هم رسوند
            داداش ولی تو این فایل پروتئوسی که گذاشته بودی برام تا 300 کیلو نمیره .. و مثلا وقتی کلاک رو میذارم روی 100کیلو عدد منفی نشون میده یا وقتی میذارم بالای 200کیلو 22000 نشون میده. البته به قول خودت نیازی به این فرکانسهای بالا ندارم تو کارم ولی محض کنجکاوی میپرسم :biggrin:

            نوشته اصلی توسط mmh1
            ولی اگه نیاز داشتی بگو برنامه رو برات تغییر بدم داداش اریک می شه اسم ماژولش رو بگی
            این یکی دیگه کار کردن با ماژولش از سنسورش سخت تر هست
            نه داداش سخت نیست من ناشی هستم :biggrin: یه ماژول التراسونیک شرکت مهرنیاست که پایه تریگر نداره و خودش زحمت اونو میکشه فقط یه پایه echo داره که فاصله رو به شکل پالس میفرسته :smile:

            اینم راهنمای استفادشه خواستی یه نگاه بنداز .. فاصله رو بر حسب سانتیمتر*100میکروثانیه روی پایه echo قرار میده :smile:

            http://up98.ir/upload/server1/2z9a0kmex5lbngfewuxp.pdf
            به رویاهات فکر کن!!

            دیدگاه


              #21
              پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپا?لر codevision )

              آقا شرمنده من تا دو روز دیگه به کامپیوتر دسترسی ندارم الانم با گوشیم کامنت میزارم فقط یه اشتباهی رخ داده ،تو برنامه i باید در
              100000 ضرب بشه چون هر صد میلی میشه صد هزار میکرو. برای محاسباتی که گفته بودید قبلا تو چند تا تاپیک کامل توضیح دادم یه سرچی بکنید پیدا نکردید بگید تا توضیح بدم

              دیدگاه


                #22
                پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

                داداش اریک
                اینم لینک اصلاح شده فرکانس متر :wow:
                http://wdl.persiangig.com/pages/download/?dl=http://newdamghan1.persiangig.com/document/fr%20meter.rar
                البته دقت رو بردم بالا در عوض سرعت و سقف فرکانس رو پایین آوردم
                تا 30 کیلو رو به خوبی اندازه می گیره
                و در 30 کیلو تنها 29 هرتز خطا داره که در مقایسه با 30 کیلو قابل چشم پوشی هست
                برا فرکانس های زیر 1 کیلو هم تقریبا بدون خطاست

                دیدگاه


                  #23
                  پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

                  نوشته اصلی توسط mmh1
                  داداش اریک
                  اینم لینک اصلاح شده فرکانس متر :wow:
                  http://wdl.persiangig.com/pages/download/?dl=http://newdamghan1.persiangig.com/document/fr%20meter.rar
                  البته دقت رو بردم بالا در عوض سرعت و سقف فرکانس رو پایین آوردم
                  تا 30 کیلو رو به خوبی اندازه می گیره
                  و در 30 کیلو تنها 29 هرتز خطا داره که در مقایسه با 30 کیلو قابل چشم پوشی هست
                  برا فرکانس های زیر 1 کیلو هم تقریبا بدون خطاست

                  دمت گرم :biggrin: داداش من سوادم نمیکشه نمیفهمم این برنامه با قبلیه چه فرقی داره؟؟ دقیقا کجاش عوض شده؟؟ :read:
                  به رویاهات فکر کن!!

                  دیدگاه


                    #24
                    پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

                    نگا کن داداش
                    چیزی که به شما در فایل زیپ دادم کاملا درست هست
                    ولی من یام می آد چون خودم برا یه کاری نیاز داشتم یه دفعه اومده بودم زمانی که آی سی منتظر وقفه بود رو
                    از 1 ثانیه به 100 میلی ثانیه کاهش داده بودم یعنی
                    delay_ms(100);
                    ولی وقتی داشتم برنامه رو برات داخل زیپ می فرستادم فایل txt درست بود
                    یعنی
                    delay_ms(1000);
                    ولی هگزی که داخل فایل زیپ بود آخرین تغییرات من رو اون اعمال شده بود
                    یعنی در هگز
                    delay_ms(100);
                    من دیشب دیدم که کد ویژن عددش 100 میلی ثانیه هست اومدم عددش رو بردم بالا
                    البته بد نیست که بدونی با همین روش می شه فرکانس متر رو سقفش رو بالا برد کرد
                    یعنی به جای 1 ثانیه 100 میلی ثانیه نمونه می گیریم و بعد عدد نهایی رو ضرب در 10 می کنیم
                    به همین دلیل من در پست قبل گفتم
                    البته دقت رو بردم بالا در عوض سرعت و سقف فرکانس رو پایین آوردم

                    دیدگاه


                      #25
                      پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

                      حالا گرفتم :biggrin: :applause: باشه مرسی داداش من کاراشو میکنم بهت خبر میدم.

                      داداش مجتبی اگه اون تاپیکارو میدونی کجاست لینکشو بذاری اینجا ما هم از نوشته هات استفاده کنیم ممنون میشم
                      به رویاهات فکر کن!!

                      دیدگاه


                        #26
                        پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

                        بفرمایید :
                        http://www.eca.ir/forum2/index.php?topic=50700.msg296210#msg296210

                        دیدگاه


                          #27
                          پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

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

                          دیدگاه


                            #28
                            پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

                            .روش اصولی پیدا کردن پهنای پالس هست و از طریق اون محاسبه ی فرکانس.این دیگه بستگی به کار خودون داره که چه قدر تاخیر براتون اهمیت داره.
                            داره جالب می شه رفیق
                            این روش رو بگو تا ما هم استفاده کنیم :wow:

                            دیدگاه


                              #29
                              پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

                              نوشته اصلی توسط mmh1
                              داره جالب می شه رفیق
                              این روش رو بگو تا ما هم استفاده کنیم :wow:
                              دوستان اشاره کردند به این روش. یکی همون روش استفاده از مد کپچر هست که به نسبت اصولی تر هست(چون از منابع کمتری استفاده میکنه) و دیگری استفاده از وقفه و با تایمر زمان بین دو وقفه رو اندازه گیری کنید.
                              مزیت این روش ها نسبت به روش شماردن پالس در یک ثانیه زمان پاسخگویی کمتر اون هست و به تغییرات فرکانس حساس نیست.
                              [img width=477 height=100]http://www.eca.ir/pic/upload/agazade.png[/img]

                              دیدگاه


                                #30
                                پاسخ : محاسبه عرض پالس با atmega16 ( زبان c و کامپایلر codevision )

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

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


                                به رویاهات فکر کن!!

                                دیدگاه

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