In electronics, a signal is a time-varying electrical quantity—usually voltage or current—that carries information from a source to a destination. Unlike power, which exists solely to deliver energy to a load, a signal's exact amplitude, frequency, or pulse width is the message. Understanding what a signal is in electronics changes how you route wires, select shielding, and configure microcontroller pins, because treating an information-carrying conductor like a power rail will destroy your data. Beginners commonly confuse signals with power, assuming any 24V or 5V wire is interchangeable, or they mistake a digital PWM waveform for a true analog DC voltage.

Signal vs. Power: The Fundamental Split

The easiest way to separate signal from power is to look at the receiver's impedance and the circuit's goal. Power circuits are designed for low impedance and high current to maximize energy transfer (watts). Signal circuits are designed for high receiver impedance and low current to maximize voltage accuracy or noise immunity, caring only about the integrity of the data.

The Water Analogy (Used Once): Think of power as the main municipal water line filling a swimming pool; you only care about the total volume delivered over time. A signal, however, is the pressure fluctuations in a pipe used to tap out Morse code. You don't care how much water moves; you care entirely about the exact timing and amplitude of the pressure ripples.

When you route a 5V power line to a motor, a 0.5V drop due to wire resistance is usually fine—the motor still spins. When you route a 0-5V analog signal from a pressure transducer to an ADC, a 0.5V drop means your microcontroller reads 10% less pressure than actually exists. This distinction dictates your wire gauge, shielding requirements, and whether you use voltage or current to transmit the data.

Where You Meet Signals in Practice

Signals aren't just abstract theory; they dictate physical hardware choices on the bench and in the field. Here is where signal classification forces your hand in real designs:

  • Wire Selection: Digital signals like I2C or SPI require tightly coupled, low-capacitance wires to prevent edge-rounding at high speeds. Analog signals require twisted-pair, shielded cables (like Belden 8760) to reject electromagnetic interference (EMI).
  • Microcontroller Pin Configuration: An ESP32 pin must be explicitly configured via software as an ADC input, a DAC output, or a digital GPIO. Feeding a 5V analog signal into a pin configured for digital I2C will yield garbage data and potentially damage the silicon.
  • Termination Resistors: RS-485 digital signals require a 120Ω termination resistor at the ends of the bus to prevent signal reflections. Analog 4-20mA current loops require a precision shunt resistor at the receiver to convert current back to a readable voltage.

Worked Example: Resolving a 4-20mA Loop with a 16-Bit ADC

Let's look at a concrete numeric example to see how signal type and ADC resolution interact. Suppose you are reading an industrial pressure transducer (0-100 PSI) that outputs a 4-20mA current signal. You are wiring this to an ESP32, but because the ESP32's internal 12-bit ADC is notoriously non-linear and limited to 3.3V, you decide to use an external ADS1115 16-bit ADC.

The Setup:

  1. Shunt Resistor: You place a 100Ω precision resistor (0.1% tolerance) across the ADC inputs to convert the current to voltage.
  2. Voltage Range: At 4mA, the voltage is 0.4V. At 20mA, the voltage is 2.0V. Your signal span is 1.6V.
  3. ADC Configuration: You set the ADS1115 Programmable Gain Amplifier (PGA) to the ±4.096V range.

The Math:

  • The ADS1115 in this range has a resolution of 4.096V / 32,767 = 0.125mV per step.
  • Converted back to current: 0.125mV / 100Ω = 1.25 µA per step.
  • The sensor's span is 16mA (from 4 to 20mA) representing 100 PSI. Therefore, 100 PSI / 16mA = 6.25 PSI per mA.
  • Final Resolution: 6.25 PSI/mA × 0.00125 mA/step = 0.0078 PSI per step.
Bench Tip: If you had tried to use a 0-10V voltage signal over the same 50-meter cable run, wire resistance and EMI from nearby VFDs (Variable Frequency Drives) could easily introduce 50mV of noise, destroying your resolution. The 4-20mA current loop ignores wire resistance entirely, which is why it remains the gold standard for industrial analog signals.

Decision Tree: Choosing Your Signal Architecture

Choosing the right signal type prevents costly rewiring later. Use this decision path to select your architecture, terminating in a concrete hardware pick.

If Your Application Requires... Then Choose This Signal Type Concrete Hardware Pick
Short distance (<2m), multiple sensors, low speed Digital (I2C / SPI) BME280 Sensor + 4.7kΩ pull-ups
Short distance, simple MCU reading, low noise Analog Voltage (0-3.3V) ESP32 Internal ADC + 100nF bypass cap
Long distance (10m-100m), high EMI environment Analog Current (4-20mA) 100Ω Shunt + ADS1115 Breakout
Long distance, high speed, exact timing required Differential Digital (RS-485) MAX485 Transceiver + 120Ω termination

Default Recommendation: If you are unsure and your sensor run exceeds 5 meters in an environment with motors or relays, default to a 4-20mA current loop read by an ADS1115. The noise immunity of current signaling will save you hours of software filtering and debugging.

Common Signal Mistakes and How to Fix Them

Even experienced makers trip over signal fundamentals. Here are the most frequent errors and their fixes:

1. Measuring PWM with a DC Multimeter
A microcontroller outputting a 50% duty cycle 5V PWM signal is a digital signal switching between 0V and 5V at high speed. If you probe it with a standard multimeter set to DC Volts, the meter's internal low-pass filter will average it and display ~2.5V. This leads beginners to believe they have a true 2.5V analog signal. Fix: Use an oscilloscope or a logic analyzer to verify if a signal is true DC or a PWM waveform.

2. Ground Loops in Analog Voltage
When connecting a 0-10V sensor powered by a 24V supply to an Arduino powered by a USB wall wart, the two devices have different ground potentials. The 0-10V signal references the sensor's ground, not the Arduino's ground. This potential difference drives current through the signal wire, causing erratic readings or fried pins. Fix: Tie the grounds together at a single star point, or use an isolation amplifier to break the galvanic connection.

3. Missing I2C Pull-Up Resistors
I2C is an open-drain digital signal protocol. The devices can only pull the line LOW; they cannot drive it HIGH. If you wire an I2C sensor without pull-up resistors to VCC, the signal line will float, and your microcontroller will read random noise. Fix: Always install 4.7kΩ resistors between SDA/SCL and VCC (usually 3.3V or 5V) unless your breakout board already includes them.

Frequently Asked Questions

Can I use a power wire to carry a signal?
Physically, yes, but electrically, it's a bad idea. Power wires are often untwisted and unshielded, acting as antennas that pick up EMI. Furthermore, the high current flowing through a power wire creates a fluctuating magnetic field that will induce noise into any adjacent signal wires. Always route signal and power in separate conduits or use shielded twisted pairs for signals.

Why do we use 4mA as the 'zero' point in a 4-20mA loop instead of 0mA?
This is a deliberate fault-detection feature called a 'live zero'. If the signal drops to 0mA, the receiving PLC or microcontroller instantly knows a wire has broken or the sensor has lost power, rather than assuming the measured physical quantity is simply at zero.

For deeper reading on ADC grounding and signal conditioning, refer to the Analog Devices Data Conversion Handbook. If you are implementing these signals on an ESP32, always consult the latest Espressif ADC Oneshot Driver Documentation to ensure you are using the corrected, linearized ADC APIs introduced in recent ESP-IDF releases.