Rail¶
API Documentation: [cpp] [python] [.NET] [LabVIEW]
The Rail entity provides power control to connected devices on some modules. Check the module datasheet to determine if the module has this capability.
the Rail entity controls power provided to downstream devices, it has the ability to enable and disable power, can read voltage on the rail, and provides current consumption information on some modules. There are additional capabilities that certain modules provide which enhance basic power delivery through Kelvin sensing, or by bringing online separate power management functionality.
Certain modules may provide more than one power rail. These are independently controlled and can be accessed via the entity index.
Rail 0 on the MTM-Load-1 module is powerful (no pun intended); it allows other devices and peripherals to provide power to the MTM-Load-1 module where it is precisely loaded. The rail is a software-adjustable constant current sink. This rail is accessed through a BrainStem rail class entity. The MTM-Load-1 module implements a subset of the BrainStem rail class for the load rail.
Enable¶
All three rails can be switched on or off through using the API
stem.rail[index].setEnable(state)
[cpp]
[python]
[NET]
[LabVIEW]
Rail Operational Mode¶
RAIL can be configured to use two different regulation stages: linear (LDO) or switch-mode power supply (SMPS)
stem.rail[index].setOperationalMode(mode)
[cpp]
[python]
[NET]
[LabVIEW]
stem.rail[index].getOperationalMode(mode)
[cpp]
[python]
[NET]
[LabVIEW]
Value |
Define |
---|---|
Hardware Mode - Bits [0-3] |
|
0 |
railOperationalModeAuto_Value |
1 |
railOperationalModeLinear_Value |
2 |
railOperationalModeSwitcher_Value |
3 |
railOperationalModeSwitcherLinear_Value |
Operational Mode - Bits [4-7] |
|
0 |
railOperationalConstantCurrent_Value |
Operational State¶
Auto configuration chooses the switch-mode power supply if an input voltage greater than 7.25V is applied, and the linear regulator otherwise. The API can be used to read the actual operational state
stem.rail[index].getOperationalState(state)
[cpp]
[python]
[NET]
[LabVIEW]
Bits |
RAIL Operational State Description |
---|---|
0 |
Initializing (railOperationalState_Initializing) |
1 |
Enabled (railOperationalState_Enabled) |
2 |
Fault (railOperationalState_Fault) |
3-15 |
Reserved |
8-15 |
Hardware Configuration (railOperationalState_HardwareConfiguration) |
16 |
Overvoltage Fault “OV” (railOperationalStateOverVoltageFault) |
17 |
Undervoltage Fault “UV” (railOperationalStateUnderVoltageFault) |
18 |
Overcurrent Fault “OC” (railOperationalStateOverCurrentFault) |
19 |
Overpower Fault “OP” (railOperationalStateOverPowerFault) |
20 |
Reverse Polarity Fault “RV”(railOperationalStateReversePolarityFault) |
21 |
Overtemperature Fault “OT” (railOperationalStateOverTemperatureFault) |
22-23 |
Reserved |
24-31 |
Operating Mode (railOperationalStateOperatingMode) |
Rail Temperature¶
The printed circuit board (PCB) temperature can be monitored at the 5.0V rail (RAIL0) linear regulation stage. Reading this value is possible through the API
stem.rail[index].getTemperature()
[cpp]
[python]
[NET]
[LabVIEW]
Temperature monitoring is also used internally to prevent the power regulation stage from overheating and self-preserving the power stage. If an overtemperature condition occurs, then the MTM-IO-Serial module will disable the linear regulator until safe operating temperatures are reached.
Rail Current Setting¶
The current setpoint for the rail can be configured in software from 0A to 10A. Setting values outside the allowable range will return an error (aErrRange 13). The rail will attempt to maintain the specified current through all input voltage variations once the rail is enabled with the operational mode set to constant current.
stem.rail[index].setCurrentSetpoint(microvolts)
[cpp]
[python]
[NET]
[LabVIEW]
stem.rail[index].getCurrentSetpoint(microvolts)
[cpp]
[python]
[NET]
[LabVIEW]
Rail Current Limit¶
The current limit for the rail can be configured in software from 0A to 12A. The rail will operate normally if the measured current is below the specified current. If the limit is crossed, the load will automatically disable the rail and set the corresponding overcurrent fault bit in the Operational State variable. If the current limit is below the current setpoint the rail will still disable itself when the current limit is exceeded
stem.rail[index].setCurrentLimit(microamps)
[cpp]
[python]
[NET]
[LabVIEW]
Rail Voltage Min/Max Setting¶
The voltage limits for the rail can be configured in software from -0.7V to 35V. The rail will operate normally between the minimum and maximum voltage limits. If the upper or lower limit is crossed, the load will automatically disable the rail and set the corresponding over/under voltage fault bit in the Operational State variable.
stem.rail[index].setVoltageMinLimit(microvolts)
[cpp]
[python]
[NET]
[LabVIEW]
stem.rail[index].setVoltageMaxLimit(microvolts)
[cpp]
[python]
[NET]
[LabVIEW]
Rail Power Limit Setting¶
The power limit for the rail can be configured in software from 0W to 150W. The rail will operate normally below this limit. If the limit is crossed, the load will automatically disable the rail and set the corresponding overpower fault bit in the Operational State variable.
stem.rail[index].setPowerLimit(milliwatts)
[cpp]
[python]
[NET]
[LabVIEW]