בפרויקט זה אנו מכינים מד זרם לטווח נמוך באמצעות מיקרו-בקר ATMEGA8. ב- ATMEGA8 נשתמש בתכונה 10bit ADC (אנלוגי להמרה דיגיטלית) כדי לעשות זאת. למרות שיש לנו כמה דרכים אחרות להשיג את הפרמטר הנוכחי ממעגל, אנו נשתמש בשיטת טיפת התנגדות, מכיוון שזו הדרך הקלה והפשוטה ביותר להשיג פרמטר הנוכחי.
בשיטה זו אנו הולכים להעביר את הזרם שנדרש למדידה להתנגדות קטנה, בכך אנו מקבלים ירידה על פני ההתנגדות שקשורה לזרם הזורם דרכו. מתח זה על פני התנגדות מוזן ל- ATMEGA8 לצורך המרת ADC. עם זה יהיה לנו את הערך הנוכחי הדיגיטלי שיוצג על גבי LCD בגודל 16x2.
לשם כך נשתמש במעגל מחלק מתח. אנו הולכים להזין את הזרם באמצעות ענף ההתנגדות השלם. נקודת האמצע של הענף נלקחת למדידה. כאשר השינויים הנוכחיים יחול שינוי ירידה בהתנגדות שהיא ליניארית אליו. אז עם זה יש לנו מתח שמשתנה עם ליניאריות.
כעת חשוב לציין שכאן, הקלט שנלקח על ידי הבקר לצורך המרת ADC הוא נמוך עד 50µAmp. אפקט טעינה זה של מחלק מתח מבוסס התנגדות חשוב מכיוון שהזרם הנובע מ- Vout של מחלק המתח מגדיל את אחוז השגיאה עולה, לעת עתה איננו צריכים לדאוג להשפעת הטעינה.
רכיבים נדרשים
חומרה: ATMEGA8, ספק כוח (5 וולט), מתכנת AVR-ISP, JHD_162ALCD (16 * 2LCD), קבלים 100uF, קבלים 100nF (4 חלקים), נגד 100Ω (7 חלקים) או 2.5Ω (2 חלקים), נגד 100KΩ.
תוכנה: Atmel studio 6.1, פרוגיספ או קסם פלאש.
תרשים מעגל והסבר עבודה
המתח על פני R2 ו- R4 אינו ליניארי לחלוטין; זה יהיה רעשני. כדי לסנן את הרעש, קבלים ממוקמים על פני כל נגדים במעגל המחלק כפי שמוצג באיור.
ב- ATMEGA8 אנו יכולים לתת קלט אנלוגי לכל אחד מארבע הערוצים של PORTC, זה לא משנה איזה ערוץ נבחר שכן כולם זהים. אנו הולכים לבחור ערוץ 0 או PIN0 של PORTC. ב- ATMEGA8, ה- ADC הוא ברזולוציית 10 סיביות, כך שהבקר יכול לזהות שינוי מינימלי של Vref / 2 ^ 10, כך שאם מתח הייחוס הוא 5V נקבל תוספת יציאה דיגיטלית לכל 5/2 ^ 10 = 5mV. אז על כל תוספת של 5mV בכניסה תהיה לנו תוספת של אחת בפלט הדיגיטלי.
כעת עלינו להגדיר את רישום ה- ADC בהתבסס על התנאים הבאים:
1. קודם כל עלינו לאפשר את תכונת ה- ADC ב- ADC.
2. כאן הולכים לקבל מתח כניסה מרבי להמרת ADC הוא + 5V. כדי שנוכל להגדיר ערך מקסימלי או הפניה של ADC ל- 5V.
3. לבקר יש תכונת המרת טריגר שמשמעותה המרת ADC מתבצעת רק לאחר טריגר חיצוני, מכיוון שאיננו רוצים שנצטרך להגדיר את הרישומים לכך שה- ADC יפעל במצב ריצה חופשית רציפה.
4. עבור כל ADC, תדירות ההמרה (ערך אנלוגי לערך דיגיטלי) ודיוק הפלט הדיגיטלי הם פרופורציונאליים הפוכים. אז לדיוק טוב יותר של הפלט הדיגיטלי עלינו לבחור בתדר פחות. עבור שעון ADC רגיל אנו מגדירים את מכירה מוקדמת של ADC לערך מקסימלי (2). מכיוון שאנו משתמשים בשעון הפנימי של 1MHZ, השעון של ADC יהיה (1000000/2).
אלה ארבעת הדברים היחידים שאנחנו צריכים לדעת כדי להתחיל לעבוד עם ADC.
כל ארבעת התכונות הנ"ל נקבעים על ידי שני רושמים,
אדום (ADEN): יש להגדיר סיבית זו להפעלת תכונת ה- ADC של ATMEGA.
כחול (REFS1, REFS0): שני ביטים אלה משמשים לקביעת מתח הייחוס (או מתח הקלט המרבי שאנחנו הולכים לתת). מכיוון שאנחנו רוצים שיהיה מתח התייחסות 5V, יש להגדיר את REFS0 לפי הטבלה.
צהוב (ADFR): יש להגדיר סיבית זו כדי שה- ADC יפעל ברציפות (מצב ריצה חופשית).
PINK (MUX0-MUX3): ארבעת הביטים הללו נועדו לספר את ערוץ הקלט. מכיוון שאנחנו הולכים להשתמש ב- ADC0 או PIN0, אנחנו לא צריכים להגדיר סיביות כמו על ידי הטבלה.
BROWN (ADPS0-ADPS2): שלוש סיביות אלה מיועדות לקביעת ה- prescalar עבור ADC. מכיוון שאנו משתמשים ב- prescalar של 2, עלינו להגדיר סיבית אחת.
ירוק כהה (ADSC): סיבית זו מוגדרת עבור ADC להתחיל בהמרה. ניתן להשבית ביט זה בתוכנית כשאנחנו צריכים לעצור את ההמרה.