Мазмуну:

DS18B20 сериялык номерин Arduino менен алыңыз: 5 кадам
DS18B20 сериялык номерин Arduino менен алыңыз: 5 кадам

Video: DS18B20 сериялык номерин Arduino менен алыңыз: 5 кадам

Video: DS18B20 сериялык номерин Arduino менен алыңыз: 5 кадам
Video: Удаленно контролировать энергопотребление дома | ПЗЭМ-004Т | Облако Интернета вещей RemoteXY 2024, Ноябрь
Anonim
DS18B20 сериялык номерин Arduino менен алыңыз
DS18B20 сериялык номерин Arduino менен алыңыз

Бул DS18B20 1 зымдуу температура сенсорлорунун жеке сериялык номерлерин кантип алуу боюнча тез көрсөтмө.

Бул бир нече сенсорлорду талап кылган долбоорлор үчүн ыңгайлуу.

Сиз керек:

  • Arduino 5v (UNO, Mega, Pro Mini ж. Б.) - Arduino UNO R3 - AliExpress - eBay
  • Температура сенсору DS18B20 - AliExpress - eBay
  • 4.7k - 1/4w каршылыгы THT - AliExpress - eBay
  • Нан тактасы - AliExpress - eBay
  • Jumper Wires - Эркектен Эркекке - AliExpress - eBay
  • Arduino IDE орнотулган компьютер

1 -кадам: Керектүү китепкананы Arduino IDEге кошуңуз

Керектүү китепкананы Arduino IDEге кошуңуз
Керектүү китепкананы Arduino IDEге кошуңуз
  1. Arduino IDE ачыңыз (мен 1.8.1 колдонуп жатам)
  2. "Эскиз" -> "Китепкананы кошуу" -> "Китепканаларды башкаруу…" дегенди басыңыз.
  3. Издөө тилкесин тандап, "dallas" териңиз
  4. "DallasTemperature" чыкылдатып, "Орнотууну" чыкылдатыңыз.

Же болбосо, китепкананы бул жерден жүктөп алсаңыз болот:

Бул китепкана OnWire китепканасын камтыйт.

2 -кадам: DS18B20 менен байланыш

DS18B20 зымынан өткөрүңүз
DS18B20 зымынан өткөрүңүз
DS18B20 зымынан өткөрүңүз
DS18B20 зымынан өткөрүңүз

Нан тактасын колдонуп +5V, GND жана Digital Pin 2 (Pin 2 мисалдын эскизинде мурунтан эле коюлган) Arduinoдан Эркектен Эркекке чейин нан секиргичтерин колдонуу.

DS18B20 панелиндеги 3x терминал тилкелерине параллель туташтырыңыз.

  • Pin 1 (GND) -> GND (Ground 0V)
  • Pin 2 (DATA) -> Digital Pin 2
  • Pin 3 (Vdd) -> +5V

Кадимки кубат режими үчүн 4.7K каршылыгын +5Vдан Digital Pin 2 зымына туташтырыңыз.

Төмөнкү шилтеме DS18B20 1 зымдуу температура сенсору үчүн эң сонун булак.

www.tweaking4all.com/hardware/arduino/ardu…

3 -кадам: "Single" мисал эскизин жүктөө

Мисал эскизин жүктөө
Мисал эскизин жүктөө
Мисал эскизин жүктөө
Мисал эскизин жүктөө

Аны туташтыргандан кийин, сиз Даллас Температурасын "Single" SketchOpen Arduino IDEге жүктөөгө даярсыз (мен 1.8.1 колдонуп жатам) "Файлды" -> "Мисалдарды" -> "Даллас Температурасын" -> "Бойдокту" чыкылдатыңыз. кечигүүдө (5000); Серия номерин көчүрүү үчүн мага убакыт берүү үчүн 103 -сапта Тиешелүү такта түрүн тандаңыз "Куралдар" -> "Такта" Тиешелүү портуңузду тандаңыз "Куралдар" -> "Порт" Азыр "Жүктөө" Эскиз "Эскиз" -> "Жүктөө" "Куралдар" -> "Сериялык Мониторду" чыкылдатыңыз, бадын ылдамдыгы меникине дал келерин текшериңиз 9600 Эгерде сиз эскизди жүктөбөсөңүз, тактаңызды, портуңузду, USB драйверлериңизди текшериңиз.

4 -кадам: Сериялык номерин көчүрүү

Сериялык номерин көчүрүү
Сериялык номерин көчүрүү
Сериялык номерин көчүрүү
Сериялык номерин көчүрүү

"Сериялык монитордон" сиз 4 -сапты көрөсүз "Түзмөк 0 дареги: xxxxxxxxxxxxxxxx"

Бул DS18B20 сериялык номери

Эгерде ал "0000000000000000" болсо, анда DS18B20ңузду окуп чыгууда көйгөй бар.

Аны чычканыңыз менен бөлүп алыңыз жана клавиатураңыздагы CTRL+C баскычын басып, андан кийин Блокнотко коюңуз

Башка долбоорлор үчүн менин кодум бул сандардын массивин колдонот. Мен HEX сабын төмөнкү форматка кайра форматтадым.

DeviceAddress tempSensorSerial [9] = {

{0x28, 0xFF, 0x07, 0xA6, 0x70, 0x17, 0x04, 0xB5}, {0x28, 0xFF, 0xB2, 0xA6, 0x70, 0x17, 0x04, 0x28}, {0x28, 0xFF, 0x42, 0x98, 0x92, 0xD3}, {0x28, 0xFF, 0x86, 0xA8, 0x70, 0x17, 0x04, 0xA6}, {0x28, 0xFF, 0x2B, 0x65, 0x71, 0x17, 0x04, 0x76}, {0x28, 0xF7, 0x6, 6, 0x17, 0x04, 0xF5}, {0x28, 0xFF, 0xD9, 0x9B, 0x70, 0x17, 0x04, 0x9C}, {0x28, 0xFF, 0x98, 0x6A, 0x71, 0x17, 0x04, 0xED 0, {0xED,, 0x42, 0x71, 0x17, 0x04, 0x4C}};

5 -кадам: Бүттү

Бүттү
Бүттү

Эми сиз кодуңуздагы ар бир жеке DS18B20 1 зымдуу температура сенсорун аныктап, төмөнкүдөй функцияны колдоно аласыз:

float getTemperature (байт j) {

sensors.requestTemperaturesByAddress (tempSensorSerial [j]);

float tempC = sensors.getTempC (tempSensorSerial [j]);

кайтаруу tempC;

}

Сунушталууда: