DS18b20.

Is this about how a guy would connect the things ,with external power supply

DSsensor2.fzz (7.21 KB)

Yes, that looks like it would work.

The DS18B20 draws very little current so you could use the +5V pin as a source for the DS18B20 power and eliminate the external voltage regulator.

Im just glad you could access the schematic. :slight_smile:

Thanks I had thought about that.
Im planning to use 4-5 DS18B20 's.
Various placements within the engine bay of my truck, Antifreeze,transmission,engine oil,ambient and maybe the differential.
The idea was to just have all the sensors come to a point in the engine bay ,then just run the single wire to the Arduino ..and display the parameters on a 20x4 LCD screen.with a stand alone MPU.

At which point because its a gas engine, I'll probably have to conjure up a capacitor(s) and some shielded wire to transmit the data.
Im figuring on some really bad EMF here.

After a few more hours; Ive constructed this…

// include the library code:
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire ds(2);    

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11,10,9,8,7);



void setup() {
  // set up the LCD's number of columns and rows: 
  lcd.begin(20,4);
  }

void loop() {

  lcd.setCursor(0,0);
  lcd.print("Engine");
  lcd.setCursor(16,0);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,1);
  lcd.print("Oil");
  lcd.setCursor(16,1);
  lcd.print((char)223);
  lcd.print("C");
 
  lcd.setCursor(0,2);
  lcd.print("Trans");
  lcd.setCursor(16,2);
  lcd.print((char)223);
  lcd.print("C");
  lcd.setCursor(0,3);
  lcd.print("Ambient");
  lcd.setCursor(16,3);
  lcd.print((char)223);
  lcd.print("C");
}

I know the DS18b20 are all unique,I can do that…its that “you cant get there from here” feeling im getting
The code to insert it where it needs to go slays me.

I think I have it! :)…Took a few days, This looks promising …just needs some editing.

   // This Arduino sketch reads DS18B20 "1-Wire" digital
  // temperature sensors.
  
  
  #include <OneWire.h>
  #include <DallasTemperature.h>
  #include <LiquidCrystal.h>
  
  
  LiquidCrystal lcd(12, 11, 10, 9,8,7);//lcd connected to these pins
  
  int backLight = 13; // pin 13 will control the backlight
  
  // 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.
  // Retrieve address from each sensor,then enter them into the device address
  
  DeviceAddress Engine = { 0x28, 0xE0, 0xFE, 0x73, 0x03, 0x00, 0x00, 0xF7 };
  DeviceAddress Oil = { 0x28, 0x82, 0x1B, 0x74, 0x03, 0x00, 0x00, 0xD4 };
  DeviceAddress Trans ={};
  DeviceAddress Ambient ={};
  void setup(void)
  {
  // Start up the library
  sensors.begin();
  // set the resolution to 12 bit (good enough)
  sensors.setResolution(Engine, 12);
  sensors.setResolution(Oil, 12);
  sensors.setResolution(Trans, 12);
  sensors.setResolution(Ambient,12);
  
  pinMode(backLight, OUTPUT);
  digitalWrite(backLight, HIGH); // turn backlight on. Replace 'HIGH' with 'LOW' to turn it off.
  lcd.begin(20,4); // columns, rows. use 20,4 for a 20x4 LCD, etc.
  lcd.clear(); // start with a blank screen
  }
  
  void printTemperature(DeviceAddress deviceAddress)
  {
  float tempC = sensors.getTempC(deviceAddress);
  if (tempC == -127.00) {
  lcd.print("Error");
  } else {
  lcd.print(tempC);
  
  
  }
  }
  
  void loop(void)
  { 
  delay(200);// temp refresh rate 
  sensors.requestTemperatures(); // 
  //Start engine temp
  lcd.setCursor(0,0);
  lcd.print("Engine   ");
  printTemperature(Engine);
  lcd.setCursor(16,0);
  lcd.print((char)223);
  lcd.print("C");
  //start oil temp
  lcd.setCursor(0,1);
  lcd.print("Oil      ");
  printTemperature(Oil);
  lcd.setCursor(16,1);
  lcd.print((char)223);
  lcd.print("C");
  //start Trans temp
  lcd.setCursor(0,2);
  lcd.print("Trans    ");
  printTemperature(Trans);
  lcd.setCursor(16,2);
  lcd.print((char)223);
  lcd.print("C");
  
  //Ambient or outside temp
  lcd.setCursor(0,3);
  lcd.print("Ambient  ");
  printTemperature(Ambient);
  lcd.setCursor(16,3);
  lcd.print((char)223);
  lcd.print("C");
  
  
  }