اطلاعیه

Collapse
No announcement yet.

مقایسه 4 ADC و نمایش بزرگترین آنها

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

    مقایسه 4 ADC و نمایش بزرگترین آنها

    سلام
    من دارم زبان C با اتمل استودیو یاد میگیرم استادمون یه پروژه داده که من واقعا مغزم هنگ کرده
    4 عدد ADC داریم و یک LCD
    ورودی هر کدوم از ADC ها بزرگتر بود باید تو LCD عدد ورودی و مقدارش رو نمایش بدیم
    ورودی هم ولوم هستش
    من گفتم با مقایسه >< انجامش بدم گفت نه اینجوری نیست
    والا من راه دیگه ای بلد نیستم میشه دوستان کمک کنند؟
    این مشکل رو تجربه کردم
    یا اینکه از نزدیک دیدم و دارم نظر میدم
    بعضی ها به اشتباه فکر میکنن من تعمیر کارم و دارم راه حل میگم

    #2
    پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

    نوشته اصلی توسط maziar ashouri نمایش پست ها
    سلام
    من دارم زبان C با اتمل استودیو یاد میگیرم استادمون یه پروژه داده که من واقعا مغزم هنگ کرده
    4 عدد ADC داریم و یک LCD
    ورودی هر کدوم از ADC ها بزرگتر بود باید تو LCD عدد ورودی و مقدارش رو نمایش بدیم
    ورودی هم ولوم هستش
    من گفتم با مقایسه >< انجامش بدم گفت نه اینجوری نیست
    والا من راه دیگه ای بلد نیستم میشه دوستان کمک کنند؟
    با سلام.
    1- لطفا نوع میکروکنترلر رو مشخص کنید .
    2- 4 تا ADC هم زمان خوانده میشوند یا اینکه در ابتدا اولی بعد دومی و بعد سومی و نهایتا اخری؟؟؟
    واینکه مشکل این که با مقایسه اندازه بفهمیم کدوم بزرگتر هست چیه؟؟؟
    لطفا به این سوال ها پاسخ بدید تا بهتر بشه راهنمایی کرد.
    با تشکر.

    دیدگاه


      #3
      پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

      نوشته اصلی توسط maziar ashouri نمایش پست ها
      سلام
      من دارم زبان C با اتمل استودیو یاد میگیرم استادمون یه پروژه داده که من واقعا مغزم هنگ کرده
      4 عدد ADC داریم و یک LCD
      ورودی هر کدوم از ADC ها بزرگتر بود باید تو LCD عدد ورودی و مقدارش رو نمایش بدیم
      ورودی هم ولوم هستش
      من گفتم با مقایسه >< انجامش بدم گفت نه اینجوری نیست
      والا من راه دیگه ای بلد نیستم میشه دوستان کمک کنند؟
      سلام
      ببینید اصولا الگوریتمی که برای پیدا کردن بزرگترین یا کوچکترین عدد یک مجموعه بکار میره به این صورته شما عددها رو مثلا در یک آرایه ذخیره میکنید. حالا یه متغیر مثلا به اسم a میسازید که مقدار بزرگتر در نهایت توی اون قرار میگیره. حالا باید در مرحله اول خونه اول آرایه رو ریخته بشه روی متغیرa؛ بعد در مرحله بعدی خونه دوم آرایه با متغیر a مقایسه میشه؛ اگر این خونه بزرگتر بود مقدارش توی a قرار میگیره وگرنه مقدار a تغییری نمیکنه. در مرحله بعد برنامه میره سراغ خونه سوم، مقایسه با a صورت میگیره و... الی آخر. این کار برای همه خونه های آرایه انجام میشه تا به آخرین خونه. در آخر a حاوی مقدار بزرگتر از بقیه خواهد بود.

      دیدگاه


        #4
        پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

        نوشته اصلی توسط maziar ashouri نمایش پست ها
        سلام
        من دارم زبان C با اتمل استودیو یاد میگیرم استادمون یه پروژه داده که من واقعا مغزم هنگ کرده
        4 عدد ADC داریم و یک LCD
        ورودی هر کدوم از ADC ها بزرگتر بود باید تو LCD عدد ورودی و مقدارش رو نمایش بدیم
        ورودی هم ولوم هستش
        من گفتم با مقایسه >< انجامش بدم گفت نه اینجوری نیست
        والا من راه دیگه ای بلد نیستم میشه دوستان کمک کنند؟
        سلام
        اصولا که خوندن 4 مبدل انالوگ به دیجیتال به صورت همزمان امکانش نیست چون 8تا ADC نداریم یدونه داریم که مالتی پلکس شده و در هر لحظه فقط توانایی تبدیل یکی از کانالا رو داره
        اگر استادتون روش مقایسه منظقی رو قبول نکرده هدفش استفاده شما از مقایسه گر آنالوگ هستش
        اگر یه سرچی بکنین در مورد مقایسه کننده آنالوگ میبینین که در رجیستر های مقایسه کننده امکان این که یکی از ورودی های مقایسه کننده از طریق پایه های ADC تامین بشه وجود داره
        در نتیجه شما رجیسترهاتون رو به صورتی که به ترتیب هر 4 ورودی مقایسه بشن و در یک حلقه در صورت بزرگتر بودن در یک متغیر ذخیره شده و نمایش داده بشن مقداردهی میکنین

        دیدگاه


          #5
          پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

          نوشته اصلی توسط saati.sms نمایش پست ها
          با سلام.
          1- لطفا نوع میکروکنترلر رو مشخص کنید .
          2- 4 تا ADC هم زمان خوانده میشوند یا اینکه در ابتدا اولی بعد دومی و بعد سومی و نهایتا اخری؟؟؟
          واینکه مشکل این که با مقایسه اندازه بفهمیم کدوم بزرگتر هست چیه؟؟؟
          لطفا به این سوال ها پاسخ بدید تا بهتر بشه راهنمایی کرد.
          با تشکر.
          همزمان که نمیشه 4 تا پایه ADC رو خوند
          با مقایسه منطقی مشکلش چیه من نمیدونم باید از استادم سوال بپرسین

          دلیل: ادغام دو پست برای جلوگیری از اسپم

          میکرو هم اتمگا 32

          دلیل: ادغام دو پست برای جلوگیری از اسپم

          نوشته اصلی توسط hossein.m98 نمایش پست ها
          سلام
          ببینید اصولا الگوریتمی که برای پیدا کردن بزرگترین یا کوچکترین عدد یک مجموعه بکار میره به این صورته شما عددها رو مثلا در یک آرایه ذخیره میکنید. حالا یه متغیر مثلا به اسم a میسازید که مقدار بزرگتر در نهایت توی اون قرار میگیره. حالا باید در مرحله اول خونه اول آرایه رو ریخته بشه روی متغیرa؛ بعد در مرحله بعدی خونه دوم آرایه با متغیر a مقایسه میشه؛ اگر این خونه بزرگتر بود مقدارش توی a قرار میگیره وگرنه مقدار a تغییری نمیکنه. در مرحله بعد برنامه میره سراغ خونه سوم، مقایسه با a صورت میگیره و... الی آخر. این کار برای همه خونه های آرایه انجام میشه تا به آخرین خونه. در آخر a حاوی مقدار بزرگتر از بقیه خواهد بود.
          این روش جواب میده اما نمیتونم بفهمم که کدوم پایه بیشترین مقدار رو داره
          باید هم بدونم که کدوم پایه بزرگتره هم اینکه بدونم چه مقداری داره

          دلیل: ادغام دو پست برای جلوگیری از اسپم

          نوشته اصلی توسط Behzad PRV نمایش پست ها
          سلام
          اصولا که خوندن 4 مبدل انالوگ به دیجیتال به صورت همزمان امکانش نیست چون 8تا ADC نداریم یدونه داریم که مالتی پلکس شده و در هر لحظه فقط توانایی تبدیل یکی از کانالا رو داره
          اگر استادتون روش مقایسه منظقی رو قبول نکرده هدفش استفاده شما از مقایسه گر آنالوگ هستش
          اگر یه سرچی بکنین در مورد مقایسه کننده آنالوگ میبینین که در رجیستر های مقایسه کننده امکان این که یکی از ورودی های مقایسه کننده از طریق پایه های ADC تامین بشه وجود داره
          در نتیجه شما رجیسترهاتون رو به صورتی که به ترتیب هر 4 ورودی مقایسه بشن و در یک حلقه در صورت بزرگتر بودن در یک متغیر ذخیره شده و نمایش داده بشن مقداردهی میکنین
          شما سرچ کنین درباره مقایسه گر آنالوگ چون اگه درست سرچ کنین متوجه میشین که فقط مقایسه بین دوتا پایه رو انجام میده و شبیه ADC مقدار رو نمیتونه بفهمه
          اولین مشکل مقایسه گر آنالوگ اینه که فقط از دوتا پایه استفاده میکنه
          دومین مشکل دقیقا شبیه آمپ امپ عمل میکنه و ما نمیتونیم مقدار خوانی کنیم
          سومین مشکل خروجی یک بیت فعال یا غیر فعال هستش
          این مشکل رو تجربه کردم
          یا اینکه از نزدیک دیدم و دارم نظر میدم
          بعضی ها به اشتباه فکر میکنن من تعمیر کارم و دارم راه حل میگم

          دیدگاه


            #6
            پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

            نوشته اصلی توسط maziar ashouri نمایش پست ها
            این روش جواب میده اما نمیتونم بفهمم که کدوم پایه بیشترین مقدار رو داره
            باید هم بدونم که کدوم پایه بزرگتره هم اینکه بدونم چه مقداری داره
            خوب کافیه به هر پایه یه شماره اختصاص بدید و ضمن اینکه برنامه متغیر a رو مقدار دهی میکنه، شماره پین رو هم توی متغیری دیگه بریزه. در آخر هم مقدار داریم هم شماره پایه. با این شماره پایه میشه تشخیص داد داده بزرگتر مال کدوم ورودی بوده
            این مسائل ساده همیشه راه حلی هم دارن؛ نگران نباشید.

            دیدگاه


              #7
              پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

              نوشته اصلی توسط hossein.m98 نمایش پست ها
              خوب کافیه به هر پایه یه شماره اختصاص بدید و ضمن اینکه برنامه متغیر a رو مقدار دهی میکنه، شماره پین رو هم توی متغیری دیگه بریزه. در آخر هم مقدار داریم هم شماره پایه. با این شماره پایه میشه تشخیص داد داده بزرگتر مال کدوم ورودی بوده
              این مسائل ساده همیشه راه حلی هم دارن؛ نگران نباشید.
              عزیز من روی کاغذش و فارسیش رو میدونم اما توی خود برنامه نویسی گیر کردم
              میشه توی برنامه نویسی همین راه حل ساده رو برام بگین ؟ من هیچ فکری نمیتونم بکنم چجوری اینو برنامش رو بنویسم
              این مشکل رو تجربه کردم
              یا اینکه از نزدیک دیدم و دارم نظر میدم
              بعضی ها به اشتباه فکر میکنن من تعمیر کارم و دارم راه حل میگم

              دیدگاه


                #8
                پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

                نوشته اصلی توسط maziar ashouri نمایش پست ها
                عزیز من روی کاغذش و فارسیش رو میدونم اما توی خود برنامه نویسی گیر کردم
                میشه توی برنامه نویسی همین راه حل ساده رو برام بگین ؟ من هیچ فکری نمیتونم بکنم چجوری اینو برنامش رو بنویسم
                خوب اینو از اول بگو
                max = adc[0];
                p = 0;
                for(unsigned char i= 1; i<4; i++)
                {
                if(max < adc[i])
                {
                max = adc[i];
                p = i;
                }
                }

                این قسمت همون الگوریتم ماکزیمم گیریه. داده های ADC میکروکنترلر رو باید در آرایه 4 تایی adc ذخیره کنی. در متغیر p شماره پین و در متغیر max مقدارش قرار میگیره. حالا پایین تر موقع نمایش با lcd از p و max برای نمایش شماره ورودی و مقدارش استفاده میکنی. اگر اونم نمیدونی چطور بگو تا راهنمایی کنم.
                جدیدترین ویرایش توسط hossein.m98; ۱۷:۲۰ ۱۳۹۸/۰۵/۳۰.

                دیدگاه


                  #9
                  پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

                  نوشته اصلی توسط maziar ashouri نمایش پست ها
                  همزمان که نمیشه 4 تا پایه ADC رو خوند
                  با مقایسه منطقی مشکلش چیه من نمیدونم باید از استادم سوال بپرسین.
                  میکرو هم اتمگا 32
                  با سلام مجدد.
                  حق با شماست با میکرو ATmega32 نمیشه همزمان از 4 تا ADC مقدار رو خوند ولی میکرو هایی هستند که این قابلیت رو دارند برای همین نوع میکرو رو پرسیدم.
                  واینکه به نظرم این کار شما یک عیب داره که احتمالا خودتون به اون اگاهی دارید این هست 4 تا سیگنالی رو که توسط ADC نمونه برداری میکنید همزمان نمونه برداری نمیشن و اگر تغییرات سیگنال ها شدید باشه به احتمال خیلی زیاد جوابی که به دست میارید اشتباه هست.(فکر نکنم بشه با استفاده از ATmega32 راه حلی براش پیدا کرد .) مگر اینکه تغییرات سیگنال شدید نباشند که مشکل زیاد خاصی به وجود نمیاد.

                  روشی که اقای hossein.m98 هم گفتند یک روش مقایسه هست و منم بهتون یک روش مقایسه ای دیگه میگم.
                  1- اول یه متغیری به نام max با مقدار صفر تعریف کنید.
                  2- مقدار رجیستر ADC را با max مقایسه کنید اگر بزرگتر از max بود مقدار رجیستر ADC رو داخل max بریزید.
                  3- کانال تبدیل ADC رو عوض کنید.
                  4-دستور فرمان تبدیل ADC روبدهید.
                  5-دوباره مقدار ADC رو با max مقایسه کنید و فرایند بالا رو تکرار کنید.
                  فرق روش من با اقای hossein.m98 این هست که در روش من یک تبدیل صورت میگرد و با مقدار maximum مقایسه میگردد و دروش اقای hossein.m98 تبدیل ها پشت سر هم صورت میگیرد و در یک ارایه ذخیره میگردد و سپس بزرگترین درایه ی ارایه را به دست میاورید.
                  این که کدوم روش بهتر است بستگی به میزان فرکانس نمونه برداری داره که با تست کردن میتونید بهترین روش رو پیدا کنید.
                  موفق باشید.
                  با تشکر.

                  دیدگاه


                    #10
                    پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

                    نوشته اصلی توسط saati.sms نمایش پست ها
                    با سلام مجدد.
                    حق با شماست با میکرو ATmega32 نمیشه همزمان از 4 تا ADC مقدار رو خوند ولی میکرو هایی هستند که این قابلیت رو دارند برای همین نوع میکرو رو پرسیدم.
                    واینکه به نظرم این کار شما یک عیب داره که احتمالا خودتون به اون اگاهی دارید این هست 4 تا سیگنالی رو که توسط ADC نمونه برداری میکنید همزمان نمونه برداری نمیشن و اگر تغییرات سیگنال ها شدید باشه به احتمال خیلی زیاد جوابی که به دست میارید اشتباه هست.(فکر نکنم بشه با استفاده از ATmega32 راه حلی براش پیدا کرد .) مگر اینکه تغییرات سیگنال شدید نباشند که مشکل زیاد خاصی به وجود نمیاد.

                    روشی که اقای hossein.m98 هم گفتند یک روش مقایسه هست و منم بهتون یک روش مقایسه ای دیگه میگم.
                    1- اول یه متغیری به نام max با مقدار صفر تعریف کنید.
                    2- مقدار رجیستر ADC را با max مقایسه کنید اگر بزرگتر از max بود مقدار رجیستر ADC رو داخل max بریزید.
                    3- کانال تبدیل ADC رو عوض کنید.
                    4-دستور فرمان تبدیل ADC روبدهید.
                    5-دوباره مقدار ADC رو با max مقایسه کنید و فرایند بالا رو تکرار کنید.
                    فرق روش من با اقای hossein.m98 این هست که در روش من یک تبدیل صورت میگرد و با مقدار maximum مقایسه میگردد و دروش اقای hossein.m98 تبدیل ها پشت سر هم صورت میگیرد و در یک ارایه ذخیره میگردد و سپس بزرگترین درایه ی ارایه را به دست میاورید.
                    این که کدوم روش بهتر است بستگی به میزان فرکانس نمونه برداری داره که با تست کردن میتونید بهترین روش رو پیدا کنید.
                    موفق باشید.
                    با تشکر.
                    چون سیگنال ها از ولوم گرفته میشه به گمونم همین مگا 32 زیادشم باشه! البته یک موردی هم هست؛ در صورت سریع بودن تغییرات بهتره اول نمونه گیری ها صورت بگیره و بعد مقایسه و عملیات دیگه روش انجام بشه تا نمونه ها از نظر زمانی بهم نزدیک تر باشن. پر واضحه که برای کارهای حساس و دقت زیاد کسی از avr استفاده نمیکنه و میرن سراغ آی سی های تخصصی و یا میکروکنترلرهای پیشرفته تر مثل arm

                    Sent from my LG-H870S using Tapatalk

                    دیدگاه


                      #11
                      پاسخ : مقایسه 4 ADC و نمایش بزرگترین آنها

                      شما سرچ کنین درباره مقایسه گر آنالوگ چون اگه درست سرچ کنین متوجه میشین که فقط مقایسه بین دوتا پایه رو انجام میده و شبیه ADC مقدار رو نمیتونه بفهمه
                      اولین مشکل مقایسه گر آنالوگ اینه که فقط از دوتا پایه استفاده میکنه
                      دومین مشکل دقیقا شبیه آمپ امپ عمل میکنه و ما نمیتونیم مقدار خوانی کنیم
                      سومین مشکل خروجی یک بیت فعال یا غیر فعال هستش[/QUOTE]


                      درسته که من دیگه از سرچ و اینا تو این مطلب گذشتم و تو چند پروژه ازش استفاده کردم ازش ولی چشم درست سرچ میکنم
                      با یک میکرو ضعیف طرفیم قرار نیست با یک پروتکل یا پایه همه کارا راه بیوفته
                      مشخصه که دید نرم افزاری به قضیه ندارین سه مشکلی که بالا ذکر کردین راه حلشون مشخصه
                      مشکل اول مقایسه گر از دو پایه استفاده می کنه خب قرار نیست سفارشی برای شما یه مقایسه کننده 4تایی درست کنن توو جوابم اعلام کردم با استفاده از یک حلقه می تونین 4 بار هر بار با یکی از پایه های ADC مقایسه کنین و با روش دوستمون که ازآارایه ها استفاده کرده و روش معمول هم هست بزرگتر رو پیدا کنین
                      برای مشکل دوم دیگه واقعا انتظاراتتون بالا رفته که یک واحد هم مقایسه کنه هم اندازه بگیره خب واحد اندازه گیری ADC هست دیگه باهم مقایسه میشن و با استفاده از ADC مقدارشون مشخص میشه و در صورت بزرگتر بودن مقدار نمایش داده میشه
                      سومی مشکل نیست طرز کارکرده و به جز یک بیتی که اعلام میکنه کدومش بزرگتره به چیز دیگه ای احتیاج ندارین
                      شما ابتدا با دو سیگنال کارتون رو انجام بدین و مراحل بالا رو طی کنین جواب میگیرین بقیه سیگنال ها نیز با حلقه های تکرار و پردازش پی در پی همون نتیجه رو میدن

                      دیدگاه

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