پاسخ : تاچ خازنی Capacitive Touch
اطلاعیه
Collapse
No announcement yet.
تاچ خازنی Capacitive Touch
Collapse
X
-
پاسخ : تاچ خازنی 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:
کدومش و چرا؟
با تشکر
دیدگاه
-
پاسخ : تاچ خازنی 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;
کد:while ( !Touch1 ) آیا این معادل اینه: while(Touch!=0) و این خط هم همینطور if ( PINB.2 && !Touch1) آیا معادل اینه: if(PINB.2&&Touch1!=0)
این سوال رو دقیقا یکی از بچه ها هم پرسیده بود ولی بش گفتی تاپیک رو بخون، من هم قبلش خونده بودم هم بعدش خوندم ولی چیزی دستگیرم نشد!
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; } }
در پایان یک بار دیگه از همه شما عزیزان به خاطر صبر و بردباری تشکر میکنم :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:
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); } }
هر موقع تاچ تشخیص داده شد هر چقدرم که دستتو نگه داری فقط یه بار برنامت اجرا میشه تا دستتو برداری و دوباره تاچ کنی
بازم ممنون از آقای بیرامی :rolleyes:
دیدگاه
دیدگاه