INHOUDSOPGAWE:
2025 Outeur: John Day | [email protected]. Laas verander: 2025-01-13 06:56
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
- Maak Arduino IDE oop (ek gebruik 1.8.1)
- Klik op "Skets" -> "Sluit biblioteek in" -> "Bestuur biblioteke …"
- Kies die soekbalk en tik "dallas"
- 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 '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"
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
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
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;
}