اطلاعیه

Collapse
No announcement yet.

ساخت 40 کیلو هرتز با تایمر

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

    ساخت 40 کیلو هرتز با تایمر

    سلام
    نمی دونم دیگه چی کار کنم. فکر نمیکردم روزی تو این مسئله گیر کنم.ولی باور کنید کار نکرد.فکر نکنم از این راحتتر باشه.ولی ادم وقتی لجش میگیره کار نکنه :angry:کریستال داخلی 8 مگ.فیوز بیتو تغییر دادم.تایمر صفر مدنظره.حالا چون 40کیلو هرتزه پس زمان تناوب میشه 25 میکرو.تقسیم کلاک تایمر یکه.حالا باید 12.5 میکرو یک باشه و 12.5 میکرو صفر.حالا برای اینکه 12.5 میکرو رو تایمر بسازه باید تو فرکانس 8 مگ دقیقا 100 تا بشمره.(گل گفتم :applauseمثل اونچه که تو همه ی کتابها نوشته شده و ده تا مدار رو این طوری راه انداختم.یعنی میشه 8M/100 و چون در 2 ضرب میشه فرکانس میشه 40KHZ .برنامه هم که زیر گذاشتم.اساتید با تجربه کمک کنید.جالبه که این برنامه هم تو پروتئوس و هم با اسکوپ واقعی فرکانس 25KHZ نشون داد.پس حتما اشتباه از منه.دوستان کمک.پیشاپیش ممنون
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Portd = Output
    Config Timer0 = Timer , Prescale = 1
    Stop Timer0
    Enable Interrupts
    Enable Timer0
    On Timer0 Freq
    Timer0 = 156
    Start Timer0
    Do
    Loop
    Freq:
    Stop Timer0
    Toggle Portd.0
    Timer0 = 156
    Start Timer0
    Return
    به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

    #2
    پاسخ : ساخت 40 کیلو هرتز با تایمر

    به نظر میاد که میکروی شما داره با فرکانس 5 مگ کار می کنه. عجیبه.
    دلا یاران سه قسمند ار بدانی
    زبانی اند و نانی اند و جانی
    به نانی نان بده از در برانش
    محبت کن به یاران زبانی
    و لیکن یار جانی را به دست آر
    به جانش جان بده تا می توانی

    دیدگاه


      #3
      پاسخ : ساخت 40 کیلو هرتز با تایمر

      نوشته اصلی توسط _آرش
      به نظر میاد که میکروی شما داره با فرکانس 5 مگ کار می کنه. عجیبه.
      ارش جان سلام.شما با کریستال داخلی غیر از 1مگ کار کردی؟من هم مثل حرف شما به اون مشکوکم .من روو میکرو دیگه هم امتحان کردم کار نکرد.
      به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

      دیدگاه


        #4
        پاسخ : ساخت 40 کیلو هرتز با تایمر

        با سلام
        مقدار تایمر را به جای 156 مقدار 100 قرار بده ببین درست میشه
        تایمر های میکرو avr تا آنجا که من میدونم بالا شمار هستند یعنی از بالا به پایین کم میکنند. ولی ظاهرا اینجا برعکسه!!؟؟.

        دیدگاه


          #5
          پاسخ : ساخت 40 کیلو هرتز با تایمر

          تایمر AVR هم مثل همه تایمر های دیه بالا شماره , یعنی ز صفر میشمره وقتی رسید به 255 (تو تایمر 8 بیتی)
          یه Overflow میده برمیگرده به صفر.
          البته درسته که تایمر 8 بیتی با شمردن 100 کلاک در ثانیه 80000 بار Overflow میده و با Toggle کردنش شما انتظار دارین فرکانس خروجی
          40 کیلوهرتز داشته باشین , اما شما یه جایی رو حساب نکردین. :biggrin:
          اونم اینکه تو وقفه ی تایمر صفر کلاک های مورد نیاز برای تغییر دیتای PD.0 و همچنین مقدار دهی به رجیستر TCNT0 رو مد نظر قرار ندادین.
          من تو چند تا مورد دیگه هم گفتم تو بحث های دیگه , آقا اگه فرکانس نیاز دارین از مد CTC تایمرها استفاده کنید. نیاز به اجرای وقفه و اینها هم نداره.
          مثلا تو تایمر 0:
          Clock In: 8Mhz
          Mode : CTC
          Prescale=1
          حالا کافیه مقدار رجیستر OCR0 رو برابر 99 دسیمال یا 63 هگز قرار بدی و یه 40 کیلوهرتز توپ داشته باشی رو پین OC0 میکرو.
          اگر هم اصرار داری از مد نرمال استفاده کنی بهتره (اون سیکل های مقدار دهی به رجیسترها رو در نطر بگیری) یعنی مقدار تایمر رو
          بالاتر بگیر که وقتی زودتر overflow داد , اون سیکل های اضافی هم کلاکشون رو در نظر گرفتی. البته تو Bascom زیاد دقیق نمیشه سیکل دستور ها رو محاسبه کرد.
          خودت دستی اضافه کن ببین کجا 40 کیلو میگیری. ÷یشنهاد من اینه که تایمر رو بجای 156 یه چیزی مثلا حول و حوش 160 یا 161 قرار بدی.

          موفق باشی.
          آموزش نرم افزار Matlab برای دانشجویان رشته های مهندسیhttp://alidoost.ir/news.php?readmore=22

          دیدگاه


            #6
            پاسخ : ساخت 40 کیلو هرتز با تایمر

            راستی در مورد اینکه چرا تو 1Mhz با این مشکل کمتر مواجه میشید اینه که در واقع شما 8 برابر سرعت رو آوردین پائین تر و در نتیجه اون
            دستورات اضافی تو وقفه انحراف فرکانس کمتری ایجاد میکنند نسبت به حالتی که با 8Mhz دارین کار میکنین.
            آموزش نرم افزار Matlab برای دانشجویان رشته های مهندسیhttp://alidoost.ir/news.php?readmore=22

            دیدگاه


              #7
              پاسخ : ساخت 40 کیلو هرتز با تایمر

              مهندس فرید گرام از جوابت ممنون.خیلی خیلی هم ممنون.اما چند تا نکته این وسط پیش میاد.اول اینکه این مد ctc که میگی نمی دونم تو بسکام هست یا نه.ctc چیه؟دوم اینکه من اون روز که اسکوپ داشتم به همین فکر تغییر افتادم .به همین خاطر هم با برنامه بهش اعداد مختلف دادمو هم یه مولتی ترن گذاشتم توو adc بعد هم عددی که ازش می خوندم رو تقسیم به چهار کردم و انداختم توو تایمر.منتها تو بیشترن عدد یعنی 255 که تایمر فقط یکی میشمرد فرکانس 33khz گرفتم (هر چند باورش سخته و پیش خودتون میگید لابد یه جا یه اشتباه کوچیک کرده ولی همه چیو 100 بار چک کردم)پس با تغییر 7 و 8 عددی که شما گفتی عمرا جواب نده.من تو یک مگ داخلی امتحان نکردم چون ساخت چنین فرکانسی اصلا دقیق نخواهد بود. بعد من فکر کنم که اگه سرعت بیاد پایین بنابراین هر دستور زمان بیشتری برای اجرا نیاز داره و این یعنی افزایش تاخیر و در نهایت کاهش فرکانس.و یعنی اگه تو 8مگ کار بشه چون سرعت اجرای هر دستور زیاد میشه می تونیم تاخیر اونو صفر در نظر بگیریم(هرچند همون طوری هم که شما فرمودید کاملا صفر نیست.)یعنی با کاهش تاخیر میشه فرکانس بالاتری درست کرد.در ضمن همون طور که گفتم تو 156 که انداخته بودم 25 کیلو رو گرفتم و با تبدیل به 160 فکر نکنم بیشتر از 27 یا 28 کیلو نشه. من اعداد زیادی رو امتحان کردم .220 و 200 و250 و......... هم تو عملی با اسکوپ واقعی و هم با پروتئوس.تازه اگه بخواهیم زمان دستورات داخل وقفه رو هم حساب کنیم ته تهش بشه 16 دستور .چون فرکانس کلاک 8مگه پس زمان اجرای هر کد 8/1 میکرو ثانیه است که ضرب در 16 میشه تاخیر دو میکرو ثانیه که یعنی زمان تناوب سیگنال ما 4میکرو زیاد میشه که یعنی باید بشه 29 میکرو که میشه فرکانسی در حدود34 کیلو هرتز در حالی که من 25 کیلو در اوردم.خیلی دوست داشتم حرف شما صحت داشت ولی چه کنم بزرگوار.غم من اینکه رو کاغذ همه چی حتی با بالا پایین کردن اعداد باید کار کنه اما چه توو عمل وبدتر از اون چه تو پروتئوس :cry2:من در کل شکم به کریستال داخلی 8مگه هر چند تو دیتا شیت نوشته کالیبره شده.اگه اسکوپ داشتم کریستال خارجی 16 مگ میزدم که دیگه خیال خودم و مهندس فریدو از تاخیر تو اجرای دستورات راحت کنم.من این رو هم بگم که این کارو هم یکی از دوستام با اتمگا 8 کرد و برنامه شو هم خودش نوشت(هرچند فرقی جز تایمر ها با هم نداشتند)ایا کسی با کریستال 8مگ داخلی کار کرده؟ایا واقعا اینا هشت مگ میدن ؟من راه دیگه ای جز گیر دادن به اسیلاتور داخلیrc هشت مگ ندارم. راستی مهندس فرید بازم ممنون از جوابت در مورد ctc یه توضیح بده.دست همه بچه ها هم درد نکنه
              به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

              دیدگاه


                #8
                پاسخ : ساخت 40 کیلو هرتز با تایمر

                به نظرم بایداز 555 کمک بگیری اگه این کار رو بکنی حتی می تونی پلاستیک رو هم بزنی :icon_razz:

                دیدگاه


                  #9
                  پاسخ : ساخت 40 کیلو هرتز با تایمر

                  سول هاتون یکمی زیاد شد :biggrin:
                  خوب من با بسکام کار نکردم , از اون قدیم ندیما C کار میکردیم , اومدیم دانشگاه هم C مونده بود تو کلمون نمیرفت بیرون . واسه همین شرمنده ام از بسکام.
                  اما خوب من یه نمونه کد با کد ویژن به همراه پروتئوس میزارم هم با تایمر تو مد نرمال هم تو مد CTC(Clear Timer On Compare Match)
                  CTC در واقع اون کاری رو که شما تو وقفه واسش کد نوشتین تو مد نرمال خودش اتوماتیک وار (سخت افزاری انجام میده) و خطایی نداره اصولا.
                  اسیلاتور داخلی میکرو ها , در واقع یک مدار RC کالیبره شده هستش , درست , اما بر حسب دما امکان داره انحراف هم پیدا کنه تا چند صد هزار هم. :eek:
                  من فردا یه نمونه برنامه به همراه شبیه سازی پروتئوس میزارم براتون. اما 40 کیلو رو مطمئن باشین میگیرن. من واسه پروژه ی اولتراسونیکم سه سال پیش با همین
                  CTC یه 40 کیلو میگرفتم میدادم به ترانسمیتر اولتراسونیک. با اسکوپ هم اندازه گرفته بودم دقیق بود.
                  شما که میگین از اسیلاتور داخلی استفاده میکنید , فیوز بیت هاش رو درست ست کردین؟
                  شاید اشکال از اونجاس؟
                  CKSEL3..0=0100
                  یکی از دو تا فیوز بیت SUT10 رو هم برنامه ریزی کنید , چون اگه رو اسیلاتور داخلی باشه و این دو تا هر دو 1 باشن , میکرو ری استارت نمیشه :sad:
                  آموزش نرم افزار Matlab برای دانشجویان رشته های مهندسیhttp://alidoost.ir/news.php?readmore=22

                  دیدگاه


                    #10
                    پاسخ : ساخت 40 کیلو هرتز با تایمر

                    واسه کالیبره کردن اسیلاتور داخلی مقدار رجیستر OSCCAL رو تغییر میدن.
                    البته اصولی : ( معمولا توسط تایمر2 + کریستال ساعت / و یه تایمر دیگه که کلاک هاشو از اسسلاتور داخلی میگیره)
                    آموزش نرم افزار Matlab برای دانشجویان رشته های مهندسیhttp://alidoost.ir/news.php?readmore=22

                    دیدگاه


                      #11
                      پاسخ : ساخت 40 کیلو هرتز با تایمر

                      مطابق فرمایش دوستمون اگر از CTC استفاده کنید سربار نرم افزاری صفر میشه و دقت موج خروجی فقط بستگی به دقت اسیلاتور میکرو خواهد داشت. برای آشنایی با وضعیت CTC می تونید این آموزش رو مطالعه کنید (فصل تایمرها):
                      http://dlc.eca.ir/index.php?act=view&id=104
                      There is nothing so practical as a good theory. — Kurt Lewin, 1951

                      دیدگاه


                        #12
                        پاسخ : ساخت 40 کیلو هرتز با تایمر

                        نوشته اصلی توسط رضا سپاس یار
                        مطابق فرمایش دوستمون اگر از CTC استفاده کنید سربار نرم افزاری صفر میشه و دقت موج خروجی فقط بستگی به دقت اسیلاتور میکرو خواهد داشت. برای آشنایی با وضعیت CTC می تونید این آموزش رو مطالعه کنید (فصل تایمرها):
                        http://dlc.eca.ir/index.php?act=view&id=104
                        رضا جان این از صد تا فحش هم بدتر بود.یعنی شما چند ماه پیش مقاله تو سایت بذاری و من الان دانلود بکنم.رضا جان من خیلی وقته با این نوشته شما دارم صفا می کنم.فقط حیف که این کارم حتما باید بیسیک باشه.دستت درد نکنه فهمیدم CTC چیه ولی یه کم سنگین گفتی عزیز.بازم ممنون.عالیه
                        عزیزان اینم مد CTC تو بسکام که به اسم COMPARE شناخته میشه برنامه تو پروتئوس همون فرکانس 33 کیلو رو نشون میده هر چی هم OCR2 رو تغییر میدم فرکانس تغییر نمی کنه.شاید تو عمل جواب بده ولی کو اسکوپ :cry2:
                        $regfile = "m8def.dat"
                        $crystal = 8000000
                        Config Pind.7 = Output
                        Config Timer2 = Timer , Compare = Toggle , Prescale = 1 , Clear Timer = 1
                        Stop Timer2
                        Ocr2 = 99
                        Start Timer2
                        Do
                        Loop
                        End
                        عزیزان این برنامه رو چک کنید.اگه تو پروتئوس هم چکش کنید که دیگه واقعا شرمنده کردید
                        راستی دوستان فرکانس متر این ولت متر کوچیکا درست کار می کنه؟؟؟
                        منتظرم.
                        به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

                        دیدگاه


                          #13
                          پاسخ : ساخت 40 کیلو هرتز با تایمر

                          نوشته اصلی توسط محسن.ع

                          رضا جان این از صد تا فحش هم بدتر بود.یعنی شما چند ماه پیش مقاله تو سایت بذاری و من الان دانلود بکنم.رضا جان من خیلی وقته با این نوشته شما دارم صفا می کنم.فقط حیف که این کارم حتما باید بیسیک باشه.دستت درد نکنه فهمیدم CTC چیه ولی یه کم سنگین گفتی عزیز.بازم ممنون.عالیه
                          عزیزان اینم مد CTC تو بسکام که به اسم COMPARE شناخته میشه برنامه تو پروتئوس همون فرکانس 33 کیلو رو نشون میده هر چی هم OCR2 رو تغییر میدم فرکانس تغییر نمی کنه.شاید تو عمل جواب بده ولی کو اسکوپ :cry2:
                          $regfile = "m8def.dat"
                          $crystal = 8000000
                          Config Pind.7 = Output
                          Config Timer2 = Timer , Compare = Toggle , Prescale = 1 , Clear Timer = 1
                          Stop Timer2
                          Ocr2 = 99
                          Start Timer2
                          Do
                          Loop
                          End
                          عزیزان این برنامه رو چک کنید.اگه تو پروتئوس هم چکش کنید که دیگه واقعا شرمنده کردید
                          راستی دوستان فرکانس متر این ولت متر کوچیکا درست کار می کنه؟؟؟
                          منتظرم.
                          سلام محسن جان،
                          مجبور نیستید حتما از دستورات BASCOM استفاده کنید. واقعیت اینه برای کار کردن با تایمر بهترین کار تنظیم مستقیم رجیسترهاست. تو BASCOM هم برای این کار محدودیت ندارید، این طور واقعا متوجه میشید چه اتفاقی داره در سخت افزار میفته :smile:
                          There is nothing so practical as a good theory. — Kurt Lewin, 1951

                          دیدگاه


                            #14
                            پاسخ : ساخت 40 کیلو هرتز با تایمر

                            نوشته اصلی توسط رضا سپاس یار
                            سلام محسن جان،
                            مجبور نیستید حتما از دستورات BASCOM استفاده کنید. واقعیت اینه برای کار کردن با تایمر بهترین کار تنظیم مستقیم رجیسترهاست. تو BASCOM هم برای این کار محدودیت ندارید، این طور واقعا متوجه میشید چه اتفاقی داره در سخت افزار میفته :smile:
                            دستت درد نکنه رضا جان.
                            ولی علاوه بر اینکه من سوادم در مورد سخت یه خرده کمه این کار حتما باید مثل اب خوردن انجام بشه.یه خط برنامه هم نباید سخت باشه.اقا حالا این کدهایی که من گذاشتم درست هست؟تو پروتئوس درست کار نکرد.تغییر OCR2 توو فرکانس تاثیری نداره.در مور ولت متر هم شما خبر داری؟
                            به جای اینکه یه اقیانوس کم عمق باشی, یه چاه ژرف باش.

                            دیدگاه

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