I have designed something I want to have someone check out

I have ZERO idea about electronics in respect of what I have designed, i have designed digital gear before using discrete components to make a 7 segment display driver that can output hex values using discrete 74 series IC's. But this is new territory.

I have a SuperMicro H12SSLi, this motherboard handles fans very differently it has 5 fans in one zone and 2 fans in another. If the fans go outside of a pre prescribed range all fans go into emergency mode and run at full speed.

[EDIT] Changed schematic to .png , apparently .PDF is a bad idea.

To this end and using what I managed to glean from the internet I have designed for the atmega 2560 a circuit that you can program to lie to the onboard fan controller through the fan headers while simultaneously being able to program the fans speed yourself using the 2560 as a serial terminal and feeding it a byte steam.
Temperature sensors built into the motherboard are read by a script and then fan speed commands will be sent via a byte stream over serial to set the correct fan to the right speed to compensate.
Now what I don't know you could fill a book with but could someone with sufficient knowledge take a look at my schematic and see if there are any glaring errors and also tell me if the 2560 has sufficient pins to pull off what I have designed.
I will probably also need to throw some smoothing caps over the power but have no idea how to calculate what is required or what type of cap to use..
Schematic will be attached. Please don't be to harsh on a complete newb.

Know that each pin support a design maximum of 20 mA. Add to that the limit of total I/O current. In other words, You can't pull 54 x 20 mA == 1080 mA out off the pin transistors.

I don't find the controller in the schematics. How is it powered? Does the controller power any peripherals?

I was going to power the controller and this whole circuit of a Molex power connector from the 1200W ATX PSU on the motherboard, the fan headers also have 12v lines and I believe to avoid noise on the 12v rail from what I have been told they should all have been joined which I have done. The fans on the 1-1 2-1 3-1 etc connectors all run at 12v with various amounts of current draw but they normally can run just off the fan header power on the motherboard but in this case have their own 12v supply from the PSU as well.
I wasn't sure of the voltage requirements for the 2560 as I have read various requirements but I assume that 5v from the computer PSU would be enough.

There is no mega in the schematic but it would require 22pins to connect it all and not being much up on that side of things is why I have asked.

Query - 54 x 20ma? I'm only using 22pins and only 8 of those feed of the transistors back to the motherboard.

I am looking at running 8 of the following fans off the bottom set of connectors..
Noctua 120mm Fans

1 Like

If you use a ULN2803 it will eliminate 15 parts (the transistors and resistors). This will reduce your idle current and the Arduino can directly drive them. They may be gotten on breakout boards if you want to go that route. You may get stuck with a ULN2007, very similar part but with only 7 channels.

While you are at it take a look at resistor arrays, that would save a lot of parts as well. All of this can be done through hole or SMD.

Thank you for that, I can currently get the ULN2803A as an 18 Pin DIP, resistor pack.. good idea 8 pin 1 common 7 connections.

1 Like

Hi, @thevaultdweller

To add to your circuit;
LEDs to indicate that the 5V and 12V supply are present.
Some test points on your PCB to allow easy access to input and output signals.

Tom... :smiley: :+1: :coffee: :australia:

1 Like

Do not connect the pins 2 of the 'to motherboard' J1-J7 connectors.
You are shorting 12V outputs together ( which is not necessary )

P.S.
Also in the schematic ( which seems eagle ) add a dot in every wires connection, which is correct, and if you'll generate a pcb you'll see the connected/unconnected signals

1 Like

Yes indeed it is Cadsoft eagle 7.60. I have made the changes regarding the ULN - although I don't entirely understand this chip so hopefully got it right. I have disconnected PIN 2 of J1 through J7 I can understand what you are saying regarding that. Dots I did earlier. I haven't put a LED on it yet but I may do that, it's not hard, at the moment though if the 5.25 inch power connector is not connected nothing is going to work anyway.

Just for reference because everyone seems concerned about current being pulled from the pins, while there are 22 pin connections as far as I am aware the MEGA is not actually driving the circuitry - please correct me if I am wrong. up to 7 sets of Tach signals are being sent back to the board, quite literally just PWM pulses.

The other side is where the mega is reading 7 tach signals and setting as appropriate the pwm out to bring the fan up to speed.

Is it really drawing that much current?? I am asking as while I know that the mega can only handle so much current as far as my understanding goes there is only 7 pins being actually driven which would be output speed signal to the fans..

Can you help me understand please.

Updated schematic....

You forgot the resistors on pin 3 of J1-J7?

P.S.
Connect the uln com pin to 12V ( or do not connect at all, is only to cut inductive loads, here you have only 10K resitors as load )

Done and added power LED as well, I will probably end up turning this into a shield to start with, I can't imagine trying to fit an entire 2560 board in with it. :slight_smile:

Do you think I should be using a higher load value, as I said I know very little about electronics and this load value came of someone else's schematic which was running one PWM fan.

Make your PCB like a shield that plugs into a 2560 Mega.

Tom.. :smiley: :+1: :coffee: :australia:

No I would not change the 10K resistors ( 1.2 mA load ).
Forgot to add: I'd also drive the ap/buzzer via a transistor.

P.S.
I generally use Jlcpcb for prototiping ( but there are others too ) can't believe their ( low ) prices!

1 Like

It will be good to get this working so I can the servers it is being built for up and running and put them to use, I'm using them to test a new form of compression for satellite DEM dem data which could reduce the entire map of the united states which takes up 30 Terabytes of data as 1M DEMS down to less than 15% of its original size.
Bit hard writing python code though with two servers worth of fans running full tilt.

Probably run some pins from the Mega to a solderless bread board to start with just to make sure everything is working, the code is currently in three parts and ill have to work it together. One part to emulate a serial terminal over USB, one part to sort out the false tach signals back to the motherboard fan header and the last part to manage the fans and trigger an alarm if they fall below minimum. I'm also going to have it store the false tach values so you can program it via serial, save all the values and then remove it and put it into another device and its good to go. Possibly set it up with default fan profiles as well and a single temperature sensor so it can ramp fans by profile.

Wow JLPCB is very cheap.

Make a backup copy of your data before testing the circuit on your servers... I mean the programs, not the terabytes ; - )

I already have a backup of all of it. first thing I did, will be testing things thoroughly as these servers are worth a small fortune.

BTW the diode in that circuit definitely will not be suited for some reason my Eagle ver only had it available barring LEDs

Added transistor to feed buzzer.

Associated question I noted in another message that the Arduino can be placed into Host mode from this info "In OTG mode the Host/Device behavior is controlled by the USBx_ID pin . For OTG this must be directly connected to the USB OTG connector. If the USB device that's plugged in pulls this signal to GND (<10Ohm resistance to GND), then the OTG controller will switch to Host mode." I assume that host mode is what I need to attempt to pull off my serial emulation shenanigans - would this be a correct assumption?

Sorry, no experience with usb

No problems, I have it working to a certain extent, I can run up a program on the Arduino and send and receive characters, it was an example from a chap here which works for the most part but I don't think putty was behaving to well sending ALT Numerics to form single characters, I shall have to try the same sketch in the morning on my Linux box as I think Windows maybe creating problems... quite typical.