INHOUDSOPGAWE:

Kry die serienommer van 'n DS18B20 met 'n Arduino: 5 stappe
Kry die serienommer van 'n DS18B20 met 'n Arduino: 5 stappe

Video: Kry die serienommer van 'n DS18B20 met 'n Arduino: 5 stappe

Video: Kry die serienommer van 'n DS18B20 met 'n Arduino: 5 stappe
Video: Полный контроль над двигателем постоянного тока с помощью ESP8266 NodeMCU D1 Mini через Wi-Fi 2024, November
Anonim
Kry die serienommer van 'n DS18B20 met 'n Arduino
Kry die serienommer van 'n DS18B20 met 'n Arduino

Dit is 'n vinnige gids oor hoe u die individuele serienommers van u DS18B20 1-draads temperatuursensors kan kry.

Dit is handig vir projekte wat veelvuldige sensors benodig.

Dinge wat jy nodig het:

  • Arduino 5v (UNO, Mega, Pro Mini, ens.) - Arduino UNO R3 - AliExpress
  • Temp sensor DS18B20 - AliExpress - eBay
  • 4.7k - 1/4w Weerstand THT - AliExpress - eBay
  • Broodbord - AliExpress - eBay
  • Jumperdrade - van man tot man - AliExpress - eBay
  • 'N Rekenaar met Arduino IDE geïnstalleer

Stap 1: Voeg die vereiste biblioteek by Arduino IDE

Voeg die vereiste biblioteek by Arduino IDE
Voeg die vereiste biblioteek by Arduino IDE
  1. Maak Arduino IDE oop (ek gebruik 1.8.1)
  2. Klik op "Skets" -> "Sluit biblioteek in" -> "Bestuur biblioteke …"
  3. Kies die soekbalk en tik "dallas"
  4. Klik op "DallasTemperature" en klik op "Installeer"

U kan ook die biblioteek hier aflaai:

Hierdie biblioteek bevat die OnWire -biblioteek.

Stap 2: Verbind die DS18B20

Verbind die DS18B20
Verbind die DS18B20
Verbind die DS18B20
Verbind die DS18B20

Verbind 'n broodbord +5V, GND en Digital Pin 2 (pen 2 is reeds in die voorbeeldskets uiteengesit) van die Arduino met behulp van manlike tot manlike broodbordspringers.

Koppel die DS18B20 parallel aan die 3x aansluitstroke op die broodbord.

  • Speld 1 (GND) -> GND (grond 0V)
  • Speld 2 (DATA) -> Digitale pen 2
  • Speld 3 (Vdd) -> +5V

Koppel in die normale kragmodus 'n 4,7K -weerstand van +5V na die digitale pen 2 -draad op die broodbord.

Die volgende skakel is 'n uitstekende bron vir die DS18B20 1-draads temperatuursensor.

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

Stap 3: Laai die voorbeeldskets "Single"

Laai die voorbeeldskets
Laai die voorbeeldskets
Laai die voorbeeldskets
Laai die voorbeeldskets

As u klaar is, is u gereed om die Dallas Temperature "Single" SketchOpen Arduino IDE te laai (ek gebruik 1.8.1) Klik op "File" -> "Voorbeelde" -> "Dallas Temperature" -> "Single" het ek bygevoeg in vertraging (5000); op lyn 103 om my tyd te gee om die reeksnommer te kopieer Kies die toepaslike bordvorm "Tools" -> "Board" Kies die toepaslike poort "Tools" -> "Poort" Nou "Laai" die skets "Sketch" -> "Upload" op Klik op "Tools" -> "Serial Monitor", maak seker dat die baud -tariewe ooreenstem met myne 9600 is.

Stap 4: Kopieer die reeksnommer

Kopieer die reeksnommer
Kopieer die reeksnommer
Kopieer die reeksnommer
Kopieer die reeksnommer

Op die "Serial Monitor" sien u die vierde reël "Device 0 Address: xxxxxxxxxxxxxxxx"

Dit is die reeksnommer van die DS18B20

As dit '0000000000000000' is, is daar 'n probleem met die lees van u DS18B20.

Merk dit met u muis en druk CTRL+C op u sleutelbord en verby dit in Notepad

Vir my ander projekte gebruik my kode 'n verskeidenheid van hierdie getalle. Ek het die HEX -string herformateer na die volgende formaat.

DeviceAddress tempSensorSerial [9] = {

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

Stap 5: klaar

Klaar
Klaar

Nou kan u elke individuele DS18B20 1-draads temperatuursensor in u kode identifiseer en 'n funksie soos hierdie gebruik:

float getTemperature (byte j) {

sensors.requestTemperaturesByAddress (tempSensorSerial [j]);

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

terugkeer tempC;

}

Aanbeveel: