اطلاعیه

Collapse
No announcement yet.

نمونه برنامه برای ADC می خوام.

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

    نمونه برنامه برای ADC می خوام.

    سلام دوستان

    من با کدویژن زیاد کار نکردم. اما تا فردا باید یک برنامه بنویسم که بتونه از طریق ADC دو تا ولتاژ 2.5 و 4.5 ولت رو تشخیص بده. در حقیقت ورودیهای ما فقط همین دو تا هستند که با فاصله های زمانی زیاد مثلا 300ms تغییر می کنن. اگه برنامه آماده و یا چیزی شبیه این دارید برام بذارید تا خودم تغییراتش رو انجام بدم. ممنون میشم.
    ...............................................

    آسایش دو گیتی تفسیر این دو حرف است
    Ctrl+C , Ctrl+V
    .................................................. ....

    #2
    پاسخ : نمونه برنامه برای ADC می خوام.

    دستم اشتباهی به جای پاسخ خورد به تشکر :biggrin:

    این برنامه قادر که ولتاژهای 2.5 و 4.5 رو تشخیص بده. داخل if هر کدوم که مشخص شده برنامه مورد نظرت رو بنویس.

    در ضمن ولتاژ رفلسی که باید به پایه 32 بدی 5 ولته.

    کد:
    #include <mega16.h>
    #include <delay.h>
    #define ADC_VREF_TYPE 0xC0
    float input;
    // Read the AD conversion result
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
    // Start the AD conversion
    ADCSRA|=0x40;
    // Wait for the AD conversion to complete
    while ((ADCSRA & 0x10)==0);
    ADCSRA|=0x10;
    return ADCW;
    }
    void main(void)
    {
    // ADC initialization
    // ADC Clock frequency: 1000.000 kHz
    // ADC Voltage Reference: AREF pin
    // ADC Auto Trigger Source: None
    ADMUX=ADC_VREF_TYPE & 0xff;
    ADCSRA=0x83;
    while (1)
       {
       input=read_adc(0);
       input=(input*0.00488);
       if(input==2.5){
       // code hay voltazh 2.5V
       
       }
       
       if(input==4.5){
       //code hay voltazh 4.5V
       
       }
       delay_ms(100);
       };
    }

    دیدگاه


      #3
      پاسخ : نمونه برنامه برای ADC می خوام.

      یک تشکر بابت تشکر اتفاقی شما . هزارتا دیگه بابت لطفتون.

      در آخر می خوام چند سئوال ازتون بپرسم. امکان داره که توسط ADC صوت رو بگیریم و دیجیتال کنیم و به صورت همزمان روی یک جفت سیم بفرستیم؟ ( که توسط میکروی دیگه ای دریافت کنیم و پس از D/A بشنویم).
      ...............................................

      آسایش دو گیتی تفسیر این دو حرف است
      Ctrl+C , Ctrl+V
      .................................................. ....

      دیدگاه


        #4
        پاسخ : نمونه برنامه برای ADC می خوام.

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

        دیدگاه


          #5
          پاسخ : نمونه برنامه برای ADC می خوام.

          سلام ....................

          در مورد ضبط صدا توسط واحد ADC اطلاعات خوبی توی سایت ATMEL وجود داره که میتونه خیلی کمکتون کنه . میتونید به اونجا یه سری بزنید .

          اما در مورد مواردی که جناب بادامی نجات فرمودن باید بگم که کاملا درسته . برای ضبط صدا در میکرو توسط واحد ADC باید به چند مورد توجه کنید .

          -- اول اینکه کارتون از چه مراحلی تشکیل میشه..
          * ببینید برای اینکه بتونید یه سیگنال آنالوگ رو به فرم دیجیتال تبدیل کنید (یا توی یه آراایه قرارش بدید و یا اینکه به صورت جدا به اطلاعات PCM دسترسی داشته باشید) ابتدا باید سیگنالتون رو از فرم آنالوگ به فرم Descrete تبدیل کنید . در این مرحله لازمه که شما از سیگنال ورودیتون نمونه برداری کنید . نمونه برداری سیگنال آنالوگ یعنی چی؟ یعنی اینکه در نقاط معین، از سیگنال اطلاعات خاصی رو استخراج کنید. معمولا در این مرحله از PAM استفاده میکنن. یعنی برای هرنقطه اطلاعی که بهش متناظر میکنن برابر با دامنه . یعنی فاصله ی اون نقطه از محور افق .
          بعد از این مرحله سیگنال ورودی تبدیل میشه به مجموعه ای از اطلاعات عددی که همون دامنه ها هستن (مثل یه نمودار میله ای میشه) . مرحله ی بعدی تبدیل سیگنال Descrete شده به دیجیتاله . خب این مرحله هم با اختصاص کدهای بیتی به دامنه های به دست اومده ؛ کامل میشه . حالا هرچی این بیت ها بیشتر باشه دقت اعدادی که برای دامنه ها در نظر گرفته میشن بیشتره (یه جورایی میشه گفت دامنه ها به ازای بیت های اختصاص یافته نرمالیزه میشن) .
          برای همینه که در واحد ADC میگن دوتا فاکتور خیلی مهمه : یکی فرکانس نمونه برداری و دیگری هم بیت های اختصاص یافته به مقادیر دیجیتال شده ی خروجی (همون ده بیتی) . برای ضبط صدا هم دقیقا وضع به همین ترتیبه و شما باید از بالاترین فرکانس نمونه برداری میکرو (200 کیلو هرتز -- قابل اطمینان--) و همچنین قالب ده بیتی ADC استفاده کنید .

          -- دوم اینکه برای ارسال اطلاعات دیجیتایز شده، شما میتونید از ارتباط سریل استفاده کنید . نوع کابلی هم که استفاده میکنید میتونه UTP در Category دو یا سه باشه (بسته به فاصلتون هم داره) . اگه میبینید محیط پرنویزی هم دارید میتونید از STP های موجود توی بازار ایتفاده کنید . به هر حال باز بستگی به کاربردتون داره .

          اما در مورد اینکه آیا فردی توی این سایت مشابه این کار رو انجام داده باید بگم که بله . بودن افرادی که این کار رو کرده باشن و شما میتونید با یه جستجو اونها رو پیدا کنید . اخیرا هم جناب "احسان محمودی" (اگه اشتباه نکنم) این کار رو کرده بودن . میتونید از تجربه ی ایشون هم استفاده کنید . موفق باشید .
          دوستان! مدتی کمتر به سایت میام ..

          دیدگاه


            #6
            پاسخ : نمونه برنامه برای ADC می خوام.

            آقای حسام الدین اون صدایی که قرار هست روش کار کنم 4 کیلویی هست. آیا باز هم لازمه که فرکانس 200k رو برای نمونه برداری استفاده کنم ؟ طبق فرمولهای مخابراتی حداقل دو برابر کافیه دیگه ؟ یا تو میکرو این فرکانس معنی دیگه ای میده ؟

            راستی من درباره طرز کار A/D چیز زیادی نمیدونم. تو پروتتئوس کمی باهاش کار کردم اما جواب نگرفتم. تعداد زیادی پایه می بینم که چیزی ازشون نمی فهمم. اگه ممکنه یک A/D خوش دست بهم معرفی کنید.

            در ضمن اصل کار من که هنوز شروع نشده که فرستادن دیجیتال 8 voice مختلف به طرف مقابل هست. دیگه فکر نمی کنم AVR جواب منو بده. به نظر شما PIC می تونه یا نه ؟ FPGA چطور ؟ کدومشون بهتره ؟
            ...............................................

            آسایش دو گیتی تفسیر این دو حرف است
            Ctrl+C , Ctrl+V
            .................................................. ....

            دیدگاه


              #7
              پاسخ : نمونه برنامه برای ADC می خوام.

              سلام .................

              ببینید اصولا حیطه ی فرکانسی صوت تا 4 کیلو هرتزه و برای استانداری که در تلفن ها و شبکه ی سوئیچینگ مداری هم استفاده میکنن میزان نمونه برداری8000 نمونه در ثانیه میشه . اما یه بحث دیگه ای هم که وجود داره اینه که بیت های شما هرچی بالاتر باشه (برالی ذخیره ی اطلاعات به صورت داده های دیجیتال) خب به طبع دقت شما هم میره بالاتر و کیفیت نمونه برداریتون هم میره بالاتر . فرکانس ADC برای نمونه برداری میتونه کم باشه اما ظرفیت محدود ده بیتی اون شاید براتون ایجاد مشکل کنه . رابطه ی نمونه برداری دوبرابر هم که فرمودید کاملا درسته و برای میکرو هم همین معنی رو میده . اما حافظه ی محدود میکرو شاید به شما این امکان رو نده که بتونید به میزان کافی نمونه برداری انجام بدید .

              در باره ی یه آیسی ADC مطمئن باید بگم که مدل ADC0804 مدل مناسبیه . خیلی خوب جواب میده . در مورد نحوه ی کارش هم اگه خواستید توضیح میدیم .
              در مورد اصل کارتون هم بای بگم که یک مقدار بیشتر توضیح بدید. کیفیت کارتون چقدره ؟ حجم ارسالتون، زمان ارسالتون ... اینها همه مهمه . در ضمن در مورد آخرین طیف سوالاتی که پرسیدید باید بگم که بسته به نوع کاربرد و حساسیت میتونید از FPGA هم استفاده کنید . باز بر میگرده به توضیحاتتون در مورد پروژه ای که میخواید انجام بدید . موفق باشید .
              دوستان! مدتی کمتر به سایت میام ..

              دیدگاه


                #8
                پاسخ : نمونه برنامه برای ADC می خوام.

                با سلام مجدد
                کیفیت کار من باید در حدی باشه که چند صدا اونطرف خط به صورت real time به گوش برسه. کیفیت حداقل هم کافیه. اگر در مورد اون A/D هم بیشتر توضیح بدید ممنون میشم.
                ...............................................

                آسایش دو گیتی تفسیر این دو حرف است
                Ctrl+C , Ctrl+V
                .................................................. ....

                دیدگاه


                  #9
                  پاسخ : نمونه برنامه برای ADC می خوام.

                  '-----------------------adc and timer------------------------------------------
                  Enable Interrupts
                  Config Adc = Single , Prescaler = 16 , Reference = Internal
                  نرم افزارش اینه.من جواب گرفتم.مهم پریه که کیفیتش بره بالا.خیلی نویز داره
                  کسی راهی داره واسه سخت افزار و پری خوب؟
                  علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                  دیدگاه


                    #10
                    پاسخ : نمونه برنامه برای ADC می خوام.

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

                    در باره ی یه آیسی ADC مطمئن باید بگم که مدل ADC0804 مدل مناسبیه . خیلی خوب جواب میده . در مورد نحوه ی کارش هم اگه خواستید توضیح میدیم .
                    سلام . :smile:

                    لطف می کنید اگه این رو توضیح بدهید . خیلی خیلی ممنون می شم . من با a/d داخلی کار کردم ولی اولین باره که میخوام از a/d خارجی با ic ADC0804 کار کنم .

                    اگه پایه ها و اساس کارش رو کمکم کنید ممنونتون میشم . با سپاس .

                    دیدگاه


                      #11
                      پاسخ : نمونه برنامه برای ADC می خوام.

                      نوشته اصلی توسط khazan
                      سلام . :smile:

                      لطف می کنید اگه این رو توضیح بدهید . خیلی خیلی ممنون می شم . من با a/d داخلی کار کردم ولی اولین باره که میخوام از a/d خارجی با ic ADC0804 کار کنم .

                      اگه پایه ها و اساس کارش رو کمکم کنید ممنونتون میشم . با سپاس .
                      سلام
                      ADC804 یک مبدل آنالوگ به دیجیتال 8 بیتی است که 8 پایه دیتا داره و 2 تا پایه کنترلی به نام های Wr (در زمان نمونه گیری باید یک لبه بالا رونده توسط میکرو تحریک شود) پایه Int(وقتی آی سی نمونه گیری آن به پایان رسید این پایه را برای یک لحظه یک می کند شما با چک کردن این پایه می توانید بفهمید که نمونه گیری به پایان رسیده است).
                      Areff = یک پایه رفرنس دارد که ولتاژ ورودی شما با این ولتاژ مقایسه می شود. هرچه این پایه دقیق تر تنظیم شود نمونه گیری شما دقیقتر خواهد بود.

                      دیدگاه


                        #12
                        پاسخ : نمونه برنامه برای ADC می خوام.

                        سلام میشه بیشتر توضیح بدید.
                        چطور میشه بدون استفاده از میکرو راه اندازیش کرد؟؟؟

                        دیدگاه


                          #13
                          پاسخ : نمونه برنامه برای ADC می خوام.

                          نوشته اصلی توسط Ahp_online نمایش پست ها
                          سلام
                          ADC804 یک مبدل آنالوگ به دیجیتال 8 بیتی است که 8 پایه دیتا داره و 2 تا پایه کنترلی به نام های Wr (در زمان نمونه گیری باید یک لبه بالا رونده توسط میکرو تحریک شود) پایه Int(وقتی آی سی نمونه گیری آن به پایان رسید این پایه را برای یک لحظه یک می کند شما با چک کردن این پایه می توانید بفهمید که نمونه گیری به پایان رسیده است).
                          Areff = یک پایه رفرنس دارد که ولتاژ ورودی شما با این ولتاژ مقایسه می شود. هرچه این پایه دقیق تر تنظیم شود نمونه گیری شما دقیقتر خواهد بود.
                          دوسته عزیز یه سوال ذهنمو درگیر کرده ، شما میگین وقتی نمونه گیری آیسی به پایان رسید، این یعنی چی ، مگه نمونه گیری هم پایان میپذیره ؟؟ مثلا اگه تو یه حلقه بزاریم سی پی یو رو که دائم بیاد چک کنه و نمونه بگیره ، باز چجوری نمونه پایان میذیره ؟؟؟


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

                          دیدگاه

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