V8 Cowboy
New member
- Joined
- May 31, 2023
- Member Number
- 6488
- Messages
- 2
I'm very interested if you want to share you're schemes and code for the Arduino Nano.The Nano has an LM1117 linear regulator. It's going to dissipate a lot of heat for 12+v input and probably cook itself eventually. It's also not reverse-polarity protected or load-dump protected for automotive use. I happen to have a PWM fan controller I designed on my desk next to me right now that I've been polishing the code on. I can share code/schematics if you want, but read on:
When you "force" the fan to max, that's probably actually 95% duty cycle, not 100%. The designed range of DC for that fan is likely 5-95% or 10-90%. It's done like this so if there's a shorted wire or a broken wire the fan controller (in the fan itself) knows there's a problem and runs the fan at full speed. If you sent the PWM output to 100% you're telling the fan something is wrong and it might not react the way you want.
The input to the fan is probably one that wants a simple "switched ground" type output from your Nano. You would wire up a simple NPN transistor on your Arduino GPIO pin and between ground and the fan's input. PWM switches this ground on and off. This is why the voltage doesn't matter, too.
I think your control strategy lacks a bit... If you really just want the fan to come on at 160 and haul ass for no reason then so be it. But a better way is to set up a lookup table in your program that applies different DC's to different temp sensor values. At 155F you might need 30% to keep it cool. Put 5 degree steps in the table. At 170F it might need 60%, etc. You will have to run it a bit in-situ, but once you do this you'll know how much fan you really need at these different temps. Running the engine at 160F is a fruitless tree because you'll be fighting your thermostat all the time and running the fan way more than you need to. You want an engine thermostat that's 10-20F lower than your temp setpoint. That probably means you should run a 160F thermostat and set your coolant target temp to 180F, something like that. You will learn that the relationship between the fan speed and engine temp is pretty damned linear, actually. Simple, but took a while to learn this.
Also, you would be smart to switch to a two-wire temp sensor to avoid all the garbage that can come in from sharing a chassis ground with the single wire. The typical GM sensor is cheap and the datasheet has all the values already. I can share my lookup tables if you want.
You don't need the manual override switch or the pot. You are trying to deal with a situation that won't exist in real life. If you want the fan to run at full speed all the time just disconnect the PWM input and watch it fly.
I have A 2000 Dodge Dakota 4.7L and i'm on the same path off building my own fan controller with an Arduino Nano.
Bought one and will be here next week.
I'm from the Netherlands, and there are zero parts available for the Dakota overhere.
My fan clutch died on me and my original A/C fan was broken already.
instead of trying to find or repair my clutch fan, i bought a used Mercedes ML series fan 850W PWM controlled fan and put it in the Dodge.
Currently and temporarily i let it run on the Fail Safe off the fan, the Fan output off the Dodge PCM is providing power to the Fail Safe wire on the Mercedes Fan, because i haven't figured out yet how to program the Arduino Nano.
I'm trying to make a program for the Nano, and i want to use the inputs of the A/C High Pressure Switch for A/C control and the input of the ECT sensor for engine temp control.
I've never had any experience with any kind of Arduino, so i could use some help....