תוכן עניינים:

טיימר לתכנות 8 ערוצים: 13 שלבים
טיימר לתכנות 8 ערוצים: 13 שלבים

וִידֵאוֹ: טיימר לתכנות 8 ערוצים: 13 שלבים

וִידֵאוֹ: טיימר לתכנות 8 ערוצים: 13 שלבים
וִידֵאוֹ: חושף לכם סוד ענק!!🍦😌 2024, יולי
Anonim
טיימר לתכנות 8 ערוצים
טיימר לתכנות 8 ערוצים
טיימר לתכנות 8 ערוצים
טיימר לתכנות 8 ערוצים
טיימר לתכנות 8 ערוצים
טיימר לתכנות 8 ערוצים

מבוא

אני משתמש בטווח המיקרו -בקר PIC של Microchip לפרויקטים שלי מאז 1993, וביצעתי את כל התכנות שלי בשפת מכלולים, באמצעות ה- Microchip MPLab IDE. הפרויקטים שלי נעים בין רמזורים פשוטים ונורות מהבהבות, לממשקי ג'ויסטיק USB לדגמי R/C ומנתחי מתגים המשמשים בתעשייה. הפיתוח ארך ימים רבים, ולפעמים אלפי שורות של קוד מכלול.

לאחר קבלת מטריקס מולטימדיה Flowcode 4 Professional, הייתי די סקפטי לגבי התוכנה. זה נראה קל מדי להאמין. החלטתי לנסות, ובדקתי את כל פקודות המאקרו השונות, כולן בהצלחה רבה. החלק הטוב ביותר בשימוש ב- Flowcode היה שניתן לפרגן פרויקטים פשוטים תוך לילה אחד. לאחר ששיחקתי עם ה- I²C ועם שעון בזמן אמת DS1307, החלטתי לעצב את טיימר 8 הערוצים באמצעות Flowcode. בהיותי לא פרויקט קטן וקל, האמנתי שזה יהיה פרויקט נהדר ללמד את עצמי Flowcode.

בחירת מעבד ומרכיבים אחרים

בשל מספר סיכות הקלט/פלט הנדרש, היה ברור כי יהיה צורך בהתקן של 40 פינים. PIC 18F4520 נבחר, בעיקר בזכות זיכרון התוכנה שלו 32K, ו -1536 בתים של זיכרון נתונים. כל הרכיבים המשמשים, הם התקנים סטנדרטיים של חורים, המאפשרים לבנות את המעגל על לוח Vero במידת הצורך. זה גם סייע בפיתוח על לוח לחם.

שלב 1: מטרות הפרויקט

מטרות הפרויקט
מטרות הפרויקט

מטרות

- שמירה על זמן מדויק, עם גיבוי סוללה.

- כל התוכניות והנתונים שישמרו, גם לאחר אובדן כוח.

- ממשק משתמש פשוט.

- גמישות תכנות.

שמירת זמן

מגורים באזור המועד להפסקות חשמל, תקן 50/60Hz מקווי החשמל לא יספיק לשמירה על זמן מדויק. שעון בזמן אמת היה חיוני, ולאחר שבדקתי מספר שבבי RTC, החלטתי על ה- DS1307 עקב תצורת המתנד הפשוטה ותצורת הגיבוי של הסוללה. שמירת זמן די מדויקת התקבלה באמצעות קריסטל 32.768 קילוהרץ בלבד המחובר ל- DS1307. הדיוק היה תוך 2 שניות במהלך תקופת ניסיון של חודשיים באמצעות 4 יצרנים שונים של קריסטלים.

שמירת נתונים

כל נתוני תוכנית הטיימר חייבים להישמר, גם בזמן הפסקת חשמל. עם עד 100 תוכנות שונות ונתוני תצורה שונים, התברר כי 256 הבייטים של ה- EEPROM המשולב של ה- PIC לא יהיו גדולים מספיק. 24LC256 I²C EEPROM משמש לאחסון כל מידע התכנות.

ממשק משתמש פשוט

ממשק המשתמש מורכב משני פריטים בלבד, צג LCD בגודל 16 x 4 קווים עם תאורה אחורית LED ומקלדת 4 x 3. ניתן לבצע את כל התכנות בלחיצת מספר כפתורים בלבד. התוספות לממשק הן זמזם פיצו קולי ותאורת רקע LCD מהבהבת חזותית.

שלב 2: גמישות תכנות

גמישות תכנות
גמישות תכנות

כדי להבטיח מספיק גמישות תכנית, הטיימר כולל 100 תוכניות שניתן להגדיר בנפרד. עבור כל תוכנית, ניתן להגדיר את זמן ההפעלה, זמן כיבוי, ערוצי פלט ויום בשבוע. לכל תוכנית שלושה מצבים:

- אוטומטי: זמן מופעל, כיבוי זמן, ערוץ פלט ויום בשבוע מוגדר.

- כבוי: ניתן להשבית את התוכנית האישית ללא מחיקת ההגדרות. כדי להפעיל את התוכנית שוב, פשוט בחר מצב אחר.

- יום/לילה: זמן מופעל, זמן כיבוי, ערוץ פלט ויום בשבוע מוגדר. עובד כמו מצב אוטומטי, אבל יעבוד

הפעל את הפלט רק בין הזמנים להפעלה וכיבוי כאשר הוא חשוך. זה מאפשר שליטה מלאה ביום/לילה גם כן

כמו הגמישות הנוספת להדליק אורות בשקיעה, ולכבות בזריחה.

דוגמה 1: ידליק אור לאחר השעה 20:00 ויכבה את האור בזריחה:

ביום: 20:00, כבוי: 12: 00, דוגמה 2: ידליק אור בשקיעה, ויכבה את האור בשעה 23:00.

ביום: 12:00

כבוי: 23:00

דוגמה 3: ידליק אור בשקיעה, ויכבה את האור עם הזריחה.

בתאריך: 12:01

כבוי: 12:00

אפשרויות נוספות זמינות, כולן עובדות באופן עצמאי מתוך 100 תוכניות ההפעלה/כיבוי.

ערוצי תכניות פעילים: במקום לכבות מספר תוכניות, ניתן להשבית ערוצי פלט בודדים ללא צורך לשנות את התוכניות.

כניסות עזר: שתי כניסות דיגיטליות זמינות, כדי לאפשר הפעלה של ערוצי פלט מסוימים למשך זמן מסוים. זה יכול למשל לשמש להדלקת אורות מסוימים כאשר מגיעים הביתה בשעת לילה מאוחרת, כאשר לוחצים על כפתור בשלט או כדי להדליק סדרת אורות אחרת כאשר מופעלת אזעקת הבית.

יציאות עזר: שני יציאות נוספות (מלבד 8 ערוצי הפלט) זמינים. ניתן לתכנת אותם להפעלה באמצעות ערוצי פלט מסוימים, או עם הכניסות הדיגיטליות. בהתקנה שלי, יש לי יציאות 6-8 השולטות בהשקיה שלי, שעובדת על 24V. אני משתמש בערוצים 6-8 כדי להפעיל את אחת מיציאות העזר, כדי להפעיל ספק כוח 24V למערכת ההשקיה.

ידני מופעל: כאשר במסך הראשי ניתן להשתמש בכפתורים 1-8 להפעלה או כיבוי ידני של ערוצים.

שלב 3: חומרה

חוּמרָה
חוּמרָה

ספק כוח: ספק הכוח כולל מיישר, קבל החלקה ונתיך 1 אמפר להגנה על עומס יתר. אספקה זו מוסדרת אז על ידי וסת 7812 ו- 7805. אספקת 12V משמשת להנעת ממסרי הפלט, וכל המעגלים האחרים מופעלים מהספק 5V. מכיוון שהווסת 7805 מחובר לפלט של הרגולטור 7812, יש להגביל את הזרם הכולל ל- 1 אמפר דרך הרגולטור 7812. רצוי להתקין רגולטורים אלה על גוף קירור מתאים.

אוטובוס I²C: למרות ש- Flowcode מאפשר שליטה על חומרה I²C, החלטתי להשתמש בתצורת I²C של התוכנה. זה מאפשר גמישות רבה יותר בהקצאות סיכות. למרות שהוא איטי יותר (50 קילוהרץ), הוא עדיין מתפקד מצוין בהשוואה לאוטובוס I²C החומרה. הן DS1307 והן 24LC256 מחוברים לאוטובוס I²C זה.

שעון בזמן אמת (DS1307): במהלך ההפעלה, רישום RTC 0 ו- 7 נקרא כדי לקבוע אם הוא מכיל נתוני זמן ותצורה תקפים. לאחר ההתקנה הנכונה, זמן ה- RTC נקרא והזמן נטען ב- PIC. זוהי הפעם היחידה בה נקרא הזמן מ- RTC. לאחר ההפעלה, דופק של 1 הרץ יופיע בסיכה 7 של ה- RTC. אות זה של 1 הרץ מחובר ל- RB0/INT0, ובאמצעות שגרת שירות להפסקת זמן ה- PIC מתעדכן כל שנייה.

EEPROM חיצוני: כל נתוני התוכנית והאפשרויות נשמרים ב- EEPROM החיצוני. נתוני EEPROM נטענים בעת ההפעלה, והעתק של הנתונים מאוחסן בזיכרון ה- PIC. נתוני EEPROM מתעדכנים רק לאחר שינוי הגדרות התוכנית.

חיישן יום/לילה: נגד רגיל תלוי אור (LDR) משמש כחיישן יום/לילה. מכיוון ש- LDRs מגיעים בצורות וזנים רבים, כולם עם ערכי התנגדות שונים באותם תנאי אור, השתמשתי בערוץ קלט אנלוגי כדי לקרוא את רמת האור. רמות היום וגם הלילה ניתנות להתאמה ומאפשרות גמישות מסוימת לחיישנים שונים. כדי להגדיר היסטריה כלשהי, ניתן להגדיר ערכים בודדים ליום וללילה. המצב ישתנה רק אם רמת האור תהיה מתחת ליום, או מעל לנקודות ההגדרה של הלילה, למשך יותר מ -60 שניות.

תצוגת LCD: נעשה שימוש בתצוגת 4 שורות ו -16 תווים, מכיוון שלא ניתן היה להציג את כל הנתונים בתצוגה בת 2 שורות. הפרויקט כולל כמה תווים מותאמים אישית, המוגדרים במאקרו LCD_Custom_Char.

כניסות עזר: שתי הכניסות נאגרות עם טרנזיסטור NPN. +12V ו- 0V זמינים גם במחבר, המאפשרים חיבורים גמישים יותר לחיבורים חיצוניים. כדוגמה, ניתן לחבר מקלט לשלט רחוק לספק.

יציאות: כל היציאות מבודדות חשמלית מהמעגל באמצעות ממסר 12V. הממסרים המשמשים, מדורגים ל- 250V AC, בעשרה אמפר. המגעים הפתוחים והסגורים בדרך כלל יוצאים למסופים.

לוח מקשים: לוח המקשים המשמש הוא לוח מקשים מטריקס 3 על 4, ומחובר PORTB: 2..7.

שלב 4: הפרעות לוח מקשים

לוח מקשים מפריע
לוח מקשים מפריע
לוח מקשים מפריע
לוח מקשים מפריע
לוח מקשים מפריע
לוח מקשים מפריע

רציתי לעשות שימוש בפסיקה של PORTB Interrupt on Change בכל לחיצה על מקש. לשם כך היה צורך ליצור הפרעה מותאמת אישית ב- Flowcode, על מנת להבטיח כיוון ונתוני PORTB יוגדרו נכון לפני ואחרי כל הפרעה בלוח המקשים. הפרעה נוצרת בכל פעם שלוחצים על לחצן או משחררים אותו. שגרת ההפסקה מגיבה רק כאשר לוחצים על מקש.

הפרעה בהתאמה אישית

אפשר קוד

portb = 0b00001110; trisb = 0b11110001;

intcon. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

קוד מטפל

if (intcon & (1 << RBIF))

{FCM_%n ();

portb = 0b00001110;

trisb = 0b11110001;

wreg = portb;

clear_bit (intcon, RBIF);

}

בעיות נמצאו

במהלך הפרעה, שגרת שירות ההפרעה חייבת, ללא תנאים, להתקשר לכל מאקרו אחר שעשוי לשמש איפשהו בשאר התוכנית. זה יוביל בסופו של דבר לבעיות הצפת מחסניות, מכיוון שההפסקה יכולה להתרחש במקביל לכך שהתוכנית הראשית נמצאת באותה תת -תוכנית. זה מזוהה גם כשגיאה רצינית לפי קוד Flowcode כשהקובץ מורכב.

בקוד המותאם אישית של לוח המקשים תחת GetKeyPadNumber, יש קריאה כזו למאקרו Delay_us, שתגרום להצפת מחסנית. כדי להתגבר על זה, הסרתי את הפקודה Delay_us (10), והחלפתי אותה ב -25 שורות של "wreg = porta;" פקודות. פקודה זו קוראת PORTA, וממקמת את הערך שלה במרשם W, רק כדי לקבל עיכוב. פקודה זו תורכב להוראה אחת הדומה ל- assembler movf porta, 0. עבור שעון 10MHz המשמש בפרויקט, כל הוראה תהיה 400ns, וכדי לקבל עיכוב של 10us, הייתי צריך 25 מהוראות אלה.

שים לב בשורה השנייה של איור 3: קוד מותאם אישית של GetKeypadNumber, שהפקודה המקורית delay_us (10) הושבתה עם "//". מתחת לזה, הוספתי את 25 "wreg = porta;" 25 שלי פקודות לקבל עיכוב חדש של 10us. ללא שיחות לכל פקודות מאקרו בתוך הקוד המותאם של Keypad_ReadKeypadNumber, כעת ניתן להשתמש במאקרו לוח המקשים בתוך שגרת שירות קטיעה.

יצוין כי רכיבי לוח המקשים Flowcode ו- eBlocks אינם משתמשים בנגדי המשיכה הסטנדרטיים בקווי הכניסה. במקום זאת, הוא משתמש בנגדים נפתחים של 100K. בשל הפרעות מסוימות שנמצאו בלוח המקשים במהלך הפיתוח, נגדי 100K הוחלפו כולם ב- 10K וכל נגדי 10K הוחלפו ב- 1K5. לוח המקשים נבדק לעבודה תקינה עם מוליכים של 200 מ מ.

שלב 5: שימוש בטיימר

שימוש בטיימר
שימוש בטיימר
שימוש בטיימר
שימוש בטיימר
שימוש בטיימר
שימוש בטיימר

כל המסכים מוגדרים כדי לציין את כל המידע הדרוש כדי שהמשתמש יוכל לבצע שינויים מהירים בהגדרות. קו 4 משמש לסיוע בניווט בין התפריטים ואפשרויות התוכנית. בסך הכל 22 מסכים זמינים במהלך פעולה רגילה.

שורה 1: זמן ומעמד

מציג את היום והשעה הנוכחיים, ואחריו סמלי סטטוס:

A - מציין כי קלט A A הופעל, וטיימר קלט Aux פועל.

B - מציין שקלט Aux B הופעל, וטיימר קלט A B פועל.

C - מציין כי יציאת Aux מופעלת C.

D - מציין כי יציאת Aux מופעלת.

} - מצב חיישן יום/לילה. אם קיים, מציין כי זה לילה.

קו 2: יציאות תוכנית

מציג את הערוצים שהופעלו על ידי התוכניות השונות. ערוצים מוצגים במספרי הפלט שלהם, ו- "-" מציין שהפלט הספציפי אינו מופעל. עדיין יופיעו כאן ערוצים שהושבתו ב"פלט תוכניות פעילים ", אך לא יוגדרו הפלטים האמיתיים.

קו 3: יציאות אמיתיות

מציג אילו ערוצים מופעלים על ידי התוכנות השונות, כניסות Aux B ו- B, או יציאות ידניות שהגדירו המשתמש. לחיצה על 0 תכבה את כל הפלטים שהופעלו באופן ידני ותאפס את טיימרים A & B של פלט Aux.

שורת 4: תפריט ואפשרויות מפתח (בכל התפריטים)

מציין את הפונקציה של המקשים "*" ו- "#".

החלק המרכזי מציין אילו מקשים מספריים (0-9) פעילים במסך שנבחר.

מצב הקלט של Aux Input A & B מוצג גם באמצעות סמל מתג פתוח או סגור.

ניתן להפעיל/לכבות את הפלט באופן ידני על ידי לחיצה על המקש המתאים בלוח המקשים.

בכל התפריטים, מקשי הכוכב וה- Hash משמשים לניווט בין אפשרויות התוכנית השונות. מקשי 0-9 משמשים להגדרת האפשרויות. כאשר מספר אפשרויות זמינות במסך יחיד או בתפריט תכנות, מקש ה- Hash משמש כדי לעבור בין האפשרויות השונות. האפשרות הנוכחית שנבחרה תמיד תסומן על ידי התו ">" בצד שמאל של המסך.

0-9 הזן ערכי זמן

1-8 שנה את בחירת הערוץ

14 36 שלב בתוכניות, צעד אחד אחורה, 4 צעדים אחורה 10 תוכניות, 3 צעדים קדימה, 6 צעדים קדימה 10

תוכניות

1-7 קבעו ימים בשבוע. 1 = יום ראשון, 2 = שני, 3 = שלישי, 4 = רביעי, 5 = חמישי, 6 = שישי, 7 = שבת

0 במסך הראשי, נקה את כל השינויים הידניים ואת טיימרי קלט A & קלט B. בתפריטים אחרים, שינויים

האפשרויות שנבחרו

# במסך הראשי, יבטל את כל הבקשות הידניות, טיימרים של קלט A וקלט B ופלט תוכניות, עד

האירוע הבא.

* ו- 1 אתחל את הטיימר

* ו- 2 נקה את כל התוכניות והאפשרויות, שחזר את ההגדרות לברירת המחדל.

* ו- 3 הכנס את הטיימר למצב המתנה. כדי להפעיל שוב את הטיימר, הקש על מקש כלשהו.

במהלך כניסות שגויות של כל ערך זמן, התאורה האחורית של ה- LCD תהבהב 5 פעמים כדי לציין שגיאה. במקביל, יישמע הזמזם. הפקודות יציאה והבא יפעלו רק כשהערך הנוכחי נכון.

תאורה אחורית LCD

בהפעלה ראשונית, תאורה אחורית של LCD תידלק למשך 3 דקות, אלא אם כן:

- יש תקלה בחומרה (EEPROM או RTC לא נמצא)

- הזמן לא נקבע ב- RTC

התאורה האחורית של LCD תידלק שוב למשך 3 דקות בכל קלט משתמש בלוח המקשים. אם התאורה האחורית של ה- LCD כבויה, כל פקודת לוח מקשים תפעיל תחילה את התאורה האחורית של ה- LCD, ותתעלם מהמקש שנלחץ. זה מבטיח שהמשתמש יוכל לקרוא את צג ה- LCD לפני השימוש בלוח המקשים. התאורה האחורית של LCD תידלק גם למשך 5 שניות אם כניסת Aux או A Input B מופעלת.

שלב 6: צילומי מסך בתפריט

צילומי מסך בתפריט
צילומי מסך בתפריט
צילומי מסך בתפריט
צילומי מסך בתפריט
צילומי מסך בתפריט
צילומי מסך בתפריט

בעזרת לוח המקשים ניתן לתכנת כל אחת מהאפשרויות בקלות. התמונות נותנות מידע על מה שכל מסך עושה.

שלב 7: תכנון המערכת

עיצוב המערכת
עיצוב המערכת

כל הפיתוח והבדיקות נעשו על קרש לחם. במבט על כל חלקי המערכת, פירקתי את המערכת בשלושה מודולים. החלטה זו נבעה בעיקר ממגבלות גודל ה- PCB (80 על 100 מ מ) של הגרסה החינמית של הנשר.

מודול 1 - ספק כוח

מודול 2 - לוח מעבד

מודול 3 - לוח ממסר

החלטתי שכל הרכיבים חייבים להיות ניתנים להשגה, וכי אינני רוצה להשתמש ברכיבי הרכבה על משטח.

נעבור על כל אחד מהם.

שלב 8: ספק כוח

ספק כוח
ספק כוח
ספק כוח
ספק כוח
ספק כוח
ספק כוח
ספק כוח
ספק כוח

ספק הכוח הוא ישר קדימה, ומספקים למעבד ולוחות הממסרים 12V ו- 5V.

הרכבתי את ווסת המתחים על כיורי חום הגונים, וגם השתמשתי בקבלים מוערכים לאספקה.

שלב 9: לוח מעבד

לוח מעבד
לוח מעבד
לוח מעבד
לוח מעבד
לוח מעבד
לוח מעבד
לוח מעבד
לוח מעבד

כל הרכיבים, למעט מסך LCD, לוח מקשים וממסרים מותקנים על לוח המעבד.

בלוקים מסופים נוספו כדי לפשט את החיבורים בין האספקה, שתי כניסות דיגיטליות וחיישן האור.

סיכות/שקעים לכותרת מאפשרים חיבורים קלים למסך ה- LCD ולוח המקשים.

עבור הפלט לממסרים, השתמשתי ב- ULN2803. הוא כבר מכיל את כל נגדי הנהיגה הנדרשים ודיודות flyback. זה הבטיח כי עדיין ניתן לייצר את לוח המעבד באמצעות הגרסה החינמית של Eagle. הממסרים מחוברים לשני ה- ULN2803. ULN2803 התחתון משמש ל -8 היציאות, וה- ULN2803 העליון לשתי יציאות העזר. לכל פלט עזר יש ארבעה טרנזיסטורים. החיבורים לממסרים הם גם באמצעות סיכות/שקעים לכותרת.

ה- PIC 18F4520 היה מצויד בשקע תכנות, על מנת לאפשר תכנות קל באמצעות מתכנת PicKit 3.

הערה:

תוכל להבחין כי הלוח מכיל IC נוסף של 8 פינים. ה- IC העליון הוא PIC 12F675, ומחובר לכניסה דיגיטלית. זה נוסף במהלך עיצוב ה- PCB. זה מקל על עיבוד מראש של הקלט הדיגיטלי. ביישום שלי, אחת הכניסות הדיגיטליות מחוברת למערכת האזעקה שלי. אם האזעקה נשמעת, אורות מסוימים נדלקים בבית שלי. חיבור ומערכת האזעקה שלי מנשקה נותן צפצופים שונים בצפירה. באמצעות PIC 12F675, כעת אני יכול להבחין בין זרוע/פירוק נשק לבין אזעקה אמיתית. ה- 12F675 מצויד גם בשקע תכנות.

סידרתי גם יציאת I2C באמצעות סיכה/שקע כותרת. זה יהיה שימושי בהמשך עם לוחות הממסרים.

הלוח מכיל כמה מגשרים, אותם יש להלחיד לפני התאמת שקעי ה- IC.

שלב 10: סיכום קוד זרימה

סיכום קוד זרימה
סיכום קוד זרימה
סיכום קוד זרימה
סיכום קוד זרימה
סיכום קוד זרימה
סיכום קוד זרימה

מכיוון שאני רגיל לעבוד ברמת הרשמה בהרכבה, לפעמים היה קשה ומתסכל להשתמש בפקודות המאקרו המרכיבות. זה נבע בעיקר מחוסר הידע שלי במבנה התכנות של Flowcode. המקומות היחידים בהם השתמשתי בלוקי C או ASM, היו הפעלת תפוקות בתוך שגרת הפרעה, ובשגרת Do_KeyPressed כדי להשבית/להפעיל את הפרעת לוח המקשים. ה- PIC ממוקם גם ב- SLEEP באמצעות בלוק ASM, כאשר ה- EEPROM או ה- RTC לא נמצא.

עזרה בנוגע לשימוש בפקודות I²C השונות, התקבלה כולם מתוך קבצי העזרה של Flowcode. נדרש לדעת בדיוק כיצד פועלים התקני I²C השונים, לפני שניתן יהיה להשתמש בהצלחה בפקודות. תכנון מעגל אכן דורש מהמעצב את כל גליונות הנתונים הרלוונטיים הזמינים. זה לא חסרון ב- Flowcode.

Flowcode באמת עמד במבחן, ומומלץ מאוד לאנשים שרוצים להתחיל לעבוד עם מגוון המעבדים של Microchip.

תכנות ותצורה של קוד זרימה עבור ה- PIC נקבעו לפי תמונות

שלב 11: לוח ממסר I2C אופציונלי

לוח ממסר I2C אופציונלי
לוח ממסר I2C אופציונלי
לוח ממסר I2C אופציונלי
לוח ממסר I2C אופציונלי
לוח ממסר I2C אופציונלי
לוח ממסר I2C אופציונלי

ללוח המעבד יש כבר חיבורי כותרת ל -16 ממסרים. יציאות אלו הן טרנזיסטורים אספנים פתוחים באמצעות שני שבבי ULN2803. ניתן להשתמש בהם להנעת הממסרים ישירות.

לאחר הבדיקות הראשונות של המערכת, לא אהבתי את כל החוטים בין לוח המעבד וממסרים. מכיוון שכללתי יציאת I2C בלוח המעבד, החלטתי לעצב את לוח הממסר כדי להתחבר ליציאת I2C. באמצעות שבב מרחיב יציאות פלט/פלט MCP23017 של 16 ערוצים ומערך טרנזיסטורים ULN2803, הפחתתי את החיבורים בין המעבד והמסרים ל -4 חוטים.

מכיוון שלא יכולתי להתאים 16 ממסרים על לוח PCB בגודל 80 על 100 מ מ, החלטתי להכין שני לוחות. כל MCP23017 משתמש רק ב -8 מתוך 16 יציאות. לוח 1 מטפל ב -8 היציאות ולוח 2 בשתי יציאות העזר. ההבדל היחיד בלוחות הוא הכתובות של כל לוח. ניתן להגדיר זאת בקלות עם מגשר מיני. לכל לוח יש מחברים לאספקת חשמל ונתוני I2C ללוח השני.

הערה:

במידת הצורך, התוכנה מספקת רק לוח אחד שיכול להשתמש בכל 16 היציאות. כל נתוני ממסר הפלט זמינים בלוח הראשון.

מכיוון שהמעגל אופציונלי ופשוט מאוד, לא יצרתי סכמטי. אם יש מספיק ביקוש, אוכל להוסיף אותו מאוחר יותר.

שלב 12: קישור RF אופציונלי

קישור RF אופציונלי
קישור RF אופציונלי
קישור RF אופציונלי
קישור RF אופציונלי
קישור RF אופציונלי
קישור RF אופציונלי

לאחר סיום הפרויקט הבנתי עד מהרה שאני חייב למשוך הרבה טיימרים של 220V AC לטיימר. פיתחתי קישור RF באמצעות מודולים סטנדרטיים של 315MHz שאיפשרו את הצבת הטיימר בתוך ארון, ולוחות הממסרים בתוך הגג, קרוב לכל חיווט 220V.

הקישור משתמש ב- AtMega328P שפועל במהירות 16MHz. התוכנה הן למשדר והן למקלט זהה, והמצב נבחר על ידי מיני מגשר.

מַשׁדֵר

המשדר פשוט מחובר ליציאת ה- I2C של המעבד. אין צורך בהתקנה נוספת, מכיוון שה- AtMega328P מקשיב לאותם נתונים כמו לוחות ממסר I2C.

הנתונים מתעדכנים אחת לשנייה ביציאת I2C, והמשדר שולח מידע זה דרך קישור ה- RF. אם המשדר לא יקבל נתוני I2C במשך כ -30 שניות, המשדר ישדר נתונים ברציפות כדי לכבות את כל הממסרים ליחידת המקלט.

ניתן לבחור כוח למודול המשדר בין 12V ל- 5V עם מגשר מיני על לוח המחשב. אני מפעיל את המשדר שלי באמצעות 12V.

מַקְלֵט

המקלט מאזין לנתונים מקודדים מהמשדר וממקם את הנתונים ביציאת I2C. לוח הממסרים פשוט מתחבר ליציאה זו ועובד כמו שהוא מחובר ללוח המעבד.

במידה והמקלט לא יקבל נתונים תקפים במשך 30 שניות, המקלט ישלח נתונים ברציפות על יציאת I2C כדי לכבות את כל הממסרים בלוחות הממסרים.

סכמטים

יום אחד, אם יש לזה ביקוש. שרטוט ה- Arduino אכן מכיל את כל המידע הנדרש לבניית המעגל ללא תרשים מעגלים.

טווח

בהתקנה שלי, המשדר והמקלט נמצאים במרחק של כ -10 מטרים זה מזה. הטיימר נמצא בתוך ארון, ויחידת הממסר על גבי התקרה.

שלב 13: מוצר סופי

מוצר סופי
מוצר סופי
מוצר סופי
מוצר סופי
מוצר סופי
מוצר סופי

היחידה הראשית הוכנסה לקופסת פרוייקטים ישנה. הוא מכיל את הדברים הבאים:

- שנאי 220V/12V

- לוח אספקת חשמל

- לוח מעבד

- תצוגת אל סי די

- לוח מקשים

- משדר קישור RF

- יחידת מקלט מרחוק ביתית נוספת המאפשרת לי להדליק/לכבות אורות באמצעות השלט

יחידת הממסר מורכבת מהדברים הבאים:

- שנאי 220V/12V

- לוח אספקת חשמל

- מקלט קישור RF

- 2 x לוחות ממסר I2C

כל הלוחות עוצבו באותו ממד, מה שמקל על ערימתם זה על זה עם מרווחי 3 מ מ.

מוּמלָץ: