Okay, so today I messed around with something called a “current mirror” using MOSFETs. I’d heard about these things before, figured it was time to actually build one and see how it works. Basically, the idea is to make one current “mirror” another, even if the load on the second part of the circuit changes. Sounds kinda neat, right?

Setting up shop
First, I grabbed two N-channel MOSFETs – I used 2N7000s, ’cause that’s what I had lying around. It’s important that they’re pretty similar, ideally from the same batch, so their characteristics match up nicely. You don’t want one acting all weird compared to the other.
Then, I wired up the first MOSFET, that acts like programing side of the mirror. This part is simple:
- Connected the gate and drain together. This makes it act like a diode, always “on” as long as there’s voltage.
- Hooked up a resistor (I used a 1k Ohm one) between the drain/gate connection and my power supply (I set it to 5V). This resistor sets the current we’re gonna mirror.
- Connected the source pin to ground.
The Mirroring Action
Now for the second MOSFET, the one doing the actual mirroring:
- Connected its gate to the gate of the first MOSFET. This is the key – they share the same gate voltage.
- Connected its source pin to ground, same as the first one.
- Put a different resistor (I tried a few, like 470 Ohm, 2.2k Ohm) between the drain of this second MOSFET and the power supply. This is our “load” – it could be anything, like an LED, a motor, whatever.
Show time my result
I powered it up, and then used my trusty multimeter to start measuring. I checked the current flowing through the first resistor (the 1k Ohm one). Let’s say it was around 4.3mA (it will depend on your supply voltage and resistor, of course). Now, I measured the current flowing through the second resistor, the load on the second MOSFET. Guess what? It was almost exactly the same, even when change the load resistor value. The current value changed, but was the same for each branch!
I swapped out that second resistor for different values, a smaller one, a bigger one. The current through that second branch changed to keep same value as programing side, Sure, the voltage across the resistor changed (Ohm’s Law, you know), but the current stayed remarkably constant.

Why the does it work
It’s all about how MOSFETs work. By tying the gates together, I forced both MOSFETs to have the same gate-to-source voltage. Because they’re (ideally) matched, that same voltage produces the same drain current in both. The second MOSFET doesn’t “care” what its load resistor is; it just adjusts its drain-source voltage to keep that current flowing.
It’s not perfect, of course. There are things like the “Early effect” that can make the currents a little different, especially if the drain voltages are very different. But for a simple setup, it’s surprisingly accurate.
This was a fun little experiment. It really helps to see these things in action, instead of just reading about them. Next time, I might try messing with different types of MOSFETs, or maybe even try building a current source instead of a mirror.