Search Code

Kificho cha Arduino cha kihisi joto cha LM75A

Kificho cha Arduino cha kihisi joto cha LM75A

Katika mafunzo haya, tutajifunza jinsi ya kutumia kihisi cha joto cha LM75A na Arduino kupima joto katika Selsiasi na Farenheit. Kihisi cha LM75A huwasiliana kupitia itifaki ya I2C, na kurahisisha kuunganishwa na bodi za Arduino. Kufikia mwisho wa mafunzo haya, utakuwa na usanidi unaofanya kazi unaoonyesha usomaji wa joto kila sekunde.

Ili kupata manufaa zaidi ya mafunzo haya, ninapendekeza utazame video inayohusiana, ambayo hutoa mwongozo wa kuona kuhusu usanidi na utekelezaji wa msimbo (katika video saa 20:29).

Vifaa Vimeelezwa

Kihisi cha joto cha LM75A ni kihisi cha dijitali chenye uwezo wa kupima joto la mazingira kwa usahihi wa hali ya juu. Hufanya kazi kupitia itifaki ya mawasiliano ya I2C, ikiruhusu vihisi vingi kuunganishwa kwenye basi moja. Kihisi kina kipengele cha kuzima wakati joto linapozidi kiwango, ambacho kinaweza kusaidia kuokoa nishati wakati hakitatumika.

Kihisi hiki kwa kawaida kinapatikana ama kama chipu pekee au kama moduli ya PCB. Moduli inajumuisha pini muhimu kama VCC, GND, SDA, na SCL, ambazo zinahitajika kwa mawasiliano na Arduino. Unapotumia kihisi hiki, ni muhimu kuhakikisha miunganisho sahihi na kuchagua anwani sahihi ya I2C kwa mawasiliano.

Maelezo ya Datasheet

MtengenezajiNXP / Texas Instruments
Nambari ya sehemuLM75A
Voltage ya Logic/IO2.7 V hadi 5.5 V
Voltage ya usambazaji2.7 V hadi 5.5 V
Mkondo wa pato (kwa kila chaneli)3 mA
Mkondo wa kilele (kwa kila chaneli)10 mA
Mwongozo wa mzunguko wa PWMHaupo
Viwango vya kizingiti cha logic ya kuingiza0.3 VCC (juu), 0.2 VCC (chini)
Kushuka kwa voltage / RDS(on) / kueneza0.5 V max
Mipaka ya joto-55 °C hadi +125 °C
KifurushiSOIC-8 / TSSOP
Vidokezo / lahajaInapatikana katika anwani tofauti za I2C

  • Hakikisha anwani sahihi ya I2C imewekwa kwenye msimbo wako.
  • Tumia vipingamizi vya kuvuta-juu kwenye mistari ya SDA na SCL ikiwa ni lazima.
  • Washa kihisi kwa voltage thabiti (2.7 V hadi 5.5 V).
  • Fuatilia kwa joto kupita kiasi; kihisi kinaweza kufanya kazi hadi 125 °C.
  • Shika kihisi kwa upole ili kuepuka uharibifu wakati wa usakinishaji.

Maagizo ya Uunganishaji

Arduino_wiring_LM75A_bb

Ili kuunganisha kihisi cha joto cha LM75A kwenye Arduino yako, anza kwa kuunganisha pini ya ardhi ya kihisi kwenye pini ya ardhi ya Arduino yako. Ifuatayo, unganisha pini ya VCC ya kihisi kwenye pini ya 5V kwenye Arduino. Kwa mawasiliano ya I2C, unganisha pini ya SDA ya kihisi (kawaida imewekwa alama ya kijani) kwenye pini ya A4 kwenye Arduino, na pini ya SCL (kawaida imewekwa alama ya bluu) kwenye pini ya A5. Ikiwa unatumia mfano tofauti wa Arduino, hakikisha unaunganisha kwenye pini sahihi za I2C; kwa mfano, kwenye Arduino Mega, SDA inaunganishwa kwenye pini 20 na SCL kwenye pini 21.

Ikiwa unatumia LM75A kama chipu tupu badala ya moduli, hakikisha umeunganisha pini zinazofanana kwa usahihi: pini ya 1 inaunganishwa kwenye A4 (SDA), pini ya 2 inaunganishwa kwenye A5 (SCL), pini ya 4 inaunganishwa kwenye ardhi, na pini ya 8 inaunganishwa kwenye VCC. Acha pini nyingine zisiunganishwe. Usanidi huu unahakikisha kwamba kihisi kinaweza kuwasiliana vizuri na Arduino.

Mifano ya Msimbo na Maelezo ya Hatua kwa Hatua

Msimbo ufuatao huanzisha kihisi cha LM75A na kusoma joto kila sekunde. Kitambulisho muhimu katika msimbo huu ni lm75a_sensor, ambacho ni mfano wa darasa la LM75A. Mfano huu unatumika kupata usomaji wa joto kutoka kwa kihisi.

LM75A lm75a_sensor(false, false, false);

Mstari huu unaunda mfano wa darasa la LM75A, ukipitisha vigezo vinavyowakilisha hali ya pini za A0, A1, na A2. Hali ya kawaida inaweza kuwekwa kuwa false ikiwa pini hizi hazitumiki.

Katika kazi ya setup(), tunaanzisha mawasiliano ya serial kwa kiwango cha baud 9600, ambacho ni muhimu kwa kuonyesha usomaji wa joto kwenye kichunguzi cha serial.

void setup(void) {
  Serial.begin(9600);
  Serial.println("Robojax LM75A Test");
}

Sehemu hii inaanzisha kichunguzi cha serial, ikituruhusu kuona usomaji wa joto unapochapishwa kila sekunde.

Katika kazi ya loop(), tunapata joto katika digrii za Selsiasi na kuangalia makosa yoyote. Ikiwa joto ni halali, tunalichapisha pamoja na sawa yake ya Farenheit.

float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
  Serial.println("Error while getting temperature");
} else {
  Serial.print("Temperature: ");
  Serial.print(temperature_in_degrees);
  Serial.print(" degrees (");
  Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
  Serial.println(" Fahrenheit)");
}

Sehemu hii ya msimbo inaonyesha jinsi ya kushughulikia usomaji wa joto na kuuchapisha katika Selsiasi na Farenheit kwenye kichunguzi cha serial. Inajumuisha ushughulikiaji wa makosa kwa usomaji usio halali.

Kwa msimbo kamili, angalia sehemu ya kupakia chini ya makala.

Maonyesho / Nini cha Kutarajia

Mara baada ya kukamilisha uunganishaji na kupakia msimbo kwenye Arduino yako, unapaswa kuona usomaji wa joto ukionyeshwa kwenye kichunguzi cha serial kila sekunde. Unaweza kujaribu mwitikio wa kihisi kwa kuigusa au kutumia bunduki ya joto, na unapaswa kuona usomaji ukibadilika ipasavyo. Kuwa mwangalifu kuhusu polarity iliyogeuzwa unapounganisha kihisi, kwani inaweza kuharibu moduli.

Bilder

LM75a-1
LM75a-1
LM75a-3
LM75a-3
LM75a-12
LM75a-12
Arduino_wiring_LM75A_bb
Arduino_wiring_LM75A_bb
127-Arduino code for an LM75A temperature sensor
Språk: C++
/*
 * \brief Show temperature in degrees Celsius and Fahrenheit every second
 *
 * \author Quentin Comte-Gaz <quentin@comte-gaz.com>
 * \date 8 July 2016
 * \license MIT License (contact me if too restrictive)
 * \copyright Copyright (c) 2016 Quentin Comte-Gaz
 * \version 1.0
 * 
 * Video instruction by Ahmad Shamshiri on July 10, 2018 at 20:29 for Robojax.com
 * in Ajax, Ontario, Canada
 * Watch the video instruction for this code: https://youtu.be/2gmkubeHUXw
For this sketch you need to connect:
VCC to 3.3V or 5V and GND to GND of the Arduino
SDA to A4 and SCL to A5

 */

#include <LM75A.h>

// Create I2C LM75A instance
LM75A lm75a_sensor(false,  //A0 LM75A pin state
                   false,  //A1 LM75A pin state
                   false); //A2 LM75A pin state
// Equivalent to "LM75A lm75a_sensor;"

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Robojax LM75A Test");
  Serial.println("Temperatures will be displayed every second:");
}

void loop()
{
  // Robojax.com LM75A Test
  float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();

  if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
    Serial.println("Error while getting temperature");
  } else {
    Serial.print("Temperature: ");
    Serial.print(temperature_in_degrees);
    Serial.print(" degrees (");
    Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
    Serial.println(" Fahrenheit)");
  }

  delay(1000);
}

Resurser och referenser

Inga resurser än.

Filer📁

Fritzing-fil

Andra filer