A13. Dallas lämpötilasensorit - matpi/EmbeddedSystemsUTU GitHub Wiki
Dallas lämpötila-anturi on edullinen sensori, jossa on VCC, GND sekä signaalijohdin. Dallas lämpötila-anturi antaa lukeman suoraa Celsius asteina (toiminta-alue n.-45 - +125 C astetta). Ohjeita ja testikykentöjä Arduinolle löytyy runsaasti, mm. osoitteista:
http://web.djodjo.org/article/articles/electrical/arduino/general/ds18b20
http://www.tweaking4all.com/hardware/arduino/arduino-ds18b20-temperature-sensor/
http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html
Vaihtoehtoinen kytkentäesimerkki (parasite connection) löytyy täältä:
http://www.hobbytronics.co.uk/ds18b20-arduino
Liitä Dallas lämpötila-anturi Arduinolle kuvan mukaisesti: lisäksi kytke signaalijohdin DQ 4,7 kΩ vastuksen avulla Arduinon +5 volttiin.
Kuva: http://www.instructables.com/id/Temperature-with-DS18B20/
Kytke aluksi Arduinoon pelkästään Dallas lämpötila-anturi yllä olevan kuvan mukaisesti. Testaa seuraavaa koodia, jonka avulla lämpötilalukeman saa tulostettua sarjamonitoriin:
// This Arduino sketch reads DS18B20 "1-Wire" digital
// temperature sensors.
// This code has been “hacked”, using the original code of Mark McComb …
//Copyright (c) 2010 Mark McComb, hacktronics LLC
// License: http://www.opensource.org/licenses/mit-license.php (Go crazy)
// Tutorial:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-tutorial.html
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
// Assign the addresses of your 1-Wire temp sensors.
// See the tutorial on how to obtain these addresses:
// http://www.hacktronics.com/Tutorials/arduino-1-wire-address-finder.html
void setup()
{
// start serial port
Serial.begin(9600);
// Start up the library
sensors.begin();
}
void loop()
{
int tempC = sensors.getTempCByIndex(0);
delay(2000);
Serial.print("Getting temperatures...");
sensors.requestTemperatures(); // send the command to get temperatures
Serial.print(">");
Serial.print(tempC);
Serial.println("<");
delay(1);
}
Lisää nyt edelliseen kytkentään yllä olevan kuvan mukaisesti LCD näyttö, jossa on i2C moduuli. Kokeile sitten seuraavaa koodia. Nyt saat lämpötilan näkymään LCD näytöllä.
/*
Some ideas found to this code from _ArduinoGetStarted.com_
see https://arduinogetstarted.com/tutorials/arduino-temperature-sensor-lcd
*/
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h> // Tämä tuo I2C-kirjaston käyttöön.
#include <LiquidCrystal_I2C.h> // Ja tämä LCD-kirjaston.
// Asetetaan LCD näytön osoite
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Anturin data pinni kytketään Arduinon digitaaliseen pinniín 2 on the
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup()
{
//käynnistetään näyttö ja laitetaan taustavalo päälle
lcd.begin();
lcd.backlight();
sensors.begin();
}
void loop()
{
int tempC = sensors.getTempCByIndex(2);
sensors.requestTemperatures();
lcd.setCursor(0,0); // asetetaan tekstin aloituskohta
lcd.print("Lampotila = "); // tulostetaan näytölle teksti Lampotila
lcd.print(tempC); // tulostetaan näytölle muuttujan tempC arvo
lcd.print((char)223); // tulostetaan näyttöön ° merkki
lcd.print("C"); // tulostetaan näyttöön C merkki
}