איך עובדת (ובנויה) מקלדת

מהם עקרונות הפעולה של מקלדת USB סטנדרטית זולה, אילו רכיבים אפשר למצוא בפנים והאם אפשר לעשות איתם משהו מעניין?

מקשים ממקלדת ישנה

כל מכשיר אלקטרוני בבית שלי יודע שבבוא יומו, גם הוא יעלה על שולחן הניתוחים ויפורק לצורך תרומת איברים, לטובת ההשכלה של הדור הבא או שתיהן גם יחד. הפעם היה זה תורה של מקלדת פשוטה מבית TEAC, שמקשיה לא הגיבו עוד בקלות כמו בנעוריהם, וגם הכיתוב על חלקם כבר נשחק מרוב שימוש.

מקלדת USB, רגע לפני הפוסט-מורטם
מקלדת USB, רגע לפני הפוסט-מורטם

את עיקרון הפעולה הכללי של מקלדות הסברתי כבר מזמן בפוסט על לוח מקשים 3×4 , ובעקבותיו גם בכתבה על מקלדות ב-ynet. שתי שכבות של חוטים, או מוליכים, מונחות זו על גבי זו עם רווח זעיר ביניהן, ומתחת לכל מקש נמצאת נקודת הצטלבות של חוט אחד מהשכבה העליונה עם אחר מהתחתונה. כשהמשתמש לוחץ על המקש, החוט העליון נדחק מטה ויוצר מגע עם החוט התחתון. ה"מוח" של המקלדת הוא מיקרו-בקר כלשהו (כמעט תמיד שבב ייעודי) שמוציא במהירות מתח חשמלי לכל אחד מהחוטים בשכבה מסוימת על פי תור קבוע מראש, ו"מחפש" את המתח הזה בחוטים של השכבה האחרת. כאשר הוא מזהה את המתח, הוא יודע שאחד המקשים נלחץ ויצר מגע – וכיוון שהשבב יודע איזה חוט הוא השולח ואיזה חוט הוא המקבל, הוא גם יודע איפה בדיוק היה המגע, כלומר באיזה מקש מדובר.

במקלדת שלי, השבב הייעודי הוא כל כך ייעודי שהוא מובנה על לוח ה-PCB הקטן (בתצורת COB – Chip on Board השטוחה) ואי אפשר לגשת אליו. הוא מנהל הכול: את זיהוי המקשים, את תקשורת ה-USB המורכבת עם המחשב, ואת שלושת נוריות ה-LED שמציינות את סטטוס המקלדת.

המקלדת אחרי הסרת הכיסוי האחורי. כל האלקטרוניקה היא על הלוח הירוק, והשבב מתחת ליציקה השחורה
המקלדת אחרי הסרת הכיסוי האחורי. כל האלקטרוניקה נמצאת על הלוח הירוק, והשבב נמצא מתחת ליציקה השחורה (מסומנת בחץ)

הלוח עצמו הוא חד-שכבתי ומצדו השני השחילו רק מתנד וכמה קבלים פשוטים, אך היצרן טרח לכתוב עליו את שמות השבבים שהוא מותאם להם. מבין השניים האלה, השבב שתומך גם ב-USB ולא רק בתקן PS/2 המיושן הוא EKK8011, והמפרט שלו מגלה לנו כמה דברים מעניינים: יש לו 18 ערוצי פלט ו-8 קווי קלט (מה שאומר שהוא יכול לתמוך בעד 144 מקשים נפרדים), חוצץ בגודל 16 בייטים ללחיצות מקש שהמחשב לא הספיק לקרוא, קצב השעון שלו הוא 6MHz, ואי-אז בפרהיסטוריה הרחוקה גם ייצרו אותו במארז DIP הגדול והנגיש.

שני צדי לוח הבקרה של המקלדת
שני צדי לוח הבקרה של המקלדת (לחצו להגדלה)

המימוש של שכבות החוטים במקלדת הזו הוא אולי החלק הכי מסקרן בה. הוא מורכב מסנדביץ' של שלושה שקפים, ש"רותכו" ביניהם בשתי נקודות באמצעות חימום, כך שלא יחליקו האחד על פני האחר ויזוזו ממקומם הנכון.

ה"שקפים" שבמקלדת. נקודות הריתוך מסומנות בחיצים
ה"שקפים" שבמקלדת. נקודות הריתוך מסומנות בחיצים (לחצו להגדלה)

על השקף העליון והשקף התחתון מודפסים נתיבים מתפתלים שמוליכים חשמל (ההתנגדות החשמלית שמדדתי על פני אחד הנתיבים הארוכים ביותר הייתה 125 אוהם), ואילו השקף האמצעי מאוכלס רק בחורים עגולים: שקף זה הוא הריווח שבין שכבות המוליכים. בין כל מקש לשקף העליון נמצאת מין כיפת גומי (או סיליקון) קטנה ואפורה – אפשר לראות אותן קצת בתמונה למעלה – ולחיצה על המקש גורמת לכיפה לכופף את השקף העליון באותו אזור דרך החור, עד שהוא נוגע בתחתון, ושני מוליכים נפגשים.

שלושת ה"שקפים" שמתחת למקשי המקלדת. שימו לב לחורים באמצעי
שלושת ה"שקפים" שמתחת למקשי המקלדת. שימו לב לחורים באמצעי (לחצו להגדלה)

לפני שראיתי את ה-Datasheet חשבתי שאוכל להבחין באותות סריקת המקשים באמצעות הסקופ, אך לא הצלחתי למצוא אותות כאלה במגעים שעל הלוח. כשהגעתי למסמך הבנתי למה: הסריקה לא מתבצעת באמצעות החלפה של מתח נמוך בגבוה, אלא בשיטה של open drain: לכל פיני הקלט של השבב יש נגד pull-up פנימי שמחזיק אותם במתח גבוה, ופין "פלט" בעצם יכול לנקז זרם ל-GND של המעגל (ולהתגבר על הנגד), או לא לנקז כלום (מצבhigh impedance או "High-Z"). לסקופ, שלא מביא זרמים משלו למעגל, אין דרך להבחין בין השניים.

בניסיון להתגבר על הבעיה החזקתי נגד 510 אוהם פשוט כך שייגע בפין קלט אחד ובפין פלט אחד (כדי שיהיה זרם שיעבור בפועל), ומדדתי את המתח עליו. הסקופ החל להראות משהו מעניין – ואז המחשב שלי כבה. כן, הייתי חסר אחריות מספיק להשאיר את הלוח מהמקלדת הישנה מחובר למפצל USB רגיל שהיה מחובר למחשב, ובצירוף מקרים קלאסי הנגד שלי "לחץ" על משהו שגרם למערכת ההפעלה ללכת לישון…

גם אחרי שחיברתי את הלוח למקור כוח בלתי-תלוי היה קשה לזהות את האות, כנראה בגלל שהכול הוחזק ביד ובצורה מאולתרת ולא יציבה, מה שהוסיף הרבה רעשים לתמונה. ייתכן שהצד השמאלי בצילום המסך הזה מראה את האפקט המבוקש – קפיצת מתח קטנה כל 0.5ms בערך:

אות "מלוכלך" של סריקת המקשים במקלדת?
אות "מלוכלך" של סריקת המקשים במקלדת? (לחצו להגדלה)

הקפיצה עצמה קצרה מאוד ובוודאי אפשר לדחוס אפילו 18 כאלה בכל חצי אלפית שנייה. מהירות הקלדה, גם של אדם זריז מאוד, איטית מאוד בהשוואה לזה, אך סביר להניח שהשבב מבצע בדיקות חוזרות ומחליט שמקש נלחץ רק אם נרשמה תגובה עקבית במשך 10 מחזורי בדיקה רצופים, או משהו כזה.

עד כאן לגבי המבנה ואופן הפעולה הסטנדרטיים. האם ניתן לעשות לזה האקינג? כאן ציפתה לי קודם כל אכזבה: המגעים שעל שפת ה-PCB מכוסים בחומר שאינו מאפשר הלחמה ישירה, ושקשה להוריד. במקור, קצות המוליכים של השקפים פשוט הוצמדו אליהם בלחץ כפי שאפשר לראות בתמונה למטה. כמו כן, הרווח בין מרכזי המגעים הוא 2 מ"מ, לא 2.54 מ"מ הסטנדרטיים שכל המייקרים מכירים, כך שאי אפשר להלחים שורה של פינים שיתחברו ישירות למטריצה או משהו דומה.

הפס האפור והקשיח-למחצה מחזיק בכוח את השקפים ומצמיד את המוליכים מכנית ללוח
הפס האפור והקשיח-למחצה מחזיק בכוח את השקפים ומצמיד את המוליכים מכנית ללוח (לחצו להגדלה)

אם אצליח בכל זאת להתגבר על המגעים הבעייתיים ולעשות משהו מעניין עם הלוח הזה, אספר על כך בפוסט אחר.

להרשמה
הודע לי על
0 Comments
Inline Feedbacks
הראה את כל התגובות