Hardware¶
What to connect between your MCU and an MCP9700, how to set up the ADC, and what limits the accuracy.
All values here come from the MCP970X family datasheet (DS20001942L, 2005-2024); section and table names refer to it. The repository does not ship the PDF. Values marked derived are calculated from the datasheet, not taken from it.
Pins¶
| Signal | SOT-23, TO-92 | SC70-5 |
|---|---|---|
| VDD: supply | 1 | 4 |
| VOUT: output | 2 | 3 |
| GND: ground | 3 | 2 |
| NC | 1, 5 |
The SC70 NC pins are not connected to the die. Tie them to a copper trace from the heat source you measure for better thermal contact.
Source: Table 3-1. The TO-92 numbering is in the bottom view of the package drawing; check your part's drawing before you solder.
Wiring¶
Connect VDD to a 2.3 V to 5.5 V rail, GND to the ADC's ground and VOUT straight to an ADC input.
The sensor needs no other parts (Section 4.3). Put the decoupling capacitor close to VDD and GND, use a ceramic one, and keep digital lines away from the sensor.
| Situation | Recommendation |
|---|---|
| Normal board | 0.1 µF to 1 µF between VDD and GND |
| Noisy supply | Feed VDD through a 200 Ω resistor, with 1 µF to GND |
| Powered from an MCU pin | Decoupling capacitor and series resistor against the pin's switching noise (Section 4.2) |
The series resistor goes in the supply line. The datasheet asks for nothing in series with VOUT.
Output characteristics¶
| Parameter | Value |
|---|---|
| V0°C, output at 0 °C | 500 mV typical |
| TC, coefficient | 10.0 mV/°C typical |
| Output range, −40 °C to +125 °C | 100 mV to 1.75 V |
| Nonlinearity, 0 °C to +70 °C | ±0.5 °C typical |
| Output current | 100 µA maximum |
| Output impedance | 20 Ω typical (100 µA, 500 Hz) |
| Load capacitance | 1000 pF, as characterised |
| Line regulation | 0.1 °C/V typical |
The first two rows are the driver's defaults, kDefaultVoltsAtZeroC and kDefaultVoltsPerCelsius. The output
range is from Section 3.2; the driver rejects readings well outside it as an open, grounded or shorted input
(Configuration). The sensor is characterised and tested with 1000 pF on
VOUT; it does not need the capacitor to be stable.
The output is not ratiometric: a 3.3 V and a 5 V supply give the same voltage at the same temperature, within the line regulation. The datasheet says added capacitance on VOUT reduces overshoot and undershoot, and that the sensor can sit far from the MCU because it is immune to parasitic capacitance.
ADC settings¶
The driver needs volts at VOUT. Set the ADC so that:
- The full scale reaches 1.75 V. Use the smallest range or attenuation that still covers it, to keep the most codes per degree.
- The reading is calibrated. Apply your MCU's ADC calibration in the adapter; the ADC's own offset and gain error adds to the sensor's.
- Dividers are undone. If VOUT goes through a divider or buffer with gain, the adapter scales back to the pin voltage.
| ADC | 1 LSB | Resolution |
|---|---|---|
| 8-bit, 2.5 V reference | 9.8 mV | About 1 °C per code (datasheet) |
| 10-bit, 3.3 V reference | 3.2 mV | 0.32 °C per code (derived) |
| 12-bit, 3.3 V reference | 0.81 mV | 0.08 °C per code (derived) |
| 12-bit, 4.096 V reference | 1.0 mV | 0.1 °C per code (datasheet) |
A finer ADC does not make the sensor more accurate; it lets you see small changes. See Transfer function for the error budget.
Timing¶
| Parameter | Typical |
|---|---|
| Turn-on time, tON | 800 µs |
| Thermal response to 63 %, SC70-5 on a 1 in × 1 in copper board | 1.3 s |
| Thermal response to 63 %, TO-92-3 leaded, without a board | 1.65 s |
The thermal response is measured from air at 30 °C into a fluid bath at +125 °C. The turn-on time matters when you power the sensor from an MCU pin: wait before the first read. The datasheet gives no maximum turn-on time; leave margin. Reading faster than the thermal response does not follow temperature faster; average instead (API guide).
sequenceDiagram
participant M as MCU
participant S as MCP9700
M->>S: drive the supply pin high (sensor powered from GPIO)
Note over S: t_ON, 800 µs typical
M->>S: ADC conversion on VOUT
S-->>M: volts
M->>M: ReadTemperatureCelsius(): (V − 0.5) / 0.01
M->>S: drive the supply pin low
Accuracy¶
| Part | 0 °C to +70 °C | −40 °C to +125 °C |
|---|---|---|
| MCP9700 | ±4.0 °C | −4.0 °C to +6.0 °C |
| MCP9700A | ±2.0 °C | −2.0 °C to +4.0 °C |
| MCP9700B | ±1.0 °C (+20 °C to +70 °C) | −2.0 °C to +4.0 °C |
Limits are minimum and maximum, tested at VDD = 3.3 V, with the first-order equation (DC Electrical Characteristics). A one-point calibration at +25 °C gives ±0.5 °C typical from 0 °C to +70 °C (Section 4.1); see Configuration.
The sensor measures the temperature of its die, which follows the board through the pins more than the air around it (Section 4.4). Use the TO-92 package to measure air temperature. Self-heating is small: 0.179 °C in the datasheet's worst case (5.5 V, 12 µA, 100 µA output load, SC70).
Power and temperature¶
| Parameter | Value |
|---|---|
| Supply voltage | 2.3 V to 5.5 V; absolute maximum 6.0 V |
| Supply current | 6 µA typical, 12 µA maximum; 15 µA maximum at +150 °C |
| Operating range | −40 °C to +125 °C (extended temperature, E) |
| High-temperature range | −40 °C to +150 °C: MCP9700 and MCP9700B in SOT-23-3 and SC70-5 only |
The MCP9701 and MCP9701A in the same datasheet need 3.1 V to 5.5 V and have other coefficients; see Configuration.
Reference documents¶
| Document | What it is for |
|---|---|
| MCP970X family datasheet | Pins, electrical characteristics, accuracy, application notes |
| MCP9700 product page | Ordering codes, packages, documents |
| MCP9700A product page | The same for the A grade |
| AN1001, "IC Temperature Sensor Accuracy Compensation with a PIC Microcontroller" (DS00001001) | Nonlinearity compensation to ±0.5 °C typical over the range |