A voltage source is a power supply that will sink or source current into a load until its predefined voltage is reached. An ‘ideal’ voltage source can supply infinite current in either direction, regardless of load (except into zero ohms, see below). Real-world voltage sources have a current compliance range.
Note: an ideal voltage source driving a zero-ohm load is an undefined condition. This makes sense, since I = E/R, so for any nonzero E, the limit as R approaches zero doesn’t exist. Simulators will catch this condition and flag it as an error.
A current source is a power supply that will vary its voltage to sink or source its defined current into a load, regardless of the voltage or load it is driving into (except for an open circuit, see below.) Whether the voltage changes or not depends on the load. An ‘ideal’ current source can support an infinite voltage range. Real current sources have a voltage compliance range.
Unlike a voltage source, a zero ohm load poses no problems for a current source, as we have E = IR. Zero-ohm R merely results in the source forcing a current into zero volts.
You might ask, do you need voltage to have current? Not necessarily.
A real-world example of a current flowing without any voltage potential is a superconducting coil. We force current into the coil, building up to its target field strength. The current source is then removed and the coil ends connected together, forming a loop where the current keeps circulating.
Once the coil is loaded up and connected in a loop, there's no further voltage or current needed to keep things moving. Any possible decrease in current is strongly opposed by the change in flux, as you would expect with an inductor. The current we loaded up keeps flowing by itself - forever if there are no other losses in the superconducting coil system.
On the other handMoving on, an ideal current source driving an open circuit (E = IR, where R = infinity) resultscould result in an infinite voltage for any nonzero current source value. However, this is ok math-wise as multiplying infinity x any non-zero value of current is also infinity. There's no dividing by zero happening and thus no undefined condition.
For an open circuit we can further conclude that current source current is zero, and simulators will model this behavior and in addition, helpfully set the open-circuit voltage to zero as well.
In the real world an unconnected current source will be at one extreme of its voltage compliance range.
Wrapping things up:
- A voltage source outputs variable current to force a fixed voltage
- A current source outputs variable voltage to force a fixed current
And, the two corner cases to consider:
- Voltage source behavior is undefined when driving into zero resistance (I = E/R, where E \$\neq 0\$ and R \$= 0\$).
- Current source output is assumed to be zero when driving infinite resistance, (E = IR, where R \$=\infty\$.) Since I is zero by definition, E is also zero since zero (I) x \$\infty\$ (R) is still zero.