اطلاعیه

Collapse
No announcement yet.

خواندن رادیو کنترل با استفاده از Atmega32

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

    خواندن رادیو کنترل با استفاده از Atmega32

    سلام
    من میخوام خروجی رادیو کنترل رو با استفاده از Atmega32 بخونم ..
    ولی روش خاصی به ذهنم نرسید که جواب بده ..
    کسی روشی به ذهنش میاد؟؟
    برای دوستانی که با رادیو کار نکردن : رادیو کنترل من 8 کانال هست یعنی در خروجی ، شما 8 تا پالس مربعی با دیوتی 50 درصد دارین که تا زمانی که شما جهتی رو انتخاب نکرده باشین ، مقدار زمانی یک بودن این پالس ، 1.5 میلی ثانیه س ، وقتی یه جهت رو میگیرین ، میشه 1 ثانیه ، وجهت دیگر رو بگیرین میشه 2 میلی ثانیه.. حالا ما احتیاج داریم که زمان یک بودن هر 8 تا پالس رو تقریبا بطور همزمان داشته باشیم ..
    ممنون میشم اگه کمکم کنین...
    با تشکر..
    تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
    علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

    #2
    پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

    سلام
    درست فهمیدم؟ یعنی میخوای ببینی چه مقدار زمانی همه با هم یک هستن یا اینکه هم زمان دیوتی سایکل هشت ورودی رو حساب کنی؟ کدوم؟
    كرشمه اي كن و بازار ساحري بشكن @-}--@-}--@-}--به غمزه رونق و ناموس سامري بشكن
    ياصاحب الزمان(عج)

    دیدگاه


      #3
      پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

      با استفاده از مد کپچر و مالتی پلکس کردن کانال ها میتونی بخونیشون
      همچنین میشه از وقفه ها هم برای اندازه گیری پالسشون استفاده کرد
      ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

      امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

      دیدگاه


        #4
        پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

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

        پاسخ به سوالات درس مدارات منطقی
        http://www.eca.ir/forum2/index.php?topic=96902.0

        دیدگاه


          #5
          پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

          نوشته اصلی توسط ernic
          میخوام مقدار دیوتی سایکل هر هشت تا رو حدودا هم زمان بخونم
          یکی از بچه ها با وقفه تایمر انجام داده ..
          کسی میدونه چطوری؟؟
          شما برای هر پالس(پایه ورودی) سه تا متغیر word یا byte (بسته به نوع تایمری که انتخاب میکنی) تعریف کن تایمر رو استارت کن و پایه ورودی مربوط به پالس 1 رو چک کن(همزمان هر هشت تا رو باید با هم چک کنی) هر وقت 1 شد مقدار تایمر رو در متغیر اول قرار بده (این میشه نقطه شروع پالس) بعد برای پالس 1 باید زمان صفر شدن رو تعیین کنی که پایه رو برای صفر شدن چک میکنی که در اونجا مقدار تایمر رو در متغیر دوم ذخیره میکنی و دوباره پایه رو برای 1 شدن چک میکنی که در اونجا مقدار تایمر رو در متغیر سوم میریزی حالا حاصل تفریق متغیر اول از متغیر دوم میشه زمان active بودن پالس و حاصل تفریق متغیر اول از متغیر سوم میشه پریود
          که از تقسیم این دو و ضربدر 100 کردن duty cycle بدست میاد

          فقط نکته ای که هست اینه که شما همه این کارها رو باید همزمان برای 7 پایه ورودی دیگه هم انجام بدی که اگر برای چک کردن صفر و یک بودن پایه ها از دستور if استفاده کنی این موضوع کاملا ممکنه

          یه نکته دیگه درباره تایمر اینه که اگه prescale تایمر رو پایین انتخاب کنی دقت بالا و اگر prescale رو بالا انتخاب کنی دقت پایین میشه
          من نمىآ‌توانم فرضیه «بىآ‌اخلاقى انسان» را بپذیرم، و من اخلاق را منحصرا امرى انسانى و متعلق به انسان مىآ‌دانم که هیچ نوع قدرت مافوق انسانى در پشت آن وجود ندارد
          آلبرت اینشتین
          منبع: http://fa.wikiquote.org

          دیدگاه


            #6
            پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

            سلام
            یعنی دو تا تایمر درگیر میشن؟؟
            یکی ایجاد وقفه و دیگری وظیفه خواندن دیوتی سایکل در وقفه ایجاد شده ؟
            مشکل اینجاست که چطور دیوتی سایکل رو اندازه بگیرم ..
            راستش متوجه نشدم دوستمون منظورش چی بود ..
            میشه واضحتر بگین؟؟
            ممنون میشم و شرمنده م میکنین....
            تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
            علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

            دیدگاه


              #7
              پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

              نوشته اصلی توسط sinaitg
              سلام
              من میخوام خروجی رادیو کنترل رو با استفاده از Atmega32 بخونم ..
              ولی روش خاصی به ذهنم نرسید که جواب بده ..
              کسی روشی به ذهنش میاد؟؟
              برای دوستانی که با رادیو کار نکردن : رادیو کنترل من 8 کانال هست یعنی در خروجی ، شما 8 تا پالس مربعی با دیوتی 50 درصد دارین که تا زمانی که شما جهتی رو انتخاب نکرده باشین ، مقدار زمانی یک بودن این پالس ، 1.5 میلی ثانیه س ، وقتی یه جهت رو میگیرین ، میشه 1 ثانیه ، وجهت دیگر رو بگیرین میشه 2 میلی ثانیه.. حالا ما احتیاج داریم که زمان یک بودن هر 8 تا پالس رو تقریبا بطور همزمان داشته باشیم ..
              ممنون میشم اگه کمکم کنین...
              با تشکر..
              سوالات من !؟
              اولا اینکه ایران اپن 2014 کجا بودی کدوم بخش و کدوم قسمت با چه ربات یا ایده ای !!؟ چون منم اونجا بودم
              دوم من جواب گرفتم کمکت میکم ولی قبلش بازم چند تا سوال دارم :eek:
              میکرو چی باشه ؟؟
              زبان برنامه نویسی؟
              یه بحثی هم به عنوان دقت نمونه برداری از سیگنال پیش میاد :rolleyes:
              [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

              دیدگاه


                #8
                پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                سوال سوم و چهارم که الان یادم افتاد
                چند تا میخوای نمونه برداری کنی چند کانال ؟؟!
                سوال بعدی اینه که میکرو شما به غیر از نمونه برداری وضیفه دیگه ای هم انجام میده ؟
                (چون ممکنه به دلیل افزایش بیش از حد وقفه و پردازش میکرو عملا اور لود بشه که البته به دلیل پایین بودن فرکانس (تقریبا 60 هرتز ) و با در نظر گرفتن 8 ورودی و 8 وقفه حدود 480 وقفه در ثانیه میشه لازم به ذکر هست استفاده از وقفه یک نمونه از روش اندازه گیری پهنای پالس و دیوتی سایکل با میکرو هست (اساتید برای 8 وقفه ایراد نگیرن چون عملا سری های پایین avr دارای 3 وقفه هستن !!!)
                [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                دیدگاه


                  #9
                  پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                  نوشته اصلی توسط ernic
                  میخوام مقدار دیوتی سایکل هر هشت تا رو حدودا هم زمان بخونم
                  یکی از بچه ها با وقفه تایمر انجام داده ..
                  کسی میدونه چطوری؟؟
                  بله بسیار اسونه
                  دقت این کار کمی پاین است !
                  cpu بار پردازشی سنگینی متحمل میشود
                  [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                  دیدگاه


                    #10
                    پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                    سلام
                    ایران اپن 2014 ما تو دو تا لیگ تیم داده بودیم.. لیگ مین یاب و رباتهای نمایشی..
                    تو مین یاب 4th شدیم ولی تو رباتهای نمایشی مقام اوردیم و 3th شدیم ..
                    دقیقا میخوام 8تا کانال رو "حدودا" بصورت همزمان بخونم ... میشه یه نمونه برنامه واسم بذارین ؟؟
                    اگه بسکام باشه ممنون میشم ...
                    چون کدینگ من بسکامه ...
                    شما چه لیگی بودین؟؟
                    تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                    علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                    دیدگاه


                      #11
                      پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                      مین یاب گروه www
                      کد نمیخواد
                      نمونه کد میزارم
                      میکرو 128 استفاده کنید که8 تا وفقه داره تا بتونید همه 8 تا رو هم زمان بخونید
                      ببینید
                      میکرو شما 8 عدد ورودی وقفه داره
                      زمانی که وقفه فعال میشه و به ورودی اون پالسی میرسه میکرو برنامه خودشرو رها میکنه و میره سر یاب روتین وقفه

                      فقغه هارو فعال میکنه حساس به لبه ی بالا رونده
                      Config Int0 = Rising
                      Config Int1 = Rising
                      Config Int2 = Rising

                      لیبل وقفه ها رو مشخص میکنی با دستور
                      On Int0 V1
                      On Int1 V2
                      On Int2 V3

                      هر یک از پایه ها رو ورودی قرار میدی
                      (برای فهمیدن اینکه هر وقفه در روی کدوم پایس به دیتا شیت مراجعه کنید )
                      Config Pind.0 = Input
                      Config Pind.1 = Input
                      Config Pind.2 = Input



                      در اخر برنامه لیبیل وقفه ها رو به این صورت قرار میدی
                      V1:

                      محل نوشتن برنامه روتین وقفه
                      Return

                      نمیخوام کاملا کد رو بزارم چون باید خودتون یاد بگیرین که چی کار میخواین بکنین !!

                      برای هر وقفه یه متغیر از جنس بیت تعیرف میکنین و یه متغیر از جنس وورد
                      متغیر بیت برای اینه که با استفاده از اون در هر بار وقفه لبه حساس به وقفه رو تغیر بدیم
                      ابتدا وقفه حساس به لبه بالا رونده رخ میده
                      وقتی میکرو شرو به اجرای وقفه میکنه بیت رو تاگل میکنیم و با توجه به بیت وقفه رو دباره پیکر بندی (حساس به لبه پایین رونده )میکنیم
                      مقدار یکی از تایمر ها رو که در مد تایمر کانفیگ شده میخونیم و ریترن میکنیم
                      توی لبه پاین رونده بعدی دباره مقدار تتایمر رو خونده و منهای مقدار قبلی تایمر میکنیم و دباره با توجه به تاگل شدن بیت وقفه رو با یک شرط حساس به لبه بالا رونده کانفیگ میکنم

                      [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                      دیدگاه


                        #12
                        پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                        سلام
                        خب یه اشکالی پیش میاد
                        اونم تداخل وقفه هاست .. یا اینکه شاید اصلا یکی از 8 تا رو نخونه !!!
                        تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                        علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                        دیدگاه


                          #13
                          پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                          من از 3 تای این روش ها جواب گرفتم تداخل وقفه ها مشکل خاصی پیش نمیاره وقفه ها توی صف یکی یکی رسیدگی میشن
                          برای میکرو کنترلر 480 وقفه در ثانیه با فرکانس 16 میلیون هیچی نیست
                          [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                          دیدگاه


                            #14
                            پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                            شما خودت با Atmega128 جواب گرفتی با 8 تا وقفه ؟؟
                            شروع کنم باهاش؟؟
                            تیم کاوش در مسابقات بین المللی ایران اپن 2016.نمایشی.مین یاب.
                            علم را باید در آزمایشگاه یاد گرفت نه در دانشگاه!

                            دیدگاه


                              #15
                              پاسخ : خواندن رادیو کنترل با استفاده از Atmega32

                              من از 3 تا ورودی جواب گرفتم ولی 99 درصد اطمینان دارم جواب میده برای هر 8 تا
                              نکته : فرکانس 16 بگیر نمیدونم 20 برای مگا 128 اور باشه یا نه ؟ اگه اور نیست 20 بگیر
                              میخوای کواد راه بندازی؟
                              من با xmega راه مندازم اگه پیش بیاد
                              [move][img width=133 height=100]http://bargiri.persiangig.com/aks/0.306310001356499787_taknaz_ir.gif[/img][/move]

                              دیدگاه

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