اطلاعیه

Collapse
No announcement yet.

خواندن مقدار ADC از دو پین مختلف در STM32

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

    خواندن مقدار ADC از دو پین مختلف در STM32

    سلام دوستان. من با برد Stm32F217ZGT6 موجود در فروشگاه کار می کنم. میخوام مقادیر ADC رو از چندتا ورودی بخونم.
    مشکلم اینه که وقتی از دستور
    کد:
    ADC_GetConversionValue(ADC1);
    استقاده میکنم، فقط از پین PA0 میخونه و من میخوام پین های PA1 تا PA7 رو بخونم. ممنون میشم راهنمایی بفرمایید.
    متشکرم
    اللهم صل علي محمد و ال محمد و عجل فرجهم
    >>> www.DMF313.ir <<<
    اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
    در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
    است.

    #2
    پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

    نوشته اصلی توسط hamidzare نمایش پست ها
    سلام دوستان. من با برد Stm32F217ZGT6 موجود در فروشگاه کار می کنم. میخوام مقادیر ADC رو از چندتا ورودی بخونم.
    مشکلم اینه که وقتی از دستور
    کد:
    ADC_GetConversionValue(ADC1);
    استقاده میکنم، فقط از پین PA0 میخونه و من میخوام پین های PA1 تا PA7 رو بخونم. ممنون میشم راهنمایی بفرمایید.
    متشکرم
    سلام
    با چه کتابخونه ای کار میکنید؟
    شما هر دفعه باید کانال adc رو مشخص کنید
    مثل کد زیر
    کد:
    hadc1.Init.NbrOfConversion=1;
        HAL_ADC_Init(&hadc1);
        HAL_ADC_Start(&hadc1);
    if(HAL_ADC_PollForConversion(&hadc1,500)== HAL_OK){
        value = HAL_ADC_GetValue(&hadc1);
        }
    HAL_ADC_Stop(&hadc1);
    hadc1.Init.NbrOfConversion=2;
        HAL_ADC_Init(&hadc1);
        HAL_ADC_Start(&hadc1);
    if(HAL_ADC_PollForConversion(&hadc1,500)== HAL_OK){
        value = HAL_ADC_GetValue(&hadc1);
        }
    [آموزشی] کنترل رله با پیامک توسط sim800l
    [آموزشی] راه اندازی سنسورهای DHT11 و DHT22 با کدویژن
    [آموزشی] مدار عملی اتصال میکروفن خازنی به میکروکنترلر
    [آموزشی] آموزش نحوه راه اندازی میکروهای fmd
    صفحه اینستاگرام : ecdco_ir

    دیدگاه


      #3
      پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

      نوشته اصلی توسط سید رضا باباتبار نمایش پست ها
      سلام
      با چه کتابخونه ای کار میکنید؟
      شما هر دفعه باید کانال adc رو مشخص کنید
      مثل کد زیر
      کد:
      hadc1.Init.NbrOfConversion=1;
          HAL_ADC_Init(&hadc1);
          HAL_ADC_Start(&hadc1);
      if(HAL_ADC_PollForConversion(&hadc1,500)== HAL_OK){
          value = HAL_ADC_GetValue(&hadc1);
          }
      HAL_ADC_Stop(&hadc1);
      hadc1.Init.NbrOfConversion=2;
          HAL_ADC_Init(&hadc1);
          HAL_ADC_Start(&hadc1);
      if(HAL_ADC_PollForConversion(&hadc1,500)== HAL_OK){
          value = HAL_ADC_GetValue(&hadc1);
          }
      سلام. طبق راهنماییتون با هردفعه تعویض کانال تونستم بقیه پین ها رو هم بخونم. ممنون از راهنماییتون
      اللهم صل علي محمد و ال محمد و عجل فرجهم
      >>> www.DMF313.ir <<<
      اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
      در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
      است.

      دیدگاه


        #4
        پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

        سلام .من با برد کاتالیست stm32f407zg کار میکنم. طبق کد دستوری شما زمانtime out که 500 در نظر گرفته شده بر چه اساسی انتخاب می شود. چون برنامه رابرای نمایش ولتاژبا پتانسیومتر در ورودی نوشته ام ک روی lcd کاراکتری نمایش دهد ولی روی lcd پرش اعداد هستم مثلا مقدار بدست امده در 12 بیتی دردو رقم 1580 بالا پایین می شود .عیب در چیه

        دیدگاه


          #5
          پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

          شما باید، چند بار نمونه باری رو انجام بدید و سپس میانگین گیری کنید. این پرش اعداد در ADC خیلی علت داره. میتونه نویز باشه، میتونه کیفیت نامرغوب دستگاه ها باشه.. یکی از راه هاش استفاده از میانگین گیری هست.
          اللهم صل علي محمد و ال محمد و عجل فرجهم
          >>> www.DMF313.ir <<<
          اگر ژرف یابی و پژوهش نباشد; نتیجه اش یک جا ایستادن،
          در جا زدن و با دنیای پیرامون خود به تدریج بیگانه تر شدن
          است.

          دیدگاه


            #6
            پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

            نوشته اصلی توسط m.golzadeh68 نمایش پست ها
            پرش اعداد
            در هر ثانیه هزاران بار نمونه برداری انجام میشه و علاوه بر مقدار اصلی ، مقادیر دیگه مانند نویز نیز خوانده میشه که اکثرا مربوط به نویز 50 هرتز هستند. با یک عدد که روی LCD نمایش داده شده نمیشه هیچ کاری کرد! بهترین راه و اصولی ترین برای مشخص کردن وضعیت ورودی آنالوگ ، اینه که با ارسال دیتا روی پورت سریال برای PC ، سیگنال ورودی را روی نمودار ببینید (با نرم افزار LabView / Matlab یا یک برنامه ای که با C# نوشته اید) . سپس سیگنال را در حوزه ی فرکانس مشاهده و برای حذف هارمونیهای اضافه از فیلتر نرم افزاری استفاده کنید.
            علاوه بر این کار ، همانطور که بقیه دوستان نیز فرمودند باید نمونه برداری های متعددی (بسته به فرکانس سیگنال ورودی مثلا 100 قرائتدر هر بار روشن کردن کانال ورودی) انجام بشه و میانگین آنها بعنوان عدد اصلی نمایش داده بشه.
            Reveng will surely come... Your hard time are ahead
            // - - - - - - - - - -
            برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
            // - - - - - - - - - -
            اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
            // - - - - - - - - - -

            دیدگاه


              #7
              پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

              من هم این مشکل پرش داشتم .تغذیه میکرو با یک رگولاتور خطی تامین کردم مشکل حل شد
              چند نمونه سوئیچینگ گزاشتم پرش داشت
              توی برد های خارجی هم دیدم که یک ولتاژ 8 ولت درست میکنند و ولتاژ قسمت های مدار با رگولاتور خطی تامین میکنند

              دیدگاه


                #8
                پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

                نوشته اصلی توسط hamidzare نمایش پست ها
                سلام دوستان. من با برد Stm32F217ZGT6 موجود در فروشگاه کار می کنم. میخوام مقادیر ADC رو از چندتا ورودی بخونم.
                مشکلم اینه که وقتی از دستور
                کد:
                ADC_GetConversionValue(ADC1);
                استقاده میکنم، فقط از پین PA0 میخونه و من میخوام پین های PA1 تا PA7 رو بخونم. ممنون میشم راهنمایی بفرمایید.
                متشکرم
                برای خوندن چند ورودی آنالوگ- شما باید بیاید از DMA استفاده کنید. البته من تو مد regular کار کردم .
                یعنی شما میاید یه آرایه به تعداد ورودی آنالوگ حافظه میگیری از رم. بعد با نوشتن دستور مربوطه از دونه دونه ورودی آنالوگ نمونه میگره و با dma انتقال میده به آرایه.
                و در نهایت از همه ورودی آنالوگ نمونه گرفته که داخل آرایه ذخیره شده میتونید استفاده کنید تو کدتون.
                من با cmsis کد میزنم. اگه شما هم با cmsis کار میکنید بگید که نمونه مثال رو براتون بزارم.
                نیاز دارید قبل از این کار dma رو خوب بشناسید.

                موفق باشید.
                به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
                (پيش به سوي هدف)

                دیدگاه


                  #9
                  پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

                  سلام دوست عزیز،بهترین مرجع که amd رو درک کرد بگید با stm32cubemx میخام کار کنم

                  دیدگاه


                    #10
                    پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

                    سلام. در مورد ADC میکرو st چند تا سوال داشتم من میخام یک مبدل ADC ایجاد کنم با هشت کانال ورودی با ورودی های صفر تا 5v و 4 تا 20ma ، یک اینکه چطوی میتونم ولتاز ورودی که برای هم ولتاز هم جریان ایجد کنم با تبدیل سطح ب اون مقدار سطح ورودی تاvref (اگه میشه روشهاایی که وجود داره رو بگید واسه تفکیک ولتاژ و جریان) دوم اینکه آیا نیازی به ایجاد ولتاژ رفرنس خارجی دقیق هست برای محیط های صنعتی

                    دیدگاه


                      #11
                      پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

                      نوشته اصلی توسط m.golzadeh68 نمایش پست ها
                      سلام دوست عزیز،بهترین مرجع که amd رو درک کرد بگید با stm32cubemx میخام کار کنم




                      و یوزرمنوال میکرو رو بخون.

                      کلا یه بخشی از میکرو هست که برا انتقال اطلاعات از ماژول به رم و یا رم به رم و ... استفاده میشه. بدونه اینکه سی پی یو اصلا درگیر این انتقال اطلاعات بشه.
                      کلا فقط وظیفش همینه.تو یوزرمنوال هم بخونی نوشته که اگه بخای از چندتا کانال استفاده کنی باید از dma استفاده کنی.
                      به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
                      (پيش به سوي هدف)

                      دیدگاه


                        #12
                        پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

                        سلام کسی نیس از مهندسا راهنمایی کنه بخدا گیرم

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

                        مرسی مهندس جان

                        دیدگاه


                          #13
                          پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

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

                          دیدگاه


                            #14
                            پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

                            نوشته اصلی توسط hosseinam نمایش پست ها
                            برای خوندن چند ورودی آنالوگ- شما باید بیاید از DMA استفاده کنید. البته من تو مد regular کار کردم .
                            یعنی شما میاید یه آرایه به تعداد ورودی آنالوگ حافظه میگیری از رم. بعد با نوشتن دستور مربوطه از دونه دونه ورودی آنالوگ نمونه میگره و با dma انتقال میده به آرایه.
                            و در نهایت از همه ورودی آنالوگ نمونه گرفته که داخل آرایه ذخیره شده میتونید استفاده کنید تو کدتون.
                            من با cmsis کد میزنم. اگه شما هم با cmsis کار میکنید بگید که نمونه مثال رو براتون بزارم.
                            نیاز دارید قبل از این کار dma رو خوب بشناسید.

                            موفق باشید.
                            سلام
                            اگه امکانش هست کدتون با dma رو بذارید
                            من میخوام از چند کانال ADC1 دیتا رو توسط dma انتقال بدم ولی فقط یک کانال کار میکنه یعنی نمیدونم چه طور میشه کانل های دیگه هم اتوماتیک در نظر گرفت
                            میکروم هم stm32f103re هست.
                            با تشکر

                            دیدگاه


                              #15
                              پاسخ : خواندن مقدار ADC از دو پین مختلف در STM32

                              سلام دوستان.چجوری میشه پالس pwm به تعداد دلخواه در stm32 تولید کرد؟ مثلا 20 تا پالس تولید بشه بعد قطع شه

                              دیدگاه

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