How to measure Peltier resistance Help

Hello.
Currently, the company is checking the Peltier's defect with the Peltier resistance value.
I made a device that reads the resistance value using Arduino.
Using MAX31865, we succeeded in reading the resistance value of the PT100 temperature sensor.
However, the Peltier resistance value has a large error, so it is impossible to use it.
I would like to know if I can read the Peltier internal resistance value using MAX31856.

What do you mean by this?
Do you mean it gives unstable results?

Remember that a Peltier device is simply a number of dissimilar metal joints in parallel, this actually generates voltage so any resistance measurements are meaningless.

Sorry, but without significantly more information and access to a properly equipped lab, it will be difficult to obtain accurate data. For instance, do you have a temperature-controlled oil bath that can maintain a constant temperature? This is just one of the many specialized tools and setups you would need for precise measurements.

If you use an LCR meter, you can measure it, so I want to get a similar resistance value using Arduino

No it is quite possible to use it! If the Peltier had any resistance less than an open circuit, it is good. If the Peltier device shows an infinite resistance, then one of the diodes is open and the device will never work. A much quicker test is to power the Peltier device for exactly ONE SECOND and then feel if one side is hotter than the other. If it has heat, then it is good to go.

If you read inside the datasheet of the MAX31856

you find

General Description
The MAX31856 performs cold-junction compensation and digitizes the signal from any type of thermocouple. The output data is formatted in degrees Celsius. This converter resolves temperatures to 0.0078125°C, allows readings as high as +1800°C and as low as -210°C

(depending on thermocouple type), and exhibits thermocouple voltage measurement accuracy of ±0.15%. The thermocouple inputs are protected against overvoltage
conditions up to ±45V.

A lookup table (LUT) stores linearity correction data for several types of thermocouples (K, J, N, R, S, T, E, and B). Line

Your peltier elemenet will not match one of these types of thermo-couple-conjunctions.

Conclusion: not suitable for measuring peltier-elements.

Yes but it is a meaningless measurement because the Peltier device generates a voltage, try it and see.

A resistance meter sends a voltage across its two probes and measures the resultant current to work out the resistance. If this is in a live powered up circuit then this will give a reading but it has no meaning. As the Peltier device generates a voltage then this renders any resistance reading you get back as meaningless.

In fact the voltage output is proportional to the temperature difference between the two plates of the Peltier device.


#include <Adafruit_MAX31865.h>

// Use software SPI: CS, DI, DO, CLK
Adafruit_MAX31865 pet1 = Adafruit_MAX31865(10, 11, 12, 13);
Adafruit_MAX31865 pet2 = Adafruit_MAX31865(9, 11, 12, 13);
Adafruit_MAX31865 pt1 = Adafruit_MAX31865(5, 11, 12, 13);
Adafruit_MAX31865 pt2 = Adafruit_MAX31865(4, 11, 12, 13);
Adafruit_MAX31865 pt3 = Adafruit_MAX31865(6, 11, 12, 13);
// use hardware SPI, just pass in the CS pin
//Adafruit_MAX31865 thermo = Adafruit_MAX31865(10);

// The value of the Rref resistor. Use 430.0 for PT100 and 4300.0 for PT1000
#define RREF1      415.317
#define RREF2      390.188
#define RREF3      427.09
#define RREF4      435.34
#define RREF5      431.59
// The 'nominal' 0-degrees-C resistance of the sensor
// 100.0 for PT100, 1000.0 for PT1000
#define RNOMINAL  100.0

int pushButton = 2;

void setup() {
  Serial.begin(115200);
  pet1.begin(MAX31865_2WIRE);  // set to 2WIRE or 4WIRE as necessary
  pet2.begin(MAX31865_2WIRE);
  pt1.begin(MAX31865_2WIRE);
  pt2.begin(MAX31865_2WIRE);
  pt3.begin(MAX31865_2WIRE);
  pinMode(pushButton, INPUT_PULLUP);
}


void loop() {
  uint16_t rtd1 = pet1.readRTD();
  uint16_t rtd2 = pet2.readRTD();
  uint16_t rtd3 = pt1.readRTD();
  uint16_t rtd4 = pt2.readRTD();
  uint16_t rtd5 = pt3.readRTD();
  
  int sw_in = digitalRead(pushButton);

  float ratio1 = rtd1;
  float ratio2 = rtd2;
  float ratio3 = rtd3;
  float ratio4 = rtd4;
  float ratio5 = rtd5;
  ratio1 /= 32768;
  ratio2 /= 32768;
  ratio3 /= 32768;
  ratio4 /= 32768;
  ratio5 /= 32768;

  if(sw_in == LOW)
  {
    Serial.println("Ohm");
    delay(5000);
    Serial.print(RREF1*ratio1,8);
    Serial.print(",");
    Serial.print(RREF2*ratio2,8);
    Serial.print(",");
    Serial.print(RREF3*ratio3,8);
    Serial.print(",");
    Serial.print(RREF4*ratio4,8);
    Serial.print(",");
    Serial.println(RREF5*ratio5,8);
  }
}

In this way, the pt100 resistance value can obtain a resistance value with a small error, but Peltier has a large error value
So I'd like to know how.
In this way, the pt100 resistance value can obtain a resistance value with a small error, but Peltier has a large error value
So I'd like to know how.

I'll have to give up. Thank you.

There is one thing left to do
re-edit your posting with the code so the code appears as a code-section

Click on the pencil-icon to re-open your posting # 8
then mark all the code and click on the < code > button above the editing-area

The PT100 is a pure resistor, it obeys OHMS law.

A peltier device is a semiconductor, infact an array of diodes, not a pure resistance.
Please read, do some research.

Can you please tell us your electronics, programming, arduino, hardware experience?

What defect are you looking for?

What are you trying to achieve, a go/nogo test of the Peltier.
Build a test jig, and drive the Peltier and see if it is working, datasheets will give you performance levels which you could evaluate from your gathered data.

Tom.. :smiley: :+1: :coffee: :australia:

I modified it

2 Likes

I guess it depends on how it's used. All the Peltier applications I'm familiar with supply power to the cell and use it as sold state heat pumps. The cooling power (heat moved from cold side to hot side per unit time) is a function of the current through the device (more current = more cooling power) and the temperature difference across the plates (higher temperature difference = less colling power). The cell's "resistance" (i.e. voltage / current) at a given operating point is a function of the temperature difference.

Suggestion: Use a motor bridge, preferably MOSFET-based, along with two LEDs and a resistor to test your setup. Connect the LEDs in parallel but oriented in opposite directions (back-to-back). Then place this LED pair in series with a resistor, and connect that combination in series with the diode.

By reversing the "motor" direction, you can test the diode functionality in both forward and reverse directions, as the LEDs will light up depending on the current flow.

Yes I would not disagree with that. But it does not mean it doesn't generate a voltage by itself.

Your use of "resistance" in quotes shows that this is not a resistance that can be measured using a resistance meter. Which is what the OP wants to do. This is only a nominal resistance.

Have you ever actually tried measuring the voltage output of a Peltier device unconnected to any other circuit?

Peltier devices are semiconductors, but their behavior is very complex. They should certainly not be thought of as a string of conventional diodes, as for example, I-V curves are fairly linear given fixed temperature gradients.

This graduate-level laboratory exercise gives good insight into that complexity, and also has one of the best introductions I've seen of the thermodynamic behavior of Peltier devices.

This paper is a useful example of analyzing the efficiency of Peltier thermoelectric generators (very low).

Finally, the behavior Peltier devices can be usefully simulated using linear LTSpice models.

One example

1 Like

When I make a quick check to verify basic operation of a Peltier element, I use a two step procedure.

Measuring resistance with a DMM does not work as expected. The Peltier element is (simplified) a resistor with a built in voltage source.
It generates a voltage proportional to the temperature difference between both sides. The generated voltage disturbes the measurement of the resistance when a DMM is used.

Step 1: Put the element flat on a table, wires pointing to you, red wire shall be at the righthand side.
Connect a Voltmeter to the Peltier element. If the temperature difference would be zero, the measured voltage would be zero. Touching the top side of the element with your hand will warm the top side and generates approx. +100 mV DC. Warming the bottom side of the element generates a similar voltage, however with reversed polarity. Approx. -100 mV DC. Using a hair dryer for some seconds increases the generated voltage to approx. 600 mV DC. Remove the voltmeter.

Step 2: Use DC powersupply of approx. 2 V DC and connect it for 10 seconds to the Peltier element, plus to the red wire, minus to the black wire. A current should flow and the upper side of the element should heat up, the bottom side will get cold. Reverse the red and black wires. A current should flow and the bottom side of the element should heat up and the top side gets cold.
It depends on the type of the Peltier element how much current will flow. With my TEC1-12705, I see approx. 500 mA.
Do not apply power for a longer period of time without proper cooling to avoid overheating.
If you divide the applied voltage by the measured current, you get the approximate resistance of the element.

If there is a need to automate this process, an Arduino and supporting hardware could certainly be used.

1 Like

More precisely, it's the dynamic resistance or the slope of the V-I curve (dV / dI) at the operating point (V, I, deltaT). So, I suppose you can measure a resistance with a DMM. It's just not a particularly useful measurement.

OK, that voltage would be one of the constituents of the total voltage measured across the device (assume driven by a constant current source) at the operating point. So it would have an effect on the dynamic resistance.

You still do not get it.

At least we agree on that point.

Have you read the more considered responses above?

Note I am not saying you can't use an Arduino to measure the effectiveness of a potentially damaged Peltier device.

What I am saying is that what the OP is doing by trying to measure the so called ( effective, dynamic, or other adjective ) here in front of "resistance" of the device is a nonsense.

1 Like

I did some quick tests on a TEC1-12705 Peltierelement with an DMM trying to measure the resistance directly. The Peltier Element was covered in an enclosure to reduce the temperature difference .

i expected to see a resistance of roughly 4 Ohms. However the displayed value did depend in the polarity of the connection. The DMM did indicate 0 Ohms in one direction and something around 50 Ohms with leads reversed.
The values were not stable and wandered around.

I changed the DMM to voltage measurement and got a zero Volts indication. This means the voltage was likely below 1 milliVolt.
I changed the DMM to measure the short circuit current. The DMM indicated a current of approx. 5 microAmps. Polarity reversed when leads were reversed. Values did wander around.

It seemed that I could not achive a small enough temperature difference.

I decided to try putting a thermal „short circuit“ from one Peltier element surface to the other by submersing the element in water at room temperature.
The measured current quickly approached zero indication.

When I changed the DMM back to measure resistance with the element under water, I got a stable reading of 3.8 Ohms and the indication did not change when polarity was reversed.

The experiment may give different results with other types of DMM, however I believe it can be reproduced by others.

It would be interesting if somebody would do similar tests and report here.