- רכיבים נדרשים:
- תיאור:
- תרשים מעגלים והסבר עבודה:
- עיצוב מעגלים ו- PCB באמצעות EasyEDA:
- חישוב והזמנת דוגמאות PCB באופן מקוון:
- הסבר על תכנות:
בפרויקט זה אנו הולכים לייצר מערכת פיקוח על סוללות רכב מבוסס PIC על גבי PCB. כאן תכננו PCB באמצעות EASYEDA סימולטור PCB מקוון ומעצב. זה מעגל ניטור סוללת הרכב משמש כדי לפקח על כחיה של סוללת רכב רק על ידי חיבור אותו לשקע החשמל על לוח המחוונים של מכונית. ל- PCB יש גם אפשרות להשתמש בו ככלי מדידת מתח או מד מתח ללא שימוש במטען לרכב USB. חיברנו כאן גוש מסוף למדידת המתח של מקורות חשמל אחרים, רק על ידי חיבור שני חוטים בו ממקור החשמל.
רכיבים נדרשים:
- מיקרו-בקר PIC PIC18F2520 -1
- לוח PCB מפוברק -1
- מחבר USB -1
- מחבר מסוף 2 פינים (אופציונלי) -1
- תצוגת שבעה קטעים של אנודה נפוצה (4 ב -1) -1
- טרנזיסטור BC557 -4
- נגד 1k -6
- נגד 2k -1
- נגד 100R -8
- קבלים 1000uF -1
- קבל 10uF -1
- בסיס IC 28 פינים -1
- בורגסטיקים נקבה -1
- 7805 ווסת מתח -1
- מטען USB לרכב -1
- נורית -1
- דיודת זנר 5.1 v -2
- כבל USB (מסוג B או תואם Arduino UNO) -1
- גביש 20 מגה-הרץ -1
- קבלים 33pF -2
תיאור:
בדרך כלל לא חשוב למדוד את כוח הסוללה ברכב בכל פעם, אך לעתים קרובות אנו צריכים לדעת על מתח הסוללה במהלך הטעינה, כדי לבדוק האם הטעינה שלו או לא. על ידי זה, אנו יכולים להגן על כשל בסוללה עקב מערכת הטעינה הפגומה. המתח של מצבר לרכב 12 וולט במהלך הטעינה הוא כ- 13.7 וולט. כדי שנוכל לזהות האם הסוללה שלנו נטענת היטב או לא ונוכל לחקור את הסיבות לכשל בסוללה. בפרויקט זה אנו הולכים להטמיע מד מתח לסוללה לרכב באמצעות מיקרו-בקר PIC. מצית לרכב סיגריות או מטען USB לרכב משמש להשגת מתח הסוללה לסיכת ה- ADC של המיקרו-בקר בעזרת מעגל מתח מחיצות. ואז תצוגה בת 4 ספרות עם 7 קטעיםמשמש להצגת ערך המתח של הסוללה. מעגל זה יכול למדוד את המתח עד 15 וולט.
כשמצבר לרכב נטען, אז המתח לאורך מסופי הסוללה מגיע למעשה מהאלטרנטור / מיישר, ולכן המערכת קוראת 13.7 וולט. אך כאשר הסוללה אינה נטענת או שהמנוע של המכונית אינו פועל, אז המתח לאורך מסוף הסוללה הוא מתח הסוללה בפועל סביב 12 וולט.
אנו יכולים גם להשתמש באותו מעגל למדידת המתח של מקורות כוח אחרים עד 15 וולט. לצורך כך הלחמנו את בלוק הטרמינל (בלוק פלסטיק בצבע ירוק) ב- PCB בו תוכלו לחבר שני חוטים ממקור החשמל ויכולים לפקח על המתח. בדוק את הסרטון בסוף, היכן הדגמנו אותו על ידי מדידת המתח של ספק כוח משתנה, בנק כוח USB ומתאם AC-DC של 12 וולט. בדוק גם במעגל צג הסוללות הפשוט ומעגל מטען הסוללות 12 וולט.
תרשים מעגלים והסבר עבודה:
במעגל ניטור מתח הסוללה הזה קראנו את מתח הסוללה לרכב באמצעות סיכה אנלוגית מובנית של מיקרו-בקר PIC וכאן בחרנו סיכה AN0 (28) של מיקרו-בקר דרך מעגל מחלק מתח. דיודת זנר של 5.1v משמשת גם להגנה.
תצוגה 4 ב -1 בת שבע קטעים משמשת להצגת הערך המיידי של מתח הסוללה לרכב המחובר ב- PORTB וב- PORTC של המיקרו-בקר. וסת מתח 5V, כלומר LM7805, משמש להפעלת כל המעגל כולל תצוגות שבעה קטעים. מתנד קריסטל 20 מגה-הרץ משמש לשעון המיקרו-בקר. המעגל מופעל על ידי מטען USB לרכב עצמו באמצעות LM7805. הוספנו יציאת USB ב- PCB, כך שנוכל לחבר ישירות מטען USB לרכב למעגל.
מטען USB לרכב או מצית סיגריות מספקים אספקה מוסדרת של 5 וולט משקע החשמל של 12 וולט של המכונית, אך עלינו למדוד את המתח האמיתי של מצבר לרכב כך ששיפרנו את מטען הרכב. עליך לפתוח את מטען ה- USB לרכב ואז למצוא את מסופי 5V (פלט) ו- 12V (קלט) ואז להסיר את חיבור 5V על ידי שפשוף אותו עם נייר חול או עם דבר קשה כלשהו וקצר את מסוף פלט ה- USB ישירות ל- 12V. ראשית פתח את חיבור 5 וולט מיציאת ה- USB במטען ה- USB לרכב ואז חבר את 12 וולט ליציאת ה- USB בה חובר 5 וולט. כפי שמוצג באיור למטה, חתכנו את החיבור האדום בעיגול, זה עשוי להיות שונה במטען הרכב שלך.
כדי לקבוע את תצורת ADC כאן בחרנו סיכה אנלוגית AN0 עם מתח ייחוס פנימי של 5V ו- F / 32 שעון להמרת ADC.
לחישוב מתח הסוללה לרכב מערך ADC השתמשנו בנוסחה הנתונה:
מתח = (ערך ADC / גורם נגד) * הפניה מתח איפה: ערך ADC = פלט של מחלק מתח (הומר לדיגיטלי על ידי מיקרו-בקר) גורם נגד = 1023.0 / (R2 / R1 + R2) // 1023 הוא ערך ADC מקסימלי (10- bit) מתח הפניה = 5 וולט // נבחר הפניה פנימית של 5 וולט
חישוב גורם הנגד:
בפרויקט זה אנו קוראים את מתח המצבר לרכב הנמצא (בדרך כלל) סביב 12v-14v. אז עשינו את הפרויקט הזה בהנחה שמקסימום 15v פירושו שניתן לקרוא את המערכת הזו מקסימום עד 15V.
אז במעגל השתמשנו נגד R1 ו- R2 בחלק מחלק המתח והערכים הם:
R1 = 2K
R2 = 1K
גורם נגד = 1023.0 * (1000/2000 + 1000)
גורם נגד = 1023.0 * (1/3)
גורם נגד = 341.0 עד 15 וולט
כך שהנוסחה הסופית לחישוב המתח תהיה כדלקמן, בה השתמשנו בקוד, שניתן בסוף מאמר זה:
מתח = (ערך ADC / 341.0) * 5.0
עיצוב מעגלים ו- PCB באמצעות EasyEDA:
כדי לתכנן מעגל לצג מתח סוללות לרכב, השתמשנו ב- EasyEDA, שהוא כלי EDA מקוון חינם ליצירת מעגלים ו- PCB בצורה חלקה. בעבר הזמנו מעט מעגלי PCB מ- EasyEDA ועדיין השתמשנו בשירותיהם מכיוון שמצאנו את כל התהליך, החל משרטוט המעגלים ועד להזמנת ה- PCB, נוחים ויעילים יותר בהשוואה ליצרני PCB אחרים. EasyEDA מציעה ציור מעגלים, סימולציה, עיצוב PCB בחינם ומציעה שירות PCB מותאם אישית באיכות גבוהה אך במחיר נמוך. עיין כאן בהדרכה המלאה כיצד להשתמש ב- EDA קל להכנת סכימות, פריסות PCB, הדמיית מעגלים וכו '.
EasyEDA משתפרת מיום ליום; הם הוסיפו תכונות חדשות רבות ושיפרו את חוויית המשתמש הכוללת, מה שהופך את EasyEDA לקלה יותר ושמישה לעיצוב מעגלים. בקרוב הם עתידים להשיק את גרסת שולחן העבודה שלה, שניתן להוריד ולהתקין במחשב שלך לשימוש לא מקוון.
ב- EasyEDA, אתה יכול להפוך את עיצובים המעגלים וה- PCB שלך לציבוריים כך שמשתמשים אחרים יוכלו להעתיק או לערוך אותם ויכולים להפיק תועלת משם. הפכנו גם את כל פריסות המעגל וה- PCB לציבוריות עבור צג מתח הסוללה לרכב זה , בדוק את הקישור שלהלן.:
easyeda.com/circuitdigest/PIC_based_Car_Battery_Monitoring_System-63c2d5948eaa48c5bcbbd8db49a6c776
להלן תמונת המצב של השכבה העליונה של פריסת ה- PCB מבית EasyEDA, באפשרותך להציג כל שכבה (למעלה, תחתון, טופסילק, חלק תחתון וכו ') של ה- PCB על ידי בחירת השכבה בחלון' שכבות '.
חישוב והזמנת דוגמאות PCB באופן מקוון:
לאחר השלמת העיצוב של PCB, תוכלו ללחוץ על סמל פלט הייצור , שייקח אתכם לדף הזמנת PCB. כאן תוכלו להציג את ה- PCB שלכם ב- Gerber Viewer או להוריד קבצי Gerber של ה- PCB שלכם ולשלוח אותם לכל יצרן, זה גם הרבה יותר קל (וזול יותר) להזמין אותו ישירות ב- EasyEDA. כאן תוכלו לבחור את מספר ה- PCB שאתם רוצים להזמין, כמה שכבות נחושת אתם צריכים, את עובי ה- PCB, את משקל הנחושת ואפילו את צבע ה- PCB. לאחר שבחרת בכל האפשרויות, לחץ על "שמור לעגלה" והשלם את ההזמנה, ואז תקבל את לוחות ה- PCB שלך כעבור כמה ימים.
אתה יכול להזמין ישירות PCB זה או להוריד את קובץ גרבר באמצעות קישור זה.
לאחר מספר ימים של הזמנת PCB קיבלתי את דגימות ה- PCB
לאחר קבלת ה- PCB התקנתי את כל הרכיבים הנדרשים על גבי PCB, ולבסוף יש לנו את מערכת ניטור הסוללות לרכב מוכנה, בדוק את המעגל הזה בעבודה בווידאו שניתן בסוף.
הסבר על תכנות:
התוכנית של פרויקט זה מעט קשה למתחילים. כדי לכתוב קוד זה אנו זקוקים לכמה קבצי כותרות. כאן אנו משתמשים ב- MPLAB X IDE לקידוד ומהדר XC כדי לבנות ולקמפל את הקוד. הקוד כתוב בשפה C.
בקוד זה קראנו את מתח הסוללה באמצעות סיכה אנלוגית וכדי לשלוט או לשלוח נתונים לתצוגת שבע קטעים בת 4 ספרות, השתמשנו בשגרה שרת שרת טיימר במיקרו-בקר PIC. כל החישוב למדידת המתח נעשה בשגרת התוכנית הראשית.
ראשית, בקוד כללנו כותרת ואז הגדרנו מיקרו-בקר PIC באמצעות Bits תצורה.
#לִכלוֹל
ואז הצהירו על משתנים וסיכות מוגדרות עבור שבעה קטעים
דלפק int לא חתום 2; מיקום חרם לא חתום = 0; תו לא חתום k = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int digit1 = 0, digit2 = 0, digit3 = 0, digit4 = 0; #define TRIS_seg1 TRISCbits.TRISC0 #define TRIS_seg2 TRISCbits.TRISC1 #define TRIS_seg3 TRISCbits.TRISC2 #define TRIS_seg4 TRISCbits.TRISC3 #define TRIS_led1 TRISAbits.TRISA2 #define TRIS_led2 TRISAbits.TRISA5 #define TRIS_led3 TRISAbits.TRISA0 #define TRIS_led4 TRISAbits.TRISA1 #define TRIS_led5 TRISAbits. TRISA………………
כעת יצרנו שגרת הפסקת טיימר להפעלת תצוגת שבעה קטעים:
בטל להפריע low_priority LowIsr (בטל) {אם (TMR0IF == 1) {counter2 ++; אם (מונה 2> = 1) {אם (מיקום == 0) {seg1 = 0; seg2 = 1; seg3 = 1; seg4 = 1;………………
עכשיו בפונקציה main () הריקנית, אתחלנו את הטיימר וההפרעה.
GIE = 1; // כניסת גלגלים לאפשר PEIE = 1; // דגל הפסקות היקפי T0CON = 0b000000000; // ערך prescaler לשים TMR0IE = 1; // להפריע להפעיל TMR0IP = 0; // הפרעת עדיפות TMR0 = 55536; // מונה התחלה לאחר ערך זה TMR0ON = 1;
ואז תוך כדי לולאה אנו קוראים קלט אנלוגי בסיכה האנלוגית וקוראים לפונקציה כלשהי לחישובים.
ואילו (1) {adc_init (); עבור (i = 0; i <40; i ++) {Value = adc_value (); adcValue + = ערך; } adcValue = (float) adcValue / 40.0; להמיר (adcValue); עיכוב (100); }
הפונקציה נתונה adc_init () משמשת לאתחול ADC
בטל adc_init () {ADCON0 = 0b00000011; // בחר ערוץ adc ADCON1 = 0b00001110; // בחר i / p אנלוגי ודיגיטלי ADCON2 = 0b10001010; // זמן שוויון להחזיק זמן מכסה ADON = 1; }
בהתחשב adc_value פונקציה משמשת לקרוא קלט מהפין האנלוגי המתח לחשב.
צף adc_value (ריק) {float adc_data = 0; בעוד (GO / DONE == 1); // התחלת נתוני סיביות גבוהים יותר ערך adc adc_data = (ADRESL) + (ADRESH << 8); // חנות פלט 10 סיביות adc_data = ((adc_data / 342.0) * 5.0); החזר adc_data; }
ופונקציית ההמרה הנתונה משמשת להמרת ערך מתח לערכים הנתמכים לפלח.
להמיר חלל (float f) {int d = (f * 100); ספרה 1 = d% 10; d = d / 10; digit2 = d% 10; d = d / 10; digit3 = d% 10; digit4 = d / 10; }
בדוק את הקוד השלם לפרויקט זה למטה עם סרטון הדגמה.