How does it work?
The Single Cell click allows the user to program temperatures generated from external sources to control the fan speed. This functionality also supports DTS data from the CPU. By pushing DTS or standard temperature values into dedicated registers, the external temperature readings can be used in conjunction with the external diode(s) and internal diode to control the fan speed. The EMC2103 from Microchip also includes a hardware programmable temperature limit and dedicated system shutdown output for thermal protection of critical circuitry. The EMC2103 supports a high or low frequency PWM driver. The output can be configured as either push-pull or open drain and the frequency ranges from 9.5Hz to 26kHz in four programmable frequency bands.
The EMC2103 includes an RPM based Fan Speed Control Algorithm. This fan control algorithm uses Proportional, Integral, and Derivative terms to automatically approach and maintain the system's desired fan speed to an accuracy directly proportional to the accuracy of the clock source.
The EMC2103 supports DTS (Intel's Digital Temperature Sensor) data in the Fan Control Look Up Table. Intel's DTS data is a positive number that represents the processor's relative temperature below a fixed value called TCONTROL which is generally equal to 100°C for Intel Mobile processors. For example, a DTS value of 10°C means that the actual processor temperature is 10°C below TCONTROL or equal to 90°C.
The EMC2103's RPM based Fan Speed Control Algorithm has programmable configuration settings for parameters such as ramp-rate control and spin up conditions. The fan driver automatically detects and attempts to alleviate a stalled/stuck fan condition while also asserting the ALR pin.
The tachometer measurement circuitry is used in conjunction with the RPM based Fan Speed Control Algorithm to update the fan driver output. Additionally, it can be used in Direct Setting mode as a diagnostic for host based fan control. This method monitors the TACH signal in real time. It constantly updates the tachometer measurement by reporting the number of clocks between a user programmed number of edges on the TACH signal.
The External Diode 1 channel can support a diode-connected transistor (such as a 2N3904) or a substrate transistor requiring the BJT or transistor model (such as those found in a CPU or GPU). The External Diode 2 channel supports any diode connection or it can be configured to operate in anti-parallel diode (APD) mode.
The MIC2253 is a constant frequency, pulse-width modulated (PWM) peak current-mode step-up regulator. A reference voltage is fed into the PWM engine where the duty cycle output of the constant frequency PWM engine is computed from the error, or difference, between the REF and FB voltages. The PWM engine encompasses the necessary circuit blocks to implement a current-mode boost switching power supply, allowing Fan 6 click to drive 12V fan.
Specifications
Type |
Brushless |
Applications |
For speed control of DC fans (5/12 VDC) than could be found on PCs, servers, network equipment, set-top-box and digital-video-recorder devices, and many other consumer electronics, or storage containers like RAID systems etc. |
On-board modules |
EMC2103 fan controller and the MIC2253 boost regulator |
Key Features |
Programmable and RPM based fan control, temperature look-up table |
Interface |
I2C,GPIO |
Compatibility |
mikroBUS |
Click board size |
L (57.15 x 25.4 mm) |
Input Voltage |
3.3V,5V |
Pinout diagram
This table shows how the pinout on Fan 6 click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).
Notes |
Pin |
|
Pin |
Notes |
---|
GPIO1 |
IO1 |
1 |
AN |
PWM |
16 |
IO2 |
GPIO 2 |
Shutdown output |
SDN |
2 |
RST |
INT |
15 |
ALR |
Alert Interrupt |
Enable |
EN |
3 |
CS |
RX |
14 |
NC |
|
|
NC |
4 |
SCK |
TX |
13 |
NC |
|
|
NC |
5 |
MISO |
SCL |
12 |
SCL |
I2C Clock |
|
NC |
6 |
MOSI |
SDA |
11 |
SDA |
I2C Data |
Power Supply |
3.3V |
7 |
3.3V |
5V |
10 |
5V |
Power Supply |
Ground |
GND |
8 |
GND |
GND |
9 |
GND |
Ground |
Onboard settings and indicators
Label |
Name |
Default |
Description |
---|
PWR |
LED |
- |
Power LED Indicator |
CN1 |
- |
- |
Fan and diodes connector |
JP1 |
VFAN SEL |
Left |
Fan supply voltage selection: left position 12V, right position 5V |
Software Support
We provide a library for the FAN 6 Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.
Library Description
Initializes and defines I2C driver and driver functions which have ability to controls the operation of the fan by writting to registers and reading from registers. Functions also offer a choice to communicate with EEPROM and check tachometer value and temperature value of internal or external diode. Also, there is an option to change operation mode of fan. For more details check documentation.
Key functions:
void fan6_writeReg( const uint8_t register_address, const uint16_t transfer_data )
- Function writes 16-bit or 8-bit data to register.
uint16_t fan6_readReg( const uint8_t register_address )
- Function reads 16-bit or 8-bit data from register.
uint8_t fan6_receiveByte( const uint8_t register_address )
- Function sends register address and reads byte from that address, without writting address again, every time when function be called.
uint32_t fan6_readTachometer( void )
- Function reads current tachometer value and calculates that value in rpm.
Examples description
The application is composed of three sections :
- System Initialization - Initializes peripherals and pins.
- Application Initialization - Initializes I2C driver and configures FAN 6, sets minimal duty (drive), frequency, update and spin up time, and puts FAN 6 on PWM mode with maximal speed (100 percents, 0xFF). Also sets GPIO 1 as input pin and GPIO 2 as output pin and enables device.
- Application Task - (code snippet) - Reads tachometer value which is calculated as rpm value, and reads temperature of external diode in celsius value. All this results logs on USB UART. Repeats operation every 500 ms.
void applicationTask()
{
tachometer = fan6_readTachometer();
LongWordToStr( tachometer, text );
mikrobus_logWrite( "Tachometer value is: ", _LOG_TEXT );
mikrobus_logWrite( text, _LOG_TEXT );
mikrobus_logWrite( " rpm", _LOG_LINE );
tempDiode = fan6_getTemperature( _FAN6_EXTDIODE1_TEMP_READ_REG, &temperatureSign );
FloatToStr( tempDiode, text );
mikrobus_logWrite( "Temperature of DIODE is: ", _LOG_TEXT );
if (temperatureSign)
mikrobus_logWrite( "-", _LOG_TEXT );
mikrobus_logWrite( text, _LOG_TEXT );
mikrobus_logWrite( " Cels", _LOG_LINE );
mikrobus_logWrite( "", _LOG_LINE );
Delay_ms( 500 );
}
The full application code, and ready to use projects can be found on our LibStock page.
Other mikroE Libraries used in the example:
Additional notes and informations
Depending on the development board you are using, you may need USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.
mikroSDK
This Click board™ is supported with mikroSDK - MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click board™ demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.
For more information about mikroSDK, visit the official page.
Resources
Downloads