car cooling fan for noob


I'm really new to Arduino and programming, but have the interest for electronics and gadgets, and have bought my first arduino board to test this out.

I want to use it as a controller for a radiator fan in my car, since the one I have now is mechanic, and I want to change it with an electric one. I'm also thinking this would be an easy experiment for learning more about programming and arduino.

What I want is a fan that increases in speed as the engine heats up. Also a display showing the coolant temperature and fan speed.

I was thinking about connecting the arduino to the car's ECU, but this will be to complex for my first time project, so I will just connect a thermostat with ohm increasing as the temperature raises.

Also, the fan I have bought pulls 10 amps. , so what is the best to use between the arduino and the fan? will a mosfet do the job?

As you probably already realized, I'm a complete noob on this, and really need as much help I can get with codes, components etc.


For sensing the temperature of a solid object like the manifold or a liquid like the coolant you need a thermocouple. This won't just plug right in to the Arduino, but you can read this thread to learn more about that.,21414.0.html

For the display I would get a character LCD. Many different sites sell these. Some use a parallel interface and others just use a serial line. Serial is preferred especially if you are short on pins, but neither is that hard to work with. Anything flashier than a character LCD (phone style graphical displays, etc.) is likely work more than you want to take on.

As for the fan, yes you can use a MOSFET, but it will have to be a large one capable of handling the current, and some heat sinking would be good. If you go with the MOSFET make sure the Arduino can fully saturate it (turn it on all the way). If this is not the case your MOSFET turns into a resistor and will dissipate LOTS of heat.

You could also use an H-bridge driver chip like the one linked below. It's a bit overkill because you would never want to run the fan backwards, but it with the right heat-sinking it would be very reliable and might be better suited for dealing with the inductive kickback the fan motor may give you.

Thanks for the answer. I have ordered a H-bridge, lcd snd temperaturesensor, and pretty much got it working on my testbench.

I just have one question. The PWM (analogwrite) can take values up to 255. What happens if I give it a higher value? will it read every value from 256 and up as 255, or will it stop?

I paste in my code here (it’s not finished yet, the analogoutput is not set etc.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

void setup()

void loop()
int sensorValue = analogRead(A0);
float hastighet = sensorValue / (3.2);
float temp = sensorValue * (98.0 /1000.0);

Thanks for all help

Only the least significant byte is actually used. If you pass in 256, that is equivalent to 0; 257 is equivalent to 1, and so on.

Ok. Then i should use min(hastighet,255) to get it right.. google ftw! LOL :)