היי מיכאל.
כמה עצות כלליות:
חומרה:
*לבדוק בדפי הנתונים של רכיב ה-ADC איך נראה המעגל המומלץ ולהשוות מול המעגל שלך.
דגש מיוחד הוא על הקבלים שמוסיפים שם על רגלי ה-VCC ואם קיים מסנן כלשהו על הכניסות.
*אותו הדבר לגביי מייצב המתח שמזין את רכיב ה-ADC והחיישנים, לבדוק אם המעגל תוכנן לפי המלצות היצרן.
*אם לא מצויין משהו בדפי הנתונים אז בכללי אני מציע להוסיף קבל (משהו כמו 0.1uF)
על הדקי המתח של רכיב ה-ADC (בין רגל ה-Vcc לאדמה) כמה שיותר קרוב לרכיב עצמו.
*לבדוק אם אפשר לשנות את ההגבר של רכיב ה-ADC. זה יקטין את הרעש שנדגם על חשבון רגישות של המערכת.
*אם אנחנו מדברים כאן על רובוט - אם הדבר אפשרי, עדיף להפעיל את המנועים ממקור מתח נפרד משאר הלוגיקה
ולהרחיק את חוטי החיישנים ואת רכיב ה-ADC מהמנועים.
בד"כ פתרונות אנלוגים עובדים יותר טוב מפתרונות תוכנה, אבל תוכנה יותר זול ומהיר לבדוק אז
כמה טיפים נוספים:
תוכנה:
*הצורה הכי פשוטה להתעלם מרעש היא לאפס את הסיביות הנמוכות של הנתון שאתה מקבל מהחיישן.
עושים זאת ע"י פעולת AND בין הנתון למספר קבוע. לדוגמה:
- קוד: בחר הכל
input=input&0xFC; //clear 2 lower bits from 8bit number
פעולה זו מורידה את הרגישות של התוכנה לשינויים קטנים באות.
*דרך יעילה יותר לסינון רעשים היא לחשב ממוצע נע של האות, כלומר לחשב את הממוצע של מספר מסויים מהדגימות האחרונות ולפעול בתוכנה לפי הערך הממוצע שמתקבל.
שיטה זו לא פוגעת ברגישות אבל היא מגדילה את זמן התגובה של התוכנה לשינוי של האות, כך ששינויים מהירים (תדרים גבוהים) לא יקלטו.
(מסנן LP בחומרה יעשה עבודה דומה).
אורן.
...I think I am, therefore I am. I think