Electric Water Pump controller for Motor Vehicle.

Hi all,

Looking for some guidance on the feasibility, and the way in which I would go about producing this.

At work I am building a vehicle that is based heavily on performance for a motorsport application. To reduce parasitic drag on the engine we are using an electric water pump rather than a belt driven pump run off the crankshaft. The pump we have has no method of controlling its speed apart from on or off. We require the pump to either slowly increase its speed by regulating the voltage supplied to the pump (+12-13.5v) or pulsing the pump on and off during the warm up phase of engine running.

The controller needs to be able to tell when the engine coolant temperature has reached 70 degrees centigrade to then switch to full time running to keep the coolant temperature in the right zone. If it drops below 70 deg C again then it reverts back to the warm up slower speed, or pulsing, to allow the coolant to return to the designed operating temperature. This is to prevent over cooling of the engine.

It would be great also if I could implement a warning system into the unit for displaying in the cockpit of the vehicle, so an indicator to say the controller has power, that the pump is running and if possible a way of detecting if the pump has stopped (or seized) and displaying a warning light for that scenario too.

I'm sure that many people who are experienced with Arduino program writing are probably thinking, well that's fairly easy to achieve, so here's the harder part :)

I would really like to implement a pump after-run feature, so that when the engine is turned off the pump keeps running until the coolant drops below 70 degrees Centigrade again. This is to prevent heat soak damage in the engine.

However, the controller can not just constantly draw 12V from the battery as it is a small racing cell that doesn't hold enough energy to run electrical items for very long without being charged by the alternator. Is there a way to turn the Arduino off with code? if so then great but how do you start it again? if it isn't possible to turn the board off then I can work a way with a thermostatic switch to cut the power.

So to summarize:

1) Pump needs to run slower or pulse until coolant temp reaches 70 deg C 2) Controller needs to revert pump back to warm us sequence if temperature goes above 70 and then drops below again 3) Warning system for unit power, power loss, or seizure. 4) Ignition off, after-run sequence that cools the engine down with the pump running.

I do not have a great deal of knowledge in programming Arduino boards, but I am willing to learn, however if someone would like to develop this on my behalf, great! Also, if any professional programmers out there want to give me a quote for programming this then please do so.

Many thanks for your time folks,


Sounds totally feasible.

Write your code as a Finite State Machine (there is a library for this if you are not confident just using a switch statement http://playground.arduino.cc/code/FiniteStateMachine)

e.g. States could include

Off Power on Engine running water cold Engine running water hot Engine Shutdown System shutdown

I'm sure there are others, and you can have Finite State machines inside Finite State machine states.

Re: Power down.

The Arduino has various lower power modes, but I suspect that the normal engine temperature sensors may be a problem if you leave the system powered up.

I think the problem is more likely to be the other devices like the temperature sensor taking some power and also of course the water pump takes power.

It sounds like you need to separate the water pump and sensors onto a separate circuit, switched via a relay. The Arduino could control this relay, and you could even have the Arduino power from the same circuit, with a separate push button to initially energize the relay, after which point the Arduino would keep the relay energized until the end of the cooldown time, at which point the Arduino would stop energizing the relay and the power to the whole cooling system including the relay would go off.

Thanks for your input.

The idea of having the system using relays was what I was going to do anyway, however I had not though of having the arduino control the replay that gives it power.... That's quite a good way of doing it. In the case of the vehicle you wouldn't need a button to energize the relay, you would simply use the ignition live +12v supply that is given from the actual ignition switch.