INA219 Thermoelectric Generator

I am trying to monitor the voltage and current generated by a thermoelectric module by using the Adafruit INA219, but am having lots of trouble figuring out the circuit. I have the INA219 circuit ready to go and am able to successfully measure the voltage in a 9V battery or a separate Arduino circuit, but for whatever reason I can't get the thermoelectric module to register any meaningful readings. Can anyone please point me in the right direction? Thank you in advance!

Post the datasheet of the Peltier element, and a diagram/image of the setup, and the sketch you're using. Without all of that you won't get any meaningful help. Leo..

Hello Leo,
Apologies, I’ve attached them here. Simply put, I connected the positive side of the TEM (thermoelectric module) to Vin+ on the INA219 and the negative side to GND. I also connected Vin- to GND. Using the default getcurrent code (shown below), I get readings of 0 for the bus voltage, load voltage and power. The shunt voltage and current readings do register (less than 100 mV and mA) when I put my hand on the TEM (and therefore induce a delta T between the two plates of the TEM), so that tells me it at least works in some fashion. The values don’t seem to match the behavior I got I hooked up the TEMs to a multimeter and tested it a while back.
I’m testing this with a Laird HT8-12 TEM and the datasheet is here.

Code:

#include <Wire.h>
#include <Adafruit_INA219.h>

Adafruit_INA219 ina219;


void setup(void)
{
  Serial.begin(115200);
  while (!Serial) {
    // will pause Zero, Leonardo, etc until serial console opens
    delay(1);
  }

  uint32_t currentFrequency;

  Serial.println("Hello!");

  // Initialize the INA219.
  // By default the initialization will use the largest range (32V, 2A).  However
  // you can call a setCalibration function to change this range (see comments).
  ina219.begin();
  // To use a slightly lower 32V, 1A range (higher precision on amps):
  //ina219.setCalibration_32V_1A();
  // Or to use a lower 16V, 400mA range (higher precision on volts and amps):
  ina219.setCalibration_16V_400mA();

  Serial.println("Measuring voltage and current with INA219 ...");
}

void loop(void)
{
  float shuntvoltage = 0;
  float busvoltage = 0;
  float loadvoltage = 0;
  float power_mW = 0;
  float current_mA = 0;

  shuntvoltage = ina219.getShuntVoltage_mV();
  busvoltage = ina219.getBusVoltage_V();
  power_mW = ina219.getPower_mW();
  loadvoltage = busvoltage + (shuntvoltage / 1000);
  current_mA = ina219.getCurrent_mA();

Serial.print("Bus Voltage V: "); 
Serial.print(busvoltage);
//Serial.println(" V");
  Serial.print("\t");
  
Serial.print("Shunt Voltage mV: "); 
Serial.print(shuntvoltage); 
//Serial.println(" mV");
  Serial.print("\t");
  
Serial.print("Power mW: "); 
Serial.print(power_mW); 
//Serial.println(" mW");
  Serial.print("\t");
  
Serial.print("Load Voltage V: "); 
Serial.print(loadvoltage); 
//Serial.print(" V"); 
  Serial.print("\t");
  
Serial.print("Current mA: "); 
Serial.print(current_mA); 
//Serial.print(" mA");
  Serial.print("\t");
  
  Serial.println("");

  delay(50);
}

alphacat92: I connected the positive side of the TEM (thermoelectric module) to Vin+ on the INA219 and the negative side to GND. I also connected Vin- to GND.

The INA219 is mainly a high-side sensor. The input voltage(s) shouldn't get 'below ground', which is possible the way you have connected it. Better to have VCC as a reference point.

If you connect the Peltier to the two inputs of the INA, then you short out the Peltier with the buildin 0.1ohm current sense resisor, and you only measure short circuit current. If you connect the Peltier between V-in(-) and ground, then you can read open voltage of the Peltier. Make sure votage only goes positive. Can't measure both at the same time, unless you use the Peltier as a power source, with a suitable resistive load.

Must AFAIK have several hundred degrees C across a Peltier for some power generation. The one you linked to can't do more than +50C. Leo..

FYI. What you are talking about doing is called the Seebeck Effect.

Thank you both for your tips! Please excuse the novice question, but what is the difference between the open circuit and short circuit voltage for the Peltier module? When I connected the Peltier between Vin(-) and ground, I did not get any readings - current and voltage both hovered at around 0. It was only when I connected the Peltier between Vin(+) and Vin(-) that I got any readings - the shunt voltage and current behave as I'd expect (i.e. increase with an increased delta T between the plates). The bus voltage and total voltages stayed at around 1V (why 1V by the way? Is that the power draw from the INA219?).

Basically what I need to know is how much voltage and current is generated by the Peltier module, so that I can use it to potentially power something else. What would be more accurate to measure in this case, the open circuit or short circuit voltage?

Thank you for your continued help, I really appreciate the time you take to answer my questions.

What would be more accurate to measure in this case, the open circuit or short circuit voltage?

The short circuit voltage is zero.

The open circuit voltage (Voc) and the short circuit current (Isc) are of interest, because those allow you to estimate the internal resistance (Voc/Isc) of the module. Your multimeter is fine for those measurements.

For maximum power transfer, the load resistance will match that value (at a given temperature difference, of course).

Do not expose standard Peltier modules to temperatures higher than about 80 C, or you will destroy them. You can buy high temperature (250 C) Peltier modules for power generation. Marlow is a good source of reliable TEGs

alphacat92: ...what is the difference between the open circuit and short circuit voltage...

When I connected the Peltier between Vin(-) and ground, I did not get any readings - current and voltage both hovered at around 0.

It was only when I connected the Peltier between Vin(+) and Vin(-) that I got any readings...

Open circuit voltage and short circuit current.

The first one is without load, like a 9volt battery is 9volt when nothing is connected to it. The second one is the current it can produce when shorted. That might be 250mA for a 9volt battery. In both situations there is no power generated into a load. 9volt * 0Amp = 0watt, 0volt * 0.25Amp = 0watt. But you have a general idea about the capabilities of the power source. That battery might be able to produce max power at ~100mA current, while it still is able to maintain ~6volt. You have to experiment with the load, to find a Max Power Point (known as MPP in solar systems). This is the same for a Peltier element.

Maybe the polarity was wrong (heat on the wrong side or Peltier wires needed swapping). You would only get voltage readings here.

When connected to V+ and V-, you will only get current readings. Leo..