בפרויקט זה אנו הולכים ליצור מערכת התראת אש באמצעות מיקרו-בקר ATMEGA8 וחיישן אש. חיישן אש יכול להיות מכל סוג שהוא, אולם אנו משתמשים בחיישן אש מבוסס IR (אינפרא אדום). למרות שלחיישני אש מבוססי IR יש כמה חסרונות של אי דיוק, זו הדרך הזולה והקלה ביותר לאתר אש.
חיישני אש מבוססי IR הם בעלי ראיית חישה פחותה, ולכן אנו הולכים להרכיב את חיישן האש על מנוע סרוו. סרוו יבצע סיבובי מטוטלת של 180 מעלות. כאשר חיישן האש מותקן עליו, אנו מקבלים חזון חישה של מעל 270 מעלות. סרוו יסתובב ברציפות ובכך ייתן מערכת התראת אש מלאה בחדר. לדיוק רב יותר אנו יכולים להוסיף חיישן עשן למערכת. בכך נוכל לקבל דיוק גבוה יותר.
רכיבי מעגל
חומרה: + 5v ספק כוח, מנוע סרוו (sg90), ATMEGA8, BUZZER, כפתור, נגד 10KΩ, נגד 1KΩ, נגד 220Ω, קבלים 100nF, AVR-ISP מתכנת.
תוכנה: Atmel studio 6.1, פרוגיספ או קסם פלאש.
דיאגרמת מעגלים ועבודה
כדי שפיר הסרוב יעבור שמאלה כל הדרך אנחנו צריכים לתת 1/18 סיבוב על מנת הקצבה, וכדי שהסיבוב יסתובב עד שמאלה אנחנו צריכים לתת PWM עם מנת חובה של 2/18. אנו מתכנתים את ATMEGA8 כדי להוציא אות PWM שיסובב את סרוו ל -180 ואז ל -0 לאחר עיכוב מסוים.
במהלך הזמן המלא חיישן האש יהיה פעיל והבקר יהיה בכוננות מלאה. אם יש שריפה, החיישן מספק דופק גבוה הדופק הזה כאשר הוא מתגלה על ידי הבקר הוא מגדיר אזעקה. האזעקה תושבת על ידי לחיצה על כפתור איפוס המחובר אליו.
ב- atmega8 לשלושה ערוצי PWM, קבענו שלושה פינים. אנו יכולים לקחת פלט PWM רק בסיכות אלה בלבד. מאז אנחנו משתמשים PWM1 שאנחנו צריכים לקחת אות PWM ב פיני OC1A (PORTB 1 st PIN). כפי שמוצג בתרשים המעגל, אנו מחברים את אות הסרווו לסיכה OC1A. כאן דבר נוסף הוא מעל שלושה ערוצי PWM, שניים הם ערוצי PWM של 8 סיביות וערוץ PWM אחד של 16 סיביות. אנחנו הולכים להשתמש כאן בערוץ PWM של 16 סיביות.
ב- ATMEGA ישנן כמה דרכים לייצר PWM, כך הן
1. שלב PWM נכון.
2. מהיר PWM.
כאן נשמור על הכל פשוט, לכן נשתמש בשיטת FAW PWM כדי ליצור את אות ה- PWM.
ראשית לבחור את תדר ה- PWM, זה תלוי ביישום בדרך כלל, עבור נורית כל תדר גדול מ- 50Hz היה עושה. מסיבה זו אנו בוחרים בשעון הנגד 1MHZ. לכן אנו לא בוחרים שום prescalar. Prescalar הוא מספר שנבחר כל כך כדי לקבל שעון נגד פחות. לדוגמה, אם שעון המתנד הוא 8Mhz, אנו יכולים לבחור במאגר מקדים של '8' כדי לקבל שעון 1MHz למונה. המקלדת הנבחרת נבחרת על פי תדירות. אם אנו רוצים עוד פולסים לתקופת זמן עלינו לבחור במערכת prescalar גבוהה יותר.
כעת כדי להוציא את ה- PWM המהיר של שעון 50 הרץ מה- ATMEGA, עלינו לאפשר את הסיביות המתאימות ברישום " TCCR1B ".
כאן, CS10, CS11, CS12 (YELLOW) - בחר במקלדת המקדימה לבחירת שעון הנגד. הטבלה עבור prescalar המתאים מוצגת בטבלה שלהלן. אז לקידום מראש (שעון מתנד = שעון נגד).
אז CS10 = 1, שני ביטים אחרים הם אפס.
RED (WGM10-WGM13): משתנים לבחירת מצבי ייצור צורות גל, בהתבסס על הטבלה למטה, לקבלת PWM מהיר. יש לנו WGM11, WGM12 ו- WGM12 מוגדרים ל -1.
כעת אנו יודעים ש- PWM הוא אות עם מנת חובה שונה או זמני כיבוי מופעלים אחרים. עד כה בחרנו בתדירות ובסוג ה- PWM. הנושא המרכזי של פרק זה טמון בחלק זה. לקבלת מנת חובה שונה, אנו הולכים לבחור ערך בין 0 ל 255 (2 ^ 8 בגלל 8 סיביות). נניח שאנחנו בוחרים ערך 180, כאשר המונה מתחיל לספור מ- 0 ומגיע לערך 180, ייתכן שתגובת הפלט תופעל. הטריגר הזה עשוי להיות הפוך או לא הפוך. כלומר ניתן לומר שהפלט צריך להרים למעלה עם הגעה לספירה, או שאפשר לומר לו למשוך למטה כשהוא מגיע לספירה.
ירוק (COM1A1, COM1A0): בחירה זו של משיכה כלפי מעלה או מטה נבחרת על ידי סיביות CM1A0 ו- CM1A1.
כפי שמוצג בטבלה, כדי שהפלט יעלה גבוה בהשוואה והתפוקה תישאר גבוהה עד לערך המקסימלי. עלינו לבחור במצב היפוך לשם כך, לכן COM1A0 = 1; COM1A1 = 1.
כפי שמוצג באיור שלהלן, OCR1A (פלט השוואת רישום 1A) הוא הבייט המאחסן את הערך שבחר המשתמש. אז אם נשנה OCR1A = 180, הבקר מפעיל את השינוי (גבוה) כאשר המונה מגיע ל -180 מ- 0.
OCR1A חייב להיות 19999-600 עבור 180 מעלות ו- 19999-2400 עבור 0 מעלות.