منتديات الالكترونيات العصرية

منتديات الالكترونيات العصرية (http://www.dbaasco.com/vb/index.php)
-   منتدى المتحكمات ميكرو بلغة السي MikroC (http://www.dbaasco.com/vb/forumdisplay.php?f=11)
-   -   تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2 (http://www.dbaasco.com/vb/showthread.php?t=8023)

funky112233 01-27-2013 07:41 PM

تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
بسم الله الرحمن الرحيم

سوف نتحدث فى هذه المجموعه ان شاء الله
عن التاتش Touch وانواعه وكيفية التعامل معه
من خلال لغه الميكروسى MikroC وباستخدام ميكروكنترولر من عائلة PIC
وسوف يكون هناك تطبيق عملى ان شاء الله لهذه الانواع


اولا
دة رابط الجزء الاول وهو التعريف بالانواع

http://www.dbaasco.com/vb/showthread.php?t=8009

ثانيا
فى هذا الجزء سوف نتحدث ان شاء الله عن Resistive Touch

فى البداية سوف نتحدث عن كيفية سير الشرح

1 - شرح المبادئ وكيف تعمل هذه التقنيةومما تتكون.
2 - مميزات وعيوب هذا النوع.
3 - من اين يمكن الحصول عليها.
4 - فديوهات تجربة لها.
5 - اكواد الميكروسى وكيفية استخدامها مع ملف لمخطط الدائرة.



((1))
من اسم هذه التقنية نعلم انها تعمل بالمقاومة ولكن كيف هذا

بكل بساطة هى مجرد مقاومة متغيرة شفافة ان صح التعبير

http://www.dbaasco.com/vb/imgcache/585.png

فالكهرباء تدخل من طرفين احدهم سالب والاخر موجب
ويتم قياس الفولت من الطرف الاوسط وعلى حسب مكان الزراع تكون قيمة المقاومة
وبالتالى قيمة الفولت ايضا

http://www.dbaasco.com/vb/imgcache/586.png

ولوحة اللمس تعمل بنفس الطريقة فلا فرق
ولكن كما قلت شفافة

انظرو الى الصورة التالية

http://www.dbaasco.com/vb/imgcache/587.png

هكذا تعمل بالضبط
ولكن هذا فى محور واحد فقط ((سيتم التوضيح بعد قليل))

ولمعرفة ما اقصدة هنا يجب ان نعلم مما تتكون هذه الوحة

هى تتكون من 3 طبقات
طبقتان تعملان كا مقاومة متغيرة شفافة يتكونوا من البلاستيك
المغطى بمواد موصلة ((لن ندخل فى التفاصيل اكثر))
وطبقة فى الوسط تتكون من كرات ومساحات فارغه تعمل على فصل الطبقتين
عن بعضهم البعض
وعند الضغط على اى طبقة من الاثنين تلتصق بالاخرى ويتم قياس الفولت
وعند زوال الضغط تعمل الكرات فى الطبقة الوسطى
على اعادة الطبقتين الى موضعهما لهذا تعمل هذه التقنية
مع اى شىء سواء صوابعنا او اقلام او اى شىء يمكنة الضغط على الوحة

انظروا الى الصورتين

http://www.dbaasco.com/vb/imgcache/588.png

كما نرى عند الضغط تنزل احدى الطبقات للمس الاخرى ويتم قياس الفولت
ويتم تحديد مكان الضغطة او اللمسة على حسب قياس الفولت

وهنا ايضا

http://www.dbaasco.com/vb/imgcache/589.png

وهنا ايضا

http://www.dbaasco.com/vb/imgcache/590.png

فكما نرى طبقة تاخذ موجب من طرف وطرف اخر سالب
والطبقة الاخرى نقيس من خلالها الفولت لتحديد مكان اللمسة بالظبط

اذن يمكن القول ببساطة لكل لمسة قيمة فولت تشير الى مكانها

اذا ماذا نحتاج الان !! لنذهب ونحول كل اغرادنا لكى تعمل باللمس :lul::fig:

لا انتظر هناك مشكلة

وهى انك ان قمت بقياس الفولت من اللوحة من طبقة واحدة فهذا يعنى انك
حددت مكان اللمسة فى اتجاة واحدة اى فى بعد واحد
وهذا يعنى انك حددت مكان اللمسة فى البعد الافقى او البعد الراسى
بمعنى اخر مكان اللمسة بالطول او بالعرض وهذا غير دقيق بالمرة

وهذا لن يكفى لاننا هكذا لم نحدد مكان اللمسة كا نقطة محدد على الشاشة
فقط نقطة فى بعد واحد وهذا لا يكفى بل يجب تحديدها كا نقطة تقع بين
محورين اى احداثياتها فى المحور X والمحور Y اى مكان اللمسة
بالطول ومكانها بالعرض لنحدد مكان النقطة بالظبط على الشاشة او اللوحة

ولتوضيح اكثر
تخيل معى
اننا قمنا بقياس الفولت الناتج من للمسة من خلال طبقة من اقصى اليمين
وكان القياس يساوى 5 فولت

ولكن اذا كانت اللمسة فى الاعلى وكانت اقصى اليمين سيكون القياس ايضا 5 فولت
واذا كانت اللمسة فى الاسفل وكانت اقصى اليمين سيكون القياس ايضا 5 فولت

ولهذا لن تستطيع ابدا تحديد النقطة الا فى اتجاة واحد وهو
اقصى اليمين او اقصى اليسار ولن تسطيع تحديدها اذا كانت فى الاعلى او الاسفل

وهذا ما ااقصدة بالظبط

http://www.dbaasco.com/vb/imgcache/591.png

اذن ما الحل لهذه المشكلة

الحل بسيط جدا وهو ان نستعمل طبقتان فى نفس الوقت
طبقة نقيس من خلالها قيمة اللمسة فى محور X ((يسارا ويمينا))
وطبقة نقيس من خلالها قيمة اللمسة فى محور Y ((اعلى واسفل))

انظر الى الصور التالية

http://www.dbaasco.com/vb/imgcache/592.png

هنا ندخل الفولت على الوحة ونقيس قيمة الفولت لنحدد الاحداثيات بالنسبة
للمحور X ((يسارا ويمينا))

وهنا

http://www.dbaasco.com/vb/imgcache/593.png

ندخل الفولت على الوحة ونقيس قيمة الفولت لنحدد الاحداثيات بالنسبة
للمحور Y ((اعلى واسفل))

وعند جمع الطبقتين معا هنا يمكننا قياس الاحداثيات لكلا المحورين
ويمكننا الان تحديد مكان اللمسة بدقة على اللوحة

سواء اعلى او اسفل او يمينا او يسارا
فاذا كان القياس فى اقصى اليمين سنحتاج لمعرفة ان كان فى الاعلى ام فى الاسفل
وهنا يمكننا تحديد نقطة اللمسة

ولهذا نحتاج الى طبقتين وهما المكونين للوحة كما قلت فى الاعلى
وهناك طبقة فى الوسط بينهم وذكرت الهدف منها ايضا

اذن عندنا طبقة بنقيس من خلالها المحور X وطبقة بنقيس من خلالها المحور Y

ودة فديو لتوضيح اكثر

http://www.youtube.com/watch?v=Sml6f...0CCB5&index=17

______________________________________________________________X
............................................................................................................
______________________________________________________________Y

((2))

مميزات هذا النوع :

1 - رخص ثمنة .
2 - يمكن استخدام اى شئ للتعامل معه مثل الاصابع والاقلام الى اخرة .
3 - الدقة الى حد ما .
4 - سهولة تصنيعه .
5 - سهولة استخدامة .
6 - يمكن تركيبة ولصقة على اى شىء.
7 - لا يتاثر بالماء .

عيوب هذا النوع :

1 - يتلف مع الوقت والاستعمال بشكل اسرع من غيرة .
2 - اذا تلفت نقطة واحدة منة يتلف كلة .
3 - لا يعمل مع اكثر من للمسة فى نفس الوقت بطريقة مباشرة .
4 - يحتاج الى الضغط علية الى حد ما لكى يتم الاحساس باللمس .
5 - يستهلك الكثير من الكهرباء بالمقارنة مع انواع اخرى .
6 - لا يمرر الضوء بنسبة %100 بل اقل من ذلك .
______________________________________________________________X
............................................................................................................
______________________________________________________________Y

((3))

يمكن الحصول على هذا النوع عن طريق بعض المحلات والشركات مثل رام

http://ram-e-shop.com/oscmax/catalog...oducts_id=2253

ولكن ثمنه فى رام 65 جنية

وهذا لا يحقق الاسم الموجود فى العنوان ودعاً Push Button

بكل بساطة اذهب الى اى محل لتصليح الموبايل
وقل لة اريد التاتش بتاع اى موبايل صينى او لو الراجل بيفهم ههههههه ولونو نادر
قلة تاتش Resistive بتاع موبايل

ولمعرفة انه Resistive يجب ان يعمل بالقلم او بالاصبع او اى شىء اخر
وليس الاصبع البشرى فقط او اقلام خاصة بة فهذا نوع اخر
وهكذا نعرف الانواع التى تعمل بهذا النوع من التاتش

ستجد سعر الصغير منة ب 5 جنية واكبر حجم كبير جدا ب 10 جنية

وهكذا يمكننا التعويض عن الازرار وعن الكيباد بسعر رخيص جدا
وبشكل اقوى والتصميم على مزاجنا وكمان شىء حديث

ونقدر نقول بثقة ودعاً Push Button :lul::lul::lul:

______________________________________________________________X
............................................................................................................
______________________________________________________________Y

((4))

اول فديو ودة تجربتى الخاصة

http://www.youtube.com/watch?v=MOCys...ature=youtu.be


وهنا فديو اخر مع تركيبة على الشاشة

والتحكم فى الليد

http://www.youtube.com/watch?v=MfkL9...ature=youtu.be

وهنا فديو لفكرة عمل الكيباد
فقط قم بالرسم على ورقة ولزقها اسفل اللوحة
او اطبع صور وقم بلزقها ايضا او ورق عادى اى شىء يمكنك الطباعه والرسم علية
والازرار بالحجم والون والشكل الذى تريد

http://www.youtube.com/watch?v=0AQKXsbQ5Ug


______________________________________________________________X
............................................................................................................
______________________________________________________________Y

((5))


قبل الاكواد لازم نعرف شىء مهم عن النوع دة

اولا
هذا النوع ينقسم الى ثلاثة انواع وكلهم يادون نفس الغرض مع امكانيات اكثر

النوع الاول يكون ب 4 اطراف فقط وهذا ما نتعامل معه هنا .
النوع الثانى يكون ب 5 اطراف وسوف نتعرف علية .
النوع الثالث ب 8 اطراف وسوف نتعرف علية .

النوع الاول هو ما كنا نتحدث عنة طوال هذا الموضوع
وهو المتكون من طبقتين يتم من خلالهما قياس الفولت وتحديد اين تم اللمس

http://www.dbaasco.com/vb/imgcache/594.png

ولهذا له 4 اطراف فقط لكل طبقة 2 طرف

اما النوع المكون من 5 اطراف
فهو بكل بساطة عبارة عن طبقة واحدة لها 4 اطراف
وهم لتوصيل الفولت موجب وسالب لكل محور
ويتم التبديل فى كل مرة نقوم فيها بالقياس
اى مرة نوصل السالب والموجب للمحور Y ومرة اخرى للمحور X

اما الطرف الخامس فا من خلالة يمكننا قياس الفولت
للمحورين

اما النوع الثالث ذو 8 اطراف
فهو مثل الرابع ولكن بدقة اكثر منة
وطبقات مقسمة

ناتى الان الى الجزء الخاص بالتعامل مع اللوحة وبرمجتها وما الى ذلك

فى البداية يجب ان نعلم اننا سوف نحتاج الى قناتان من محول ADC Module
قناة للمحور X وقناة للمحور Y

هذه صورة لاحدى هذه الوح

http://www.dbaasco.com/vb/imgcache/595.png


وكما نرى هناك 4 اسلاك وكما قلت فى الاعلى لماذا هم 4

سوف نقوم بتوصيل هذه الاسلاك الاربعه باى سلوك عادية لكى تلحم على البوردة
او يمكننا استخدام محول مثل هذا

http://www.dbaasco.com/vb/imgcache/596.png

كما تريد المهم توصل السلوك للوحة

بالنسبة لمعرفة اطراف الطبقات
اى الطبقة الخاصة بالمحور X والطبقة الخاص بالمحور Y

لان كل طبقة لها 2 طرف

بكل بساطة اول طرف وثالث طرف خاصين بالطبقة Y
والطرف الثانى والرابع خاصين بالطبقة X

لا توجد قطبية بينهم

مثل هذه الصورة

http://www.dbaasco.com/vb/imgcache/597.png

ناتى الان الى كيفية التعامل معها وكيفية كتابة الكود

الامر فى غاية البساطة والسهولة
سوف نقوم بادخال سالب وموجب على اطارف الطبقة X
وبعد ذلك نقوم بالقياس من خلال احد اطراف الطبقة Y

وبعد ذلك نقوم بعكس العملية
اى نقوم بادخال سالب وموجب على اطراف الطبقة Y
ونقوم بالقياس من خلال اطراف الطبقة X

وهكذا باستمرار نحصل على الحداثيات من المحورين

ولفعل هذه المهمة هناك طريقتين
الاولى وهى الافضل والادق والاصح

ان نقوم بصنع دائرة تتكون من 5 ترنسيزتورات مع بعض المقومات

وهذه صورة الدائرة

http://www.dbaasco.com/vb/imgcache/598.png

الجزء المظلل بالون الاسود

وهذة الطريقة تعطى دقة وتوفر طرفين من الميكرو
بحيث انك ب 2 طرف تتحكم فى دخول وخروج الكهرباء من والى اللوحة
والطرفين الاخرين تقيس من خلالهما الفولت وتقدر الاحداثيات
وبهذه الطريقة سنيتهلك 4 اطراف فقط من البك

وهذه الدوائر تباع جاهزة لمن يريدها

http://www.mikroe.com/add-on-boards/...troller-proto/

او هنا من رام

http://ram-e-shop.com/oscmax/catalog...roducts_id=822

وهناك طريقة اخرى ولكن تستهلك 6 اطراف 4 للكهرباء الخاصة بالوحة
و2 لقياس الفولت للطبقتين

وهذه هى الدائرة التى استخدمها انا شخصيا

http://www.dbaasco.com/vb/imgcache/599.png


يجب توصيل 2 مقاومة 10 كيلوا على الارضى على كل قناه لكى تعمل الدائرة باستقرار

حمل الكود من هنا وقمت باستخدام PIC16f877a وكريستالة 4 ميجا

وهذا هو الكود

كود:

#define X1 PORTB.f0
#define X2 PORTB.f1

#define Y1 PORTB.f2
#define Y2 PORTB.f3

int natg,natg2;
char txt[7],txt2[7];

void getX(){TRISB.f2=1;TRISB.f3=1;TRISB.f0=0;TRISB.f1=0;X1=0;X2=1;natg=ADC_Read(0);}
void getY(){TRISB.f2=0;TRISB.f3=0;TRISB.f0=1;TRISB.f1=1;Y1=0;Y2=1;natg2=ADC_Read(1);}

void AD(){
getX();getY();
          }

void main(){
trisb=0;portb=0;
ADC_Init();
while(1){
AD();
if(550>natg&&natg>300&&550>natg2&&natg2>300){PORTB.f7=~PORTB.f7;delay_ms(350);}
      }
    }


فى البداية قمت بالتعويض عن اسماء الاطراف ب X1 , X2 , Y1 , Y2

لكى نعمل بسهولة

وبعد ذلك قمت بتعريف المتغيرات

ثم قمت بعمل دوال void getX و void getY

وبكل بساطة عند قياس المحور X اقوم بجعل اطرافة خرج
واقوم باخراج 0 فولت على طرف و5 فولت على طرف اخر للمحور X

ثم اجعل اطراف المحور Y دخل حتى لا تؤثر على القياس

واقوم بالقياس من القناة الاولى والى متوصلة على طرف واحد من المحور Y

وبعد ذلك احفظ الناتج فى متغير natg

واقوم بعد ذلك بتكرار العملية ولكن معكوسة اى الدخل خرج والخرج دخل
وهكذا

وبعد ذلك جعلت البورت b خرج
وقمت بعمل حلقة تكرار ثم الذهاب الى الدالة AD
لكى تقوم بالحسابات وتعود لى بالاحداثيات

وللعلم الاحداثيات تاتى على شكل رقم يقع بين 0 الى 1023
وهى تعبر عن 0 فولت الى 5 فولت كما نعلم جميعا

وبعد ذلك اختبر النواتج اذا كانت تقع بين ارقام محددة يقوم البك بانارة الليد
او ينفذ اى تعليمة تريدها

ولكن بهذه الطريقة يكون القياس صعب بعض الشىء
لاننى احتاج الى العرض على شاشة لكى احدد اين بالزبط
يمككنى ان احدد مكان اللمس المطلوب لاضاءة الليد

هناك اكثر من طريقة لحل هذه المشكلة
فمثلا اذا كنت ستركب اللوحة على شاشة ونريد التعامل بالبكسل
اى اقول لة اذا كان القياس من البكسل كذا لكذا قم بالامر الاتى
اى تحويل الفولت الى وحدة البكسل

بكل بساطة نقوم بهذا الامر بعد قراءة الاحداثيات اى داخل دالة AD

كود:


void AD(){
getX();getY();

natg = (natg * 128) / 1024;
natg2 = 64 -((natg2 *64) / 1024);
}

الارقام 128 او 64 هذه ارقام بكسل الشاشة الطول فى العرض

بهذه الطريقة نسطتيع التحكم من خلال البكسل
اى بدل القول اذا كان القياس يقع بين 0 الى 1023 لا سنقول مثلا اذا كان يقع بين
30 الى 100 بكسل

جيد حتى الان

ولكن اذا احتجنا التحويل الى وحدة اللملى متر
حيث اننا لا نريد التحكم من خلال شاشة بل صورة مطبوعة اسف لوحة اللمس

بكل بساطة اكتب قياس الطول الخاص بك بالمللىمتر او اى وحدة تريد
مكان 128
والعرض ايضا مكان 64

وهكذا يتم التوحويل والقياس باى وحدة نريد

وللعلم هناك مكتبة خاصة بهذه الجزئية داخل الميكروسى
ولكن تعمل على دائرة الموجودة باالعلى بالترانزيستورات
وسوف اقوم بشرحها ان شاء الله

تم الامر بحمد الله

اذا كان هناك اى شىء صعب ويحتاج للشرح فلا تترددوا
وان كان الشرح صعب
ساحاول ان اشرحة بشكل افضل ان شاء الله لنرى هل فهمتم الموضوع ام لا اولا ..
لان الصراحة انا حاسس انوا مش كامل او صعب او فية غموض
زيادة عن اللزوم


عمرو عبد الرحمن 01-28-2013 01:47 AM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
الحق اعملى كوباية شاى بسرعة واجى افهم الدنيا

بس بجد عن نظرة سريعة واضح ان الشرح قوى جدا بسم الله ماشاء الله ربنا يحفظك ويبارك فيك
جزاك الله خيرا
لى عودة مرة اخرى ولي الشرف بانى اول من يرد

funky112233 01-28-2013 11:59 PM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
بسم الله الرحمن الرحيم

الله يكرمك يا بشمهندس عمرو دة من كرم اخلاقك ربنا يزيدك
والشرف لى انا يا هندسة

بارك الله فيك

احمدابوالمعاطى 01-29-2013 12:39 AM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
بارك الله لك اخى وفعلا كما قال الاخ عمرو محتاج كوب شاى وقرأته بتمعن وفهمه جيدا

ولنا رجعه للاستفسارات

funky112233 01-29-2013 08:28 PM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
بسم الله الرحمن الرحيم

ان شاء الله يكون سهل وواضح يا بشمهندس
واى استفسارت انا تحت امرك ان شاء الله

asdasd123456 02-10-2013 06:10 PM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
http://http://imageshack.us/photo/my.../0910503l.jpg/
اى مكان اجيب منو المحول دة لان الشغل عليها و هى كدة هايكون صعب
و انا دورت فى رام و النخيلى و الجمال و كل المحلات الى موجودة فى باب اللوق و ملقتش خالص
:(

asdasd123456 02-10-2013 06:30 PM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
http://imageshack.us/photo/my-images/707/0910503l.jpg/
السلام عليكم و رحمة الله و بركاتو
انا كنت طالب اشترى منين المحول دة لانى مش لقية خالص فى باب اللوق
شكرا ليك و على فكرة انت ممتاز فى الشرح و ربنا يكرمك و شكرا على المجهود الكبير اوى دة

nc56 02-10-2013 08:42 PM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
سلام عليكم
كيف يمكنني رسم مستطيل يظهر فيه led 1
led2
و تظهر عند بداية ؟
كيف استطيع معرفة مكان الضغط بالظبط؟
شكرا

محمد العربى 02-12-2013 08:05 PM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
شكرا درس رااااااائع

funky112233 02-13-2013 03:07 PM

رد: تعلم كيفية التعامل مع التاتش Touch وانواعه ((Resistive Touch ودعاً Push Button)) ج2
 
بسم الله الرحمن الرحيم

اخى asdasd123456

الله يكرمك يا بشمهندس

بالنسبة لمشكلتك
فانا شخصيا لم استخدم هذا المحول بل قم بالحام على اطراف التاتش
واستخدمت سلك سماعه بتاعت الكمبيوتر لانة رفيع جدا ومناسب

ولكن هناك طريقة اخرى ايضا وهى عمل PCB بسيط جدا يكون بمقاس اطراف الخرج بتاع التاتش
والناحية الثانية يكون الشكل اكبر شوية

زى الصورة دى

http://www.dbaasco.com/vb/imgcache/600.png

من ناحية للتاتش ومن ناحية تعرف تلحم عليها عادى

يعنى انت الى هتعمل المحول بنفسك

بالتوفيق ان شاء الله

اخى nc56

هذا سهل جدا ولكن ملا تعلمة ان هذه الشاشة ليست عادية بل هى graphic lcd
اى يمكن عرض صور عليها

وانت ممكن تعمل دة بكل سهولة وهو انك تصمم صورة على الكمبيوتر وتطبعها وتلزقها خلف التاتش بكل بساطة

بالتوفيق ان شاء الله

اخى محمد العربى

بالتوفيق يا اخى ان شاء الله شكرا جزيلا لك


الساعة الآن 07:30 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصرية

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77