اطلاعیه

Collapse
No announcement yet.

تاچ خازنی Capacitive Touch

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

    پاسخ : تاچ خازنی Capacitive Touch

    [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
    معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
    معرفی نرم افزار Codewizard PWM
    با من بیشتر آشنا شوید

    دیدگاه


      پاسخ : تاچ خازنی Capacitive Touch

      بازم سلام
      برای pcb این کلید تاچ ها تو آلتیوم باید از Qtouch button استفاده کرد یا Qtouch Matrix ؟
      Qtouch button یک پایه داره و شکلش یه پد یکنواخته ولی Qtouch Matrix دو تا پایه داره و تو شکلش خط داره oo:
      کدومش و چرا؟
      با تشکر

      دیدگاه


        پاسخ : تاچ خازنی Capacitive Touch

        نوشته اصلی توسط chakavak_1989
        بازم سلام
        برای pcb این کلید تاچ ها تو آلتیوم باید از Qtouch button استفاده کرد یا Qtouch Matrix ؟
        Qtouch button یک پایه داره و شکلش یه پد یکنواخته ولی Qtouch Matrix دو تا پایه داره و تو شکلش خط داره oo:
        کدومش و چرا؟
        با تشکر
        هیچکدوم
        چون که اونا مربوط به تکنولوژی تاچ شرکت atmel و macrochip هستن و کلا ربطی به کار ما ندارن
        درایور شبکه و nRF24L01
        کاتالوگ محصولات
        کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
        شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
        فروش اسيلوسکوپ GWinstek GOS-630FC

        دیدگاه


          پاسخ : تاچ خازنی Capacitive Touch

          سلام
          همون طور که آقای بسطام بیرامی هم گفتن شرکت میکروچیپ خیلی روی این تاچ ها کار کرده.
          روی اکثر میکروهای جدید خودش از سری 16F گرفته تا بقیه قابلیتی اضافه کرده که کنار پایه ها به اسم CAPACITIVE TOCH CHANNEL مشخص شده. بعضا 10 تا یا بیشتر از این پایه ها دارن که به محض نزدیک شدن دست توی برنامه یه کارکتر به شما برگردونده میشه که دقیقا بدونید کدوم یکی لمس شده.
          AYRIC

          دیدگاه


            پاسخ : تاچ خازنی Capacitive Touch

            نوشته اصلی توسط chakavak_1989
            بازم سلام
            برای pcb این کلید تاچ ها تو آلتیوم باید از Qtouch button استفاده کرد یا Qtouch Matrix ؟
            Qtouch button یک پایه داره و شکلش یه پد یکنواخته ولی Qtouch Matrix دو تا پایه داره و تو شکلش خط داره oo:
            کدومش و چرا؟
            با تشکر
            پس تو pcb این مدار تاچ پدها رو چه جوری باید طراحی کرد؟ آلتیوم رو میگما

            دیدگاه


              پاسخ : تاچ خازنی Capacitive Touch

              نوشته اصلی توسط chakavak_1989
              پس تو pcb این مدار تاچ پدها رو چه جوری باید طراحی کرد؟ آلتیوم رو میگما
              خب طراحی نداره دیگه
              یه دایرهای چیزی میکشی و از اون یه ترک میکشی به سمت پایه میکرو
              دیگه دست خودته با ابزارهایی که توی Place هست خودت دستی هر شکلی که دوس داشته باشی رو میکشی
              درایور شبکه و nRF24L01
              کاتالوگ محصولات
              کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
              شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
              فروش اسيلوسکوپ GWinstek GOS-630FC

              دیدگاه


                پاسخ : تاچ خازنی Capacitive Touch

                به به عاشق این پستام که طی 120 روز اخیر هیچ ارسالی نداشته است. :biggrin:
                آقا دم همگی گرم خیلی مطالب به درد بخوری گذاشتین دم آقای بیرامی بیشتر گرم :mrgreen:
                فقط من یه سری سوال برام پیش اومده ممنون میشم اگه کمک کنین نتیجه بگیرم .(البته من قبلا معذرت میخوام اگه بعضی سوالام تکراریه یا ساده(البته بی ربط نیست :agree، من کل تاپیک رو هم خوندم قبلش بگم :biggrin:
                1- من یه مقدار سر کلاس، درس گوش نمیدادم کلا با مفاهیم پایه غریبم :redface: این مدار رو لطفا نگاه کنین

                الان من یه مقاومت و یه خازن رو سری کردم که حاصل ضربشون باید زمان شارژ خازن باشه درسته؟؟ خب پس خازن طی 10 میکروثانیه باید شارژ بشه. اون مقاومت pullDown هم واسه این گذاشتم که وقتی کلید باز میشه خازن از طریق اون خالی بشه.ولی نمیدونم توی زمان شارژ خازن تاثیری داره یا نه :mrgreen: به هر حال زمان شارژی که توی پرتئوس نشون میده یه چیزی نزدیک به 180 میکروثانیس. حالا من اشتباه میکنم یا پروتئوس؟؟

                2- من برنامه شما رو که میخونم یه چیزایی رو متوجه نمیشم ممنون میشم یه توضیح کوچولو بدی
                2-1- اول اینکه روال کار اینه که پایه B.1 رو اول برنامه 1 کنیم و زمانی که طول میکشه تا B.0 هم 1 بشه رو محاسبه کنیم
                پس B.1 باید خروجی و B.0 ورودی تعریف بشن ولی هر دو توی برنامه شما خروجی هستن
                2-2- وقتی که ما پایه B.1 رو یک میکنیم، B.0 بعد از مدتی 1 میشه و ما 1 شدنشو میخونیم مگه نه؟؟ پس چرا شما خط اول برنامه هر دو پایه رو یک میکنی؟؟
                کد:
                 PORTB |= 0x02;
                2-3- من چیزی که از این دوتا خط برداشت کردم رو واسه شما میگم ببین درست فهمیدم؟ ببخشیدا :biggrin:
                کد:
                while ( !Touch1 )
                آیا این معادل اینه:
                while(Touch!=0)
                و این خط هم همینطور
                if ( PINB.2 && !Touch1)
                آیا معادل اینه:
                if(PINB.2&&Touch1!=0)
                3- کلا این برنامه دوم که نوشتی من متوجه نشدم متغیر touch1 از کجا اومد (کل تاپیکو خوندما :biggrin و اینکه چرا time1 مقدار دهی میشه ولی time5 چک میشه؟؟
                این سوال رو دقیقا یکی از بچه ها هم پرسیده بود ولی بش گفتی تاپیک رو بخون، من هم قبلش خونده بودم هم بعدش خوندم ولی چیزی دستگیرم نشد!

                4- آقا شرمنده سر همه رو درد اوردم سوال آخره به خدا :biggrin:
                من با همین الگوریتم برنامه رو نوشتم ولی نمیدونم چرا جواب نمیده! جالب اینجاس که با اینکه اون مطالب بالا که گفتم تو برنامه شما هست یه جورایی داره برنامتون جواب میده(دمتون گرم ولی سوال شد واسه من )
                این متن برنامه منه میشه کسی بگه کجاشو اشتباه کردم؟
                کد:
                #include <mega8.h>
                #include <delay.h>
                
                volatile unsigned int time,tedad_overflow;
                
                interrupt [TIM0_OVF] void timer0_ovf_isr(void){
                  ++tedad_overflow;
                  }
                  
                void main(){
                  DDRD=0x00;
                  PORTD=0x00;
                  DDRB=0xff;
                  PORTB=0x00;
                  TCCR0=0x01;
                  TCNT0=0x00;
                  TIMSK=0x01;
                  #asm("sei")
                  while(1){
                    PORTB|=0x80;
                    TCCR0=0x01;
                    while(PIND.0==0);
                    TCCR0=0x00;
                    time=(tedad_overflow*255)+TCNT0;
                    tedad_overflow=0;
                    PORTD.0=0;
                    PORTB&=0x7f;
                    if(time>=320) PORTB.6=1;
                    else PORTB.6=0;   
                    }
                  }
                من پایه مقاومت رو با B.7 یک کردم و اتصال مقاومت و خازن رو به D.0 دادم. و خروجی که LED رو روشن کنه رو به B.6 دادم. کریستالم هم 8 مگ هست.

                در پایان یک بار دیگه از همه شما عزیزان به خاطر صبر و بردباری تشکر میکنم :biggrin:

                دیدگاه


                  پاسخ : تاچ خازنی Capacitive Touch

                  نوشته اصلی توسط ameen.kh
                  به به عاشق این پستام که طی 120 روز اخیر هیچ ارسالی نداشته است. :biggrin:
                  آقا دم همگی گرم خیلی مطالب به درد بخوری گذاشتین دم آقای بیرامی بیشتر گرم :mrgreen:
                  فقط من یه سری سوال برام پیش اومده ممنون میشم اگه کمک کنین نتیجه بگیرم .(البته من قبلا معذرت میخوام اگه بعضی سوالام تکراریه یا ساده(البته بی ربط نیست :agree، من کل تاپیک رو هم خوندم قبلش بگم :biggrin:
                  1- من یه مقدار سر کلاس، درس گوش نمیدادم کلا با مفاهیم پایه غریبم :redface: این مدار رو لطفا نگاه کنین
                  الان من یه مقاومت و یه خازن رو سری کردم که حاصل ضربشون باید زمان شارژ خازن باشه درسته؟؟ خب پس خازن طی 10 میکروثانیه باید شارژ بشه. اون مقاومت pullDown هم واسه این گذاشتم که وقتی کلید باز میشه خازن از طریق اون خالی بشه.ولی نمیدونم توی زمان شارژ خازن تاثیری داره یا نه :mrgreen: به هر حال زمان شارژی که توی پرتئوس نشون میده یه چیزی نزدیک به 180 میکروثانیس. حالا من اشتباه میکنم یا پروتئوس؟؟

                  2- من برنامه شما رو که میخونم یه چیزایی رو متوجه نمیشم ممنون میشم یه توضیح کوچولو بدی
                  2-1- اول اینکه روال کار اینه که پایه B.1 رو اول برنامه 1 کنیم و زمانی که طول میکشه تا B.0 هم 1 بشه رو محاسبه کنیم
                  پس B.1 باید خروجی و B.0 ورودی تعریف بشن ولی هر دو توی برنامه شما خروجی هستن
                  2-2- وقتی که ما پایه B.1 رو یک میکنیم، B.0 بعد از مدتی 1 میشه و ما 1 شدنشو میخونیم مگه نه؟؟ پس چرا شما خط اول برنامه هر دو پایه رو یک میکنی؟؟


                  3- کلا این برنامه دوم که نوشتی من متوجه نشدم متغیر touch1 از کجا اومد (کل تاپیکو خوندما :biggrin و اینکه چرا time1 مقدار دهی میشه ولی time5 چک میشه؟؟
                  این سوال رو دقیقا یکی از بچه ها هم پرسیده بود ولی بش گفتی تاپیک رو بخون، من هم قبلش خونده بودم هم بعدش خوندم ولی چیزی دستگیرم نشد!

                  4- آقا شرمنده سر همه رو درد اوردم سوال آخره به خدا :biggrin:
                  من با همین الگوریتم برنامه رو نوشتم ولی نمیدونم چرا جواب نمیده! جالب اینجاس که با اینکه اون مطالب بالا که گفتم تو برنامه شما هست یه جورایی داره برنامتون جواب میده(دمتون گرم ولی سوال شد واسه من )
                  این متن برنامه منه میشه کسی بگه کجاشو اشتباه کردم؟

                  من پایه مقاومت رو با B.7 یک کردم و اتصال مقاومت و خازن رو به D.0 دادم. و خروجی که LED رو روشن کنه رو به B.6 دادم. کریستالم هم 8 مگ هست.

                  در پایان یک بار دیگه از همه شما عزیزان به خاطر صبر و بردباری تشکر میکنم :biggrin:
                  1 - محاسباتت درسته ممکنه ایراد از شبیه ساز باشه
                  2 - والا برنامه مال قدیماست خودمم یادم نیست ولی اصولشو که گقتم ، یه پایه یک میشه و صبر میکنه ببینه دو طر خازن کی یک شده زمان رو میگیره همینو بنویس
                  3 - برنامه دوم قسمتی از کده برای همین گیج میشید همون برنامه اولو روش کار کنید و بستش بدید

                  توی شماتیکت مقاومت R2 برای کار با میکرو نیاز نیست وقتی پایه 0 شه خودش تخلیه میکنه خازنو
                  درایور شبکه و nRF24L01
                  کاتالوگ محصولات
                  کنترلر CNC شش محوره براي پرينتر 3D و Pick n Place
                  شبيه ساز تک تيرانداز و سيبل ديجيتال با پردازش تصوير
                  فروش اسيلوسکوپ GWinstek GOS-630FC

                  دیدگاه


                    پاسخ : تاچ خازنی Capacitive Touch

                    سلام مرسی واسه جوابا من سرم شلوغ شد نتونستم بگم نتیجه گرفتم :biggrin:
                    والا راجب به محاسبات و برنامه و اینا که نمیتونم بگم دقیق چیزی که باید رو نتیجه گرفتم که اونم حالا میذارم به خاطر خطای غیر ایدهآل بودنو این چیزا :mrgreen:

                    ولی برناممو میذارم واستون که اگه کسی نیاز داشت میتونه ازش استفاده کنه کافیه فقط کاری که بعد از تشخیص تاچ باید انجام بشه رو توی اون تابعی که تعریف کردم بنویسید
                    کد:
                    #include <mega8.h>
                    #include <delay.h>
                    
                    volatile unsigned int time,tedad_overflow,tedad_anjam;
                    
                    interrupt [TIM0_OVF] void timer0_ovf_isr(void){
                      ++tedad_overflow;
                      }
                    
                    void after_touch(){
                      #asm("cli")
                      اینجا هر کاری که بعد از تشخیص تاچ شدن میخواین انجام بدین رو بنویسید
                      #asm("sei")            
                      }      
                      
                    void main(){
                      DDRD=0x00;
                      PORTD=0x00;
                      DDRB=0xff;
                      PORTB=0x00;
                      TCCR0=0x01;
                      TCNT0=0x00;
                      TIMSK=0x01;
                      #asm("sei")
                      while(1){
                        PORTB|=0x10;
                        TCCR0=0x01;
                        while(PIND.0==0);
                        TCCR0=0x00;
                        time=(tedad_overflow*255)+TCNT0;
                        tedad_overflow=0;
                        TCNT0=0;
                        PORTD.0=0;
                        PORTB&=0xef;
                        if(time>=320) {
                          ++tedad_anjam;
                          if(tedad_anjam==1){
                            after_touch();
                            }
                          }
                        if(time<=280) tedad_anjam=0;
                        delay_ms(10);   
                        }
                      }
                    توی این برنامه پایه B.4 میاد سر مقاومت و خازن و اتصال اونا که به تاچ هم وصل هست به D.0 وصل میشه
                    هر موقع تاچ تشخیص داده شد هر چقدرم که دستتو نگه داری فقط یه بار برنامت اجرا میشه تا دستتو برداری و دوباره تاچ کنی

                    بازم ممنون از آقای بیرامی :rolleyes:

                    دیدگاه

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