Dallas / Maxim DS1820 1-Wire library. For communication with multiple DS1820 on a single 1-Wire bus. Also supports DS18S20 and DS18B20.

Embed: (wiki syntax)

« Back to documentation index

DS1820 Class Reference

DS1820 Class Reference

DS1820 Dallas 1-Wire Temperature Probe. More...

#include <DS1820.h>

Public Member Functions

 DS1820 (PinName data_pin, PinName power_pin)
 Create a probe object connected to the specified pins.
 DS1820 (PinName data_pin)
 Create a probe object connected to the specified pin this is used when all probes are externally powered.
void search_ROM_setup ()
 This routine initializes the global variables used in the search_ROM() and search_alarm() funtions.
bool search_ROM ()
 This routine will search for an unidentified device on the bus.
bool search_alarm ()
 This routine will search for an unidentified device which has the temperature alarm bit set.
void read_ROM ()
 This routine will read the ROM (Family code, serial number and Checksum) from a dedicated device on the bus.
void convert_temperature (devices device=this_device)
 This routine will initiate the temperature conversion within a DS1820.
float temperature (char scale='c')
 This function will return the probe temperature.
bool ROM_checksum_error ()
 This function calculates the ROM checksum and compares it to the CRC value stored in ROM[7].
bool RAM_checksum_error ()
 This function calculates the RAM checksum and compares it to the CRC value stored in RAM[8].
bool set_configuration_bits (unsigned int resolution)
 This function returns the values stored in the temperature alarm registers.
int read_scratchpad ()
 This function sets the temperature resolution for the DS18B20 in the configuration register.
void write_scratchpad (int data)
 This function will store the passed data into the DS1820's RAM.
void store_scratchpad (devices device=this_device)
 This function will transfer the TH and TL registers from the DS1820's RAM into the EEPROM.
int recall_scratchpad (devices device=this_device)
 This function will copy the stored values from the EEPROM into the DS1820's RAM locations for TH and TL.
bool read_power_supply (devices device=this_device)
 This function will return the type of power supply for a specific device.

Data Fields

char ROM [8]
 ROM is a copy of the internal DS1820's ROM It is created during the search_ROM() or search_alarm() commands.
char RAM [9]
 RAM is a copy of the internal DS1820's RAM It's updated during the read_RAM() command which is automaticaly called from any function using the RAM values.

Detailed Description

DS1820 Dallas 1-Wire Temperature Probe.

Example:

 #include "mbed.h"

 #include "TextLCD.h"
 #include "DS1820.h"

 TextLCD lcd(p25, p26, p21, p22, p23, p24, TextLCD::LCD16x2); // rs, e, d0-d3, layout

 const int MAX_PROBES = 16;
 DS1820* probe[MAX_PROBES];

 int main() {
     int i;
     int devices_found=0;
     // Initialize the probe array to DS1820 objects
     for (i = 0; i < MAX_PROBES; i++)
         probe[i] = new DS1820(p27);
     // Initialize global state variables
     probe[0]->search_ROM_setup();
     // Loop to find all devices on the data line
     while (probe[devices_found]->search_ROM() and devices_found<MAX_PROBES-1)
         devices_found++;
     // If maximum number of probes are found, 
     // bump the counter to include the last array entry
     if (probe[devices_found]->ROM[0] != 0xFF)
         devices_found++;
 
     lcd.cls();
     if (devices_found==0)
         lcd.printf("No devices found");
     else {
         while (true) {
             probe[0]->convert_temperature(DS1820::all_devices);
             lcd.cls();
             for (i=0; i<devices_found; i++) {
                 lcd.printf("%3.1f ",probe[i]->temperature('f'));
             }
         }
     }
 }

Definition at line 81 of file DS1820.h.


Constructor & Destructor Documentation

DS1820 ( PinName  data_pin,
PinName  power_pin 
)

Create a probe object connected to the specified pins.

Parameters:
data_pinDigitalInOut pin for the data bus
power_pinDigitalOut pin to control the power MOSFET
DS1820 ( PinName  data_pin )

Create a probe object connected to the specified pin this is used when all probes are externally powered.

Parameters:
data_pinDigitalInOut pin for the data bus

Member Function Documentation

void convert_temperature ( devices  device = this_device )

This routine will initiate the temperature conversion within a DS1820.

There is a built in 750ms delay to allow the conversion to complete.

To update all probes on the bus, use a statement such as this: probe[0]->convert_temperature(DS1820::all_devices);

Parameters:
allowsthe fnction to apply to a specific device or to all devices on the 1-Wire bus.
bool RAM_checksum_error (  )

This function calculates the RAM checksum and compares it to the CRC value stored in RAM[8].

Returns:
true if the checksum matches, otherwise false.
bool read_power_supply ( devices  device = this_device )

This function will return the type of power supply for a specific device.

It can also be used to query all devices looking for any device that is parasite powered.

Returns:
true if the device (or all devices) are Vcc powered, returns false if the device (or ANY device) is parasite powered.
void read_ROM (  )

This routine will read the ROM (Family code, serial number and Checksum) from a dedicated device on the bus.

NOTE: This command can only be used when there is only one DS1820 on the bus. If this command is used when there is more than one slave present on the bus, a data collision will occur when all the DS1820s attempt to respond at the same time.

int read_scratchpad (  )

This function sets the temperature resolution for the DS18B20 in the configuration register.

Parameters:
anumber between 9 and 12 to specify the resolution
Returns:
true if successful
int recall_scratchpad ( devices  device = this_device )

This function will copy the stored values from the EEPROM into the DS1820's RAM locations for TH and TL.

Parameters:
allowsthe function to apply to a specific device or to all devices on the 1-Wire bus.
bool ROM_checksum_error (  )

This function calculates the ROM checksum and compares it to the CRC value stored in ROM[7].

Returns:
true if the checksum matches, otherwise false.
bool search_alarm (  )

This routine will search for an unidentified device which has the temperature alarm bit set.

It uses the variables in search_ROM_setup to remember the pervious ROM address found. It will return FALSE if there were no new devices with alarms discovered on the bus.

bool search_ROM (  )

This routine will search for an unidentified device on the bus.

It uses the variables in search_ROM_setup to remember the pervious ROM address found. It will return FALSE if there were no new devices discovered on the bus.

void search_ROM_setup (  )

This routine initializes the global variables used in the search_ROM() and search_alarm() funtions.

It should be called once before looping to find devices.

bool set_configuration_bits ( unsigned int  resolution )

This function returns the values stored in the temperature alarm registers.

Returns:
a 16 bit integer of TH (upper byte) and TL (lower byte).
void store_scratchpad ( devices  device = this_device )

This function will transfer the TH and TL registers from the DS1820's RAM into the EEPROM.

Note: There is a built in 10ms delay to allow for the completion of the EEPROM write cycle.

Parameters:
allowsthe fnction to apply to a specific device or to all devices on the 1-Wire bus.
float temperature ( char  scale = 'c' )

This function will return the probe temperature.

This function uses the count remainding values to interpolate the temperature to about 1/150th of a degree. Whereas the probe is not spec to that precision. It does seem to give a smooth reading to the tenth of a degree.

Parameters:
scale,maybe either 'c' or 'f'
Returns:
temperature for that scale
void write_scratchpad ( int  data )

This function will store the passed data into the DS1820's RAM.

Note: It does NOT save the data to the EEPROM for retention during cycling the power off and on.

Parameters:
a16 bit integer of TH (upper byte) and TL (lower byte).

Field Documentation

char RAM[9]

RAM is a copy of the internal DS1820's RAM It's updated during the read_RAM() command which is automaticaly called from any function using the RAM values.

Definition at line 119 of file DS1820.h.

char ROM[8]

ROM is a copy of the internal DS1820's ROM It is created during the search_ROM() or search_alarm() commands.

ROM[0] is the Dallas Family Code ROM[1] thru ROM[6] is the 48-bit unique serial number ROM[7] is the device CRC

Definition at line 108 of file DS1820.h.