Tim's Solar Motor Driver
☀️🔧 Track the Sun With a DC Motor
This project lets you control a large DC motor to track the sun.
If you want full dual‑axis tracking, simply use two boards — one for each axis. 📡
- One for horizontal movement ⬅️➡️
- One for vertical movement. ⬆️⬇️
This is a compact, reliable solar DC motor driver that uses a pair of LDRs (Light Dependent Resistors) to sense the sun’s position and automatically move your panel or reflector toward the brightest point. 🌗➡️🔆
There’s no microcontroller involved — the circuit is fully analog. It uses an op‑amp as a comparator to detect light imbalance and then switches relays to drive the motor in the correct direction. 🎛️➡️🔁➡️⚙️
With appropriately rated relays, this little board can control very large DC motors, making it suitable for anything from small hobby trackers to heavy‑duty solar positioning systems. 💪🔋
Supplies
This driver is built on a custom PCB that I designed and had manufactured by
.
I have shared the project on PCBWay: Tim's Solar Motor Driver
The working voltage of the PCB is 5 V, and most of the components I used were simply parts from my “box of bits.” You don’t need to match every part exactly — the circuit is forgiving, and you may need to tweak values depending on your location and sunlight levels. ☀️
LDRs (Light Dependent Resistors)
LDRs can be a bit unpredictable — their specs vary wildly between manufacturers.
- The ones I used are old stock with unknown brand/spec.
- Dark resistance: around 1 MΩ (tested by covering with black card).
- In use: typically 1 kΩ to 20 kΩ depending on light.
- For a balanced voltage divider, aim for around 10 kΩ in ambient light so it matches the reference voltage. When pointed at the sun, the resistance should shift enough to trigger the comparator.
Op‑Amp (Comparator Stage) ️
I used an NE5532B — a high‑gain audio op‑amp (overkill, but it works beautifully). Any compatible op‑amp that runs on 5 V and can swing above/below the logic threshold will do.
- Vcc: 5 V
- Output only needs to go above or below the logic gate threshold — nothing fancy.
NOR Gates (Logic Section) ➡️
The logic is handled by a CD4001B Quad 2‑Input NOR IC. I use three of the four gates.
- Must be 5 V compatible
- Any equivalent CMOS NOR gate should work fine.
Relay (Motor Drive Output) ⚙️
The relay is the common type found in Arduino starter kits.
- Coil voltage: 5 V
- Type: SPDT (Single Pole, Double Throw)
- Contacts: Must be rated to handle your motor’s current draw.
The Circuit ⚡🔧
The DC motor driver is based around voltage dividers using LDRs, and the resulting signals are processed by an op‑amp used as a comparator. 🌞➡️📉➡️📈➡️🔁
- Reference Voltage ⚙️ The reference voltage is set by resistors R1 and R2. Adjusting R2 changes how sensitive the tracker is to differences in light. R2 can be 4.7 kΩ to 10 kΩ depending on how responsive you want the system to be.
- LDR Options 🌗 There is a socket for attaching remote LDRs. If you want to use the onboard LDRs, simply bridge the solder jumpers.
- Onboard 5 V Regulator 🔌 The board includes a 5 V linear regulator, which can supply the working voltage from the motor power via a solder jumper. ⚠️ Important: The regulator has a maximum input voltage. If your motor supply exceeds this limit, you’ll need a separate 5 V supply.
I’ve also made a video showing the PCB assembly:
Tim's Solar Motor Driver [Part 3] Add components. - YouTube 🎥🛠️
The video above demonstrates the different logic states of the circuit 🔄💡
Downloads
Assembled & Demonstrated ⚙️🎥
Here I’m demonstrating the circuit in action using a small 5 V DC motor. 🌀
Even though the demo uses a tiny motor, the driver itself is not limited to small loads. Because the output stage uses relays, this circuit can control much larger DC motors with ease. 💪🔋
The only real limitation is the relay contact rating — as long as your relay can handle the motor’s voltage and current, the tracker can drive it. 🚀
I’ve included a video showing the assembled PCB operating with a small motor so you can see the behaviour clearly before scaling up. 🎬✨
