This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AMC6821 FAN-FAULT Functionality

Other Parts Discussed in Thread: AMC6821

I'm just recently designed a Fan controller board that uses four AMC6821 to control four fans. (4-wired)

The fans are however of the NMOS type meaning that I have to use the PWMINV = 1 functionality. Will that affect the FAN-FAULT function ??

I can really not get the supervision of the fans to work.  I can change speed by I2C and the ~THERM input is working for my FAN_FULL_SPEED signal.
But disconnecting one fan or prevent it from moving will not give any failure. I read the status registers and monitors the FAN-FAULT output pin - but no sign of a failure detection.
I wait for several minutes giving it time for it's 5 spin-up sequence.

I want to run the fans manually from a CPU - i.e. SW DCY or SW RPM control.  The FAN-Fault-EN bit is set to 1.

Please - help me out.

Any guiding or SW examples would be great.

BR // Henrik

  • Hello Henrik,

    The issue might be related to the TACH-Low-Limit Registers (Addresses 0x10 and 0x11). The value of these registers should correspond to the minimum acceptable speed of the fan. By default, they are set to 0xFFFF≈0RPM making 0RPM an acceptable speed.

    For example, let’s assume the minimum duty cycle of a fan is 33%. This duty cycle makes the fan spin to 2000RPM±10%, so the minimum acceptable speed of the fan is 1800RPM. From this speed, we can calculate the value of TACH-Low-Limit Registers as follows:

    TACH-Low-Limit Registers = 6,000,000/1800RPM = 3333.3333 ≈ 3334 = 0x0D06
    (Reg. 0x10) = 0x06
    (Reg. 0x11) = 0x0D

    This makes the minimum acceptable speed = 6,000,000/3334 = 1799.64 RPM

    If TACH-DATA Registers (Addresses 0x08 and 0x09) read a value bigger than 0x0D06, the speed will correspond to a value smaller than 1800RPM.

    For example:
    If TACH-DATA = 0x0DFF = 3583, then speed = 6,000,000/3583 = 1674.57 RPM

    With TACH-DATA > TACH-Low-Limit, the AMC6821 tries 5 spin-ups, and if the spin-ups cannot bring the speed higher, then the FAN-FAULT pin goes low.

    Try this with your I2C program to test the FAN-FAULT pin without a fan:

    1) Reset the AMC6821:
    Write 0xFF to Address 0x01

    2) Change TACH-Low-Limit Registers to 0xEA60:
    Write 0x60 to Address 0x10
    Write 0xEA to Address 0x11

    Note: 0x EA60 sets the minimum acceptable speed to 6,000,000/60000 = 100 RPM

    3) START monitoring of TACH register, set Software DCY mode with inverted PWM: 
     Write 0x99 to Address 0x00

    4) Wait 30 seconds and you should see the FAN-FAULT pin going low.

    By the way, it is recommended to write to “Configuration Register 1” (Address 0x00) after all other configuration registers are written. The important thing is to avoid writing ‘1’ to the START bit of “Configuration Register 1” before the other registers are properly setup. This bit starts all monitoring processes (example: starts TACH pin if enabled) and everything else should be setup properly before monitoring processes are started. I explained in detail the importance of the START bit in this post:
    http://e2e.ti.com/support/data_converters/precision_data_converters/f/73/t/89773.aspx

    Regards,

  • Hi,

    Thanks - that was the missing part. Wasn't that far into the developement that I had started with setting up the TACH limits.
    However - it's a pitty that you choosed to have that limit to default 0 - I would really like these fans to be running more standalone at startup before the CPU starts to control it. A value of for example 10 RPM for low limit as default would have been better I think.

    But now I know how this works and simply have to use it that way.
    Maybe a better standalone and pincompatible circuit in the future ??  :)

    BR // Henrik