اطلاعیه

Collapse
No announcement yet.

تاپیک سوالات درباره ADC

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

    #61
    پاسخ : تاپیک سوالات درباره ADC

    سوال شما واضح نیست ، مشکل ممکن است سخت افزارای باشد یا نرم افزاری ، شما نمونه کد خودتون رو قرار بدید تا بشه اشکال رو فهمید.

    دیدگاه


      #62
      پاسخ : تاپیک سوالات درباره ADC

      به عنوان مثال : مقدار ADC من در شرایطی که باید مقدار 4095 را داشته باشد مقدار 3856 را دارد و در شرایطی که باید صفر باشد مقدار 250 را دارد.
      آقای کی نژاد عزیز با توجه به تجربیات بسیار زیاد شما ، فکر میکنید مشکل از کجاست ؟

      دیدگاه


        #63
        پاسخ : تاپیک سوالات درباره ADC

        با توجه به مدهای مختلفی که در عملکرد ADC وجود دارد و همانطور که جناب soleares فرمودند، بدون نمونه کد نمی توان بصورت دقیق اظهار نظر کرد.
        اوژن: به معنای افکننده و شکست دهنده است
        دانایی، توانایی است-Knowledge is POWER
        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

        دیدگاه


          #64
          پاسخ : تاپیک سوالات درباره ADC

          امیدوارم این کد پیچیدگی خاصی برای شما نداشته باشد
          Relay1 = 1
          Waitms 50
          Relay1 = 0
          Cap_a = 1
          Waitms 500

          For M10 = 0 To 10
          Cap_a = 1
          Waitms 50
          Tcc0_cnt = 0
          Relay1 = 1
          Waitms 50
          Cap_a = 0
          Tcc0_ctrla = 5
          While Tcc0_cnt < 50000
          Wend
          Tcc0_ctrla = 0
          X1_30 = Getadc(adca , 0 , 8)
          Filter = X1_30 + Filter
          Next M10

          Filter = Filter / 10
          X1_30 = Filter

          Locate 10 , 10
          Lcd X1_30

          دیدگاه


            #65
            پاسخ : تاپیک سوالات درباره ADC

            در کد قرار داده شده نحوه تنظیم ADC وجود ندارد و بنابراین مشخص نیست ADC در چه مدی عمل می کند و کلاک آن چقدر است.
            اوژن: به معنای افکننده و شکست دهنده است
            دانایی، توانایی است-Knowledge is POWER
            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

            دیدگاه


              #66
              پاسخ : تاپیک سوالات درباره ADC

              سلام چطور باید مقدار offseterror رو اندازه گیری کرد؟
              من یه کد نوشتم که مدام نمونه میگیره و کمترین مقدار رو نشون میده و تا الآن مقدارش حدود 126 هست
              اما این کد تا کی باید اجراش ادامه داشته باشه؟

              دیدگاه


                #67
                پاسخ : تاپیک سوالات درباره ADC

                برای اندازه گیری offset در نمونه کدهای اتمل، در وضعیت تفاضلی دو ورودی ADC از طریق تنظیمات نرم افزاری به یک پین متصل می شوند و مقدار خروجی اندازه گیری می شود که به عنوان offset ذخیره می شود و بعدا در محاسبات، از مقدار قرائت شده از ADC کسر می شود. در مورد مقدار 126 و ادامه اجرای کد هم لازم است بیشتر توضیح دهید تا امکان پاسخگویی میسر شود.
                اوژن: به معنای افکننده و شکست دهنده است
                دانایی، توانایی است-Knowledge is POWER
                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                دیدگاه


                  #68
                  پاسخ : تاپیک سوالات درباره ADC

                  نوشته اصلی توسط طراح
                  در کد قرار داده شده نحوه تنظیم ADC وجود ندارد و بنابراین مشخص نیست ADC در چه مدی عمل می کند و کلاک آن چقدر است.
                  Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Arefa , Event_mode = None , Prescaler = 8 , _
                  Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = 0 , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = 0 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = 0 , _
                  Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = 0
                  Config Adcb = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Arefa , Event_mode = None , Prescaler = 8 , _
                  Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = 0 , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = 0 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = 0 , _
                  Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = 0

                  دیدگاه


                    #69
                    پاسخ : تاپیک سوالات درباره ADC

                    نوشته اصلی توسط طراح
                    برای اندازه گیری offset در نمونه کدهای اتمل، در وضعیت تفاضلی دو ورودی ADC از طریق تنظیمات نرم افزاری به یک پین متصل می شوند و مقدار خروجی اندازه گیری می شود که به عنوان offset ذخیره می شود و بعدا در محاسبات، از مقدار قرائت شده از ADC کسر می شود. در مورد مقدار 126 و ادامه اجرای کد هم لازم است بیشتر توضیح دهید تا امکان پاسخگویی میسر شود.
                    تا الآن یه شب تا صبح گذاشتم دیدم 124 مونده(از شب قبلش که به 124 رسید)
                    من فکر میکنم اینکه یه نمونه بگیریم و به عنوان خطای آفست در نظر داشته باشیم اشتباهه چون نویز و ... روش تاثیر میزارند
                    تا الآن دو خازن 100nF و 10uF رو همون طوری که اتمل گفته برای هر دو تغذیه در نزدیک ترین جای ممکن گذاشتم
                    به دلیل نداشتن فریت بید و سلف مناسب از این دو صرف نظر کردم
                    یک بار هم از یک سلف برای تغذیه آنالوگ استفاده کردم که مقدارشو نمیدونم(یه سلف با هسته دایره ای با تقریبا 30 دور سیم که فکر کنم 0.8 باشه و از جنس مس هست)
                    با سلف به عدد 121 رسیدم
                    در ضمن این اندازه گیری هم با زمین کردن یک پایه در مود single ended بوده و رفرنس هم 1 ولت داخلی در فرکانس 500KHz برای نمونه برداری و به صورت تک تک و با دقت 12bit همچنین از کالیبر ADC نیز استفاده شده است که در برنامه دو مقدار روی LCD نشان داده میشود یکی مقدار مینیمم که تا الآن اندازه گیری شده و یکی هم مقدار کنونی است که مقدار کنونی بین 130 و 140 در نوسان است
                    احتمالش هست که این مقدار رو فقط در مود differential بشه درست بدست آورد یا نکته دیگه ای رو فراموش کردم؟

                    دیدگاه


                      #70
                      پاسخ : تاپیک سوالات درباره ADC

                      نوشته اصلی توسط طراح
                      یکی از ویژگی های قابل توجه در این خانواده، امکان مقایسه مقدار هر کانال ADC بصورت پیوسته با یک رجیستر 12 بیتی است که در صورتی که مقدار ADC بالاتر یا پائین تر از این مقدار باشد (بر حسب تنظیم)، وقفه ای ایجاد شود. این امکان می تواند در بعضی کاربرد قابلیت خوبی را ایجاد کند و تنها زمانی وقفه ایجاد شود که حد مورد نظر در خروجی ADC حاصل شود و در غیر این شرایط هیچ وقفه ای ایجاد نشود (و به تبع آن بار پردازشی CPU کاهش یابد).
                      اگر امکان دارد لطفا این مورد را با ذکر مثال بیشتر توضیح دهید . سپاسگزارم

                      دیدگاه


                        #71
                        پاسخ : تاپیک سوالات درباره ADC

                        mehrdadkey2:

                        از کد شما اینطور به نظر میاد که در کانفیگ ADC مشکلی نداشته باشید(البته من با bascom کار نکردم و اگر مستقیما اسم رجستر ها اومده بود با اطمینان بیشتری اظهار نظر میکردم)...از کد شما معلومه که شما پایه ی اول ADCa رو به mux کانال یک تا 3 وصل کردین و اون شده ورودیتون اما من سوالم اینه که تابع Getadc چه آرگومانهایی میگیره و اون عدد 8 چیه؟
                        نوشته اصلی توسط mehrdadkey2
                        اگر امکان دارد لطفا این مورد را با ذکر مثال بیشتر توضیح دهید . سپاسگزارم
                        در این مورد باید بگم که ADC دارای یک رجیستر به نام ADC compare هستش که در اون میشه یک عدد 12 بیتی رو گذاشت،هر کدام از کانالهای ADC رو میشه طوری تنظیم کرد که نتیجه ی تبدیل خودشون رو مدام با این رجیستر مقایسه کنند،در صورتی که نتیجه از آن کمتر یا بیشتر باشد میتوان با آن یک Event یا Interrupt ایجاد کرد،و نکته دیگه هم اینکه همه ی کانالها از یک compare register استفاده میکنند.

                        دیدگاه


                          #72
                          پاسخ : تاپیک سوالات درباره ADC

                          اما من سوالم اینه که تابع Getadc چه آرگومانهایی میگیره و اون عدد 8 چیه؟
                          در مورد این سوال شما عرض کنم که ، عدد 8 یعنی پین شماره یک .
                          یعنی در اینجا من میخواهم پین شماره یک از adca را بخوانم که مقدار آن در راهنمای کاربردی ، آنطور که توضیح داده شده است مقدار 8 است .
                          اما من یک روش ساده به شما پیشنهاد میکنم ; شما میتوانید شماره هر پینی را که خواستید مقدار آن خوانده شود در عدد 8 ضرب کنید و مقدار آن را در تابع getadc قرار دهید . به عنوان مثال پین شماره 3 مقدارش می شود 3*8=24 و به این صورت مقدار adc آن خوانده میشود :
                          کد:
                          dim x as word
                          x=getadc(adca,0,24

                          دیدگاه


                            #73
                            پاسخ : تاپیک سوالات درباره ADC

                            نوشته اصلی توسط mehrdadkey2
                            Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Arefa , Event_mode = None , Prescaler = 8 , _
                            Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = 0 , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = 0 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = 0 , _
                            Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = 0
                            Config Adcb = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Arefa , Event_mode = None , Prescaler = 8 , _
                            Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = 0 , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = 0 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = 0 , _
                            Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = 0
                            نوشته اصلی توسط شهریار رجب زاده
                            تا الآن یه شب تا صبح گذاشتم دیدم 124 مونده(از شب قبلش که به 124 رسید)
                            من فکر میکنم اینکه یه نمونه بگیریم و به عنوان خطای آفست در نظر داشته باشیم اشتباهه چون نویز و ... روش تاثیر میزارند
                            تا الآن دو خازن 100nF و 10uF رو همون طوری که اتمل گفته برای هر دو تغذیه در نزدیک ترین جای ممکن گذاشتم
                            به دلیل نداشتن فریت بید و سلف مناسب از این دو صرف نظر کردم
                            یک بار هم از یک سلف برای تغذیه آنالوگ استفاده کردم که مقدارشو نمیدونم(یه سلف با هسته دایره ای با تقریبا 30 دور سیم که فکر کنم 0.8 باشه و از جنس مس هست)
                            با سلف به عدد 121 رسیدم
                            در ضمن این اندازه گیری هم با زمین کردن یک پایه در مود single ended بوده و رفرنس هم 1 ولت داخلی در فرکانس 500KHz برای نمونه برداری و به صورت تک تک و با دقت 12bit همچنین از کالیبر ADC نیز استفاده شده است که در برنامه دو مقدار روی LCD نشان داده میشود یکی مقدار مینیمم که تا الآن اندازه گیری شده و یکی هم مقدار کنونی است که مقدار کنونی بین 130 و 140 در نوسان است
                            احتمالش هست که این مقدار رو فقط در مود differential بشه درست بدست آورد یا نکته دیگه ای رو فراموش کردم؟

                            در این تنظیمات از مد unsigned single ended و با انتخاب مرجع خارجی روی پین PA0 استفاده شده است. اولا در این مد حتی اگر ورودی صفر شود، در خروجی مقداری حدود 200 (بدون لحاظ offset) قرائت می شود که برای ملاحظه دلیل آن باید به datasheet مراجعه کنید. همچنین باید ولتاژ مناسب به PA0 متصل شده باشد که حداکثر مجاز برای آن Vcc-0.6 است. مسئله اساسی تر اینکه در نسخه های اولیه XMEGA(قبل از سری AU) بطور کلی مد unsigned single ended دارای خطاست و باید از مد signed single ended استفاده کنید که محدوده قرائت شده بین 0 تا 2047 خواهد بود. یکسری توضیحات در لینک های زیر برای جوب گرفتن هرچه بهتر از ADC در نسخه های قبل از AU داده شده که می تواند بسیار مفید باشد:

                            http://blog.frankvh.com/2010/01/03/a...ems-solutions/

                            http://blog.frankvh.com/2010/09/09/f...-adc-problems/

                            اوژن: به معنای افکننده و شکست دهنده است
                            دانایی، توانایی است-Knowledge is POWER
                            برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                            وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                            قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                            اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                            ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                            دیدگاه


                              #74
                              پاسخ : تاپیک سوالات درباره ADC

                              کد:
                              $regfile = "xm128a1def.dat"
                              $lib "xmega.lib" : $external _xmegafix_clear : $external _xmegafix_rol_r1014
                              $crystal = 16000000
                              'Enable external oc whit reng of 12Mhz---16Mhz
                              Config Osc = Disabled , Extosc = Enabled , Range = 12mhz_16mhz , Startup = Xtal_256clk
                              Config Sysclock = External , Prescalea = 1 , Prescalebc = 1_1 
                              Config Adca = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Arefa , Event_mode = None , Prescaler = 8 , _
                              Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = 0 , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = 0 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = 0 , _
                              Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = 0
                              Config Adcb = Single , Convmode = Unsigned , Resolution = 12bit , Dma = Off , Reference = Arefa , Event_mode = None , Prescaler = 8 , _
                              Ch0_gain = 1 , Ch0_inp = Single_ended , Mux0 = 0 , Ch1_gain = 1 , Ch1_inp = Single_ended , Mux1 = 0 , Ch2_gain = 1 , Ch2_inp = Single_ended , Mux2 = 0 , _
                              Ch3_gain = 1 , Ch3_inp = Single_ended , Mux3 = 0
                              کد:
                                X1_30 = Getadc(adca , 0 , 8)
                                Locate 10 , 10
                                Lcd X1_30

                              استاد کی نژاد عزیز ، مقدار adc من با این کانفیگ ، بجای 0 مقدار 250 و بجای 4095 مقدار 4250 و کمتر و گاهی وقتها بیشتر را نشان میدهد.
                              لطفا راهنمایی بفرمایید

                              دیدگاه


                                #75
                                پاسخ : تاپیک سوالات درباره ADC

                                نوشته اصلی توسط mehrdadkey2
                                استاد کی نژاد عزیز ، مقدار adc من با این کانفیگ ، بجای 0 مقدار 250 و بجای 4095 مقدار 4250 و کمتر و گاهی وقتها بیشتر را نشان میدهد.
                                لطفا راهنمایی بفرمایید
                                در پست قبلی در همین مورد توضیح دادم که در مد unsigned single ended نشان دادن مقدار غیر صفر امری کاملا طبیعی است و سایر توضیحات که درجهت رفع مشکل شما نوشته شد. بصورت مشخص توضیح دهید که به ورودی AREFA چه ولتاژِی به عنوان مرجع متصل است؟
                                اوژن: به معنای افکننده و شکست دهنده است
                                دانایی، توانایی است-Knowledge is POWER
                                برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                                وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                                قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                                اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                                ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                                دیدگاه

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