תוכן עניינים:
- שלב 1: מהו ADC?
- שלב 2: כיצד פועל ADC ב- AVR-Microcontroller
- שלב 3: נוסחת המרת ADC
- שלב 4: כיצד להגדיר את ADC ב- ATmega8?
- שלב 5: בחירת ADLAR
- שלב 6: בחירת ADCSRA
- שלב 7: אם אתה רוצה לקחת ערך ADC אתה צריך עבודה כלשהי המפורטת להלן
- שלב 8: הגדר ערך ADC
- שלב 9: הגדר את סיכת LED הפלט
- שלב 10: הגדר את חומרת ה- ADC
- שלב 11: אפשר ADC
- שלב 12: התחל המרות אנלוגיות לדיגיטליות
- שלב 13: WHILE לנצח
- שלב 14: בסוף קוד מלא
וִידֵאוֹ: היכרות עם ADC במיקרו -בקר AVR - למתחילים: 14 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
במדריך זה תדעו הכל ADC במיקרו -בקר AVR
שלב 1: מהו ADC?
ממיר ADC, או אנלוגי לדיגיטל, מאפשר להמיר מתח אנלוגי לערך דיגיטלי שניתן להשתמש בו על ידי מיקרו. ישנם מקורות רבים לאותות אנלוגיים שאולי תרצה למדוד. ישנם חיישנים אנלוגיים הזמינים למדידת טמפרטורה, עוצמת אור, מרחק, מיקום וכוח, רק כדי לציין כמה.
שלב 2: כיצד פועל ADC ב- AVR-Microcontroller
ה- AVR ADC מאפשר לבקר ה- AVR להמיר מתחים אנלוגיים לערכים דיגיטליים ללא מעט חלקים חיצוניים. ATmega8 כולל ADC קירוב רצוף של 10 סיביות. ATmega8 כולל ADC של 7 ערוצים ב- PortC. ל- ADC יש סיכת מתח אספקה אנלוגית נפרדת, AVCC. אסור ש- AVCC יבדל יותר מ- ± 0.3V מ- VCC. ניתן להפנות את התייחסות המתח חיצונית לפין AREF. AVCC משמש כהפניה למתח. ניתן להגדיר את ה- ADC לפעול באופן רציף (מצב הפעלה חופשית) או לבצע המרה אחת בלבד.
שלב 3: נוסחת המרת ADC
כאשר Vin הוא המתח על פין הקלט הנבחר ו- Vref הפניה למתח שנבחר
שלב 4: כיצד להגדיר את ADC ב- ATmega8?
הרשמים הבאים משמשים ליישום ADC ב- ATmega8
בחירת מרבב ADC
שלב 5: בחירת ADLAR
ADC שמאל התוצאה התוצאה ביט ה- ADLAR משפיע על הצגת תוצאת ההמרה של ADC ברשם הנתונים של ADC. כתוב אחד ל- ADLAR לשמאל התאם את התוצאה. אחרת, התוצאה מותאמת נכון
כאשר המרת ADC הושלמה, התוצאה נמצאת ב- ADCH ו- ADCL כאשר קוראים ADCL, רשם הנתונים של ADC אינו מתעדכן עד קריאת ADCH. כתוצאה מכך, אם התוצאה נשארת מותאמת ונדרשת לא יותר מ 8 סיביות דיוק, די לקרוא ADCH. אחרת, יש לקרוא את ADCL תחילה ולאחר מכן ADCH. ביטים לבחירת ערוצים אנלוגיים הערך של סיביות אלה בוחר אילו כניסות אנלוגיות מחוברות ל- ADC.
שלב 6: בחירת ADCSRA
• ביט 7 - ADEN: אפשר ADC כתיבת ביט זה לאחד מאפשרת את ה- ADC. על ידי כתיבתו לאפס, ה- ADC כבוי
• ביט 6 - ADSC: התחלת המרה ב- ADC במצב המרה בודדת, כתוב ביט זה לאחד כדי להתחיל כל המרה. במצב הפעלה חופשית, כתוב ביט זה לאחד כדי להתחיל את ההמרה הראשונה.
• ביט 5 - ADFR: ריצה חופשית ADC בחר כאשר ביט זה מוגדר (אחד) ה- ADC פועל במצב הפעלה חופשית. במצב זה, ה- ADC מדגם ומעדכן את רשימות הנתונים באופן רציף. ניקוי ביט זה (אפס) יסתיים מצב הפעלה חופשית.
• ביט 4 - ADIF: ADC Interrupt Flag ביט זה נקבע בעת השלמת המרת ADC ורשימות הנתונים מתעדכנות. הפרעה מלאה להמרת ADC מתבצעת אם מוגדרים סיבי ה- ADIE ו- I-bit ב- SREG. ADIF מוסר על ידי חומרה בעת ביצוע וקטור הטיפול בהפסקה המתאים. לחלופין, ADIF מוסר על ידי כתיבה של הגיון לדגל.
• ביט 3-ADIE: הפסק ADC הפסק כאשר ביט זה נכתב לאחד וה- I-bit ב- SREG מוגדר, הפרעת ADC המרה מלאה מופעלת.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Select Bits בהתאם לגליון הנתונים, יש להגדיר את מדד זה כך שתדר הכניסה של ADC יהיה בין 50 KHz ל- 200 KHz. שעון ה- ADC נגזר משעון המערכת בעזרת ADPS2: 0 סיביות אלה קובעות את גורם החלוקה בין תדר XTAL לבין שעון הקלט ל- ADC.
שלב 7: אם אתה רוצה לקחת ערך ADC אתה צריך עבודה כלשהי המפורטת להלן
- הגדר ערך ADC
- הגדר את סיכת LED הפלט
- הגדר את חומרת ה- ADC
- אפשר ADC
- התחל המרות אנלוגיות לדיגיטליות
- WILE לנצח
אם ערך ADC גבוה יותר ואז הגדר ערך, הפעל נורית LED אחרת כיבוי נורית
שלב 8: הגדר ערך ADC
קוד: uint8_t ADCValue = 128;
שלב 9: הגדר את סיכת LED הפלט
קוד: DDRB | = (1 << PB1);
שלב 10: הגדר את חומרת ה- ADC
הגדר את חומרת ה- ADC
זה נעשה באמצעות הגדרת סיביות ברשמי הבקרה של ה- ADC. ראשית, בואו נקבע את הערך הקדם -תווני ל- ADC. על פי גיליון הנתונים, יש להגדיר את הסדרן הזה כך שתדר הכניסה של ADC יהיה בין 50 KHz ל- 200 KHz. שעון ה- ADC נגזר משעון המערכת. עם תדר מערכת של 1 מגה -הרץ, מסדרון של 8 יוביל לתדר ADC של 125 קילו -הרץ. הגודל המוגדר מראש נקבע על ידי סיביות ADPS ברשם ADCSRA. על פי גליון הנתונים, כל שלושת הביטים של ADPS2: 0 חייבים להיות מוגדרים ל -011 כדי לקבל את 8 המקלחות.
קוד: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
לאחר מכן, בוא נקבע את מתח ההתייחסות ל- ADC. זה נשלט על ידי סיביות REFS ברשם ADMUX. להלן קובע את מתח ההתייחסות ל- AVCC.
קוד: ADMUX | = (1 << REFS0);
כדי להגדיר את הערוץ המועבר דרך המרבב ל- ADC, יש להגדיר את סיביות ה- MUX ברשם ADMUX בהתאם. מכיוון שאנו משתמשים ב- ADC5 כאן
קוד: ADMUX & = 0xF0; ADMUX | = 5;
על מנת להכניס את ה- ADC למצב הפעלה חופשית, הגדר את ביט ה- ADFR בשם הראוי ברשם ADCSRA:
קוד: ADCSRA | = (1 << ADFR);
שינוי אחרון בהגדרות ייעשה כדי להפוך את קריאת ערך ה- ADC לפשוטה יותר. למרות של- ADC יש רזולוציה של 10 סיביות, מידע רב זה לרוב אינו נחוץ. ערך זה של 10 סיביות מפוצל על פני שני רגיסטרים של 8 סיביות, ADCH ו- ADCL. כברירת מחדל, 8 הסיביות הנמוכות מערך ADC נמצאות ב- ADCL, כאשר השניים העליונים הם שני הביטים הנמוכים ביותר של ADCH. על ידי הגדרת ביט ADLAR ברשם ADMUX, נוכל ליישר את הערך ADC שמאלה. זה מכניס את 8 הסיביות הגבוהות ביותר של המדידה לרשום ADCH, והיתר במרשם ה- ADCL. אם לאחר מכן נקרא את רשם ADCH, נקבל ערך של 8 סיביות המייצג את מדידת 0 עד 5 וולט שלנו כמספר מ -0 עד 255. אנחנו בעצם הופכים את מדידת ה- ADC של 10 סיביות לאחת של 8 ביט. להלן הקוד להגדרת ביט ה- ADLAR:
קוד:
ADMUX | = (1 << ADLAR); זה משלים את ההתקנה של חומרת ADC עבור דוגמה זו. יש להגדיר עוד שני סיביות לפני שה- ADC יתחיל לבצע מדידות.
שלב 11: אפשר ADC
כדי להפעיל את ה- ADC, הגדר את bit ADEN ב- ADCSRA:
קוד: ADCSRA | = (1 << ADEN);
שלב 12: התחל המרות אנלוגיות לדיגיטליות
כדי להתחיל את מדידות ה- ADC, יש להגדיר את ביט ה- ADSC ב- ADCSRA:
קוד: ADCSRA | = (1 << ADSC);
בשלב זה, ה- ADC יתחיל לדגום ברציפות את המתח המוצג ב- ADC5. הקוד עד לנקודה זו ייראה כך:
שלב 13: WHILE לנצח
הדבר היחיד שנותר לעשות הוא לבדוק את ערך ה- ADC ולהגדיר את נוריות ה- LED שיציגו אינדיקציה גבוהה / נמוכה. מכיוון שלקריאת ADC ב- ADCH יש ערך מרבי של 255, ערך הבדיקה של th נבחר כדי לקבוע אם המתח גבוה או נמוך. הצהרת IF/ELSE פשוטה בלולאות FOR תאפשר לנו להדליק את הנורית הנכונה:
קוד
אם (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // הדלק LED
}
אַחֵר
{
PORTB & = ~ (1 << PB0); // כבה את ה- LED
}
שלב 14: בסוף קוד מלא
קוד:
#לִכלוֹל
int main (void)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // הגדר את LED1 כפלט
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // הגדר ADC טרום -מדד ל- 8 - // 125KHz קצב דגימה 1MHz
ADMUX | = (1 << REFS0); // הגדר הפניה ל- ADC ל- AVCC
ADMUX | = (1 << ADLAR); // שמאל את התוצאה של ADC כדי לאפשר קריאה קלה של 8 סיביות
ADMUX & = 0xF0;
ADMUX | = 5; // יש לשנות ערכי MUX לשימוש ADC0
ADCSRA | = (1 << ADFR); // הגדר ADC למצב ריצה חופשית
ADCSRA | = (1 << ADEN); // אפשר ADC
ADCSRA | = (1 << ADSC); // התחל המרות A2D תוך (1) // לולאה לנצח
{
אם (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // הפעל את LED1
}
אַחֵר
{
פורט & = ~ (1 << PB1); // כבה את LED1
}
}
החזר 0;
}
פרסם תחילה הדרכה זו לחץ כאן
מוּמלָץ:
היכרות עם GarageBand: 9 שלבים
היכרות עם GarageBand: GarageBand היא פלטפורמה שבה אתה יכול ליצור מוזיקה. אתה יכול לעשות כמעט כל דבר בפלטפורמה הזו, בין אם זה כדי ליצור את מוזיקת החלום שלך ובין אם זה לשכפל קטע מוזיקה שאתה אוהב. אבל זה לא קל בכל מקרה. וזו הסיבה שאני כאן
פולשי החלל במיקרופיתון במיקרו: ביט: 5 שלבים
Space Invaders ב- Micropython ב- Micro: bit: במאמרים הקודמים שלנו בחנו יצירת משחקים ב- GameGo, קונסולת משחקי רטרו ניידת שפותחה על ידי חינוך TinkerGen. המשחקים שיצרנו הזכירו משחקי נינטנדו ישנים. במאמר של היום, אנחנו הולכים לקחת צעד אחורה, כדי
כיצד ליצור פולשים לחלל במיקרו ביט: 4 שלבים
כיצד ליצור פולשים לחלל במיקרו ביט: אז השלב הראשון הוא ליצור את הספינה שלנו. אתה נכנס ל " בסיסי " והוסף " בהתחלה " לַחסוֹם. ואז אתה עובר ל " משתנים " ואתה יוצר משתנה שנקרא " SHIP " ובחר בלוק מתוך " משתנים " כרטיסייה t
לוח במיקרו -בקרה אחד: 8 שלבים
לוח במיקרו-בקר הכל: אחד בעיצוב הלוח הכולל-כל-אחד של המטרה, המטרה היא להיות פונקציונלית יותר מארדואינו, לאחר כ -100 שעות עיצוב החלטתי לשתף אותו עם הקהילה, אני מקווה שתעריכו את המאמץ ו תמכו בזה (שאלות או ב
שליטה במיקרו שלך: ביט עם Arduino IDE-לחצן ועוד GPIO: 3 שלבים (עם תמונות)
שליטה במיקרו שלך: ביט עם Arduino IDE-לחצן ועוד GPIO: בבלוג הקודם שלנו מאסטר שלך מיקרו: ביט עם Arduino IDE - Light LED, דיברנו על איך להתקין ספריית micro: bit ב- Arduino IDE וכיצד להנעת LED במיקרו: ביט עם Arduino IDE. במאמר זה, אנו הולכים לספר לכם h