Neil Zhao, Analog Devices
מדי צעדים, הנפוצים כיום כאמצעי יומיומי ליצירת מוטיבציה לפעילות גופנית ולניטור ההתקדמות בה, יכולים לעודד אנשים להתחרות נגד עצמם בפיתוח כושר ובהפחתת משקל. בדגמים הראשונים השתמשו במתג מכני עם משקולת כדי לזהות צעדים, בתוספת מונה פשוט. כשמנערים מכשירים אלה, אפשר לשמוע כדור מתכת נע קדימה ואחורה, או מטוטלת המציינת עצירות בתנודתה.
כיום מדי צעדים מתקדמים מסתמכים על חיישני אינרציה והתוכנה המתוחכמת של מערכות מיקרו אלקטרו מכניות כדי לזהות צעדים אמיתיים בהסתברות גבוהה. חיישני האינרציה של המערכות האלה מאפשרים זיהוי מדויק יותר של צעדים ופחות מקרים של זיהוי שגוי. מדי צעדים משולבים במספר גדל והולך של מוצרי צריכה אלקטרוניים ניידים – כגון נגני מוסיקה וטלפונים ניידים, תוך ניצול העלות הנמוכה ודרישות המקום והחשמל המינימליות של חיישני האינרציה של מערכות מיקרו אלקטרו מכניות. מדי התאוצה התלת ציריים הקטנים, הדקים והצורכים מעט חשמל ADXL335, ADXL345, ו-ADXL346 מתוצרת Analog Devices מתאימים מאוד ליישומים כאלה.
המאמר הזה, המבוסס על מחקר של המאפיינים של כל צעד שאדם עושה, מתאר דגם ייחוס שבו משתמשים במד התאוצה עם שלושה צירים ADXL345 במד צעדים עם מלוא הפונקציות שיכול לזהות ולספור צעדים, וגם למדוד מרחק, מהירות, ובמידה מסוימת קלוריות שנשרפות.
החוצץ הקנייני (הוגשה בקשה לפטנט) מסוג ראשון נכנס אחרון יוצא (FIFO) עם 32 רמות על שבב של ADXL345 יכול לאחסן נתונים ולבצע עליהם פעולות עבור יישומים של מד הצעדים כדי לצמצם את ההתערבות של המעבד המארח, ובכך לחסוך חשמל במערכת – שיקול חשוב במכשירים ניידים. הרזולוציה שלו, 13 סיביות (4 mg/LSB), מאפשרת למדי הצעדים למדוד אפילו הליכה במהירות איטית (שבה כל צעד מייצג בערך 55 mg של שינוי תאוצה) עם דיוק סביר.
הבנת המודל
מבין המאפיינים שאפשר להשתמש בהם לזיהוי ריצה או הליכה, בחרנו בתאוצה כפרמטר הרלבנטי. שלושת רכיבי התנועה של אדם (והצירים הקשורים אליהם) הם קדימה (גלגול), אנכי (סבסוב) והצידה (עלרוד), כפי שמראה איור 1. ADXL345 חש בתאוצה לאורך שלושת הצירים שלו: x, y, ו-z. מד הצעדים יימצא בכיוון לא ידוע, כך שאסור שהדיוק של המדידה יהיה תלוי באופן קריטי בקשר בין צירי התנועה וציר המדידה של מד התאוצה.
נחשוב על טיבה של ההליכה. איור 2 מציג צעד בודד, המוגדר כמחזור יחידה של התנהגות הליכה, ומראה את הקשר בין כל שלב של מחזור ההליכה והשינוי בתאוצה האנכית ובתאוצה קדימה.
איור 3 מראה דפוס טיפוסי של מדידות x, y ו-z המתאימות לתאוצה אנכית, קדימה והצידה של אדם רץ. בציר אחד לפחות יהיו שינויי תאוצה מחזוריים גדולים יחסית, בלי קשר לאופן הענידה של מד הצעדים, כך שזיהוי נקודות שיא ואלגוריתם להחלטה דינמית על ערכי הסף של התאוצה בכל שלושת הצירים חיוניים לזיהוי מחזור יחידה של הליכה או ריצה.
האלגוריתם
פרמטר הצעדים
מסנן דיגיטלי: תחילה נחוץ מסנן דיגיטלי כדי להחליק את האותות המוצגים באיור 3. אפשר להשתמש בארבעה רגיסטרים ויחידת סיכום, כפי שמראה איור 4. אפשר, כמובן, להשתמש ביותר רגיסטרים כדי להחליק יותר את נתוני התאוצה, אבל זמן התגובה יהיה איטי יותר.
איור 5 מדגים את הנתונים המסוננים מהציר הכי פעיל של מד צעדים שעונד אדם הולך. הערך בין נקודות שיא יהיה גבוה יותר לאדם רץ.
סף דינמי ודיוק דינמי: המערכת מעדכנת ברציפות את ערכי המכסימום והמינימום של התאוצה בשלושת הצירים כל 50 דגימות. הערך הממוצע, (Max + Min)/2, נקרא רמת הסף הדינמית. ב-50 הדגימות הבאות, רמת הסף הזאת משמשת להחלטה האם נצעדו צעדים. בגלל שהוא מתעדכן כל 50 דגימות, הסף הוא דינמי. הבחירה הזאת ניתנת להתאמה ומספיק מהירה. בנוסף לסף הדינמי, משתמשים גם בדיוק דינמי לסינון נוסף כפי שמראה איור 6.
רגיסטר הזזה ליניארי והסף הדינמי משמשים להחלטה האם נצעד צעד בפועל. רגיסטר ההזזה הליניארי כולל שני רגיסטרים, רגיסטר sample_new ורגיסטר sample_old. הנתונים שבהם נקראים sample_new ו-sample_old, בהתאמה. כשמגיעה דגימת נתונים חדשה, הנתונים sample_new מועברים לרגיסטר sample_old ללא תנאי. אולם, ההחלטה האם הנתונים sample_result יועברו לרגיסטר sample_new תלויה בתנאי: אם השינויים בתאוצה גדולים מדיוק מוגדר מראש, תוצאת הדגימה האחרונה, sample_result, מועברת לרגיסטר sample_new; אחרת, הרגיסטר sample_new יישאר ללא שינוי. קבוצת רגיסטרי ההזזה יכולה כך לסלק את רעש התדר הגבוה ולגביר את הדיוק של ההחלטה.
צעד מוגדר כמתרחש אם יש שיפוע שלילי של גרף התאוצה (sample_new < sample_old) כשעקומת התאוצה חוצה מתחת לסף הדינמי.
זיהוי נקודות שיא: מונה הצעדים מחשב את הצעדים מציר x, ציר y או ציר z, תלוי באיזה ציר השינוי בתאוצה הוא הגדול ביותר. אם השינויים בתאוצה קטנים מדי, מונה הצעדים יסלק אותם.
מונה הצעדים יכול לפעול היטב באמצעות שימוש באלגוריתם הזה, אבל לפעמים הוא נראה רגיש מדי. כשמד הצעדים רועד מאוד מהר או מאוד לאט מסיבה שאינה ריצה או הליכה, מונה הצעדים יחשוב גם את זה לצעד. יש להתעלם מהרעידות האלה הלא תקפות האלה כדי למצוא את הצעדים הקצביים האמיתיים. כדי לפתור את הבעיה הזאת משתמשים בחלון זמן ובוויסות ספירה.
חלון הזמן משמש לסילוק הרעידות הלא תקפות. אנו מניחים שאנשים יכולים לרוץ במהירות של עד חמישה צעדים בשנייה וללכת בקצב איטי של צעד אחד כל שתי שניות. לכן האינטרוול בין שני צעדים תקפים מוגדר כנמצא בחלון הזמן [0.2 עד 2.0 שניות].
הפונקציה של קצב נתוני פלט הניתן לבחירה על ידי המשתמש שנמצאת ב-ADXL345 עוזרת ביישום חלון הזמן. טבלה 1 מראה את קצב הנתונים (וצריכת הזרם) הניתנים להגדרה עם TA = 25°C, VS = 2.5 V ו VDD I/O = 1.8 V.
האלגוריתם הזה משתמש בקצב נתונים של 50 הרץ (20 מילי שניות). רגיסטר בשם interval רושם כמה פעמים הנתונים התעדכנו במשך שני הצעדים. אם הערך של אינטרוול הוא בין 10 ל-100, המשמעות היא שהזמן בין שני צעדים נמצא בחלון התקף; אחרת, האינטרוול נמצא מחוץ לחלון הזמן והצעד לא תקף.
ויסות ספירה קובע האם צעדים הם חלק מדפוס קצבי. למונה הצעדים יש שני מצבי עבודה: ויסות מחפש וויסות נמצא. כשמונה הצעדים מתחיל לפעול, הוא פועל במצב ויסות מחפש. נניח שקיים וויסות נכנס אחרי ארבעה צעדים תקפים רצופים. אז התוצאה מרועננת ומוצגת, ומונה הצעדים יפעל במצב ויסות נמצא. כשהוא פועל במצב זה, ספירת הצעדים תרוענן אחרי כל צעד תקף. אבל אם נמצא אפילו צעד לא תקף אחד, מונה הצעדים יחזור למצב ויסות מחפש ויחפש ארבעה צעדים תקפים רצופים.
איור 7 מראה את תרשים הזרימה של האלגוריתם של הפרמטרים של הצעדים.
פרמטר המרחק
אחרי חישוב הפרמטרים של הצעדים לפי האלגוריתם שלעיל, אפשר להשתמש במשוואה 1 כדי לקבל את פרמטר המרחק.
(1) מרחק שווה למספר הצעדים כפול המרחק של כל צעד
המרחק של כל צעד תלוי במהירות ובגובה של כל משתמש. אורך הצעד יהיה ארוך יותר אם המשתמש גבוה יותר או רץ במהירות גבוהה יותר. דגם הייחוס מעדכן את הפרמטרים של המרחק, המהירות והקלוריות כל שתי שניות. לכן, אנו משתמשים בצעדים שנמנו בכל שתי שניות כדי לקבוע את אורך הפסיעה הנוכחית. טבלה 2 מראה את נתוני הניסוי ששימשו לקביעת הפסיעה הנוכחית.
אפשר לחשב באופן מדויק אינטרוול של שתי שניות ממספר הדגימות. בהתייחס לקצב הנתונים של 50 הרץ, המעבד יכול לשלוח את הפקודה המתאימה למחשב כל 100 דגימות. המחשב משתמש במשתנה בשם m_nLastPedometer כדי לרשום את ספירת הצעדים בתחילתו של כל אינטרוול של שתי שניות ובמשתנה בשם m_nPedometerValue כדי לרשום את ספירת הצעדים בסופו של כל אינטרוול של שתי שניות. אז מחושבים הצעדים לשתי שניות על ידי m_nPedometerValue פחות m_nLastPedometer.
למרות שקצב הנתונים הוא 50 הרץ, בזכות חוצץ ה-FIFO על שבב של ADXL345 המעבד לא צריך לקרוא את הנתונים כל 20 מילי-שניות ובכך מפחית את העומס על המעבד המארח. לחוצץ יש ארבעה מצבים: מעקף, FIFO, זרם וטריגר. במצב FIFO, נתונים מהמדידות של הצירים x, y ו-z מאוחסנים בחוצץ. כשמספר הדגימות בחוצץ שווה לרמה המצוינת בסיביות הדגימות של הרגיסטר FIFO_CTL, פסיקת סימן המים מופעלת. כפי שנאמר קודם לכן, אנשים יכולים לרוץ במהירות של עד חמישה צעדים לשנייה, כך שצריך לרענן את התוצאה כל 0.2 שניות כדי להראות את התוצאה בזמן אמת. המעבד צריך להביא נתונים מה-ADXL345 רק כל 0.2 שניות. אפשר להעיר אותו באמצעות פסיקת סימן מים. גם הפונקציות האחרות של חוצץ ה-FIFO מאוד שימושיות. באמצעות המצב טריגר, החוצץ יכול ליידע אותנו מה קורה לפני הפסיקה. בפתרון המוצע לא משתמשים בשתי הפונקציות האחרות של החוצץ ולכן לא נעסוק בהן יותר.
פרמטר המהירות
מהירות שווה מרחק חלקי זמן, לכן אפשר להשתמש במשוואה 2 כדי לקבל את פרמטר המהירות, משום שהצעדים בשתי שניות והפסיעה חושבו לפי האלגוריתם שלעיל.
(2) מהירות שווה צעדים בשתי שניות כפול (פסיעה חלקי שתי שניות)
פרמטר הקלוריות
אין אמצעי מדויק לחישוב קצב ההוצאה של קלוריות. כמה מהגורמים שקובעים זאת הם משקל הגוף, עוצמת האימון הגופני, רמת הכושר הגופני וחילוף החומרים. אבל אנו יכולים להעריך זאת באמצעות קירוב מקובל. טבלה 3 מראה קשר טיפוסי בין הוצאת קלוריות ומהירות ריצה.
מטבלה 3, אפשר לקבל את (3).
(3) קלוריות (קלוריות לק”ג לשעה) שווה 1.25 כפול מהירות ריצה (קמ”ש)
היחידה של פרמטר המהירות שלעיל היא מטר בשנייה. הפיכת קמ”ש למטר בשנייה נותנת את משוואה 4.
(4) קלוריות (קלוריות לק”ג לשעה) שווה 1.25 כפול מהירות (מטר בשנייה) כפול (3600/1000) שווה 4.5 כפול מהירות (מטר בשנייה).
פרמטר הקלוריות יעודכן כל שתי שניות באמצעות הפרמטרים של המרחק והמהירות. לכן, כדי להביא בחשבון את המשקל של ספורטאי נתון, אפשר להמיר את משוואה 4 למשוואה 5 כמצוין. המשקל (ק”ג) הוא קלט מהמשתמש, ושעה אחת שווה ל-1800 אינטרוולים של שתי שניות.
(5) קלוריות (קלוריות בשתי שניות) שווה 4.5 כפול מהירות כפול משקל חלקי 1800
אם המשתמש עושה הפסקה במקום אחרי הליכה או ריצה, לא יהיה שינוי בצעדים ובמרחק, המהירות תהיה אפס, ואז אפשר להשתמש לקלוריות שהוצאו במשוואה 6 משום שהוצאת הקלוריות היא בסביבות 1 קלוריה לק”ג לשעה בזמן מנוחה.
(6) קלוריות (קלוריות בשתי שניות) שווה 1 כפול משקל חלקי 1800
לבסוף, אנו יכולים לחבר ביחד את הקלוריות מכל האינטרוולים של שתי שניות כדי לקבל את סך הקלוריות שהוצאו.
חיבור החומרה
קל לחבר את ADXL345 לכל מעבד באמצעות פרוטוקולי התקשורת הדיגיטלית I2C® או SPI. איור 8 מראה סכמה פשוטה של ציוד ההדגמה, המופעל באמצעות סוללות 3 וולט. הפין /CS של ADXL345 מחובר ל-VS בלוח כדי לבחור מצב I2C. מיקרו בקר אנלוגי מדויק זול, ADuC7024, משמש לקריאת נתונים מ-ADXL345, יישום האלגוריתם ושליחת התוצאות למחשב באמצעות UART. SDA ו-SCL, הנתונים והשעון לערוץ של I2C, מחוברים מ-ADXL345 אל הפינים המתאימים של ADuC7024. שני פיני פסיקות של ADXL345 מחוברים לכניסות IRQ של ADuC7024 כדי ליצור אותות פסיקה שונים ולהעיר את המעבד.
ממשק המשתמש
ממשק המשתמש מציג את נתוני הבדיקה ומגיב לפקודות מהמפעיל. היציאה הטורית צריכה להיות פתוחה ויש להפעיל את חיבורי התקשורת אחרי שממשק המשתמש פועל. לאחר מכן ההדגמה יכולה לפעול ברציפות. איור 9 מראה את הדגמת הבדיקה כשהמשתמש הולך או רץ עם מד הצעדים. המשתמשים יכולים להזין את נתוני הגובה והמשקל שלהם. הפרמטרים של המרחק, המהירות והקלוריות יחושבו על סמך הנתונים האלה.
סיכום
ADXL345 הוא מד תאוצה מצוין ליישומי מד צעדים. מדי הצעדים שמשתמשים בו מנצלים את מארז הפלסטיק הקטן והדק שלו (3 על 5 על 0.95 מ”מ) ואפשר למצוא אותם במכשירים רפואיים, וגם במכשירי צריכה אלקטרוניים מפוארים. צריכת החשמל הנמוכה שלו, 40 מיקרו אמפר במצב מדידה ו-0.1 במצב המתנה עושה אותו לבחירה אידיאלית למוצרים המופעלים בסוללות. חיסכון ניכר בחשמל מקורו בחוצץ ה-FIFO המוטבע, שמצמצם את העומס על המעבד המארח. וכן, אפשר להשתמש בקצב נתוני הפלט הניתן לבחירה כדי לחסוך בטיימר במעבד. הרזולוציה של 13 סיביות מאפשרת לזהות שינויים קטנים בין נקודות שיא, וזה מאפשר מדי צעדים עם דיוק גבוה. לבסוף, השילוב של פונקציית הפלט משלושה צירים עם האלגוריתם המתואר לעיל מאפשר למשתמשים לענוד את מד הצעדים כמעט בכל מקום ומצב.
כמה רעיונות נוספים: אם היישום רגיש מאוד לעלות, או אם מעדיפים מד תאוצה עם פלט אנלוגי, מומלץ ADXL335 – מד תאוצה תלת צירי מלא קטן, דק, עם צריכת חשמל נמוכה ועם פלט מתח מותנה אותות. אם יש חשיבות קריטית לגודל של המעגל המודפס, מומלץ ADXL346. המכשיר הזה, שיש לו צריכת חשמל נמוכה ויותר פונקציות מובנות מ-ADXL345, מסופק במארז פלסטיק קטן ודק (3 על 3 על 0.95 מ”מ). מתח ההזנה שלו נע בין 1.7 ל-2.75 וולט.
המחבר
ניל ז’או, הוא מהנדס יישומי שטח בצוות התמיכה ביישומים של ADI בסין, שם הוא עובד יותר משנתיים. הוא אחראי על התמיכה הטכנית של קבוצת מוצרי וטכנולוגיות הליבה של ADI ברחבי סין. ניל סיים את לימודיו באוניברסיטת בייהאנג בינואר 2008 עם תואר שני בתקשורת ומערכות מידע.