Reverse polarity of heater (peltier heating/cooling)
-
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.
-
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).
-
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?
-
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!
-
At full power (24V) the spec sheet at https://tetech.com/wp-content/uploads/2013/11/TE-195-1.0-0.8.pdf 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.
-
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
source: http://reprap.org/wiki/G-code#M307:_Set_or_report_heating_process_parameters
"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. "
-
You will need to provide either a second PSU or a buck regulator to provide 12V to drive the peltier.
-
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?
-
@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 https://www.digikey.co.uk/product-detail/en/wurth-electronics-inc/74437529203331/732-11718-ND/8134292 connected in series.
-
Thanks for the info!
I bought this DC/DC regulator and will update you when it gets in
-
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.
-
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)
-
Both X - leave unconnected. Such buck converters don't provide galvanic isolation so the negative output from the regulator is directly connected to its negative input so it doesn't need to be connected anywhere. The E0 Vin is just always on, Duet switches when doing PWM the ground not the supply voltage - this is why we can use buck converters like this.
-
Thank you! The regulator will come in tonight so I will update you tomorrow.
-
So for a test, we set our temp for 35degC and the peltier will heat up and maintain that temp assuming we cool the other side enough.
So heating is good. But would you be able to point us to the function that is controlling the heating process?
I ask this because we would like to modify it to be able to COOL instead of just heat.
For example, if we set the temp to cool to 10degC (with current temp at 25degC), the temperature sensor actually shows that the peltier tries to cool by a degree or half a degree but then it will shoot up rather crazily.
So I am thinking:
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)
else
// Stop the control voltage to DPDT relay to have current go the other direction
// Regular Heat.cpp functionalitySo basically if we want to heat, then the normal heat function occurs. But if we want to cool, then we select our COOl function.
So I guess the question is where do we find the heat function to edit this?
-
@blandified said in Reverse polarity of heater (peltier heating/cooling):
So I guess the question is where do we find the heat function to edit this?
It should be here:
https://github.com/dc42/RepRapFirmware/blob/dev/src/Heating/Heat.cpp -
@klcjr89 said in Reverse polarity of heater (peltier heating/cooling):
@blandified said in Reverse polarity of heater (peltier heating/cooling):
So I guess the question is where do we find the heat function to edit this?
It should be here:
https://github.com/dc42/RepRapFirmware/blob/dev/src/Heating/Heat.cppThat's the right general area, but it's actually in the Pid.cpp file.
I suggest you work with the v2-dev branch, not the dev branch, because that is where the source code for the V2.0 beta version is.