במדריך זה אנו הולכים לממשק חיישן FLEX עם מיקרו-בקר ATMEGA8. ב- ATMEGA8 נשתמש בתכונה 10bit ADC (אנלוגי להמרה דיגיטלית) כדי לבצע את העבודה הזו. כעת ה- ADC ב- ATMEGA אינו יכול לקבל קלט יותר מ + 5 V.
מהו חיישן להגמיש?
FLEX חיישן הוא מתמר אשר משנה את ההתנגדות שלו כאשר צורתו משתנה. זה מוצג באיור להלן.
חיישן זה משמש לחישת השינויים בליניאריות. לכן כאשר חיישן FLEX מכופף ההתנגדות מכופפת בצורה דרסטית. זה מוצג באיור להלן.
כעת לצורך המרת שינוי התנגדות לשינוי מתח, אנו נשתמש במעגל מחלק מתח. ברשת התנגדות זו יש לנו התנגדות קבועה אחת והתנגדות משתנה אחרת. כפי שמוצג באיור למטה, R1 כאן הוא התנגדות קבועה ו- R2 הוא חיישן FLEX הפועל כמתנגד. נקודת האמצע של הענף נלקחת למדידה. כאשר ההתנגדות R2 משתנה, ה- Vout משתנה איתו באופן ליניארי. אז עם זה יש לנו מתח שמשתנה עם ליניאריות.
כעת חשוב לציין שכאן, הקלט שנלקח על ידי הבקר לצורך המרת ADC הוא נמוך עד 50µAmp. אפקט טעינה זה של מחלק מתח מבוסס התנגדות חשוב מכיוון שהזרם הנובע מ- Vout של מחלק המתח מגדיל את אחוז השגיאה, לעת עתה איננו צריכים לדאוג להשפעת הטעינה.
אנחנו ניקח שני נגדים ויצור מעגל מפריד כך שעבור 25 וולט וולט נקבל וולט 5 וולט. אז כל שעלינו לעשות הוא להכפיל את ערך ה- Vout עם "5" בתוכנית על מנת לקבל את מתח הכניסה האמיתי.
רכיבים נדרשים
חומרה: ATMEGA8, ספק כוח (5V), מתכנת AVR-ISP, JHD_162ALCD (16x2LCD), קבל 100uF, קבלים 100nF (5 יח '), נגד 100KΩ.
תוכנה: Atmel studio 6.1, פרוגיספ או קסם פלאש.
תרשים מעגל והסבר עבודה
במעגל PORTD של ATMEGA8 מחובר ליציאת נתונים LCD. ב LCD 16x2 יש 16 פינים בכל מקום אם יש תאורה אחורית, אם אין אור אחורי יהיו 14 פינים. אפשר להפעיל או להשאיר את סיכות התאורה האחורית. כעת ב -14 הפינים ישנם 8 פינים נתונים (7-14 או D0-D7), 2 פינים לאספקת חשמל (1 & 2 או VSS & VDD או gnd & + 5v), סיכה שלישית 3 לבקרת ניגודיות (VEE שולט עד כמה הדמויות צריכות להיות עבות מוצג) ו- 3 סיכות בקרה (RS & RW & E).
במעגל תוכלו לראות שלקחתי רק שתי סיכות בקרה. ביט הניגודיות ו- READ / WRITE לא משמשים לעתים קרובות, כך שניתן לקצר אותם לקרקע. זה מכניס את LCD למצב הניגודיות והקריאה הגבוה ביותר. אנחנו רק צריכים לשלוט בסיכות ENABLE ו- RS כדי לשלוח תווים ונתונים בהתאם.
חיבורי ה- LCD עם ATmega8 הם כדלקמן:
PIN1 או VSS לקרקע
PIN2 או VDD או VCC ל- + 5v כוח
PIN3 או VEE לקרקע (נותן ניגודיות מרבית הטובה ביותר למתחילים)
PIN4 או RS (בחירת רישום) ל- PB0 של uC
PIN5 או RW (קריאה / כתיבה) לקרקע (מכניס את LCD למצב קריאה מקל על התקשורת עבור המשתמש)
PIN6 או E (אפשר) ל- PB1 של uC
PIN7 או D0 עד PD0 של uC
PIN8 או D1 עד PD1 של uC
PIN9 או D2 עד PD2 של uC
PIN10 או D3 ל- PD3 של uC
PIN11 או D4 עד D4 של uC
PIN12 או D5 ל- PD5 של uC
PIN13 או D6 עד PD6 של uC
PIN14 או D7 ל- PD7 של uC
במעגל אתה יכול לראות שהשתמשנו בתקשורת 8 ביט (D0-D7) אולם זה לא חובה, אנחנו יכולים להשתמש בתקשורת 4 ביט (D4-D7) אבל עם תוכנית תקשורת של 4 ביט הופכת להיות קצת מורכבת אז פשוט הלכנו עם 8 ביט תִקשׁוֹרֶת. (עיין גם במדריך זה: ממשק LCD 16x2 עם מיקרו בקר AVR)
אז מעצם התבוננות מהטבלה לעיל אנו מחברים 10 פינים של LCD לבקר בהם 8 פינים הם פינים של נתונים ו -2 פינים מיועדים לשליטה.
המתח על פני R2 אינו ליניארי לחלוטין; זה יהיה רעשני. כדי לסנן את קבלים הרעש ממוקמים על פני כל נגדים במעגל המחלק כפי שמוצג באיור.
סיר 1K כאן הוא להתאים את הדיוק של ADC. עכשיו בואו נדבר על ADC של ATMEGA8.
ב- 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 להתחיל בהמרה. ניתן להשבית ביט זה בתוכנית כשאנחנו צריכים לעצור את ההמרה.
הסבר על חיישן FLEX המתממשק עם ATmega8 צעד אחר צעד בקוד C המופיע להלן.