דלגו לתוכן המרכזי
KitLab
שיעור קודם
פוטו-רזיסטור — ADC ו-atten· 9 / 41
פוטו-רזיסטור — ADC ו-atten
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

פוטו-רזיסטור — ADC ו-atten

מה בשיעור?

  • פוטו-רזיסטור ומחלק מתח
  • למה יותר אור נותן מספר קטן יותר
  • ADC ו-read בטווח 0-4095
  • atten — השורה שבלעדיה כלום לא עובד
  • הפינים שנכשלים עם WiFi

מה נלמד כאן

  • פוטו-רזיסטור ומחלק מתח
  • ADC ו-atten()
  • הפינים שנכשלים כש-WiFi פעיל

פנס הרחוב

תאורה לפי אור

פנס שנדלק כשמחשיך, מסך שמתכהה בחדר חשוך — פוטו-רזיסטור.


הידע שצריך

1. הפוטו-רזיסטור

הפוטו-רזיסטור

חומר מוליך למחצה שההתנגדות שלו משתנה עם האור:

  • אור חזקהתנגדות נמוכה
  • חושךהתנגדות גבוהה

אבל ה-ESP32 לא מודד התנגדות — הוא מודד מתח.

2. מחלק מתח

מעגל מחלק המתח

מחברים את הפוטו-רזיסטור בטור עם נגד קבוע וקוראים את המתח ביניהם.

האור ההתנגדות הערך שנקרא
חזק יורדת נמוך
חלש עולה גבוה

⚠️ הפוך מהאינטואיציה: יותר אור = מספר קטן יותר.

3. ADC — ושתי שורות שחייבים להבין

from machine import Pin, ADC

ldr = ADC(Pin(32))
ldr.atten(ADC.ATTN_11DB)
value = ldr.read()

ADC(Pin(32)) יוצר אובייקט המרה אנלוגית-דיגיטלית על הפין.

atten(ADC.ATTN_11DB) — זו השורה שקל לפספס ובלעדיה כלום לא יעבוד כמו שצריך. היא קובעת את טווח המתח הנמדד:

ההגדרה טווח מדידה
ATTN_0DB 0 עד ~1.1V בלבד
ATTN_11DB 0 עד 3.3V — הטווח המלא

בלי השורה הזו, כל מתח מעל 1.1V ייקרא כערך מקסימלי — והחיישן ייראה "תקוע" על 4095.

ב-Arduino זה קרה מאחורי הקלעים. ב-MicroPython אתם מגדירים את זה בעצמכם — פחות נוח, אבל הרבה יותר שקוף.

read() מחזירה 0 עד 4095 (12 ביט).

⚠️ הפינים שנכשלים עם WiFi: 2, 4, 12, 13, 14, 15, 25, 26, 27 שייכים ל-ADC2, שמפסיק לעבוד כשהרדיו פעיל. השתמשו ב-32, 33, 34, 35, 36 או 39. בשיעור הזה — 32, בדיוק מהסיבה הזו.


הניסוי

המטרה: להציג את עוצמת האור ב-Shell.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
פוטו-רזיסטור 1
נגד 10kΩ 1

התרשים החשמלי

התרשים החשמלי

החיבור

חיבור הרכיבים


הקוד

from machine import Pin, ADC
import time

Photoresistor = ADC(Pin(32))          # פין אנלוגי
Photoresistor.atten(ADC.ATTN_11DB)    # טווח מלא עד 3.3V

while True:
    value = Photoresistor.read()      # 0 עד 4095
    print("Light sensor value:", value)
    time.sleep(1)

מה אמור לקרות

הערכים ב-Shell

כסו את החיישן — הערך עולה. האירו עליו — יורד.

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


נסו בעצמכם

  • הסירו את שורת ה-atten והריצו. מה קורה לערכים?
  • מדדו בשלושה מצבים: חושך, תאורת חדר, פנס.
  • שלבו עם שיעור 1: כשחשוך — נורית נדלקת.
  • שלבו עם שיעור 2: ככל שחשוך יותר, הנורית בהירה יותר.
  • העבירו לפין 25 והוסיפו WiFi לתוכנית. עדיין עובד?

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

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