اطلاعیه

Collapse
No announcement yet.

کد مربوط به راه اندازی Quadrature Decoder

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

    #16
    Quadrature Decoder

    دوستان سلام
    می خواستم خواهش کنم کسی منو راهنمایی کنه که چطور می تونم انکودرم رو پالسهاشو بشمارم و چپ گرد یا راست گرد بودن اونو تشخیص بدم .
    در ضمن من atmel studio 6 رو تازه شروع کردم قبلا با کدویژن کار میکردم .
    یه توضیح مختصری هم میدم
    من قبلا اومدم با میکرو مگا 8 این کارو بکنم اولین بار بود و تجربه نداشتم از یه تقسیم مقاومتی استفاده کردم و خروجی های انکودر رو به ورودی های میکرو دادم و همچنین به اینتراپت های میکرو شروع به شمارش اینتراپت ها کردم مدار اولش که سرعت کم بود کار می کرد ولی تا سرعت زیاد میشد انگار میکرو هنگ میکرد . من هیچی راجع به Xmega نمی دونستم اومدم راجه به این موضوع سرچ کردم و قیلم معرفی Xmega استاد کی نژاد رو دیدم و از xmega خوشم اومد .

    حالا می خوام اگه ممکنه دوستان راهنمایی کنن که من با چه میکرویی کار کنم ؟ چه جوری این کارو میشه باهاش کرد؟ و لطفا همه چیو بگید چون در xmega تازه کارم . :redface:

    ممنون و قبلا تشکر میکنم .
    - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

    دیدگاه


      #17
      پاسخ : کد مربوط به راه اندازی Quadrature Decoder

      نوشته اصلی توسط tictactoe
      گفتم از یک مقایسه کننده نسبتا سریع مثل LM319 استفاده کنم که response time اون حدود 80 نانو ثانیه هستش یعنی طبق نموداری که در دیتاشیت اون رسم شده زمان لازم برای حرکت از صفر به 5ولت حدود 80 نانوثانیه هستش و اینطوری ولتاژ ورودی 10 ولت رو به 5 ولت کاهش بدم . به نظر شما راه خوبیه ؟ شما مقایسه کننده سریعتری سراغ دارین ؟
      باید این روش را در عمل تست کنید و نتیجه را مشاهده کنید و با قاطعیت نمی توان گفت که این روش حتما جواب می دهد (یا نمی دهد).
      اوژن: به معنای افکننده و شکست دهنده است
      دانایی، توانایی است-Knowledge is POWER
      برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
      وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
      قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
      اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
      ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

      دیدگاه


        #18
        پاسخ : Quadrature Decoder

        نوشته اصلی توسط Mania59
        دوستان سلام
        می خواستم خواهش کنم کسی منو راهنمایی کنه که چطور می تونم انکودرم رو پالسهاشو بشمارم و چپ گرد یا راست گرد بودن اونو تشخیص بدم .
        معمولا خروجی A با خروجی B اختلاف زمانی T/4 درجه ای دارند.
        اگر انکودر در جهت راست بچرخد ابتدا خروجی A به وضعیت HIGH میرود و بعد از گذشت T/4 خروجی B. و اگر انکودر چپ گرد شود ابتدا خروجی B به وضعیت HIGH میرود و بعد از T/4 خروجی A.
        با مقایسه ی این دو حالت میتوان جهت را تشخیص داد.


        دیدگاه


          #19
          پاسخ : کد مربوط به راه اندازی Quadrature Decoder

          ممنون از پاسختون . ولی اطلاعات کاملتر می خوام . مدل میکرو ؟ کدام رجیستر ها؟ نمونه برنامه اگر هست ؟

          یا راهنمایی در مورد رجیسترهای مربوطه . خلاصه در این مورد از صفر تا صد لازم دارم دوست عزیز آقای چاوش .

          البته این دوستمون هم یه قولایی دادن . :icon_razz:

          نوشته اصلی توسط tictactoe
          با سلام
          ممنون از زحماتی که میکشید.
          من کدی رو که در پست قبل گذاشتم رو تست کردم به خوبی کار میکنه . کد رو پرگرام کردم و موتور رو با دست میچرخونم و در لبه های بین صفر و 1335 پالس به خوبی جواب میده و شمارنده رو کم و زیاد میکنه . اما خوب طبق گفته شما ممکنه در سرعت بالای حرکت بین لبه ها مشکل ساز بشه .

          خدا خیرتون بده استاد . من فقط میتونم شما رو دعا کنم . حالا ایشالا به تبعیت از شما چیزهای کمی رو که بلدم رو در سایت در اختیار دوستان قرار میدم . اول از TFT LCD با IL1963 شروع میکنم (البته اینو باید با کمک شما پیش بریم )
          دوست خوبمون به استاد کی نژاد قول دادن که اشخاص آماتور مثل منو راهنمایی می کنن . مگه نه ! :rolleyes:
          - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

          دیدگاه


            #20
            پاسخ : کد مربوط به راه اندازی Quadrature Decoder

            برای شروع آیا میکرو ATXmega16A4U-Au مناسب هست ؟

            فقط می خوام یه کانتر up / Down داشته باشم و نمایشگر هم ندارم فقط خروجی رو با سریال بفرستم به کامپیوتر ( این قسمتش رو بلدم ) . :redface:


            - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

            دیدگاه


              #21
              پاسخ : کد مربوط به راه اندازی Quadrature Decoder

              با سلام.
              از کد زیر میتونید برای خواندن پالسهای A,B که از انکدر میآید استفاده کنید . این مقدار در رجیستر TCC1_CNT ذخیره میشود
              بقیه کد هم مربوط میشود به ارسال مقدار TCC1_CNT به پورت سریال که خودتان نوشته اید .
              کد:
              void InitPORTAInterrupt0()
              {
               PORTA_PIN4CTRL =PORT_ISC_RISING_gc;// PORT_ISC_BOTHEDGES_gc; // PORT_ISC_RISING_gc; //PORT_ISC_INPUT_DISABLE_gc
               PORTA_INT0MASK |=PIN4_bm;
               PORTA_INTCTRL |=PORT_INT0LVL_HI_gc; //PORT_INT0LVL_LO_gc;
               //PORT_ConfigureInterrupt0(&PORTA,PORT_INT0LVL_LO_gc,PIN4_bm);
               
              }
              
              void main()
              {
               
                //for 32Mhz external crystal//////////////////////////////
                
                OSC_XOSCCTRL =OSC_FRQRANGE_12TO16_gc|OSC_XOSCSEL_XTAL_16KCLK_gc;
                OSC_PLLCTRL =OSC_PLLSRC_XOSC_gc|2;
                OSC_CTRL |=OSC_XOSCEN_bm;
                while(!(OSC.STATUS & OSC_XOSCRDY_bm));
                OSC_CTRL |=OSC_PLLEN_bm;
                while(!(OSC.STATUS & OSC_PLLRDY_bm));
                CCP=0xd8;
                CLK.CTRL=CLK_SCLKSEL_PLL_gc;
                /////////////////////////////////////////////////////////////////////////////////
               
                init_7seg();
                init_key(); 
                InitTimer();
              //PORTA.0 & PORTA.1 for encoder A,B
              
               PORTA_PIN0CTRL=PORT_ISC_LEVEL_gc; // QDPH0
               PORTA_PIN1CTRL=PORT_ISC_LEVEL_gc; // QDPH90
               __enable_interrupt();
               show_7seg(DIGITS,0x00,0x00);
               TCC1_PER=1335;
               EVSYS_CH0MUX=EVSYS_CHMUX_PORTA_PIN0_gc;
               EVSYS_CH0CTRL=EVSYS_QDEN_bm|EVSYS_DIGFILT_2SAMPLES_gc;
               TCC1_CTRLD=TC_EVACT_QDEC_gc|TC_EVSEL_CH0_gc;
               TCC1_CTRLA=TC_CLKSEL_DIV1_gc;
                
               InitPORTAInterrupt0();
                
                
                
               PreDir=STOP;
               CurrentDir=STOP;
                
               RullerState = RUN;
                
               Dist_mm-=100.0f;
               PulsesPerMM =DistCnt/Dist_mm ;
               TotalDistCnt=DistCnt;
                
               Dist_mm+=100.0f;
               MMperPULSES=1/PulsesPerMM;
                
               curTouch=One;
                
               
               while(1)
               {};
              
              }
              "در عجبم از مردمی که خود زیر شلاق ظلم و ستم زندگی می کنند و بر حسینی می گریند که آزادنه زیست" شریعتی
              در جهان روشنایی هایی وجوددارد که در عمیق ترین ظلمات نهانند.

              دیدگاه


                #22
                پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                :applause:

                ممنون از پاسختون !

                فقط اینکه میکرویی که گفتم خوبه برای این کار ؟ و آیا کریستال چی باید باشه ؟

                در ضمن توی این کد که گذاشتین متغییر TotalDistCnt عدد کانتر رو نگه می داره ؟ یا این Dist_mm ؟

                ببخشید یخورده سوالا زیاد شد . :redface:
                - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

                دیدگاه


                  #23
                  پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                  میکرویی که انتخاب کردین خوبه و عیب و ایرادات احتمالی نسخه های قبلی رو هم نداره .
                  از کریستال 16 مگاهرتز استفاده کنید تا با استفاده از pll داخلی 2 برابر شود
                  این متغیرها مربوط به برنامه خودم هستند واشتباهی آوردمشون
                  "در عجبم از مردمی که خود زیر شلاق ظلم و ستم زندگی می کنند و بر حسینی می گریند که آزادنه زیست" شریعتی
                  در جهان روشنایی هایی وجوددارد که در عمیق ترین ظلمات نهانند.

                  دیدگاه


                    #24
                    پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                    خیلی ممنون
                    حالا یه مدت سوالی نمی پرسم تا برم مدار رو ببندم و برنامه رو شروع کنم اگه مشکلی بود دوباره بر می گردم . ممنون .
                    - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

                    دیدگاه


                      #25
                      پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                      سلام - دوباره اومدم
                      حالا می خوام PCB رو درست کنم و بعد روی نرم افزار کار کنم .
                      1 - می خوام بدونم پایه های A و B انکودر رو به کدوم پایه های میکرو وصل کنم ؟ فرقی نمی کنه ؟
                      در ضمن من اومدم از یه تقسیم کننده مقاومتی استفاده کردم و بعدش یه ترانزیستور C945 گذاشتم و خروجی اونو با یه نات آماده کردم تا به میکرو وصل بشه .
                      2- آیا این روش خوبه ؟
                      3 - بنظر شما در سرعت بالا آیا این روش ترانزیستور و IC- NOT بعد از اون می تونن سوئیچ کنن با اون سرعت زیاد ؟

                      راستی من به خاطر نیاز به پین های زیاد در مدارم می خوام از میکرو ATXMega128A1U استفاده کنم .
                      4 - مشکلی که نیست ؟
                      5 - و یه سوال دیگه در مورد این میکرو . حداکثر کریستال خارجی اون آیا 32 مگاهرتز هست ؟

                      6 - راستی یه چیز مهم Event System رو چطوری باید فعال کنم تا بتونم QDEC رو فعال کنم و استفاده کنم ؟ (دقیقا 0 تا 100 که می گن همین ها)


                      ببخشید وقتی یه تازه وارد می خواد با Xmega کارکنه این جوری میشه دیگه . :mrgreen:
                      - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

                      دیدگاه


                        #26
                        پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                        1- به دو پین متوالی در هر پورت متصل می شوند.
                        2 و 3 و 4: نقشه سخت افزار را قرار دهید.
                        5- حداکثر فرکانس کریستال خارجی 16 مگاهرتز است که از طریق PLL تا 32 مگاهرتز (و بیشتر در شرایط Overclock) قابل افزایش است.
                        6- به توضیحات AVR1600 مراجعه کنید.
                        اوژن: به معنای افکننده و شکست دهنده است
                        دانایی، توانایی است-Knowledge is POWER
                        برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                        وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                        قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                        اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                        ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                        دیدگاه


                          #27
                          پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                          چشم شماتیک روی سیستم آماده نیست چون من همیشه روی کاغذ می کشم آماده شد میزارم اینجام بازم ممنون !


                          شماتیک (البته نصفه و نیمه ) حاضر شد .

                          (کتابخانه این آی سی رو برای Altium گیر نیاوردم مجبور شدم بجای گیت نات یه مقاومت بزارم :icon_razz



                          در این شماتیک فقط ورودی A رو در نقشه می بینید مثل همین هم برای ورودی B در نظر گرفتم ولتاژ خروجی انکودر تقریبا 17 ولت است (البته شاید اشتباه می کنم چون با اهم متر اندازه گیری کردم ولی ولتاژ ورودی انکودر 30 ولت می باشد )

                          بعد از ترانزیستور یک آی سی نات 7404 گذاشتم و از یکی از گیت های نات استفاده کردم و خروجی رو به میکرو دادم . (هنوز نه می خوام بدم )
                          - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

                          دیدگاه


                            #28
                            پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                            6- به توضیحات AVR1600 مراجعه کنید.
                            متوجه نشدم منظورتون چی بود . سرچ کردم چیزی دستگیرم نشد . :sad:
                            - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

                            دیدگاه


                              #29
                              پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                              نوشته اصلی توسط Mania59
                              سرچ کردم چیزی دستگیرم نشد .
                              http://www.atmel.com/Images/doc8109.pdf
                              اوژن: به معنای افکننده و شکست دهنده است
                              دانایی، توانایی است-Knowledge is POWER
                              برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
                              وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
                              قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
                              اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
                              ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد

                              دیدگاه


                                #30
                                پاسخ : کد مربوط به راه اندازی Quadrature Decoder

                                خیلی ممنون از پاسختون

                                فقط جناب طراح در مورد شماتیکم نظری ندادید :sad:
                                - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

                                دیدگاه

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