Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
Sample project(s) available on GitHub
Syntax
public class Emc2101 : PollingSensorBase<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)>, IObservable<IChangeResult<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)>>, ISamplingSensor<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)>, ISensor<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)>, II2cPeripheral
Constructors
Emc2101(II2cBus, byte)
Create a new EMC2101 object
Declaration
public Emc2101(II2cBus i2cBus, byte address = 76)
Parameters
Type | Name | Description |
---|---|---|
II2cBus | i2cBus | I2CBus connected to display |
byte | address | Address of the EMC2101 (default = 0x4C) |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
Fields
i2cComms
I2C Communication bus used to communicate with the peripheral
Declaration
protected readonly II2cCommunications i2cComms
Field Value
Type | Description |
---|---|
II2cCommunications |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
Properties
DACOutputEnabled
Enable or disable outputting the fan control signal as a DC voltage
Declaration
public bool DACOutputEnabled { get; set; }
Property Value
Type | Description |
---|---|
bool |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
DefaultI2cAddress
The default I2C address for the peripheral
Declaration
public byte DefaultI2cAddress { get; }
Property Value
Type | Description |
---|---|
byte |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
ExternalTemperature
The temperature as read by the external sensor
Declaration
public Temperature? ExternalTemperature { get; }
Property Value
Type | Description |
---|---|
Temperature? |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
FanPwmDutyCycle
Get/Set the current manually set fan PWM duty cycle (0 - 1.0)
Declaration
public float FanPwmDutyCycle { get; set; }
Property Value
Type | Description |
---|---|
float |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
FanSpeed
The current fan speed
Declaration
public AngularVelocity? FanSpeed { get; }
Property Value
Type | Description |
---|---|
AngularVelocity? |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
Hysteresis
Get / set the amount of hysteresis applied to the temperature readings used in the fan speed lookup table
Declaration
public Temperature Hysteresis { get; set; }
Property Value
Type | Description |
---|---|
Temperature | The hysteresis temperature value |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
InternalTemperature
The temperature as read by the internal sensor
Declaration
public Temperature? InternalTemperature { get; }
Property Value
Type | Description |
---|---|
Temperature? |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
MinimumFanSpeed
Get/Set the minimum fan speed for the currently connected fan
Declaration
public AngularVelocity MinimumFanSpeed { get; set; }
Property Value
Type | Description |
---|---|
AngularVelocity |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
PwmDivisor
The alternate PWM divide value that can be used instead of CLK_SEL bit function This can set anytime but will only be used if the clock override bit is enabled
Declaration
public byte PwmDivisor { get; set; }
Property Value
Type | Description |
---|---|
byte |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
PwmFrequencyScaler
Scales the PWM frequency against the current fan settings Recommended to leave at max value of 0x1F The is a 5 bit value
Declaration
public byte PwmFrequencyScaler { get; set; }
Property Value
Type | Description |
---|---|
byte |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
SensorDataRate
The temperature sensor data rate
Declaration
public Emc2101.DataRate SensorDataRate { get; set; }
Property Value
Type | Description |
---|---|
Emc2101.DataRate |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
Methods
ConfigureFanSpinup(FanSpinupDrive, FanSpinupTime)
Configure the fan spinup behavior
Declaration
public void ConfigureFanSpinup(Emc2101.FanSpinupDrive spinupDrive, Emc2101.FanSpinupTime spinupTime)
Parameters
Type | Name | Description |
---|---|---|
Emc2101.FanSpinupDrive | spinupDrive | The drive or percent to spin up to |
Emc2101.FanSpinupTime | spinupTime | The time taken to spin up to the drive speed |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
ConfigurePwmClock(bool, bool)
Configure the PWM clock
Declaration
public void ConfigurePwmClock(bool clockSelect, bool clockOverride)
Parameters
Type | Name | Description |
---|---|---|
bool | clockSelect | true to use a 1.4kHz base PWM clock, false to use the default 360kHz PWM clock |
bool | clockOverride | true to override the base clock and use the frequency divisor to set the PWM frequency |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
EnableTachInput(bool)
Enable the TACH/ALERT pin as an input to read the fan speed (for 4 wire fans)
Declaration
public void EnableTachInput(bool enable)
Parameters
Type | Name | Description |
---|---|---|
bool | enable | true to enable, false to disable |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
InvertFanSpeed(bool)
Invert the sensor's reading of fan speed
Declaration
public void InvertFanSpeed(bool invert)
Parameters
Type | Name | Description |
---|---|---|
bool | invert | true to invert, false for normal |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
RaiseEventsAndNotify(IChangeResult<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)>)
Raise changed events for subscribers
Declaration
protected override void RaiseEventsAndNotify(IChangeResult<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)> changeResult)
Parameters
Type | Name | Description |
---|---|---|
IChangeResult<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)> | changeResult | The new sensor values |
Overrides
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
ReadSensor()
Reads data from the sensor
Declaration
protected override Task<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)> ReadSensor()
Returns
Type | Description |
---|---|
Task<(Temperature? InternalTemperature, Temperature? ExternalTemperature, AngularVelocity? FanSpeed)> | The latest sensor reading |
Overrides
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
SetLookupTable(LutIndex, Temperature, float)
Set a temperature and fan duty cycle to the lookup table
Declaration
public void SetLookupTable(Emc2101.LutIndex index, Temperature temperatureThreshhold, float pwmDutyCycle)
Parameters
Type | Name | Description |
---|---|---|
Emc2101.LutIndex | index | The LUT index to set |
Temperature | temperatureThreshhold | the temperature threshold |
float | pwmDutyCycle | the fan PWM duty cycle |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
Events
ExternalTemperatureUpdated
External Temperature changed event
Declaration
public event EventHandler<IChangeResult<Temperature>> ExternalTemperatureUpdated
Event Type
Type | Description |
---|---|
EventHandler<IChangeResult<Temperature>> |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
FanSpeedUpdated
Fan Speed changed event
Declaration
public event EventHandler<IChangeResult<AngularVelocity>> FanSpeedUpdated
Event Type
Type | Description |
---|---|
EventHandler<IChangeResult<AngularVelocity>> |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}
InternalTemperatureUpdated
Internal Temperature changed event
Declaration
public event EventHandler<IChangeResult<Temperature>> InternalTemperatureUpdated
Event Type
Type | Description |
---|---|
EventHandler<IChangeResult<Temperature>> |
Remarks
Emc2101 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
Emc2101 fanController;
public override Task Initialize()
{
Resolver.Log.Info("Initialize...");
fanController = new Emc2101(i2cBus: Device.CreateI2cBus());
return base.Initialize();
}
public override Task Run()
{
Resolver.Log.Info("Run ...");
return base.Run();
}