Reverse polarity of heater (peltier heating/cooling)

  • Hey all!

    So we have a peltier unit that when you send current one direction, it heats. If you reverse the current, it cools.

    Long story short, we need to heat and we also need to cool.

    We are thinking of accomplishing this reversing of the current through an H-bridge, similar to how you can reverse directions of a motor.

    However, we will need some sort of control voltage to determine direction of current. We are working on the hardware portion of this (but if you have recommendations we would love to add them to our research!).

    1.) What do you guys recommend for the Duet side of things? Since our design will probably be an H-bridge outside the Duet, the Duet shouldn't see this reversing of current so it should be fine. Will the temperature sensors be okay with increasing current for both heating and cooling to desired temperatures?

    2.) Last minute thought: Instead of the external H-bridge, is there a way to reverse current through software only? This is to try and avoid external parts that can go bad.

    EDIT: Just as FYI, this is the peltier we bought and will be using.

  • administrators

    You will need to use an external H-bridge anyway, although I guess a DPDT relay would work if you can stand the noise.

    Will the heating/cooling be a single function (i.e. maintain a set temperature using either heating or cooling as appropriate), or two separate functions?

  • Hey @dc42 thanks for your help in everything so far. We haven't decided on the function/software portion yet. I am looking through the Heat.cpp file here, I am assuming this is the cpp file we will be modifying.

    In regards to a single function or two separate functions, we were originally thinking just to modify the Heat.cpp, unless you recommend something else.

    Something like the below pseudocode:

    if (desiredTemp < currentTemp)
    // Do cooling function (reverse direction of current)
    // Regular Heat.cpp functionality

    (side note, we need cooling because we are making a BioPrinter, which sometimes needs cold environment to print the cells and bio ink. So, once we get this part down, it would be awesome for the future of the Duet, as people will begin to see it as a viable option for bio printers as well)

    The above is the software portion. When I get the team assembled again, I'll post our ideas for the hardware portion provided you don't have recommendations for compatibility with the Duet.

    edit: actually, let me pick your brain on the hardware portion too, as we were thinking a simple mosfet h-bridge but want to make sure it will work with Duet/reprap firmware

  • Actually a DPDT relay would be simpler than an H-bridge, just thinking outloud.

    The approach would be the same though:

    if (desiredTemp < currentTemp)
    // Send a control voltage to DPDT relay to send current one direction
    // Do cooling function (might need to swap some increment/decrements in existing code)
    // Stop the control voltage to DPDT relay to have current go the other direction
    // Regular Heat.cpp functionality

    edit: this guy talks about it here using the GPIO pins, but I believe all our GPIO pins are filled because of our Duex5 expansion board.

  • Just as FYI, this is the peltier we bought and will be using.

  • @dc42 Actually, is there a more detailed spec sheet of how the pins on the extruder heaters work?

    This is our peltier heater (and technically it should cool):

    1.) When we hook up the peltier directly, we are able to raise the temperature to a set amount (although it does overshoot a bit so is currently unreliable).

    2.) No matter the polarity of the peltier, it only gets hot and doesn't get cold.

    3.) Also, both sides of the peltier get hot instead of one side getting hot and the other side getting cold.

    So...that's why I ask if there is a more detailed spec on the pins of the extruder heaters, we would like to check to make sure the voltage/current/etc being supplied is compatible with the peltier shown in the link above.

    Any ideas?

    Thank you!

  • I am curious for what are you going to use that peltier? It is only rated up to 80C, are you making a heatbed using peltier devices?

  • administrators

    If you want one side of a Peltier to cool, you must prevent the other side getting too hot, e.g. by having a heatsink on it with a fan blowing cool air over it. Also take care not to exceed the ideal current of the Peltier you are using.

  • @dragonn

    We are working on a bio-printer, so we only need to heat up the cell solutions to a maximum of 80deg but we also need to be able to cool it (ideally to about 4deg).

  • @dc42 We have been working on this, with the same result so far.

    Which is why we are looking to see exactly what the pins are/do for the extruder heaters. We want to make sure the + and - pins are compatible with the peltier.

    Do you have any additional technical specs of these pins?

  • administrators

    The extruder heater outputs have one pin connected to +VIN and the other connected to ground via the mosfet. The pins are marked VIN and E0- (or E1-) on the underside of the board. However, on earlier PCB revisions the markings are incorrect. The E0- or E1- pin is always the pin closest to the E1 motor connector, and the other pin is VIN.

    Maximum recommended current power output is 6A each. The mosfets can handle much more; the limitations is due to the PCB traces and the terminal blocks.

    There is a link to the Duet schematic on the wiki.

  • @dc42

    1.) Does this mean that VIN is 24V (we have a 24v PSU) and E0- is 0V?

    Just wanting to clarify this point because I believe the peltier needs + and - voltage instead of + and ground/0 voltage, I will double check with the peltier supplier though.

    2.) If that is the case, I am assuming the voltage cannot be adjusted to be +12 and -12V because the mosfet pulls the E0- pin to ground and therefore cannot be changed from the original 24V to 0V?

  • Maybe I don't have much experience with peltier devices. But from a electrical point of view they is no difference between for example +12V, -12V and +24V, 0V for a peltier device since it haves only two wires. I even have one and it works fine with just +12V and ground (I am doing an experiment with cooling the heatbreak with a peltier device :D).

  • @dragonn

    Okay we just wanted to make sure the peltier didn't need to be operated in a specific-only way, but if your peltier works with 12V and ground then ours should too.

    It is just strange because we can't get the peltier to cool at all, both sides get hot, even with a heatsink and fan, switching polarities doesn't work.

  • It only does that when connected to Duet? When you connected it directly to a power supply it still works like it should?

  • @dragonn

    We actually haven't tried connecting directly to our power supply. We have this one here and were worried that the peltier would draw too much current and burn out. We will try when we meet again though!

  • administrators

    At full power (24V) the spec sheet at indicates that your peltier will generate a 150-200W of waste heat. To remove this effectively you will need the sort of heatsink and fan that is used for cooling the CPU in high-end PCs. So I suggest you use a lower voltage. Even at 12V there will bet 40-80W of waste heat to get rid of.

    Please note, running the Peltier on 24V at 50% PWM is not the same as running it from 12V, unless you use a diode + inductor filter and a high enough PWM frequency.

  • @blandified connecting it for short time (few seconds) wont damage it and it should already get a lite bit cold. And as far I know a Peltier device is maybe partly but it self limits the power when then temp difference between cold and hot side goes to big.

  • @dc42

    Ahhh this sounds like it may be the reason, thank you for pointing this out! We will experiment...

    Our Duet Ethernet is hooked up to a 24V 350W power supply, so as I understand it, that means the extruder heaters/motors/bed heater are all running off this 24V, which is why we chose 24V motors and heaters.

    But we want to take your suggestion and run the heaters at 12V instead. Is this something we can change internally (in the firmware or config file) or do we have to swap our 24V power supply with a 12V power supply in order to accomplish this?

    The closest thing I can find is this:

    M307 V12


    "Vnnn VIN supply voltage at which the A parameter was calibrated (RepRapFirmware 1.20 and later). This allows the PID controller to compensate for changes in supply voltage. A value of zero disables compensation for changes in supply voltage. "

  • administrators

    You will need to provide either a second PSU or a buck regulator to provide 12V to drive the peltier.

  • @dc42

    If we measure the resistance of the peltier (let's just say it is 10kOhms), and then we take a 10kOhm resistor and put it in series with the peltier, voltage divider means that the voltage across the peltier should be half (12V).

    Is this viable? Assuming we can find a resistor that can handle up to 6A?

  • administrators

    @blandified said in Reverse polarity of heater (peltier heating/cooling):


    If we measure the resistance of the peltier (let's just say it is 10kOhms), and then we take a 10kOhm resistor and put it in series with the peltier, voltage divider means that the voltage across the peltier should be half (12V).

    Is this viable? Assuming we can find a resistor that can handle up to 6A?

    It's possible in theory, but you would need a 4.1 ohm 35W resistor. A buck regulator is a less expensive and more efficient solution, and may give you an adjustable output voltage too.

    Another solution is to connect a high current inductor in series with the Peltier, and also connect a Schottky flyback diode in parallel with the combination. Then you can increase the PWM frequency to 50kHz and control the peltier current with PWM. The inductor would ideally be about 1mH, for example three of these connected in series.

  • Remember - do not connect the DC/DC regulator directly to heater output - buck converts don't like be driven with PWM. The buck convert needs to be connected directly to the power supply and then the peltier device positive connection goes to the positive output of the buck convert. And the negative output from peltier device goes to the Duet heater output ground connection.

  • @dragonn

    I was not aware of this tbh. Thank you for info!

    I honestly thought the the regulator would go inbetween the heater outputs and the peltier, like in series between the two.

    I want to make sure I understand, so I drew a picture to clarify.

    Does the negative output of the regulator go anywhere? (see X)

    Does the Vin of the heater output go anywhere? (see X)

Log in to reply