اطلاعیه

Collapse
No announcement yet.

درخواست کمک، مدولاسیون fsk با AVR

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

    #16
    پاسخ : درخواست کمک، مدولاسیون fsk با AVR

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

    دیدگاه


      #17
      پاسخ : درخواست کمک، مدولاسیون fsk با AVR

      نوشته اصلی توسط rozeh
      نشد. شما باید تکلیف رو مشخص کنید. گفتم بهتون که با اون مدولاسیون که معرفی کردم می تونید عمل مدوله رو انجام بدید.فقط فکر کنم واسه تبدیل باید از یه DAC استفاده کنید. حالا مشکل چیه؟ دقیقا تکلیف رو هم روشن کنید.

      عرض کردم که!
      ترجیحا میخوام با تایمر میکرو کار کنم تا اینکه برم سراغ میکروهای 64 و 128.
      راهنماییه شما بسیار عالی بود ولی من میخوام با مگا 16 یا 32 کار رو انجام بدم.
      تا الان هم یکم جلوتر رفتم و بدم نمیاد کدهارو بهتون نشون بدم تا ایرادهاشو بهم بگید فقط تا فردا میخوام بازم تلاشمو بکنم تا ببینم چقدر دیگه میتونم ادامه بدم بعد شما کمکم کنید.
      البته ایده کلی مسئله رو الان میگم:
      میخوام با یک ADC یک ورودی بین 0 تا 5 ولت رو به میکرو بدم و این ورودی رو از طریق OC1A و OC1B به شکل سینوسی بفرستم به مدار گیرنده. به این صورت که از بیت اول شروع به خوندن 8 بیت ورودی کنم و به ازای 1ها سینوسی با فرکانس f1 و به ازای 0ها سینوسی با فرکانس f2 فرستاده بشه.
      تو مدار گیرنده هم معکوس این عمل اتفاق بیوفته.

      دیدگاه


        #18
        پاسخ : درخواست کمک، مدولاسیون fsk با AVR

        http://www.mediafire.com/?jk5p07uiazvkyir
        الان تو این فایل یه کارایی کردم که دوست دارم ایرادهاشو بهم بگید.
        فعلا فقط تونستم به ازای بیتهای 1 یه سینوسی بفرستم و به ازای بیتهای 0 هیچی نفرستم.
        یعنی فعلا یه سینوسی دارم.
        الانم دوتا مشکل دارم:
        یکی اینکه سینوسیه دوم رو چطوری باید اضافه کنم؟ و یکی دیگه اینکه تو گیرنده چطوری باید از روی این سینوسی هایی که فرستاده میشن بیت رو تشخیص بدم؟
        تو این کد زمان هر سینوسی که فرستاده میشه رو گذاشتم روی 20 میلی ثانیه. یعنی بیام تو گیرنده 8تا 20 میلی ثانیه سیگنال رو دریافت کنم بعد 20 میلی ثانیه 20 میلی ثانیه سیگنالها رو جدا کنم و فرکانس هرکدوم رو اندازه بگیرم؟
        به نظرم خیلی سخت شده اگه میشه کمک کنید.

        دیدگاه


          #19
          پاسخ : درخواست کمک، مدولاسیون fsk با AVR

          http://uploadboy.com/kwuq40rng2pg.html
          مـن هیچ ندانم که مرا آن که سرشت
          از اهل بهشت کرد یا دوزخ زشت
          جامی و بتی و بربطی بر لب کشت
          این هر سه مرا نقد و تو را نسیه بهشت

          دیدگاه


            #20
            پاسخ : درخواست کمک، مدولاسیون fsk با AVR

            خیلی عالی بود دوست عزیز یکم خودمم دستکاریش کردم و چیزی که میخواستم درست شد. گیرندشم سعی میکنم بنویسم و دست آخر میذارم که ببینید.
            ممنون،

            دیدگاه


              #21
              پاسخ : درخواست کمک، مدولاسیون fsk با AVR

              برای گیرنده سعی کردم از فرکانس سیگنال ورودی صفر و یک بودنشو تشخیص بدم ولی زیاد دقیق نشد.
              معمولا یه بیت رو اشتباه تشخیص میده...
              به نظرتون راه درستی میرم؟
              شما پیشنهاد دیگه ای ندارید؟

              دیدگاه


                #22
                پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                درود

                به نظر میرسه هنوز به نتیجه نرسیدی. حتی همسایه ... .

                کاری که با میکرو باید انجام بدی اینه که اول سیگنال سینوسی رو به مربعی 0 و 5 ولت تبدیل کنی. بعد اون رو بدی به ورودی اینتراپت میکرو. توی هر لبه بالا رونده تایمری رو ست کنی و در لبه بالا رونده دیگه، مقدار اون رو بخونی. اگه مقدار تایمر از مثلا 6 میلی پانیه بیشتر بود، خروجی رو مثلا 1 میکنی در غیر این صورت 0.

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

                برای اینکه می دونم بعد مسئله تبدیل دیتای سریال به پارالل برات پیش میاد، و سوال برات پیش میاد که ابتدای دیتای 8 بیتی رو چطور تشخیص بدی، من جوابشو قبلش میگم.
                برای تشخیص ابتدا و انتهای دیتا، در فرستنده باید مثلا یک یا دو بایت مشخص خودت اضافه کنی. و در گیرنده وقتی این بایت ها رو دیکد کرد بفهمی اول یا اخر دیتا هست و دیتای بین اینها دیتای adc هست. (می تونی چند دیتای adc بین اونها قرار بدی)
                اما به جای یک یا چند بایت، می تونی مثل ارتباط پورت سریال، یک بیت به ابتدا و انتهای دیتای adc اضافه کنی. در این صورت اگه باود ریت رو بتونی درست تنظیم کنی، می توی با استفاده از یک مدار لاجیک، خروجی رو مستقیما به پورت سریال میکرو و یا حتی کامپیوتر وصل کنی.
                مـن هیچ ندانم که مرا آن که سرشت
                از اهل بهشت کرد یا دوزخ زشت
                جامی و بتی و بربطی بر لب کشت
                این هر سه مرا نقد و تو را نسیه بهشت

                دیدگاه


                  #23
                  پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                  دوستان بعد از مدتها دوباره ادامه پروژه رو میخوام پیش برم.
                  با تشکر از marych بخاطر راهنماییهای خوبش الان تونستم برنامه نسبتا قابل قبولی بنویسم ولی نه تنها تو پروتئوس کمی خطا داره (که بهتره از بین بره) بلکه الان که رو برد پیادش کردم میبینم اصلا درست کار نمیکنه.
                  یعنی همونی که تو پروتئوس بود غنیمت بود ولی ... .
                  http://www.mediafire.com/download/3c0z1322o36wd1f/test.rar

                  گیرنده مدار تقریبا چیزی شبیه به فرکانس متر کتاب آقای سپاس یاره و فکر میکنم خوب نتونستم ازش استفاده کنم.
                  دوتا مشکل عمده اینه که تو پروتئوس بعضی مواقع اشتباه بیتهارو تشخیص میده (در حد 5 درصد مواقع) و مدار ساخته شدش اصلا درست کار نمیکنه و حتی جوابایی که تو پروتئوس قانعم کرده بود در عمل نمیگیرم حالا نمیدونم مشکلم از برنامست، از فیوزبیتهاست یا ... .
                  ممنون میشم راهنماییم کنید.

                  دیدگاه


                    #24
                    پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                    دوستان نظزی ندارند؟
                    من به کوچکترین کمک شما نیاز دارم...

                    دیدگاه


                      #25
                      پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                      نوشته اصلی توسط nibilala
                      دوستان نظزی ندارند؟
                      من به کوچکترین کمک شما نیاز دارم...
                      من درست متوجه نشدم
                      یک بار کامل پروژه تون رو توضیح بدید، اگر در توانم بود کمک کنم.
                      نیاز نیست که بگید چیکار میخوهید کنید و چگونه میخواهید عمل کنید و با چه ابزاری تو میکرو میخوایید پروژه رو عملی کنید، فقط یگید چه ورودی به میکرو میدید و چی ازش انتظار دارید (میخواید چه خروجیی ازش بگیرید)
                      راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                      کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                      نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                      http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                      انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                      دیدگاه


                        #26
                        پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                        نوشته اصلی توسط RubeuS
                        من درست متوجه نشدم
                        یک بار کامل پروژه تون رو توضیح بدید، اگر در توانم بود کمک کنم.
                        نیاز نیست که بگید چیکار میخوهید کنید و چگونه میخواهید عمل کنید و با چه ابزاری تو میکرو میخوایید پروژه رو عملی کنید، فقط یگید چه ورودی به میکرو میدید و چی ازش انتظار دارید (میخواید چه خروجیی ازش بگیرید)
                        ممنون دوست عزیز،
                        ببینید من از دوتا میکرو استفاده کردم. یکی مدولاتور و یکی دمدولاتور.
                        توسط یه adc سیگنال 0 تا 5 ولت به 8 بیت تبدیل میشه و به پورت B منتقل میشه و میکروی اول میاد این بیتها رو از اولی تا هشتمی چک میکنه که یکه یا 0.
                        اگه یک بود سینوسی با فرکانس f1 به مدت 100 میلی ثانیه میفرسته و اگه 0 بود سینوسی با فرکانس f2 به مدت 100 میلی ثانیه میفرسته. این فرستادن هم توسط OCA1 انجام میشه.
                        و گیرنده که میکروی دومم هست این سینوسی هارو از پایه PB1 دریافت میکنه و میبینه که فرکانس این سیگنال چقدره.
                        مشکل تقریبا همین قسمته که نمیتونم دقیق دوتا سینوسی رو از هم تشخیص بدم.
                        تا اینجا کافیه؟

                        دیدگاه


                          #27
                          پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                          نوشته اصلی توسط nibilala
                          ممنون دوست عزیز،
                          ببینید من از دوتا میکرو استفاده کردم. یکی مدولاتور و یکی دمدولاتور.
                          توسط یه adc سیگنال 0 تا 5 ولت به 8 بیت تبدیل میشه و به پورت B منتقل میشه و میکروی اول میاد این بیتها رو از اولی تا هشتمی چک میکنه که یکه یا 0.
                          اگه یک بود سینوسی با فرکانس f1 به مدت 100 میلی ثانیه میفرسته و اگه 0 بود سینوسی با فرکانس f2 به مدت 100 میلی ثانیه میفرسته. این فرستادن هم توسط OCA1 انجام میشه.
                          و گیرنده که میکروی دومم هست این سینوسی هارو از پایه PB1 دریافت میکنه و میبینه که فرکانس این سیگنال چقدره.
                          مشکل تقریبا همین قسمته که نمیتونم دقیق دوتا سینوسی رو از هم تشخیص بدم.
                          تا اینجا کافیه؟
                          در میکرو اول شما یه واحد adc هشت بیتی خارجی دارین که 0 تا 5 ولت میدید بهش و به نسبت ولتاژ ورودی 8 بیت به پورت B میکرو میده. تا اینجا درست . پس رو پورت B از 0 تا 255 امکان داره باشه( 0 درصورتی که 0 ولت داده باشید و 255 در صورتی که 5 ولت داده باشید ویا 128 در صورتی که 2.5 ولت داده باشید و...) ( چرا میگید 0 و یک ؟) (یعنی میخواید تک تک پین ها رو چک کنید؟! که بازهم دو حالت نمیشه )
                          اینکه میگید "اگه یک بود سینوسی با فرکانس f1 به مدت 100 میلی ثانیه میفرسته و اگه 0 بود سینوسی با فرکانس f2 به مدت 100 میلی ثانیه میفرسته" اگه چی صفر و یک بود؟ 8 تا پین داریم/
                          f1 و f2 از کجا میان؟ ثابتن؟
                          اگر مشکلی با میکرو اول ندارید و میتونید spwm روی OC1A ایجاد کنید که هیچی میریم برا میکرو دو

                          در میکرو دوم سینوسی معمولی ( آنالوگ) دریافت میکنه یا مربعی با دیوتی سایکل متغییر.
                          اگر معمولی(آنالوگ) باشه که نمیتونید همینجوری به PB1 بدید.

                          راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                          کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                          نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                          http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                          انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                          دیدگاه


                            #28
                            پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                            درود

                            اولا ورودی های کلید رو خروجی تعریف کردی. (درستش کن)
                            دوما ترجیحا ولتاژ انالوگ رو به میکرو نده. چون جالتهای نا معلوم درش بوجود میاد. می تونی از comparator خارجی و یا خود میکرو استفاده کنی.
                            سوما، اول و اخر دیتا رو چطور متوجه میشی؟ باید یه روش مثل سریال که stop bit و start bit داره (هدر) براش در نظر بگیری.
                            چهارما چون سیگنالت کاملا فیلتر نمیشه، و دارای ریپل هست، اگه مثلا به comparator بدی هنگام عبور از سطح استانه تو، چند تا پالس اضافی ایجاد میشه که تشخیص رو مشکل میکنه. البته اگه برنامه دیتکتور تو درست نوشته شده این موضوع در برنامه حل شدنیه. (من نمی دونم چطور نوشتی برنامت رو)
                            مـن هیچ ندانم که مرا آن که سرشت
                            از اهل بهشت کرد یا دوزخ زشت
                            جامی و بتی و بربطی بر لب کشت
                            این هر سه مرا نقد و تو را نسیه بهشت

                            دیدگاه


                              #29
                              پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                              نوشته اصلی توسط RubeuS
                              پس رو پورت B از 0 تا 255 امکان داره باشه( 0 درصورتی که 0 ولت داده باشید و 255 در صورتی که 5 ولت داده باشید ویا 128 در صورتی که 2.5 ولت داده باشید و...) ( چرا میگید 0 و یک ؟) (یعنی میخواید تک تک پین ها رو چک کنید؟! که بازهم دو حالت نمیشه )
                              حرف شما درسته ولی من نمیخوام 8 بیت رو یه جا آنالیز کنم میخوام تک تک چک کنم که هر بیت (هر پین B) یا صفره یا یک، درسته؟
                              یعنی چیزی که میفرسته 8 تا سیگنال سینوسیه پشت سر همه؛ به ازای هر بیت یک سینوسی.

                              نوشته اصلی توسط RubeuS
                              اینکه میگید "اگه یک بود سینوسی با فرکانس f1 به مدت 100 میلی ثانیه میفرسته و اگه 0 بود سینوسی با فرکانس f2 به مدت 100 میلی ثانیه میفرسته" اگه چی صفر و یک بود؟ 8 تا پین داریم/
                              پین های پورت B رو منظورم بود.

                              نوشته اصلی توسط RubeuS
                              f1 و f2 از کجا میان؟ ثابتن؟
                              اگر مشکلی با میکرو اول ندارید و میتونید spwm روی OC1A ایجاد کنید که هیچی میریم برا میکرو دو
                              f1 و f2 ثابتن داخل کد فرستنده تعریفشون کردم.
                              آره مشکلی با میکروی اول نیست همونطور که میخوام داره جواب میده.

                              نوشته اصلی توسط RubeuS
                              در میکرو دوم سینوسی معمولی ( آنالوگ) دریافت میکنه یا مربعی با دیوتی سایکل متغییر.
                              اگر معمولی(آنالوگ) باشه که نمیتونید همینجوری به PB1 بدید.
                              در اصل خروجی OC1A دیوتی سایکل متغیر هست که من با یه فیلتر پایین گذر اونو سینوسی آنالوگ کردم و دادم به PB1 منتها این قسمت رو از فرکانس متره کتاب اقای سپاس یار برداشتم و ادیتش کردم. تقریبا اونم همینطوری کار میکرد.
                              حالا مشکلی نیست، میشه همون دیوتی سایکله رو بدم به میکروی دوم. اینطوری میشه کاری کرد؟
                              راستش درست بلد نیستم ولی فکر میکنم دارم از وقفه استفاده میکنم الان...

                              دیدگاه


                                #30
                                پاسخ : درخواست کمک، مدولاسیون fsk با AVR

                                نوشته اصلی توسط nibilala
                                در اصل خروجی OC1A دیوتی سایکل متغیر هست که من با یه فیلتر پایین گذر اونو سینوسی آنالوگ کردم و دادم به PB1 منتها این قسمت رو از فرکانس متره کتاب اقای سپاس یار برداشتم و ادیتش کردم. تقریبا اونم همینطوری کار میکرد.
                                حالا مشکلی نیست، میشه همون دیوتی سایکله رو بدم به میکروی دوم. اینطوری میشه کاری کرد؟
                                راستش درست بلد نیستم ولی فکر میکنم دارم از وقفه استفاده میکنم الان...
                                خوب حالا شد . بهترم بود همون اول اینو میگفتید: " من یک موج سینوسی دارم میخوام ببینم فرکانسش چقدره" جزئیات دیگه لازم نیست

                                همون طور که گفتم به هیچ عنوان سینوسی رو نباید به پین های i/o دیجیتال میکرو بدید.
                                شما همون سینوسی رو بدید به یکی از ورودی های adc میکرو ( یک پین از پورت A (برای مگا16 ، مگا32 و... ) )
                                بعدشم باید بگید رنج فرکانس سینوسی چقدره . بعد از اون میتونید با استفاده از واحد adc در مد auto trigger و با استفاده از تایمر به صورت مرتب در فاصله زمانی های مناسب از مقدار ورودی نمونه برداری کنید و با مقایسه اون با دفعه قبل میتونید فرکانس سینوسی را بدست آورید.
                                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                                دیدگاه

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