LM35--ground signal is conflicting with another ground pin on Mega--poor results

UPDATED - ignore bottom 2 replies I made, my apologies

I have 4 boards for this Arduino project:
(from bottom up):

  1. Arduino Mega 2560 - powered by 12V supply
  2. Trinamic TOS-100 stepper motor card - powered by 12V supply
  3. Custom board with LM35 component going to 5V pin, GND (on that same 8-pin section), and Vout going to A2 (using 1.1V reference to read in analog values.) - powered by the regulated 5V from Mega (which currently reads 4.83V).
  4. 16X2 LCD display (powered by a separate regulator circuit from 12V supply so as not to compound current draw from Mega.)

The component setup of entire project:

  1. 12V supply powers fan
  2. Fan blows air into a small cube.
  3. Inside the cube is the LM35.
  4. In between the cube and the fan is a Peltier sensor.
  5. The Peltier hot is connected to 12V, the cool is connected to IRL530NS transistor which is connected to digital output 42 on Arduino.
  6. A PID looping algorithm is used to bring ambient down to setpoint of 6 degrees C.
  7. When setpoint is reached, digital output 42 sends appropriate signal to transistor, switching it, allowing the Peltier to stop cooling to bring temperature back above setpoint.

As the PID is driving down the temperature, the current draw for all these components is ~4.33A.
When the setpoint is reached, and the temperature goes to < 6 degrees, the transistor switches, and current draw is now (appropriately) ~0.38A.

The only after-effect is the readings produced from the LM35. If the temperature on the LCD reads 5.89 deg C (for example), the transistor switches, then the readings become ~1.2 deg C.

I read about how LM35 needs its ground pin to be the sole connection to the ground pin on the Arduino.

However, because of the stacked design, that ground pin passes through the Trinamic TOS-100 ground pin.

When I removed the Trinamic and just ran the same setup, the current drop still ended up ~0.38A but the LM35 no longer produced faulty data (at least, according to the LCD display.)

Clearly, the Trinamic is disrupting the reading of the LM35. Here are the questions that I have (as a beginner in engineering.)
Why is this?
How can I electrically categorize the error?
How can I determine if it truly is conflicting grounds that produce the error?

OH! Big additive to the post.

I am using the 1.1V internal reference to get better readings from the sensor.

However, the entire scenario produced the same effects when I used to power the LM35 from the 5V pin (where, the analog output would shoot down during transistor switch.) It just got worse when I powered it from the regulator circuit.


I'm going to just simplify this and ask a general electronics question.

Using an LM35 temperature sensor:

  1. Vpower is 4.995V coming from an LM2931C regulating circuit (which is powered by a 12V supply).
  2. GND is connected to Arduino
  3. Vout is read by analogRead() in Arduino - using 1.1V reference (appropriately average 10 read values to ensure relative accuracy.)

Can this be done? Using the 1.1V reference for a sensor that is not powered by Arduino? How would I make this work if my current setup is wrong?

Can this be done?

As long as the analogue input stays within 0-5volt, all is ok.
Even with 1.1volt Aref enabled.

You could make your life a lot easier by replacing the LM35 with a digital DS18B20 sensor.

Ground is ground
LM35 is an easy chip to work with.
Just tie all the grounds together (including Arduino) in "star" arrangement and there shouldn't be a problem.
You generally run out of grounds on the average Arduino board, so just put some extra female (receptacles) on a stripboard or whatever and use one of the two grounds on the say Uno power header to supply.