I just got an old PC fan from a computer that was taken apart at my school and I want to try and figure out how to make it turn on using the GPIO ports on a Raspberry Pi 3 Model B. It is a DC 12V fan and it has three wires. One red, one black, and one yellow. I looked it up online and it looks like the black is ground and the red is the 12V- wire. Is there any way I could control this straight from the GPIO pins. Thanks.

Edit: Is there a way that I can control the fan directly from the GPIO without a motor driver chip?

  • the fan is a motor ... google RPi control motor – jsotola Sep 27 '18 at 2:45
  • what do you mean by that? – rrr Sep 27 '18 at 2:47
  • the yellow wire could be used as a control line to control the fan speed or it could be a tachometer signal to read the fan speed .............. the fan voltage is probably printed on the fan itself – jsotola Sep 27 '18 at 2:54
  • yeah it is a dc 12v motor – rrr Sep 27 '18 at 2:56
  • I made an edit to the original question that might clarify my question. ^___^ – rrr Sep 27 '18 at 2:59

There is no way to control safely any motor directly from a Pi GPIO. You always need to use a motor driver board or the equivalent in discrete components.

  1. The Pi GPIO are all 3V3.
  2. A Pi GPIO can only supply a few milliamps of power (say 20 milliamps).
  3. The back EMF generated by a collapsing motor field can destroy the GPIO and the Pi.

You can buy a suitable L9110S or L298N based board quite inexpensively from the likes of eBay.

You could use a discrete motor driver chip such as the L293D or for limited control (not direction) a ULN2803A.

You could implement your own circuitry with suitable transistors, resistors, and diodes.

  • The pins on a raspberry pi can be up to 5v though and it is right next to a gnd pin – rrr Sep 27 '18 at 14:48
  • 1
    @rrr Yes, you can power a small motor from the Pi's voltage rails. The motor will be running whenever the Pi is powered. That wouldn't be counted as motor control though. – joan Sep 27 '18 at 15:01
  • if i wanted it to be on whenever the pi was on could i attach the red wire to the 5V and the black wire to the ground pin and not use the signal wire? Would that be safe? – rrr Sep 27 '18 at 23:15
  • That would be fine (as long as the motor doesn't need more current than the Pi can supply, if it does the Pi will keep rebooting). – joan Sep 27 '18 at 23:21
  • it needs 12V but it should be able to run off of 5V right? It just wouldn't spin as fast? – rrr Sep 27 '18 at 23:33

Go in raspi config through terminal. Then in performance analysis. There you will get a option of cooling fan. Just enable it and connect the yellow wire to GPIO 14 (pin 8). Pi will automatically control it's speed according to temperature.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.