-1
\$\begingroup\$

I did a search here, but found zero results. Please keep in mind that I have very little electronics knowledge, but I am very willing to learn.

I would like to be able to control an automotive engine cooling fan (actually, dual fans) via two separate inputs. On this engine, there is no coolant temperature sensor, rather a cylinder head temperature sensor. I believe this sensor is a simple thermistor. I can take measurements with a DVM in order to get the correct resistance range and report back here if necessary.

The second input would be a thermistor applied to the hot side A/C line just before it enters the condenser. I need to choose and source a thermistor for this application. I also need to figure out the temperature range.

Given that the two unknowns are the input resistance for cylinder head temperature and the thermistor for A/C, what else do I need in order to program the Arduino and make this work? I think the hardest part is going to be sourcing MOSFETs that can handle the high current loads. I want to design the circuit to handle inrush (fan startup from 0 RPM) current of 100A @ 14.8VDC per fan. 100% duty cycle will be 60A @14,8VDC per fan.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ If you gently power the fan up, you will reduce inrush current and probably extend lifetime of fan motor and transistors. I doubt (guessing here) the cylinder head sensor is a regular thermistor, I'd expect the temperature to be well over 100 degrees Celsius and therefore a thermocouple would be more likely. Did you measure the 60A? \$\endgroup\$
    – jippie
    Mar 24, 2014 at 18:24
  • 1
    \$\begingroup\$ This is not something you should be messing with. The cost of a screwup could be very high, as in a cracked cylinder head. \$\endgroup\$ Mar 24, 2014 at 18:43
  • \$\begingroup\$ Even if the cylinder head temperature sensor is reading well over 100 C, it will still correspond to a specific range of coolant temperature. I have an OBD-II reader and can get direct engine (coolant) temperature readings that the computer sees from that in order to program the Arduino. As far as danger to the engine, I am very mechanically inclined. I've even rebuilt a few. I'm confident that I won't destroy it. \$\endgroup\$
    – user39197
    Mar 24, 2014 at 22:02

3 Answers 3

1
\$\begingroup\$

Ok, my first answer was of the "don't do this" variety. Here is one that addresses how to accomplish the task of medium power DC motor control using an Arduino:

  1. Buy a DC motor driver. I assume your fans are 12V, not sure what current they draw, but assuming under 30A, this is one option:

http://www.basicmicro.com/USB-RoboClaw-2x15A_p_281.html

I'm not particularly saying to use that specific driver, it's just an example of what's out there. I use the 5A version with an Arduino in a balancing robot that I've built for a competiton. There is a library for interfacing with RoboClaws for the Arduino which provides you with a very sophisticated level of control.

  1. You could try to lay out your own driver. My experience is that unless you have very specific requirements (support for certain types of feedback, inputs, current sense, drive current, other control inputs) that are not supported by something off the shelf like the RoboClaw (or competitors), the cost in parts just to build your own will be about the same as buying a RoboClaw (or competitor), not to mention additional time spent learning PCB design, circuit design, MOSFET sizing/design, etc. Now, if you actually want/need to learn all this, by all means go ahead. But again, personal experience says you will destroy at least one or two prototype drivers along the way making the total cost much higher than an COTS solution.

  2. The el-cheapo could be ok if your motors don't draw too much current alternative: Look up H-bridge circuits (the basic design for something that is able to drive bi-directional DC motor). Actually, in your case, you only run the motors in one direction, so a half-H-bridge would be sufficient. Use a H-bridge chip like the SN75441one (or similar model) to drive a set of power MOSFETs. I used the H-bridge in one early motor driver design because I could not guarantee the switching characteristics of two independent PWM signals from a micro (to directly drive MOSFETs). But, I could feed one PWM signal, direction, and brake to the H-bridge and have it control MOSFETs which swiched much higher currents to my motors. And again, since you're only driving in one direction, you could consider skipping the SN75441one.

\$\endgroup\$
0
\$\begingroup\$

I have seen full locked rotor (FLR) be 10 times the running current of a motor. That was a compressor motor that was designed "on the edge". I would expect to see about 2 to 3 times rated amps on a fan during breakaway and start although I have not tested a fan on a car. I like the idea of PWM for the controller. Starting at 0 and ramping up will negate the high amps on startup and may substantially affect the cost. A cheap amp meter would be a good investment for any number of things. Good luck on the project.

\$\endgroup\$
-1
\$\begingroup\$

Typically, electrical automotive fans are either ON or OFF.

I'd have the arduino drive a relay 5V which then drives an automotive relay which switches the fans on or off.

As for cost of a screw up, I'm pretty sure in cars that already have good well designed cooling systems. . .you should turn off the engine and figure out what's wrong if you see or otherwise notice your coolant temp start to skyrocket. A homebrew solution while potentially more prone to failure, is not fundamentally less safe.

\$\endgroup\$
11
  • \$\begingroup\$ I have a simple thermistor controlled full on/off system in place right now. Unfortunately, the fans are rather loud when running. I would rather the fans not run at full speed unless needed, hence the quest for a thermistor controlled PWM that reads both coolant and A/C temp. It may be better to use a trinary A/C switch and just set the fan speed to 75% duty cycle when a specified A/C high side line pressure is achieved. \$\endgroup\$
    – user39197
    Mar 24, 2014 at 21:59
  • \$\begingroup\$ I don't think a relay is going to be a good idea with a high frequency PWM signal. I found a nice tutorial here: itp.nyu.edu/physcomp/Tutorials/HighCurrentLoads I could use the PWM from the arduino to drive an optocoupler and send that output to one of these to both isolate the arduino and get a full 12V +- signal to the transistor: amazon.com/dp/B007TKRSHW/… \$\endgroup\$
    – user39197
    Mar 26, 2014 at 14:49
  • \$\begingroup\$ @user39197 I was not suggesting switching a relay with PWM. I was suggesting skipping the PWM control altogether. I read your question as "I want to electronically control my engine fans and I decided to use PWM" and my response was "don't use PWM, just run them at full speed". I did not read your question as "My automotive cooling fans can only be controlled via PWM, how can I accomplish this using an Arduino?". \$\endgroup\$
    – iheanyi
    Mar 26, 2014 at 16:41
  • \$\begingroup\$ @user39197 The option you mentioned in your first comment sounds good. Anyway, getting back to your original question, should you want to use PWM, you should get a motor driver (device designed to run motors through power mosfets" You can get high quality DC motor drivers that handle 12V 30A for around $100. You can drive those either via PWM or over a serial connection. It would be ultimately easier than trying to put together your own - end up costing close to the same unless you already have your own board layout setup at home. \$\endgroup\$
    – iheanyi
    Mar 26, 2014 at 16:45
  • \$\begingroup\$ Well, I want to design the circuit to have a generous margin of safety. Though I haven't measured it directly, I've been told that these fans can draw up to 100A each on startup from 0 RPM, and have a continuous draw of up to 60A. That sounds like an awful lot to me, but I don't have an ammeter here to measure. \$\endgroup\$
    – user39197
    Mar 26, 2014 at 22:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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