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

מחוון טמפרטורת מעבד Raspberry Pi: 11 שלבים (עם תמונות)
מחוון טמפרטורת מעבד Raspberry Pi: 11 שלבים (עם תמונות)

וִידֵאוֹ: מחוון טמפרטורת מעבד Raspberry Pi: 11 שלבים (עם תמונות)

וִידֵאוֹ: מחוון טמפרטורת מעבד Raspberry Pi: 11 שלבים (עם תמונות)
וִידֵאוֹ: Mini UPS 5, 9, 12 Вольт на 10400 мАч, для роутеров, мини ПК, IP камер, тест емкости 2024, נוֹבֶמבֶּר
Anonim
מחוון טמפרטורת מעבד Raspberry Pi
מחוון טמפרטורת מעבד Raspberry Pi

בעבר הכנסתי מעגל מחוון מצב תפעולי פשוט של פטל פטל (להלן RPI).

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

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

- LED ירוק מופעל כאשר טמפרטורת המעבד נמצאת בטווח של 30 ~ 39 מעלות

- LED צהוב מציין שהטמפרטורה גדלה בטווח של 40 עד 45 מעלות

- LED האדום השלישי מראה שהמעבד הופך להיות קצת חם על ידי הגעה ל 46 ~ 49 מעלות

- עוד אדום אדום יהבהב כאשר הטמפרטורה עולה על 50 מעלות

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

על ידי שימוש במעגל זה, אינך בהכרח מבצע את הפקודה "vcgencmd measure_temp" לעתים קרובות במסוף הקונסולה.

מעגל זה יודיע על טמפרטורת המעבד הנוכחית ברציפות ובנוחות.

שלב 1: הכנת סכמטים

הכנת סכמטים
הכנת סכמטים

למרות שאתה יכול לשלוט על 4 נוריות ישירות על ידי שימוש בקודי פייתון בלבד, לוגיקות הבקרה של התוכנית יטענו RPI וכתוצאה מכך, טמפרטורת המעבד תעלה יותר מכיוון שאתה צריך להריץ קצת קוד פייתון מורכב ברציפות.

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

מעגל מחוון הטמפרטורה של המעבד (להלן INICATOR) כולל את החלקים העיקריים הבאים.

-שני מצמדים אופטו מחוברים לסיכות RPI GPIO כדי לקבל נתוני רמות טמפרטורה כגון 00-> LOW, 01-> בינוני, 10-> גבוה, 11-> צריך קירור.

-יציאות בקרה 74LS139 (או 74HC139, מפענח 2 עד 4 ומכפילים) (Y0, Y1, Y2, Y3) בהתאם לכניסות (A, B)

- כאשר הטמפרטורה היא בתוך 30 ~ 39 מעלות, פלט קוד פייתון 00 לסיכות GPIO. לכן 74LS139 מקבלים נתוני קלט 00 (A-> 0, B-> 0)

- בעת הזנת 00, פלט Y0 הופך לנמוך. (עיין בטבלת האמת של 74LS139)

- כאשר יציאת Y0 הופכת לנמוכה, היא מפעילה טרנזיסטור PNP 2N3906 וכתוצאה מכך, נורית ירוק מופעלת

- באופן דומה, Y1 (01 -> בינוני טמפרטורת המעבד) ידליק נורית צהובה וכן הלאה

- כאשר Y3 הופך לנמוך, DB140 מפעיל מעגל מהבהב LED NE555 (זהו מהבהב LED מבוסס 555 IC) שהוא עומס של טרנזיסטור PNP BD140

המרכיב החשוב ביותר במעגל זה הוא 74LS139 אשר מפענח קלט של 2 ספרות ל -4 פלט יחיד שונה כפי שמוצג בטבלת האמת להלן.

קלט | תְפוּקָה

G (אפשר) | ב | א | Y0 | Y1 | Y2 | Y3 |

H | X | X | H | H | H | H |

L | L | L | L | H | H | H |

L | L | H | H | L | H | H |

L | H | L | H | H | L | H |

L | H | H | H | H | H | L |

כאשר פלט 74LS139 הופך לנמוך, טרנזיסטור מסוג PNP יכול להפוך את המעגל הכולל לפשוט שכן טרנזיסטור PNP מופעל כאשר מסוף הבסיס הופך לנמוך. (אראה גרסת NPN בסוף הסיפור הזה)

מכיוון שפוטנטיומטר 100K נכלל במעגל מהבהב LED NE555, ניתן לכוונן את זמן הפעלה/כיבוי של LED אדום באופן חופשי בהתאם לצרכים.

שלב 2: יצירת ציור PCB

ביצוע ציור PCB
ביצוע ציור PCB

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

לפני הלחמת משהו על לוח אוניברסלי, הכנת ציור ה- PCB המוצג לעיל מועילה למזער טעויות.

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

מכיוון שתמונות IC ו- transistors pin-out ממוקמות יחד עם דפוס חיווט PCB, ניתן לבצע הלחמה באמצעות ציור זה.

שלב 3: הלחמה

הַלחָמָה
הַלחָמָה

למרות שציור ה- PCB המקורי לא נעשה באמצעות חוטים בודדים לחיבור רכיבים ב- PCB, אני הלחמה מעט אחרת.

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

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

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

שלב 4: בדיקת הכנה

בדיקת הכנה
בדיקת הכנה

לפני חיבור RPI, המעגל המוגמר דורש בדיקה.

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

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

שלב 5: בדיקה (טמפרטורת המעבד היא ברמה בינונית)

בדיקה (טמפרטורת המעבד ברמה בינונית)
בדיקה (טמפרטורת המעבד ברמה בינונית)

כאשר לא מוחל קלט 5V אז 74LS139 פענוח קלט והפעלת פלט Y0 כ- LOW (נורית ירוקה מופעלת).

אבל 5V החל על קלט A, פלט Y1 של 74LS139 מופעל (LOW).

לכן, LED צהוב נדלק כפי שמוצג בתמונה למעלה.

שלב 6: בדיקה (מעבד צריך רמת קירור)

בדיקה (מעבד צריך רמת קירור)
בדיקה (מעבד צריך רמת קירור)

כאשר 5V החיל את שתי הכניסות (A ו- B) של 74LS139, הנורית האדומה הרביעית מהבהבת.

ניתן לשנות את קצב המהבהב על ידי התאמת 100K VR כפי שמוצג בתמונה למעלה.

בסיום הבדיקה ניתן להסיר שני כבלי נקבה 3 פינים מסוג Molex.

שלב 7: ספק כוח למעגל אינדיקטור

ספק כוח למעגל INDICATOR
ספק כוח למעגל INDICATOR

לצורך הפעלת מעגל אינדיקטור, אני משתמש במטען טלפוני ידני נפוץ המפיק מתאם 5V ו- USB מסוג B כפי שמוצג בתמונה למעלה.

כדי להימנע מבעיה עם RPI על ידי חיבור מעגל אינדיקטור 3.3V GPIO ו- 5V מופעל, ממשק האות ואספקת החשמל מבודדים זה מזה לחלוטין.

שלב 8: חיווט RPI

חיווט RPI
חיווט RPI

לממשק מעגל אינדיקטור עם RPI, יש להקדיש שני סיכות GPIO יחד עם שני סיכות קרקע.

אין דרישה ספציפית לבחירת סיכות GPIO.

אתה יכול להשתמש בכל סיכות GPIO לחיבור INDICATOR.

אבל סיכות קוויות צריכות להיות מיועדות ככניסות ל- 74LS139 (למשל A, B) בתוכנית פייתון.

שלב 9: תוכנית פייתון

תוכנית פייתון
תוכנית פייתון

עם סיום המעגל, נדרשת תוכנית פיתון לצורך הפונקציה INDICATOR.

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

#-*-קידוד: utf-8-*-

ייבוא תת -תהליך, אות, sys

זמן יבוא, מחדש

ייבא RPi. GPIO כ- g

A = 12

B = 16

g.setmode (g. BCM)

g.setup (A, g. OUT)

g.setup (B, g. OUT)

##

def signal_handler (sig, frame):

הדפס ('לחצת על Ctrl+C!')

g. פלט (A, שקר)

g. פלט (B, שקר)

f.close ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

בעוד שזה נכון:

f = open ('/home/pi/My_project/CPU_temperature_log.txt', 'a+')

temp_str = subprocess.check_output ('/opt/vc/bin/vcgencmd measure_temp', shell = True)

temp_str = temp_str.decode (קידוד = 'UTF-8', שגיאות = 'קפדנית')

CPU_temp = re.findall ("\ d+\. / D+", temp_str)

# חילוץ טמפרטורת המעבד הנוכחית

current_temp = float (CPU_temp [0])

אם current_temp> 30 ו- current_temp <40:

# טמפרטורה נמוכה A = 0, B = 0

g. פלט (A, שקר)

g. פלט (B, שקר)

time.sleep (5)

elif current_temp> = 40 ו- current_temp <45:

# טמפרטורה בינונית A = 0, B = 1

g. פלט (A, שקר)

g. פלט (B, נכון)

time.sleep (5)

elif current_temp> = 45 ו- current_temp <50:

# טמפרטורה גבוהה A = 1, B = 0

g.output (A, True)

g. פלט (B, שקר)

time.sleep (5)

elif current_temp> = 50:

# קירור מעבד נדרש גבוה A = 1, B = 1

g.output (A, True)

g. פלט (B, נכון)

time.sleep (5)

current_time = time.time ()

formated_time = time.strftime ("%H:%M:%S", time.gmtime (current_time))

f.write (str (formated_time)+'\ t'+str (current_temp)+'\ n')

f.close ()

הפונקציה העיקרית של תוכנית הפיתון היא כמו להלן.

- ראשית הגדרת GPIO 12, 16 כיציאת פלט

- הגדרת מטפל הפרעות Ctrl+C לסגירת קובץ יומן וכיבוי GPIO 12, 16

- כאשר נכנסים ללולאה אינסופית, פתח קובץ יומן כמצב הוספה

- קרא את טמפרטורת המעבד על ידי ביצוע הפקודה "/opt/vc/bin/vcgencmd measure_temp"

- כאשר הטמפרטורה נמצאת בטווח 30 ~ 39 ואז פלט 00 כדי להדליק נורית ירוקה

- כאשר הטמפרטורה נמצאת בטווח 40 ~ 44 ואז פלט 01 כדי להדליק נורית צהובה

- כאשר הטמפרטורה נמצאת בטווח 45 ~ 49 אז פלט 10 כדי להדליק נורית אדומה

- כאשר הטמפרטורה היא יותר מ 50 אז פלט 11 כדי לגרום לנורית האדומה להבהב

- כתוב חותמת זמן ונתוני טמפרטורה לקובץ היומן

שלב 10: הפעלת מחוון

מבצע אינדיקטור
מבצע אינדיקטור

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

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

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

בעת החלת עומסים גבוהים (הפעלת שני דפדפני מידורי והפעלת סרטון Youtube), טמפרטורת המעבד עולה עד 57.9C.

שלב 11: ביצוע אלטרנטיבי (באמצעות טרנזיסטור NPN) ופיתוח נוסף

ייצור אלטרנטיבי (באמצעות טרנזיסטור NPN) ופיתוח נוסף
ייצור אלטרנטיבי (באמצעות טרנזיסטור NPN) ופיתוח נוסף

זוהי דוגמה קודמת של פרויקט INDICATOR תוך שימוש בטרנזיסטורים של NPN (2N3904 ו- BD139).

כפי שאתה יכול לראות עוד IC אחד (74HC04, Quad invertors) הכרחי כדי להניע טרנזיסטור NPN מכיוון שיש להפעיל מתח ברמה גבוהה על בסיס ה- NPN כדי להפעיל את הטרנזיסטור.

לסיכום, שימוש בטרנזיסטור NPN מוסיף מורכבות מיותרת ליצירת מעגל אינדיקטור.

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

מוּמלָץ: