vi. ADT7410 & PIC32MX250F128B: 16-bit digital thermometer

PIC32MX250F128B microcontroller is ideal for solving various control problems. Its I2C bus controller provides for a wide range of possible serial interconnections. Microchip has provided C and C++ peripheral program libraries, but the I2C protocol is simple enough that one can also directly implement it with memory write and read commands. ADT7410 does not have a low speed limit on I2C communication, so it is only important not to exceed the maximum communication speed allowed.

Analog Devices ADT7410 is fun to play with. Though it is tricky to solder its tiny contacts directly to soft wires, the effort pays off when you start receiving temperature readings. The sensor has 12 internal registers and 4 possible addresses on an I2C bus, so up to 4 sensors may be connected to the same bus master port.

The schematic bellow is easy to extend. You just have to add up to three ADT7410 sensors and connect them in parallel to the power supply, GND, SCL and SDA lines. Do not forget to add pull-up resistors for each additional chip and to set each ADT7410 chip a unique address by connecting A0 and A1 signals to GND or +3.3 V. The addresses for each of the four combinations are predefined as follows:

NOTE: Use PIC32MX250F128B_setup_utility v2 to set PIC32MX250F128B PID (product dentifier) to DD01. Keep VID = 04D8 (PIC32F250F128B firmware v2.8.7 uses this as preset)

Two enhanced ADT7410 temperature sensor 32-bit and 64-bit examples for PIC32MX250F128B with VB.NET source code (Digital thermometer (ADT7410) v4.zip and Digital thermometer (ADT7410) v4 x64.zip) are available from Downloads section. They include enhanced I2C support as well as enhanced ADT7410 support with double buffering, which enables instant access to last measured temperature value.

To use the new examples you need to program PIC32MX250F128B microcontroller with firmware v2.8.2 or later (PIC32F250F128B firmware v2.8.7 - all subversions.zip) with inbuilt I2C bus master support and PIC32MX2X0 v1.8.NET4 and PIC32MX2X0 v1.8.NET4x64 DLL libraries with I2C support were released to Downloads section, but they are also included in the examples. Multiple I2C devices and up to 4 ADT7410 temperature sensors are supported.

NOTE: The enhanced examples use VID = 04D8 and PID = D001 and do not require changing VID or PID addresses.

For a more advanced thermometer/thermostat application see subsection 2.c.v:

16-bit thermometer and thermostat application with source code

OLDER EXAMPLES:

Four examples in VB.NET without advanced support were moved to Downloads archive section (32-bit and 64-bit): Digital thermometer (ADT7410).zip, Digital thermometer (ADT7410) x64.zip, Digital thermometer (ADT7410) v2.zip and Digital thermometer (ADT7410) v2 x64.zip. "v2" versions use single conversion mode, so PC starts a new conversion and waits until it is done.They contain all the SW you need apart from the PIC32MX250F128B *.HEX file, which is available in PIC32F250F128B firmware v2.8.7 - all subversions.zip file from Downloads section.

Read more about I2C bus here.

Here is the schematic for ADT7410 to PIC32MX250F128B connection:

Click on the schematic to enlarge.

ADT7410 sensor connected to 4-wire a flat cable & I2C bus connection between ADT7410 and PIC32MX250F128B

Click on the photos to enlarge.

Digital Thermometer application. Click on the picture to enlarge.