Hi, I am working on an espresso machine with Pressure sensor (0-5VDC) and 2 x MAX 6675 ( thermocouple ).
I use one power supply 220VAC to 24VDC to power the pump and use a 24VDC-->6.5VDC to power the Arduino.
If I power the Arduino with the same 24VDC power supply using for the pump:
The reading of thermocouple is couple of degree lowered than if I power the Arduino unit with Notebook USB
When I start the pump, the reading of thermocuple start will be 3 to 5 degree lower than when the pump is off.
I have measured the voltage apply to Arduino which is stable regardless of the pump status (6.5V)
The reading of the pressure sensor is correct
If I power the Arduino using the notebook USB power
The reading on the thermocouple is stable and correct
The reading on the pressure sensor is incorrect (which is normal as is not grounded with Arduino)
I would think it is a grounding issue with the thermocouples... There is a "Cold Junction" compensator in the Low side of the thermocouple and If it were seeing a ground or in your case the lack of one... A thermocouple's output voltage is measured in millivolts and any small potential difference there will shift the readings you observe the indicator is the difference in readings when you shift the ground from the cabinet (earth ground) to no ground with the PC. If the Arduino had no ground to earth and it's outputs were opticoupled out you might well change things as if the Arduino were truly floating then the ground leakage/galvanic issue you are having might go away. I am thinking that the issue is galvanic in nature... brass and steel between the ground and the thermocouples contact with the measured medium (Water. I believe and potable (drinkable) water at that). There was a guy that had an issue with a PH Probe in a large Reservoir. His answer was total isolation from contact between the probe and the mains, when he got the device PSU to look like an isolated battery all the issues went away... Very similar to the isolation methods used in medical instruments.
IMO, then and now.
Docedison:
I would think it is a grounding issue with the thermocouples... There is a "Cold Junction" compensator in the Low side of the thermocouple and If it were seeing a ground or in your case the lack of one... A thermocouple's output voltage is measured in millivolts and any small potential difference there will shift the readings you observe the indicator is the difference in readings when you shift the ground from the cabinet (earth ground) to no ground with the PC. If the Arduino had no ground to earth and it's outputs were opticoupled out you might well change things as if the Arduino were truly floating then the ground leakage/galvanic issue you are having might go away. I am thinking that the issue is galvanic in nature... brass and steel between the ground and the thermocouples contact with the measured medium (Water. I believe and potable (drinkable) water at that). There was a guy that had an issue with a PH Probe in a large Reservoir. His answer was total isolation from contact between the probe and the mains, when he got the device PSU to look like an isolated battery all the issues went away... Very similar to the isolation methods used in medical instruments.
IMO, then and now.
Doc
Hi, Would it be useful if I ground the arduino all the way to AC Main Ground?
Unfortunately you can't 'ground the' thermocouples, You might try placing them in a glass or it's equivalent to isolate them from ground, Although electrically a thermocouple generator is a current generator only and a short circuit that is equal to the wire's resistance only. The 'cold compensator" (read Wiki on the Seebecck effect) is I think the issue. All dissimilar metals will show that effect when connected together, the cold compensation circuitry injects a small current in order to 'remove' the 'room temperature' readings of any other such possible 'junctions', principally the thermocouple connections to the measuring equipment W/o this compensation the difference in temperature between the two junctions, 1. the hot or sensing junction and 2. the termination junction or cold junction needs to be subtracted from the measurement. This compensator as I said is in the return or 'ground' leg of the thermocouple and it serves to offset the local seebeck effect generated where the thermocouple is connected to the meter/converter. Any current injected at this point will offset the hot thermocouple measurement. The issue is most likely galvanic in nature, mixed brass and steel piping causes no end of trouble, fast corrosion, destruction of plumbing, ETC it can be thought of as a battery of several thousand microvolts to several hundred millivolts that is 're-biasing' the joints slightly I think a ceramic type of protector/insulator might fix the problem, you might test it by isolating the probes from the measured media... Water?. when you reported that the issue changes when the PC supplied the missing clue. You can use an isolating amplifier ( a type of IA (instrumentation amplifier) or you can isolate the thermocouple end and the Arduino and see what happens. There are available commercial devices that are made for your task. They are however Expensive, one that comes to mind is a remote thermometer with a 4 - 20 mA current loop sensor and there are devices that will report RS232 or RS485 data, all are of the isolated type. A Grainger catalog is a good place to start and then perhaps all you might need is an internally isolated thermocouple. This issue is young yet and there are many different things that I/We are unaware of. I am reasonably certain the issue is easily fixable, it might take some time (labor) and money on your end for parts only... I don't charge for my time... I am retired and I am going to stay that way. This group, the Arduino idea, (I have 2 uno's and a mega 2560 from Ebay...) and the kind people here help to make my lessons in 'C' and 'C++' in this forum a nice way for an old man to pass time.
I'm having similar problems. With the Arduino connected to a laptop running on battery, the readings are correct. As soon as I plug in the laptop, the readings go bezerk. Except when the thermocouple is not immersed in the grounded water-bath. So I think there's some ground-loop through the thermocouple over the laptop's power connection to the arduino.
The cold junction compensation is not the source of the problem. You measure the temperature of the cold junction with a separate RTD and the temperature measured with the RTD at the CJ is just fine. The thermocouple is connected to a differential input of the ADC (a TI-ADS1248) and there's a bias voltage connected to place the common-mode voltage close to mid-supply. I suppose the MAX6675 works very similarly.
This setup doesn't work when the thermocouple gets grounded. The easy solution would be to use a non-grounded thermocouple (but they react slow) or to isolate it yourself if possible. I'm looking for a better alternative but haven't found one yet. I'll keep you posted. Did you find a solution for your setup?