اطلاعیه

Collapse
No announcement yet.

adc

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

    adc

    سلام
    دوستان من تا به حال از آنالوگ به دیجیتال میکرو استفاده نکرده ام . میشه برای من توضیح بدید که چطور می تونم استفاده کنم .
    امروز زندگی را آغاز کن !
    امروز مخاطره کن !
    امروز کاری کن !
    نگذار که به آرامی بمیری !
    پابلو نرودا

    #2
    پاسخ : adc

    سلام

    اول باید پیکربندی رو تو برنامه انجام بدی بسته به نوع میکروت شما چند ورودی مبدل آنالوگ به دیجیتال داری مثلا atmega16 یا 8 یا 32 ...

    به طور ساده برات بگم شما یه سنسوری داری مثلا lm35این یه سنسور دماست که خروجیش آنالوگه ووقتی دمارو سنس میکنه توی خروجیش به صورت ولتاژ آشکار میکنه

    شما وقتی میای این ولتاژ رو اندازه میگیری با( ولت متر ) مثلا نشون میده 1000میلی ولت یا همون 1ولت ولی این 1000میلی ولت آنالوگه ووقتی وارد میکرو میکنی تا مثلا تو برنامه بگی بازای هر 1000میلی ولت برو یه کاری بکن این کار
    اشتباه انجام میشه .چرا؟
    چون ولتاژ1000میلی ولت وقتی تبدیل به مقدار دیجیتالی بشه یه عدد متفاوتی در میاد

    مثلا مقدار دیجیتالی عدد 5 ولت 1024 هستش اینم زمانی هست که شما ولتاژ مرجع رو 5 بگیری
    حالا برای اینکه بگی هروقت 5 ولت گرفتی فلان کار رو بکن باید بگی اگر متغیر مساوی 1024 باشد برو انجام بده
    خواستم به طور ساده توضیح بدم نمیدونم تونستم یانه
    معلولیت محدودیت نیست

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

    دیدگاه


      #3
      پاسخ : adc

      نوشته اصلی توسط mahdi210
      سلام

      اول باید پیکربندی رو تو برنامه انجام بدی بسته به نوع میکروت شما چند ورودی مبدل آنالوگ به دیجیتال داری مثلا atmega16 یا 8 یا 32 ...

      به طور ساده برات بگم شما یه سنسوری داری مثلا lm35این یه سنسور دماست که خروجیش آنالوگه ووقتی دمارو سنس میکنه توی خروجیش به صورت ولتاژ آشکار میکنه

      شما وقتی میای این ولتاژ رو اندازه میگیری با( ولت متر ) مثلا نشون میده 1000میلی ولت یا همون 1ولت ولی این 1000میلی ولت آنالوگه ووقتی وارد میکرو میکنی تا مثلا تو برنامه بگی بازای هر 1000میلی ولت برو یه کاری بکن این کار
      اشتباه انجام میشه .چرا؟
      چون ولتاژ1000میلی ولت وقتی تبدیل به مقدار دیجیتالی بشه یه عدد متفاوتی در میاد

      مثلا مقدار دیجیتالی عدد 5 ولت 1024 هستش اینم زمانی هست که شما ولتاژ مرجع رو 5 بگیری
      حالا برای اینکه بگی هروقت 5 ولت گرفتی فلان کار رو بکن باید بگی اگر متغیر مساوی 1024 باشد برو انجام بده
      خواستم به طور ساده توضیح بدم نمیدونم تونستم یانه
      برای شروع خوب بود
      حالا چطور باید اینو بهش بفهمونم !!
      منظورم اینه که تابعی که استفاده میشه چیه و چطور استفاده میشه ؟
      امروز زندگی را آغاز کن !
      امروز مخاطره کن !
      امروز کاری کن !
      نگذار که به آرامی بمیری !
      پابلو نرودا

      دیدگاه


        #4
        پاسخ : adc

        ببخشید دیر کردم

        اول به این صورت پیکر بندی رو انجام میدیم

        dim a as word
        Config Adc = Single , Prescaler = Auto, Reference = Opt

        گزینه های single/free :
        در حالتی که Single انتخاب شود مقدار دیجتال سیگنال انالوگ توسط دستور Getadc در یک متغییر از جنس Word ریخته می شودو در حالتی که Free انتخاب شود مقدار دیجتال سیگنال انالوگ کانال صفر در ریجیستر مربوط به Adc ریخته می شود .


        Prescaler :
        این گزینه فرکانس ADC را مشخص میکند و در حالتی که Autoانتخاب شود کامپایر با توجه به کریستال انتخاب شده بهترین کلاک را در نظر می گیرد ، موارد دیگر برای کلاک عبارتند از 2 و 4 و 8 و 15 و 32 و 64 یا 128 است که یه جای گزینه Auto نوشته می شود .


        Reference :
        در صورتی که بخواهید از یک ولتاژ مرجع استفاده کنید این گزینه را بنویسید (در صورت عدم استفاده از این دستور ولتاژ مرجع زمین است و نیازی به نوشتن این دستور نیست) .
        (این امکان فقط در بعضی از میکرو ها وجود دارد باید به دیتا شیت مربوطه مراجعه کنید) Opt میتواند یکی از موارد زیر باشد :
        Off : در این حالت ولتاژمرجع داخلی خاموش شده و از ولتاژ مرجع بر روی پایه Aref استفاده می شود.
        Avcc : در این حالت ولتاژ پایه Avcc به عنوان ولتاژ مرجع در نظر گرفته می شود .
        Internal : در این حالت از ولتاژ مر جع داخلی 2.65 ولت استفاده می شود .

        بعد از راه اندازی Adc نوبت به استفاده از آن است برای اینکار با دستور Start Adc ، ADC روشن شده و شروع به نمونه برداری از سیگنال انالوگ موجود بر روی پایه اش می کند و آن را به مقدار دیجتال تغییر می دهد ، این مقدار دیجتال با دستور زیر در یک متغییر از جنس Word ریخته می شود
        do
        start adc
        a = Getadc (Channel) <----------------------------l

        cls
        lcd a
        waitms 500
        loop
        الا ن میکرو رو پیکر بندی کردیم (adc) با رسیدن به خط start adc شرو به نمونه برداری میکنه از کجا؟
        خط بعدی یه متغیر داریم با دستور get adc نمونه از کانال مربوطه خونده میشه وریخته میشه توی متغیر a
        منظور از کانال هم پین مربوطه به مبدل آنالوگ به دیجیتال هستش مثلا تو مگا 16 پورت a از پین 0تا7 مبدل آنالوگ به دیجیتال داره

        حالا شما میخوای یه ولتاژ یه سنسور رو مثل سنسور دما ال ام 35 خروجی شو میدی به یکی از این پین ها
        حالا تو برنامه به جای نوشتن Channe داخل پارانتز باید شماره پین مربوطه را میدی
        مثلا
        --------------------------> (0 ) a=getadc
        در این مثال من پین صفر رو انتخاب کردم ووخروجیه سنسورمو به پین صفر متصل میکنم
        بعد با دستور cls کل ال سی دی رو پاک میکنم بعد با دستور lcd=a هرچی توی متغیر aباشه رو ال سی دی با یه فاصله 500 میلی ثانیه نمایش میدم
        عدد نمایش داده شده همون مقدار آنالوگی هستش که تبدیل به دیجیتال شده
        بعد ریخته داخل متغیر a .

        موقع استفاده هم باید avccرو هم وصل کنی اگه ولتاژ مرجع رو هم همون vccبزاری(5 ولت)باید avcc وصل کنی به a ref

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

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

        دیدگاه

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