Power Module (PM) Units
The PM units are typically off-the-shelf power supply blocks, sold with specific current and power capabilities.
The PMs used in the design are:
VRAE-10E1A0 Series made by BEL Power Products (Figure 1).
The Enable signal is active-high and when enabled the PM output voltage appears at the Output Voltage pin (Vout).
The Trim pin with the associated Rtrim resistor (Figure 2) allows the output voltage to be set as desired. The voltage at the Trim pin is typically around 0.591V. A DC voltage at the Trim pin also allows the system to provide some voltage load regulation of Vout.
In this design, the DC voltage is provided by a PWM driven RC filter circuit which provides a DAC output to the Trim pin (Figure 3). Alternately, this DC voltage can be provided only by using fixed resistors from the Trim pin to GND (Figure 2) with no PWM trim DAC voltage. If this alternate option is selected, the PWM with its associated hardware/firmware in the PIC16 micro would be eliminated. Refer to the BEL Data sheet for more details on the Trim-Down resistor values.
A PIC16F1509 operating at 5.0V and 4 MIPS (using the internal RC clock) is used to control the power-up sequence. The power-up sequence is initiated by:
- A serial command using the I2C interface
- Pressing the push-button switch S1
Each PM is sequenced ON at a set time interval from 1 to 16,393 ms (16.4 seconds) with a 1 ms accuracy.
For example, PM1 can be started at 10 ms from the Start command, followed by PM2 at 25 ms, PM4 at 200 ms and finally PM3 at 1000 ms.
Each PM has a corresponding ON time value which is a 14-bit unsigned integer value in firmware. This value is compared to a timer value incremented every millisecond. If a match between the timer value and the ON time value of the PM occurs, then the corresponding PM is turned ON. The ON/OFF timing can be selected by the user and is saved in Flash on the PIC16 device. The ON/OFF sequence can be started/stopped using the serial I2C GUI.
When a PM is turned ON, the corresponding PWM output is enabled and Vout is monitored via the PIC16 ADC. The PWM duty cycle corresponds to the 8-bit DAC value for the PM. This DAC value can be changed by the user in the GUI or in the firmware. The trim voltage is created by using a combination of Rtrim and the PWM output from the PIC16 micro.
This PWM output is sent to a RC filter to create a DAC voltage, which in combination with the Rtrim resistor is applied to the trim pin of the PM (Figure 3). The output of the PM is monitored using a 10-bit ADC converter on the PIC16 MCU. Each PM voltage is averaged over 16 readings to give a 14-bit value. Only the most significant 8-bits of this value, are used to reference the Vout voltage value of each PM. The reference voltage
of the ADC is VDD or 5.0V. For example, if the PM output voltage is 2.5V, then the accuracy of the measurement would be (2.5V/5.0V)/256 = 2.0 mV. All output voltages are constantly monitored to verify they are within the specified over/under voltage limits specified by the customer. If the PM voltage goes above or under the under/over voltage limits, then a failure is signaled and the system is automatically shut down.
The PIC16 MCU also controls the programmable power-down sequencing of the four power supplies.
The power-down sequence is initiated on:
- Serial Command from the I2C
- Any Fault Condition on the PMs or input voltage
- Pressing the Push-Button Switch S1
Each PM is sequenced OFF at a set time interval from 1 to 16,393 ms (16.4 seconds) with a 1 ms accuracy.
For example, PM4 can be shut at 20 ms from the Stop command, followed by PM2 at 25 ms, PM3 at 200 ms and finally PM1 at 1000 ms. Each PM has a corresponding OFF time value which is an unsigned integer (14-bit value). This value is independent from the ON time value. This value is compared to a 16-bit counter value incremented every millisecond. If the two are equal, then the corresponding PM is turned OFF.
The OFF time values are user selectable and are saved in Flash. In case of a fault condition power-down, a new power-up sequence will be automatically initiated depending on the number of retries selected by the user. Typically, a user may specify two or three retries. After all retries return a failure, the system is shut down and the fault condition is signaled. Using the I2C GUI interface the user can figure out which PM condition or input voltage caused the failure. The user must take the appropriate corrective action to remove the failure condition and reset the system using the I2C serial command or the Graphical User Interface (GUI) and then retry the power-up sequence.
The MCU requirements fall in four categories:
- I/O Pins to Enable/Disable the PMs
- ADC Input to Sample the PM VOUT Voltage
- PWM Output to Generate the DAC Output for the Trim Voltage
- Communication Using I2C
Since four channels of PMs are used in this design we require at least four I/O lines for the enable/disable function. We also require four ADC channels, four PWM outputs and finally two lines for I2C. An additional ADC channel is used to sample the input voltage, the MCLR, the VDD, the VSS and the programming pins; a total of 20 pins. So, a PIC16F1509 was selected for the design. Figure 4 is the system block diagram.
The MCU is powered by 5.0V via a 5V regulator. The internal 16 Mhz RC clock is used to run the CPU at 4 MIPS. The hardware/firmware can be modified to accommodate up to 10 PMs. In case more PMs are required the number of I/O will increase and a larger PIC16F1XXX device would have to be selected. In case less PMs are required, then a smaller PIC16F1XXX device can be selected for the application. The trim voltage requirements can also be adjusted. If the user wants to trim the PMs using only the external resistor (Figure 2), then the DAC voltage and the associated PWM (Figure 3), is not required. The software to drive the PWM and DAC will also be eliminated.
Each PM has its own normal over/under voltage limit. The PMs also have margin under/over limit for the trim voltage.
Normal Over/Under Limits
As specified, these limits are the absolute limits for each PM. The output voltage of each PM is monitored and in case the output voltage, at anytime, goes under or above these limits, a fault is signaled and the power is sequenced OFF. A retry is initiated after a power fault occurs. After a certain number (defined by the user) of automatic retries, the system is shut down until the user clears the system with a serial command using the I2C
GUI and fixes the hardware/software error. For example, for a 5V PM, the user may select 4.5V as the under voltage limit and 5.5V as the over voltage limit.
Margin Over/Under Limits
Each PM has a user-defined margin over/under limit. These limits are 8-bit values which are maintained in the firmware and which correspond to the PWM duty cycle value of the respective PM. The user can modify these values via the GUI. The DAC value can be changed within the bounds of the over/under margin limits.
The trim voltage is not monitored by the PIC16 ADC. Only the trim value, i.e. the PWM duty cycle value, is compared with the limit set by the user. This value is defined as a 8-bit value.
I2C Communication Protocol and Commands
An I2C slave interface is implemented on the MCU, for serial communication with an external I2C GUI. The command structure for the I2C interface is specified in Serial Command Definitions and Structures. On the demo board a MCP2221 I2C-to-mini-USB interface chip is provided. This interface can be implemented by the users in their own hardware or, if required, a different I2C interface can be implemented by the user.
Only one device is connected to the interface, so a fixed slave address of 0x14 is selected for the sequencer. This address can be changed in firmware if required. PMBus™ is not supported at this time.