How to Read the Signal from a Hall Effect Sensor Using an Arduino

כיצד לקרוא את האות מחיישן אפקט הול באמצעות ארדואינו

חיישני אפקט הול הם אחת מאפשרויות המשוב שאנו מציעים ב... מפעילים ליניאריים כדי לספק מידע על מיקום ומהירות. שלנו PA-04-HS ו PA-100 יש חיישני אפקט הול ביחידות הסטנדרטיות. בעוד שכמה מהמפעילים האחרים שלנו ניתנים להזמנה בהתאמה אישית עם חיישני אפקט הול.

עיינו במגוון מיקרו-בקרי ארדואינו שלנו לשליטה אולטימטיבית במפעילים!

מהו חיישן אפקט הול?

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

Hall effect sensors 

כיצד קוראים את אותות הול אלה?

כיצד להשתמש בחיישן אפקט הול

בעת קריאת אות דיגיטלי במיקרו-בקר ישנן שתי שיטות עיקריות; פיקוח (polling) ופסיקות (interrupts). פיקוח (polling) הוא שיטה מתוכנתת שבה המיקרו-בקר בודק מעת לעת את מצב הקלט כדי לראות אם חל שינוי. בעוד שפסיקות הן מנגנון חומרה שמעביר מיד את מוקד התוכנית של המיקרו-בקר כאשר האות משתנה בקלט. לכל אחת משיטות אלו יתרונות וחסרונות משלה, ולכל אחת מהן יש יישומים שהיא מתאימה להם יותר. במקרה שלנו, נרצה לדעת את הרגע המדויק שבו אות משנה מצב, לכן נשתמש בפסיקות. על מנת להשתמש בחיישן אפקט הול עם... מיקרו-בקרים של ארדואינו נעשה שימוש בפסיקה. על ידי יצירת ISR או שגרת שירות פסיקות, ניתן לגרום לארדואינו לבצע קטע קוד באופן מיידי כאשר מזוהה שינוי מוגדר בקלט מסוים. דוגמה ל-ISR עבור ארדואינו מוצגת להלן, גרסה שונה המכוונת את האותות שזוהו לנוריות LED היא דרך אחת לבדיקת חיישן אפקט הול.

תכנות ארדואינו לקריאת חיישני אפקט הול - שיטת פסיקה

// משתנים נדיפים גלובליים נדרשים כדי להעביר נתונים בין

// התוכנית הראשית ו-ISR

אות בייט נדיף A;
אות בייט נדיף B;

// הפינים שניתן להשתמש בהם עם פסיקות תלויים בלוח שאתה

// משתמשים
קלט בייט קבוע A = 2;
קלט בייט קבוע B = 3;

הגדרת ריק () {
// הפעל נגדים פנימיים על פיני הקלט
מצב_pin(קלטA, INPUT_PULLUP);
מצב_pin(inputB, INPUT_PULLUP);
// קרא את המצב ההתחלתי של הקלט
signalA = digitalRead(inputA);
אותB = קריאה דיגיטלית(קלטB);

// יזהה קצה עולה או יורד
attachInterrupt(digitalPinToInterrupt(inputA),signalA_ISR,CHANGE);
attachInterrupt(digitalPinToInterrupt(inputB),signalB_ISR,CHANGE);

}

לולאת ריק () {
// כאן ניתן להשתמש במידע האות בתוכנית
}

אות A_ISR (void) {
// כאשר מזוהה שינוי הוא תמיד יהיה

// למצב ההפוך מהמצב הנוכחי

אותA = !אותA;
}

אות B_ISR (void) {
אותB = !אותB;
}

ה-PA-04-HS שלנו מגיע עם משוב אפקט הול מובנה!

מה צריך להילקח בחשבון בבקשה?

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

בעיה שעלולה להיתקל בה בתוכנית עם ISR ארוך היא שה-ISR יופעל שוב לפני שהוא השלים את הקוד שהוא מכיל מהפעם הקודמת שהוא הופעל. מומלץ לשמור את כמות הקוד המינימלית הדרושה ב-ISR כדי לסייע במניעת בעיה זו.

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

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

מה קורה אם המיקרו-בקר אינו מהיר מספיק?

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