מדריך חיבור חיישן טמפרטורה LM75 ל-Arduino ו-ESP32:

במדריך זה נלמד כיצד לחבר חיישן טמפרטורה LM75 לבקר Arduino UNO ולבקר ESP32.
נראה איך לקרוא את הטמפרטורה דרך ממשק I2C, להציג את הערך ב-Serial Monitor,
ולהבין את ההבדל בין חיישן דיגיטלי כמו LM75 לבין חיישן אנלוגי כמו LM35.

מהו חיישן LM75?

LM75 הוא חיישן טמפרטורה דיגיטלי עם ממשק תקשורת I2C / SMBus.
בניגוד לחיישן אנלוגי, החיישן לא מוציא מתח משתנה לפי הטמפרטורה, אלא שולח לבקר ערך דיגיטלי דרך קווי SDA ו-SCL.

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

איך החיישן עובד?

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

  • SDA — קו נתונים של I2C.
  • SCL — קו שעון של I2C.

בדרך כלל כתובת ה-I2C של המודול היא 0x48, אך בחלק מהמודולים ניתן לשנות את הכתובת בעזרת פיני כתובת.
כך אפשר לחבר כמה חיישני LM75 לאותה שורת I2C, כל עוד לכל אחד יש כתובת שונה.

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

פינים במודול LM75

פיןתפקיד
VCCמתח הזנה למודול
GNDאדמה
SDAקו נתונים I2C
SCLקו שעון I2C
OS / ALERTיציאת התראה לטמפרטורה גבוהה, אופציונלי

רכיבים נדרשים

  • חיישן טמפרטורה LM75
  • Arduino UNO או ESP32
  • Breadboard
  • חוטי Dupont
  • כבל USB
  • Arduino IDE
  • ספריית LM75 / LM75A מתאימה

חיבור LM75 ל-Arduino UNO

LM75Arduino UNO
VCC5V
GNDGND
SDAA4
SCLA5
OS / ALERTלא חובה

הסבר חיבור

ב-Arduino UNO קווי I2C נמצאים בדרך כלל בפינים A4 ו-A5.
את פין SDA של המודול מחברים ל-A4, ואת פין SCL מחברים ל-A5.

פין OS / ALERT אינו נדרש לקריאה בסיסית של טמפרטורה.
משתמשים בו רק אם רוצים לקבל התראה כאשר הטמפרטורה עוברת סף מסוים.

קוד Arduino בסיסי לקריאת החיישן

#include <Wire.h>

const byte lm75Address = 0x48;

float readLM75Temperature() {
  Wire.beginTransmission(lm75Address);
  Wire.write(0x00);
  Wire.endTransmission();

  Wire.requestFrom(lm75Address, (byte)2);

  if (Wire.available() < 2) {
    return NAN;
  }

  byte msb = Wire.read();
  byte lsb = Wire.read();

  int raw = (msb << 8) | lsb;
  raw = raw >> 7;

  if (raw & 0x0100) {
    raw |= 0xFE00;
  }

  return raw * 0.5;
}

void setup() {
  Serial.begin(9600);
  Wire.begin();
}

void loop() {
  float temperatureC = readLM75Temperature();

  Serial.print("Temperature: ");
  Serial.print(temperatureC);
  Serial.println(" C");

  delay(500);
}

הסבר הקוד

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

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

חיבור LM75 ל-ESP32

הערה חשובה לפני החיבור

ESP32 עובד ברמת לוגיקה של 3.3V. חיישן LM75A יכול לעבוד גם במתח 3.3V,
ולכן בחיבור ל-ESP32 מומלץ להזין את המודול מ-3V3.

אם מזינים את המודול מ-5V, יש לוודא שקווי SDA ו-SCL אינם נמשכים ל-5V,
משום שכניסות ESP32 אינן מיועדות לרמת לוגיקה של 5V.

LM75ESP32
VCC3V3
GNDGND
SDAGPIO21
SCLGPIO22
OS / ALERTלא חובה

הסבר חיבור

ב-ESP32 מקובל להשתמש ב-GPIO21 עבור SDA וב-GPIO22 עבור SCL.
את המודול מזינים מ-3V3 כדי לשמור על רמות מתח שמתאימות לבקר.

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

קוד ESP32 בסיסי לקריאת החיישן

#include <Wire.h>

const byte lm75Address = 0x48;

float readLM75Temperature() {
  Wire.beginTransmission(lm75Address);
  Wire.write(0x00);
  Wire.endTransmission();

  Wire.requestFrom(lm75Address, (byte)2);

  if (Wire.available() < 2) {
    return NAN;
  }

  byte msb = Wire.read();
  byte lsb = Wire.read();

  int raw = (msb << 8) | lsb;
  raw = raw >> 7;

  if (raw & 0x0100) {
    raw |= 0xFE00;
  }

  return raw * 0.5;
}

void setup() {
  Serial.begin(115200);
  Wire.begin(21, 22);
}

void loop() {
  float temperatureC = readLM75Temperature();

  Serial.print("Temperature: ");
  Serial.print(temperatureC);
  Serial.println(" C");

  delay(500);
}

הסבר הקוד

הקוד עבור ESP32 דומה לקוד Arduino, אך כאן מגדירים במפורש את פיני I2C:
GPIO21 עבור SDA ו-GPIO22 עבור SCL.

לאחר מכן הקוד קורא את רגיסטר הטמפרטורה של LM75 ומציג את הטמפרטורה ב-Serial Monitor.

פרויקט לדוגמה

מערכת ניטור טמפרטורה עם LM75, OLED ו-Buzzer

בפרויקט זה משתמשים בחיישן LM75 יחד עם Arduino Nano, מסך OLED ו-Buzzer.
הטמפרטורה מוצגת על המסך, וכאשר הערך עובר סף שנקבע, ה-Buzzer מופעל כהתראה.
זהו פרויקט מתאים ללמידה על חיישני I2C, תצוגת נתונים והתראה לפי טמפרטורה.

מעבר לפרויקט לדוגמה

סיכום

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

בעבודה עם ESP32 מומלץ להזין את המודול מ-3V3 ולוודא שקווי I2C אינם נמשכים ל-5V.

קישור חזרה למוצר

דילוג לתוכן