Category: Tank

Controlling a Brushless PC Fan with PWM

For a couple weeks, I’ve been looking into improving the Fan Controller in my tank. The purpose of the Fan Controller is to – you guessed it – control the fans. The main drive motors I have can throw off a lot of heat, and having good airflow through the tank is critical in not burning them out. I picked up a few different fans, but the one’s I choose to use are 24V DC brushless fans rated at ~4800RPM/~120CFM. They are really nice, but also use a fair amount of power. To help cut down on power usage, and increase battery life, the Fan Controller is supposed to control the fan speed based on motor temperature. And since I also love collecting all sorts of data, the Fan Controller is designed to record the fan speed.

My initial approach was to use a simple MOSFET with an optoisolator to control the fans from an Arduino’s PWM signal. This is pretty straightforward, and works pretty well. However, when I eventually went to work on the code that reads the fan speed from the fan’s tachometer, I kept on getting some really crazy results whenever the PWM duly cycle was anything but 100%. I finally hooked up the scope to see what the TACH signal looked like and I found that the PWM signal was being superimposed on TACH signal for any duty cycle less then 100%. I have no idea why this happens, but obviously my approach wasn’t going to work.

My first thought was going to be to try to find some 4-wire brushless fans with dedicated PWM input. The ones that I found were $60/each. I’m pretty sure I’ve already invested like $100 in fans, so that was a non-starter.

After some despair, I finally came across a few good resources. The idea was rather then use PWM to control the fan directly, use a PWM signal to control an LM317 adjustable voltage regulator and control the fan speed by varying it’s voltage. Clever Girl!

I modified the circuits referenced by choosing a different OPAMP that can support railed to rail 30V, and adjusted the gain for 24V operation. Below is the completed circuit. The fan controller uses an ATTINY84, OPA251 and an LM317.

MinuteMan Fan Controller

MinuteMan Fan Controller

Tank Control Board Update

I’m making progress on the next major subsystem for my tank project. Before Christmas, I had ordered the RobotEQ VDC2450 DC Motor Controller. It finally came in last week, and I can say I am really pleased: this thing is a beast. The VDC2450 supports two channels up to 150A each (!!!!!). It also features RC, Serial, Digital, and Analog inputs. It has all types of built-in monitoring (all accessible via the serial interface), and a whole mess of other insane features.

I decided to splurge on this controller ($545 + Shipping) because I would like to be able to reuse this in future projects. Also, its way more capable then what is probably necessary for the tank, so I shouldn’t have to worry about burning it up (I might add some additional fans near the control board just to get some air moving across the heatsinks). The only gotcha so far is that the serial interface is RS232 only, so I ordered some MAX3232s to be able to interface with the Arduino.

Progress on the main control panel for my tank. Showing the RobotEQ Dual Channel ESC.

Progress on the main control panel for my tank. Showing the RobotEQ Dual Channel ESC.

In this picture, you can see the main power distribution components in addition to the VDC2450. The main breaker is 100A and feeds a MAXI style fuse block I picked up off Amazon.

Also in the works as part of the control panel is the “power supply” that I’ve been working on. It’s really a hybrid power supply/power distribution board. It features a 5V DC-DC switching regulator to power the 5V systems on the tank. It also has fused and switched 24V outputs to power other tank subsystems (e.g. Fan Controller, eMarker Solenoid, etc.). One of the main reasons building this board was to add a few safety features. The VDC2450 will be powered through this board, in order to allow the controller to be “turned off” without disconnecting it from the main power. The eMarker Solenoid will be powered similarly to allow the eMarker to be disarmed.

The 5V buck regulator should be able to drive ~3A or so, which should be more then enough.

Eagle Layout for Power Supply

Eagle Layout for Power Supply


© 2022

Theme by Anders NorenUp ↑