Abstract:
Various examples are directed to integrated circuits and/or controllers for battery packs. An integrated circuit for managing at least a portion of a battery pack comprises a first cell controller. The first cell controller may comprise a first switch system, a first local controller, a first receive terminal to receive a first command from a preceding cell controller, and a first transmit terminal to send the first command to a succeeding cell controller. The first switch system may comprise two pairs of switches to couple a first battery cell to a pair of output terminals in an H-bridge configuration. The first local controller may control the first switch system to selectively connect and disconnect the first battery cell to the pair of output terminal.

Description:
RELATED APPLICATIONS 
       [0001]    This application is a divisional of U.S. patent application Ser. No. 14/452,311 filed on Aug. 5, 2014, which claims priority to U.S. Patent Application Ser. No. 61/862,835 filed on Aug. 6, 2013, the content of which are incorporated herein in their entirety. 
     
    
     BACKGROUND 
       [0002]    The present invention relates to battery stack control systems. 
         [0003]    Battery stacks include a plurality of individual “cells” are arranged in series in order to build a battery stack having a desired output voltage. A large number of cells may be arranged in series such that, for example, the total potential difference developed across the battery stack is in the order of a several hundred volts. Each cell typically only has a potential difference of a few volts (e.g., 3 volts) developed across it. Battery stacks also include a switch control, which can be used to switch cells individually in and out of the stack and control the orientation of the cells (e.g., positive or negative orientation) within the stack to meet timing requirements. Battery stacks can be used to generate time-varying outputs (e.g., sinusoidal signals) about a ground value (e.g., +300 volts to −300 volts in a 100 cell stack). 
         [0004]    Rechargeable battery stacks can be used in many applications. One such application is the use of batteries in hybrid or fully electric vehicles. Hybrid and fully electric vehicles (HEV/EVs) are becoming increasingly popular, therefore there is a need for more effective, efficient, and safe battery stack systems. Conventional battery stacks suffer from several problems during operation. For example, because each of the cells in a battery stack discharges at a different rate, some cells may become too weak to supply voltage to a load. In such a case, the weakened cell can be permanently damaged if it is forced to discharge further and will eventually need to be replaced. Similar problems occur when a fully charged cell is over-charged. Additionally, if a cell is damaged beyond repair, the stack needs to continue to operate as required by the load. Conventional battery stacks fail to adequately account for such errors. Finally, when battery stacks are exposed to hazardous conditions (e.g., when they are submersed in water), they can become flammable, causing serious safety issues. This problem is specifically dangerous because there is a reasonable likelihood that consumers will be in close proximity to battery cells. 
         [0005]    Thus, there is a need for improved battery stack monitoring systems to account for the problems described above. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0006]      FIG. 1  is a diagram of a single battery cell stage according to an embodiment of the present disclosure. 
           [0007]      FIG. 2  is a state diagram of a local decision making process for each battery cell stage in a battery stack according to an embodiment of the present disclosure. 
           [0008]      FIG. 3  is a state diagram of a local decision making process for each battery cell stage in a battery stack that is discharging according to an embodiment of the present disclosure. 
           [0009]      FIG. 4  is a state diagram of a local decision making process for each battery cell stage in a battery stack that is charging according to an embodiment of the present disclosure. 
           [0010]      FIG. 5  is a diagram of a battery stack according to an embodiment of the present disclosure. 
           [0011]      FIG. 6  is a diagram of a battery stack with a transformer according to an embodiment of the present disclosure. 
           [0012]      FIG. 7  is a diagram of a battery pack for a battery cell with an integrated controller according to an embodiment of the present disclosure. 
           [0013]      FIG. 8  is a diagram of a cell controller communication network implementing a leapfrogging protocol according to an embodiment of the present disclosure. 
       
    
    
     DETAILED DESCRIPTION 
       [0014]    Embodiments of the present disclosure are directed to improved battery cells and battery stack controller systems. A first embodiment is directed to a battery controller system. The control system may include a controller, sensors, transmitters, and receivers. The receivers may receive charge/discharge commands over a communication network. The controller may determine the state or condition of the cell (e.g., whether the cell is weak, strong, depleted, charged, etc.) using the sensor. Subsequently, the controller may determine whether the cell can fulfill the command or whether the command should be passed to a neighboring battery cell in a battery stack via the transmitters. 
         [0015]    Another embodiment is directed to a battery stack controller system. The system may include a plurality of battery cell stages with cell controller systems (as described above with respect to the first embodiment). The system may also include a stack controller to send charge/discharge commands to the battery stack via a communication network. The stack controller may send the commands to the battery stack based on the requirements of a load or the state of the battery cell stages. The battery cell stages may either comply with the commands or send the commands to neighboring cells via the communication network. 
         [0016]    A further embodiment is directed to an improved battery packaging design. The battery pack design may include a battery cell, a plurality of transistors, and a controller. The transistors may be coupled to the terminals of the battery cell in an H-bridge configuration. The controller may control the transistors to bypass the battery cell based on the current flowing between the output terminals of the battery pack. In such a manner, the controller may prevent damage to the battery cell and improve the overall safety of the battery pack in hazardous conditions. 
         [0017]    Yet another embodiment is directed to a battery stack with a leapfrogging communication network. Each cell stage may include a controller, a transmitter, and a pair of receivers. The cell stage in the battery stack may be coupled to the closest two preceding battery cell stages in the stack. In this manner, each cell stage may be able to determine if a fault is present in an immediately preceding cell stage in the stack by monitoring the first preceding cell stage and the second preceding cell stage. If discharge/charge commands transmitted by the second preceding cell stage are not reaching the battery cell stage at issue, the controller may determine that there is a fault in the first preceding cell stage and discharge/charge the cell stage based on the commands transmitted by the second preceding cell stage. 
         [0018]      FIG. 1  illustrates a cell stage  100  according to an embodiment of the present disclosure. The cell stage  100  may be one stage in a multi-stage battery stack system (as shown in  FIG. 3  below). As illustrated in  FIG. 1 , the battery cell stage  100  may include a battery cell  110 , a cell monitor  120  coupled to respective ends of the battery cell  110 , and switches  132 ,  134 ,  136 , and  138 . The battery cell stage  100  may communicate with neighboring battery cell stages (not shown) in a battery stack via the upstream communication path  150  and the downstream communication path  160 . 
         [0019]    The battery cell  110  may be a lead-acid, nickel-metal hydride (NiMH), lithium-ion (Li-ion), or other type of battery that may be integrated in a battery stack, including a plurality of battery cells, to provide power to drive a load (e.g., a motor). 
         [0020]    The cell monitor  120  may include a controller  121 , receivers  122  and  123 , transmitters  124  and  125 , sensor(s)  126 , and a memory  127 . The cell monitor  120  may make local decisions and switch-in or bypass the associated battery cell  110  based on communications received on the upstream and downstream communication paths  150  and  160  and the local state of the battery cell  110 . 
         [0021]    The controller  121  may include a microcontroller, a programmable processor, and/or a state machine. The controller  121  may make the local decisions and switch-in/bypass the battery cell  110  based on the condition of the battery cell  110 . The receivers  122 ,  123  and transmitters  124 ,  125  may be controlled by the controller  121  and may receive and transmit information via paths  150  and  160 . In the upstream (or outbound) communication path  150 , the receiver  122  may receive a PUSH/PULL command (described in more detail below) from a previous stage in the stack and transmitter  124  may transmit a PUSH/PULL command to a next stage in the stack. In the downstream (or inbound) communication path, receiver  123  may receive a PUSH/PULL command from a previous battery stage in the stack and transmitter  125  may transmit a PUSH/PULL command to the next battery stage in the stack. 
         [0022]    The sensor(s)  126  may determine a direction of current flow through the battery cell  110 , for example, whether current is flowing upwardly or downwardly through a stack in which the cell  110  is a member. The sensor(s)  126  may also measure operating parameters of the battery cell  110 , for example, charge level, health, temperature, fault status, or other conditions. The memory  127  may store data such as measurements taken by the sensor(s)  126 . The memory may also store logs of PUSH/PULL commands received by the receivers  122  and  123 . The data stored in the memory  127  may be accessed by the controller  121 . 
         [0023]    The switches  132 ,  134 ,  136 , and  138  may facilitate switching-in/bypassing of the battery cell  110  in the stack. The switches  132 ,  134 ,  136 , and  138  may be controlled by cell control controller  121 . The switches  132 - 138  may be arranged in an H-bridge configuration about the cell monitor  120  as shown in  FIG. 1  and switched in pairs. The switches  132 - 138  may be metal-oxide-semiconductor field-effect transistors (MOSFETs) of sufficient size to serve as power transistors or mechanical switches. 
         [0024]    During operation, the battery cell stage  100  of  FIG. 1  may receive and transmit PUSH and PULL commands from adjacent cells in a battery stack via the upstream and downstream communication paths. A PUSH command may represent a command by an external controller to add positive voltage to an output of the stack in which the stage  100  belongs. The stage  100  may respond to a push command in a variety of ways, depending on operating conditions at the stage  100 . For example, if the stage  100  is configured with the battery cell  110  already pushing, it may continue to push and pass the PUSH command to another cell stage in the stack. If the system  100  is configured with the battery cell  110  pulling, it may cease pulling and may consume the PUSH command. The system  100  may determine that the battery cell  110  is in no condition to push, even though it is idle, and may pass the PUSH command to a next cell in the stack. These processes are described hereinbelow. 
         [0025]    A PULL command may represent a command by an external control to add negative voltage to a load device by a stack in which the cell stage  100  belongs. The stage  100  may respond to a PULL command in a variety of ways, depending on operating conditions at the stage  100 . For example, if the stage  100  is configured with the battery cell  110  already pulling, it may continue to pull and pass the PULL command to another stage in the stack. If the stage  100  is configured with the battery cell  110  pushing, it may cease pushing and may consume the PULL command. The system  100  may determine that the battery cell  110  is in no condition to pull, even though it is idle, and may pass the PULL command to a next cell in the stack. These processes are described hereinbelow. 
         [0026]    Although the system  100  may operate in various states (see  FIGS. 2-4  and the corresponding description of the figures below), the system may have the following two basic configurations: (1) a “switched-in” configuration and (2) a “bypassed” or “idle” configuration. During a switched-in configuration, the cell monitor  120  may control the switches  132 - 138  to connect the cell  110  to the battery stack at nodes A and B. While the cell  110  is switched into the stack, the cell  110  may either discharge or charge based on the needs of the stage  100  and the load. If switches  132  and  138  are on and switches  134  and  134  are off, the cell may discharge a positive voltage. If switches  134  and  136  are on and switches  132  and  138  are off, the cell may discharge a negative voltage. 
         [0027]    During a bypassed configuration, the cell monitor  120  may control the switches  132 - 138  to disconnect the cell  110  from the battery stack at nodes A and B. While the cell  110  is bypassed from the stack, the cell  110  may be prevented from being charged or discharged while the remaining stages in the stack are being charged or discharged. This may prevent the cell  110  from being damaged by being over discharged/charged. Based on the structure and operation of system  100  above, the cell monitor  120  may balance the cell&#39;s  110  charge/discharge operations and prevent the cell from being damaged from over discharging and overcharging. 
         [0028]    The cell stage  100  optionally may include diodes  142 ,  144 ,  146 , and  148  coupled to the terminals of corresponding switches  132 ,  134 ,  136 , and  138 . The diodes  142 ,  144 ,  146 , and  148  may provide charge and discharge fly-back protection for the switches  132 ,  134 ,  136 , and  138 , respectively 
         [0029]      FIG. 2  is a state diagram illustrating control operations of a cell stage  100  that is either charging or discharging according to an embodiment of the present invention. The state diagram illustrates a response of a cell monitor  120  when it receives PUSH/PULL commands from adjacent cells in a battery stack. As illustrated in  FIG. 2(A) , the cell monitor  120  may make switch-in/bypass configuration decisions in response to PUSH/PULL commands received via the out-bound (or upstream) or in-bound (or downstream) communication pathways  150  and  160 , respectively, according to the processes outlined below. Each arrow in  FIG. 2(A)  is designated by a number ( 1 )-( 56 ) for convenience. 
         [0030]      FIG. 2(A)  illustrates an idle state  210 , representing a bypassed configuration of the stage  100 . When in the idle state, the stage  100  may response to received commands in a variety of ways. For example, if the controller  121  of the cell monitor  120  receives a PUSH command on the out-bound communication pathway  150  (OBCMD=“PUSH” ( 1 )), the controller  121  may determine a direction of current flow through the stack. If the battery stack is either charging or discharging and the current flowing through the stage  100  is flowing against the direction of the charge or discharge ( 5 ), the cell controller  121  may pass the PUSH command further up the out-bound communication pathway  150  ( 6 ) and return to the idle state  210  ( 7 ). If the battery stack is either charging or discharging and the current flowing through the stage  100  is flowing with the direction of the charge or discharge ( 8 ), the cell controller  121  may determine whether the cell  110  is in a condition to push (i.e., either charge or discharge). If the cell  110  cannot push (i.e., charge or discharge) ( 9 ), the cell controller  121  may pass the PUSH command further up the OBCP  150  ( 6 ) and return to the idle state  210  ( 7 ). If the cell  110  can push (i.e., charge or discharge) ( 10 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation. The stage  100  may then enter the out-bound positive orientation (OB POS) state  220  and either charge or discharge the cell  110 . 
         [0031]    When in the idle state  210 , if the controller  121  of the cell monitor  120  receives a PULL command on the out-bound communication pathway  150  (OBCMD=“PULL” ( 2 )), the controller  121  may determine a direction of current flow through the stack. If the battery stack is either charging or discharging and the current flowing through the stage  100  is flowing against the direction of the charge or discharge ( 11 ), the cell controller  121  may pass the PULL command further up the out-bound communication pathway  150  ( 12 ) and return to the idle state  210  ( 13 ). If the battery stack is either charging or discharging and the current flowing through the system  100  is flowing with the direction of the charge or discharge ( 14 ), the cell controller  121  may determine whether the cell  110  is in a condition to pull (i.e. charge or discharge). If the cell  110  cannot pull (i.e., charge or discharge) ( 15 ), the cell controller  121  may pass the PULL command further up the OBCP and return to the idle state  210  ( 13 ). If the cell  110  can pull (i.e., charge or discharge) ( 16 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a negative orientation. The stage  100  may then enter the out-bound negative orientation (OB NEG) state  230  and either charge or discharge the cell  110 . 
         [0032]    When in the idle state  210 , if the controller  121  of the cell monitor  120  receives PUSH command on the in-bound communication pathway  160  (IBCMD=“PUSH” ( 3 )), the controller  121  may determine the condition of the battery cell  110 . If the cell  110  cannot push (i.e., charge or discharge) ( 17 ), the cell controller  121  may pass the PUSH command further down the IBCP  160  ( 18 ) and return to the idle state  210  ( 19 ). If the cell  110  can push (i.e., charge or discharge) ( 20 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation and enter the in-bound positive orientation (IB POS) state  240  to either charge or discharge the cell  110 . 
         [0033]    While in the idle state  210 , if the controller  121  of the cell monitor  120  receives a PULL command on the in-bound communication pathway  160  (IBCMD=“PULL” ( 4 )), the controller  121  may determine the condition of the battery cell  110 . If the cell  110  cannot pull (i.e., charge or discharge) ( 21 ), the cell controller  121  may pass the PULL command further down the IBCP ( 22 ) and return to the idle state  210  ( 23 ). If the cell  110  can pull (i.e., charge or discharge) ( 24 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a negative orientation and enter the in-bound negative orientation (IB NEG) state  250  to either charge or discharge the cell  110 . 
         [0034]    When the stage  100  is in the OB POS state  220 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PUSH command on the out-bound communication pathway  150  (i.e., OBCMD=“PUSH” ( 25 )), the controller  121  may pass the PUSH command further up the OBCP  150  ( 26 ) and return to the OB POS  220  state ( 27 ). If, the controller  121  receives a PUSH command on the in-bound communication pathway  160  (i.e., IBCMD=“PUSH” ( 28 )), the controller  121  may pass the PUSH command further down the IBCP  160  ( 29 ) and return to the OB POS  220  state ( 30 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PULL command ( 32 ), the controller  121  may revert back to the idle state  210 . In the absence of a command, if the controller  121  determines that operating conditions have taken the cell  110  outside its operating limits (e.g., either too weak to discharge or too full to charge) ( 31 ), the cell controller  121  may pass a locally generated PUSH command further up the OBCP  150  ( 6 ) and revert back to the idle state  210  ( 7 ). 
         [0035]    When the stage  100  is in the OB NEG state  230 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PULL command on the out-bound communication pathway  150  (i.e., OBCMD=“PULL” ( 33 )), the controller  121  may pass the PULL command further up the OBCP ( 34 ) and return to the OB NEG  230  state ( 35 ). If the controller  121  receives a PULL command on the in-bound communication pathway  160  (i.e., IBCMD=“PULL” ( 36 )), the controller  121  may pass the PULL command further down the IBCP  160  ( 37 ) and return to the OB NEG  230  state ( 38 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PUSH command ( 47 ), the controller  121  may revert back to the idle state  210 . In the absence of a command, if the controller  121  determines that operating conditions have taken the cell  110  outside its operating limits (e.g., either too weak to discharge or too full to charge) ( 56 ), the cell controller  121  may pass a locally generated PULL command further up the OBCP  150  ( 12 ) and revert back to the idle state  210  ( 13 ). 
         [0036]    When the stage  100  is in the IB POS state  240 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PUSH command on the out-bound communication pathway  150  (i.e., OBCMD=“PUSH” ( 39 )), the controller  121  may pass the PUSH command further up the OBCP ( 40 ) and remain in the IB POS  240  state ( 41 ). If the controller  121  receives a PUSH command on the in-bound communication pathway  160  (i.e., IBCMD=“PUSH” ( 42 )), the controller  121  may pass the PUSH command further down the IBCP  160  ( 43 ) and remain in the IB POS  240  state ( 44 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PULL command ( 46 ), the controller  121  may revert back to the idle state  210 . In the absence of a command, if the controller  121  determines that operating conditions have taken the cell  110  outside its operating limits (e.g., either too weak to discharge or too full to charge) ( 45 ), the cell controller  121  may pass a locally generated PUSH command further down the IBCP  160  ( 18 ) and revert back to the idle state  210  ( 19 ). 
         [0037]    When the stage  100  is in the IB NEG state  250 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PULL command on the out-bound communication pathway  150  (i.e., OBCMD=“PULL” ( 48 )), the controller  121  may pass the PULL command further up the OBCP  150  ( 49 ) and return to the IB NEG  250  state ( 50 ). If the controller  121  receives a PULL command on the in-bound communication pathway  160  (i.e., IBCMD=“PULL” ( 51 )), the controller  121  may pass the PULL command further down the IBCP  160  ( 52 ) and remain in the IB NEG  250  state ( 53 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PUSH command ( 55 ), the controller  121  may revert back to the idle state  210 . In the absence of a command, if the controller  121  determines that operating conditions have taken the cell  110  outside its operating limits (e.g., either too weak to discharge or too full to charge) ( 54 ), the cell controller  121  may pass a locally generated PULL command further down the IBCP  160  ( 22 ) and revert back to the idle state  210  ( 23 ). 
         [0038]      FIG. 3  is a state diagram illustrating control operations of a cell stage  100  that is discharging according to an embodiment of the present invention. The state diagram illustrates a response of a cell monitor  120  when it receives PUSH/PULL commands from adjacent cells in a battery stack. As illustrated in  FIG. 3 , the cell monitor  120  may make switch-in/bypass configuration decisions in response to PUSH/PULL commands received via the out-bound (or upstream) or in-bound (or downstream) communication pathways  150  and  160 , respectively, according to the processes outlined below. Each arrow in  FIG. 3  is designated by a number ( 1 )-( 56 ) for convenience. 
         [0039]      FIG. 3  illustrates an idle state  310 , representing a bypassed configuration of the stage  100 . When in the idle state, the stage  100  may response to received commands in a variety of ways. For example, if the controller  121  of the cell monitor  120  receives a PUSH command on the out-bound communication pathway  150  (OBCMD=“PUSH” ( 1 )), the controller  121  may determine a direction of current flow through the stack. If the battery stack is discharging and the current flowing through the stage  100  is incoming ( 5 ), the cell controller  121  may pass the PUSH command further up the out-bound communication pathway  150  ( 6 ) and return to the idle state  310  ( 7 ). If the battery stack is discharging and the current flowing through the stage  100  is not incoming ( 8 ), the cell controller  121  may determine whether the cell  110  is in a condition to push (i.e., discharge). If the cell  110  cannot push (i.e., discharge) ( 9 ), the cell controller  121  may pass the PUSH command further up the OBCP  150  ( 6 ) and return to the idle state  310  ( 7 ). If the cell  110  can push (i.e., discharge) ( 10 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation. The stage  100  may then enter the out-bound positive orientation (OB POS) state  320  and discharge the cell  110 . 
         [0040]    When in the idle state  310 , if the controller  121  of the cell monitor  120  receives a PULL command on the out-bound communication pathway  150  (OBCMD=“PULL” ( 2 )), the controller  121  may determine a direction of current flow through the stack. If the battery stack is discharging and the current flowing through the stage  100  is outgoing ( 11 ), the cell controller  121  may pass the PULL command further up the out-bound communication pathway  150  ( 12 ) and return to the idle state  310  ( 13 ). If the battery stack is discharging and the current flowing through the system  100  is not outgoing ( 14 ), the cell controller  121  may determine whether the cell  110  is in a condition to pull (i.e. discharge). If the cell  110  cannot pull (i.e., discharge) ( 15 ), the cell controller  121  may pass the PULL command further up the OBCP and return to the idle state  310  ( 13 ). If the cell  110  can pull (i.e., discharge) ( 16 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation. The stage  100  may then enter the out-bound negative orientation (OB NEG) state  330  and discharge the cell  110 . 
         [0041]    When in the idle state  310 , if the controller  121  of the cell monitor  120  receives a PUSH command on the in-bound communication pathway  160  (IBCMD=“PUSH” ( 3 )), the controller  121  may determine the condition of the battery cell  110 . If the cell  110  cannot push (i.e., discharge) ( 17 ), the cell controller  121  may pass the PUSH command further down the IBCP  160  ( 18 ) and return to the idle state  310  ( 19 ). If the cell  110  can push (i.e., discharge) ( 20 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation and enter the in-bound positive orientation (IB POS) state  340  to discharge the cell  110 . 
         [0042]    While in the idle state  310 , if the controller  121  of the cell monitor  120  receives a PULL command on the in-bound communication pathway  160  (IBCMD=“PULL” ( 4 )), the controller  121  may determine the condition of the battery cell  110 . If the cell  110  cannot pull (i.e., discharge) ( 21 ), the cell controller  121  may pass the PULL command further down the IBCP  160  ( 22 ) and return to the idle state  310  ( 23 ). If the cell  110  can pull (i.e., discharge) ( 24 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a negative orientation and enter the in-bound negative orientation (IB NEG) state  350  to discharge the cell  110 . 
         [0043]    When the stage  100  is in the OB POS state  320 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PUSH command on the out-bound communication pathway  150  (i.e., OBCMD=“PUSH” ( 25 )), the controller  121  may pass the PUSH command further up the OBCP  150  ( 26 ) and return to the OB POS  320  state ( 27 ). If, the controller  121  receives a PUSH command on the in-bound communication pathway  160  (i.e., IBCMD=“PUSH” ( 28 )), the controller  121  may pass the PUSH command further down the IBCP  160  ( 29 ) and return to the OB POS  320  state ( 30 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PULL command ( 32 ), the controller  121  may revert back to the idle state  310 . In the absence of a command, if the controller  121  determines that the cell  110  is weakening (i.e., weakening below a predetermined limit so it can no longer discharge) ( 31 ), the cell controller  121  may pass a locally generated PUSH command further up the OBCP  150  ( 6 ) and revert back to the idle state  310  ( 7 ). 
         [0044]    When the stage  100  is in the OB NEG state  330 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PULL command on the out-bound communication pathway  150  (i.e., OBCMD=“PULL” ( 33 )), the controller  121  may pass the PULL command further up the OBCP  150  ( 34 ) and return to the OB NEG  330  state ( 35 ). If the controller  121  receives a PULL command on the in-bound communication pathway  160  (i.e., IBCMD=“PULL” ( 36 )), the controller  121  may pass the PULL command further down the IBCP  160  ( 37 ) and return to the OB NEG  330  state ( 38 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PUSH command ( 47 ), the controller  121  may revert back to the idle state  310 . In the absence of a command, if the controller  121  determines that the cell  110  is weakening (i.e., weakening below a predetermined limit so it can no longer discharge) ( 56 ), the cell controller  121  may pass a locally generated PULL command further up the OBCP  150  ( 12 ) and revert back to the idle state  310  ( 13 ). 
         [0045]    When the stage  100  is in the IB POS state  340 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PUSH command on the out-bound communication pathway  150  (i.e., OBCMD=“PUSH” ( 39 )), the controller  121  may pass the PUSH command further up the OBCP  150  ( 40 ) and remain in the IB POS  340  state ( 41 ). If the controller  121  receives a PUSH command on the in-bound communication pathway  160  (i.e., IBCMD=“PUSH” ( 42 )), the controller  121  may pass the PUSH command further down the IBCP  160  ( 43 ) and remain in the IB POS  340  state ( 44 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PULL command ( 46 ), the controller  121  may revert back to the idle state  310 . In the absence of a command if the controller  121  determines that the cell  110  is weakening (i.e., weakening below a predetermined limit so it can no longer discharge) ( 45 ), the cell controller  121  may pass a locally generated PUSH command further down the IBCP  160  ( 18 ) and revert back to the idle state  310  ( 19 ). 
         [0046]    When the stage  100  is in the IB NEG state  350 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PULL command on the out-bound communication pathway  150  (i.e., OBCMD=“PULL” ( 48 )), the controller  121  may pass the PULL command further up the OBCP  150  ( 49 ) and return to the IB NEG  350  state ( 50 ). If the controller  121  receives a PULL command on the in-bound communication pathway  160  (i.e., IBCMD=“PULL” ( 51 )), the controller  121  may pass the PULL command further down the IBCP  160  ( 52 ) and remain in the IB NEG  350  state ( 53 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PUSH command ( 55 ), the controller  121  may revert back to the idle state  310 . In the absence of a command, if the controller  121  determines that the cell  110  is weakening (i.e., weakening below a predetermined limit so it can no longer discharge) ( 54 ), the cell controller  121  may pass a locally generated PULL command further down the IBCP  160  ( 22 ) and revert back to the idle state  310  ( 23 ). 
         [0047]      FIG. 4  is a state diagram illustrating control operations of a cell stage  100  that is charging according to an embodiment of the present invention. The state diagram illustrates a response of a cell monitor  120  when it receives PUSH/PULL commands from adjacent cells in a battery stack. As illustrated in  FIG. 4 , the cell monitor  120  may make switch-in/bypass configuration decisions in response to PUSH/PULL commands received via the out-bound (or upstream) or in-bound (or downstream) communication pathways  150  and  160 , respectively, according to the processes outlined below. Each arrow in  FIG. 4  is designated by a number ( 1 )-( 56 ) for convenience. 
         [0048]      FIG. 4  illustrates an idle state  410 , representing a bypassed configuration of the stage  100 . When in the idle state, the stage  100  may response to received commands in a variety of ways. For example, if the controller  121  of the cell monitor  120  receives a PUSH command on the out-bound communication pathway  150  (OBCMD=“PUSH” ( 1 )), the controller  121  may determine a direction of current flow through the stack. If the battery stack is charging and the current flowing through the stage  100  is outgoing ( 5 ), the cell controller  121  may pass the PUSH command further up the out-bound communication pathway  150  ( 6 ) and return to the idle state  410  ( 7 ). If the battery stack is charging and the current flowing through the stage  100  is not outgoing ( 8 ), the cell controller  121  may determine whether the cell  110  is in a condition to push (i.e., charge). If the cell  110  cannot push (i.e., charge) ( 9 ), the cell controller  121  may pass the PUSH command further up the OBCP  150  ( 6 ) and return to the idle state  410  ( 7 ). If the cell  110  can push (i.e., charge) ( 10 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation. The stage  100  may then enter the out-bound positive orientation (OB POS) state  420  and charge the cell  110 . 
         [0049]    When in the idle state  410 , if the controller  121  of the cell monitor  120  receives a PULL command on the out-bound communication pathway  150  (OBCMD=“PULL” ( 2 )), the controller  121  may determine a direction of current flow through the stack. If the battery stack is charging and the current flowing through the stage  100  is incoming ( 11 ), the cell controller  121  may pass the PULL command further up the out-bound communication pathway  150  ( 12 ) and return to the idle state  410  ( 13 ). If the battery stack is charging and the current flowing through the system  100  is not incoming ( 14 ), the cell controller  121  may determine whether the cell  110  is in a condition to pull (i.e. charge). If the cell  110  cannot pull (i.e., charge) ( 15 ), the cell controller  121  may pass the PULL command further up the OBCP  150  and return to the idle state  410  ( 13 ). If the cell  110  can pull (i.e., charge) ( 16 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation. The stage  100  may then enter the out-bound negative orientation (OB NEG) state  430  and charge the cell  110 . 
         [0050]    When in the idle state  410 , if the controller  121  of the cell monitor  120  receives a PUSH command on the in-bound communication pathway  160  (IBCMD=“PUSH” ( 3 )), the controller  121  may determine the condition of the battery cell  110 . If the cell  110  cannot push (i.e., charge or discharge) ( 17 ), the cell controller  121  may pass the PUSH command further down the IBCP  160  ( 18 ) and return to the idle state  410  ( 19 ). If the cell  110  can push (i.e., charge or discharge) ( 20 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a positive orientation and enter the in-bound positive orientation (IB POS) state  440  to charge the cell  110 . 
         [0051]    While in the idle state  410 , if the controller  121  of the cell monitor  120  receives a PULL command on the in-bound communication pathway  160  (IBCMD=“PULL” ( 4 )), the controller  121  may determine the condition of the battery cell  110 . If the cell  110  cannot pull (i.e., charge or discharge) ( 21 ), the cell controller  121  may pass the PULL command further down the IBCP  160  ( 22 ) and return to the idle state  410  ( 23 ). If the cell  110  can pull (i.e., charge or discharge) ( 24 ), the cell controller  121  may control the switches  132 - 138  to switch the cell  110  into the stack in a negative orientation and enter the in-bound negative orientation (IB NEG) state  450  to charge the cell  110 . 
         [0052]    When the stage  100  is in the OB POS state  420 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PUSH command on the out-bound communication pathway  150  (i.e., OBCMD=“PUSH” ( 25 )), the controller  121  may pass the PUSH command further up the OBCP  150  ( 26 ) and return to the OB POS  420  state ( 27 ). If, the controller  121  receives a PUSH command on the in-bound communication pathway  160  (i.e., IBCMD=“PUSH” ( 28 )), the controller  121  may pass the PUSH command further down the IBCP  160  ( 29 ) and return to the OB POS  420  state ( 30 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PULL command ( 32 ), the controller  121  may revert back to the idle state  410 . In the absence of a command, if the controller  121  determines that the cell  110  is filling (i.e., the cell  110  should not be charged above a predetermined limit to prevent damage to the cell  110 ) ( 31 ), the cell controller  121  may pass a locally generated PUSH command further up the OBCP  150  ( 6 ) and revert back to the idle state  410  ( 7 ). 
         [0053]    When the stage  100  is in the OB NEG state  430 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PULL command on the out-bound communication pathway  150  (i.e., OBCMD=“PULL” ( 33 )), the controller  121  may pass the PULL command further up the OBCP  150  ( 34 ) and return to the OB NEG  430  state ( 35 ). If the controller  121  receives a PULL command on the in-bound communication pathway  160  (i.e., IBCMD=“PULL” ( 36 )), the controller  121  may pass the PULL command further down the IBCP  160  ( 37 ) and return to the OB NEG  430  state ( 38 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PUSH command ( 47 ), the controller  121  may revert back to the idle state  410 . In the absence of a command, if the controller  121  determines that the cell  110  is filling (i.e., the cell  110  should not be charged above a predetermined limit to prevent damage to the cell  110 ) ( 56 ), the cell controller  121  may pass a locally generated PULL command further up the OBCP  150  ( 12 ) and revert back to the idle state  410  ( 13 ). 
         [0054]    When the stage  100  is in the IB POS state  440 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PUSH command on the out-bound communication pathway  150  (i.e., OBCMD=“PUSH” ( 39 )), the controller  121  may pass the PUSH command further up the OBCP  150  ( 40 ) and remain in the IB POS  440  state ( 41 ). If the controller  121  receives a PUSH command on the in-bound communication pathway  160  (i.e., IBCMD=“PUSH” ( 42 )), the controller  121  may pass the PUSH command further down the IBCP  160  ( 43 ) and remain in the IB POS  440  state ( 44 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PULL command ( 46 ), the controller  121  may revert back to the idle state  410 . In the absence of a command if the controller  121  determines that the cell  110  is filling (i.e., the cell  110  should not be charged above a predetermined limit to prevent damage to the cell  110 ) ( 45 ), the cell controller  121  may pass a locally generated PUSH command further down the IBCP  160  ( 18 ) and revert back to the idle state  410  ( 19 ). 
         [0055]    When the stage  100  is in the IB NEG state  450 , the stage  100  may respond to received commands in a variety of ways. For example, if the controller  121  receives a PULL command on the out-bound communication pathway  150  (i.e., OBCMD=“PULL” ( 48 )), the controller  121  may pass the PULL command further up the OBCP  150  ( 49 ) and return to the IB NEG  450  state ( 50 ). If the controller  121  receives a PULL command on the in-bound communication pathway  160  (i.e., IBCMD=“PULL” ( 51 )), the controller  121  may pass the PULL command further down the IBCP  160  ( 52 ) and remain in the IB NEG  450  state ( 53 ). If the controller  121  receives, on either the IBCP  160  or OBCP  150 , a PUSH command ( 55 ), the controller  121  may revert back to the idle state  410 . In the absence of a command, if the controller  121  determines that the cell  110  is filling (i.e., the cell  110  should not be charged above a predetermined limit to prevent damage to the cell  110 ) ( 54 ), the cell controller  121  may pass a locally generated PULL command further down the IBCP  160  ( 22 ) and revert back to the idle state  410  ( 23 ). 
         [0056]      FIG. 5  illustrates a battery stack  500  according to an embodiment of the present disclosure. The battery stack  500  may include multiple stages 1-N and a stack controller  530 . The stages 1-N may be similar to the stage  100  described above with respect to  FIG. 1 . The stack controller  530  may control the operation of the stages 1-N of the battery stack  500  via a communication network including outbound and inbound communication paths  540  and  550 , respectively (described in further detail below). 
         [0057]    Adjacent stages may be coupled to each other as described hereinbelow, forming the battery stack  500 . Each stage 1-N may include terminals RX 1 , RX 2 , TX 1 , TX 2  (shown in more detail in  FIG. 1 ). The terminals TX 1  and TX 2  for each stage may be coupled to the terminals RX 1  and RX 2  of an adjacent stage on both the outbound path  540  and inbound path  550 . Take stage 2 for example. The terminal RX 1 . 2  of stage 2 may be coupled to the terminal TX 1 . 1  of stage 1 via the outbound path  540 . The terminal TX 1 . 2  of stage 2 may be coupled to the terminal RX 1 . 3  of stage 3 via the outbound path  540 . The terminal RX 2 . 2  of stage 2 may be coupled to the terminal TX 3 . 1  of stage 3 via the inbound path  550 . The terminal TX 2 . 2  may be coupled to the terminal RX 2 . 1  of stage 1 via the inbound path  550 . The terminals RX 1 , RX 2 , TX 1 , TX 2  of the remaining stages 1 and 3-N may be coupled to adjacent stages in a similar fashion. Moreover, the terminals RX 1 . 1  and TX 2 . 1  of stage 1 may be coupled to the stack controller  530  via the outbound and inbound paths  540  and  550 . 
         [0058]    Each stage 1-N may also include output terminals (or nodes) A and B (similar to nodes A and B of  FIG. 1  described above). The output nodes A and B for each stage 1-N may be coupled to adjacent stages in the battery stack in a daisy chain configuration, as shown in  FIG. 5 . Take stage 2 for example. The output terminal A- 2  of stage 2 may be coupled to the output terminal B- 3  of stage 3 and the output terminal B- 2  of stage 2 may be coupled to the output terminal A- 1  of stage 1. Moreover, the output terminal B- 1  of stage 1 (or the bottom stage) and the output terminal A-N of stage N (or the top stage) may be coupled to a load (e.g., a motor). 
         [0059]    Each stage 1-N may be substantially similar to the cell controller system  100  of  FIG. 1  in structure and operation. Each stage may include a battery cell  510 . 1 - 510 .N and cell monitor (MTR)  520 . 1 - 520 .N pair and switches ( 562 . 1 - 568 . 1  for stage 1,  562 . 2 - 568 . 2  for stage 2,  562 . 3 - 568 . 3  . . . and  562 .N- 568 .N for stage N). The battery cells  510 . 1 - 510 .N and the cell MTRs  520 . 1 - 520 .N are substantially similar, in structure and operation, to the battery cell  110  and cell monitor  120 , respectively, of  FIG. 1 . Cell monitors of adjacent cells may communicate with each other using the terminals TX 1 , TX 2 , RX 1 , RX 2  via the outbound and inbound communication pathways  540  and  550 , respectively. Additionally, the four switches for each stage may be substantially similar, in structure and operation, to the switches  132 ,  134 ,  136 , and  138  of  FIG. 1 . 
         [0060]    The stack controller  530  may be coupled to the cell controller  520 . 1  of stage 1. The stack controller  530  may send PUSH or PULL commands to cell MRT  520 . 1  of stage 1 on the outbound communication pathway  540  based on the requirements of the load (described in further detail below). The stack controller  530  may receive a clock (CLK) signal and send timed PUSH/PULL commands up the battery stack  500 . The stack controller  530  may also receive communications from the cell MRT  520 . 1  on the inbound communication pathway  550  (i.e., PUSH/PULL commands that make it back to the stack controller  530 ). 
         [0061]    During operation, the stack controller  530  may control the stack  500  by switching-in or bypassing certain cells  510 . 1 - 510 .N to supply a desired voltage waveform to the load by sending a calculated number of PUSH/PULL commands (based on the desired voltage waveform) to the cell MTR  520 . 1  of stage 1 via the outbound communication pathway  540 . More specifically, the stack controller  530  may control the stack  500  to generate the desired voltage waveform by determining the voltage required by the load and using the CLK signal to send a series of timed PUSH/PULL commands to the stack  500 . The cell MTR  520 . 1  of stage 1 may decide whether it should be in a “switched-in” or “bypassed” state, as described above with respect to  FIGS. 1-4 . 
         [0062]    In other words, stage 1 would either switch-in the cell  510 . 1  (i.e., comply with the PUSH/PULL command) or bypass the cell  510 . 1  and transmit the PUSH/PULL command to the next cell MTR  520 . 2  (of the next stage 2) in the battery stack  500  via the outbound communication pathway  540 . As described with respect to state diagrams of  FIG. 2-4  above, the remaining cell MTRs  520 . 2 - 520 .N of each corresponding stage 2-N may make its own decision on whether to switch-in or bypass (and transmit the command up pathway  540 ) the corresponding cells  510 . 2 - 510 .N until there are no more PUSH/PULL commands in the pathway  540  (indicating that the desired voltage waveform is being supplied). In some circumstances, the PUSH/PULL commands may be rejected by each stage 1-N in the stack and the commands may return back down to each stage N−1 on the return communication pathway  550  for reconsideration. 
         [0063]    For example, say that the battery stack  500  includes fifty cells  510 . 1 - 510 . 50  and each cell  510 . 1 - 510 . 50  may be capable of supplying 4 V (when healthy). If the motor (or the load) requires+100 V during a given acceleration operation, the stack controller  530  may transmit twenty-five sequential PUSH commands to the cell controller  520 . 1  of stage 1 via the outbound communication pathway  540 . The commands may propagate up the path  540  until twenty-five cells decide to “switch-in” to supply approximately 100 V to the load. The stack controller  530  may similarly transmit twenty-five sequential PULL commands to control the battery stack  500  to provide −100V to the motor. 
         [0064]    According one embodiment, the stack controller  530  may control the battery stack  500  to supply a constant voltage waveform (e.g., to power an electric motor) by transmitting a series of PUSH (or PULL) commands up the outbound communication pathway  540 . The stack  500  may eventually supply a desired constant waveform (either positive or negative) after an adequate number of cells are switched-in. The stack controller  530  may increase the constant voltage supplied by the stack  500  by sending more PUSH (or PULL if a negative voltage is required) commands up the upstream communication pathway  540 . Similarly, the stack controller  530  may decrease the constant voltage supplied by the stack  500  during operation by sending a series of PULL (or PUSH) commands up the outbound communication pathway  540 . 
         [0065]    According to another embodiment, the stack controller  530  may control the battery stack  500  to supply a sinusoidal voltage waveform. In such an embodiment, the stack controller  530  may send a plurality of alternating sets of PUSH/PULL commands in the following repeating sequence so the output voltage waveform may oscillate: (1) a series PUSH commands (to switch-in cells to provide a positive voltage), (2) a series of PULL commands (to bypass the cells that were switched-in to provide a positive voltage in (1)), (3) a series of PULL commands (to switch-in cells to provide a negative voltage), and (4) a series of PUSH commands (to bypass the cells that were switched-in to provide a negative voltage in (3)). The stack controller  530  may also control the stack  500  to supply various other output waveforms as desired by the load the stack  500  is driving. 
         [0066]    The battery stack  500  may also include diodes  572 . 1 - 578 . 1  (for stage 1),  572 . 2 - 578 . 2  (for stage 2),  572 . 3 - 578 . 3  . . . and  572 .N- 578 .N (for stage N), which may be optionally coupled to the switches in each stage 1-N. The diodes may provide charge and discharge fly-back protection for corresponding battery cells  510 . 1 - 510 .N in each stage 1-N, respectively. 
         [0067]      FIG. 6  illustrates a battery stack  600  according to an alternate embodiment of the present invention. Battery stack  600  may include a stack controller  630  and a plurality of stages 1-N which may be similar in structure and operation to the stack controller  530  and stages 1-N of  FIG. 5 . However, the battery stack  600  of  FIG. 6  may also include an isolator  680 . The isolator may be any device suitable to maintain an electric isolation between the stack controller  630  and the stage N, for example a transformer, an optical isolator, a capacitive isolator, or the like. 
         [0068]    The isolator  680  may be coupled between the stack controller  630  and the last stage N in the battery stack  600 . The transformer  680  may allow the stack controller  630  to directly communicate with the stage N cell MTR  620 .N without damaging the stack controller  630 . The stack controller  630  may not otherwise be able to directly communicate with the last stage N because doing so would expose the stack controller  630  to the high voltages present on stage N of the stack  600  (the high voltages may damage the stack controller  630 ). 
         [0069]    The battery stack  600  may optionally include another transformer  690  coupled between the last stage N and the stack controller  630 . The transformer  690  may allow the stack controller  630  to directly communicate with the stage N cell MRT  620 .N without damaging the stack controller  630 . The stack controller  630  may not otherwise be able to directly receive communicate with the last stage N because doing so would expose the stack controller  630  to the high voltages present on stage N of the stack  600  (the high voltages may damage the stack controller  630 ). 
         [0070]      FIG. 7  illustrates a battery pack  700  including a battery cell  710  with an integrated controller  720  for fault protection. The battery pack  700  may include a battery cell  710 , a local controller  720 , MOSFET transistors  732 ,  734 ,  736 , and  738 , output terminals T 1  and T 2 , and power terminals “P.” The gate terminals of the transistors  732 - 738  may be coupled to the controller  720  in an H-Bridge configuration, as illustrated in  FIG. 7 . The drain terminals of the transistors  732  and  734  may be coupled a positive terminal (“+”) of the battery cell  710  and the source terminals of transistors  732  and  734  may be coupled to the output terminals T 1  and T 2 , respectively. The source terminals of the transistors  736  and  738  may be coupled a negative terminal (“−”) of the battery cell  710  and the drain terminals of transistors  736  and  738  may be coupled to the output terminals T 1  and T 2 , respectively. The controller  720  may also be coupled the + and − terminals of the cell  710  and the power terminals P. 
         [0071]    The cell  710  may be a lead-acid, nickel-metal hydride (NiMH), lithium-ion (Li-ion), or other type of battery that may be integrated in a battery stack to provide power to drive hybrid vehicles. The cell  710  may include a positive terminal “+” and a negative terminal “−” which may be selectively coupled to terminals T 1  and T 2 . The terminals T 1  and T 2  may be coupled to terminals of adjacent battery packs in a stack of batteries used to drive a load (similar to the battery stack of  FIG. 5 ). 
         [0072]    The controller  720  (which may be similar to controller  121  of  FIG. 1  or controller  520  in  FIG. 5 ) may include a microcontroller, a programmable processor, and/or a state machine and may measure the condition of the cell  710  (via terminals + and −) as well as the current flowing between T 1  to T 2  to determine the presence of a fault. The controller  720  may be coupled to power terminals P, which may provide a communication channel allowing the controller  720  to communicate (send PUSH/PULL) command to adjacent cells in the battery stack (in a similar manner as described above with respect to  FIGS. 1-6 ). The controller  720  may be internally powered by the cell  710 . 
         [0073]    Transistors  732 - 738  may be MOSFETS of sufficient size to serve as power transistors or mechanical switches. Transistors  732  and  738  may be depletion mode MOSFETs (i.e., current flows through them when they are off) and transistors  734  and  736  may be enhancement mode MOSFETs (i.e., current flows through them when they are on). 
         [0074]    During regular operation (i.e., the controller  720  is not activating the switches  732 - 738 ), the “+” terminal of cell  710  may be coupled to T 1  and the“−” terminal of cell  710  may be coupled to T 2 . Thus, even if the controller malfunctions or breaks, the battery cell  710  may still be coupled to terminals T 1  and T 2 , so the cell  710  is not bypassed in the battery stack. 
         [0075]    If the controller  720  determines that there is a large current flowing between T 1  to T 2  (i.e., a fault condition), the controller  720  may determine that the cell  710  may be in danger of being damaged. In such cases, the controller  720  may switch depletion mode MOSFETs  732  and  738  on so they are not conducting current and leave enhancement mode MOSFETs  734  and  736  off so they are not conducting current. This operation effectively isolates the battery cell  710  from the high current flowing between the terminals T 1  and T 2  so that the cell  710  remains undamaged. This type of “fault protection” may be useful when the cells of a battery stack are subject to catastrophic events such as submersion. Moreover, the battery pack  700  may be a water-tight enclosure to prevent water from entering into the package and damaging the cell  710  and the controller  720 . The controller  720  may also monitor (using a sensor similar to the sensor shown in  FIG. 1 ) the temperature inside the battery pack  700 . If the temperature is too high (above a predefined limit), this may also indicate a fault condition, and the controller  720  may disconnect the battery cell  710  from the terminals T 1  and T 2  as described above. 
         [0076]    The battery pack  700  may be integrated in a battery stack similar to the battery stacks described in  FIGS. 5 and 6  above. In such systems, each battery cell and controller pair (or “stage”) may be provided in a common battery package  700  as shown in  FIG. 7 . Each stage may operate in a similar fashion to the stages described above in  FIGS. 1-5  and may communicate with neighboring stages over a communication network (as shown in  FIGS. 4 and 5 ) as described above. 
         [0077]    The battery pack  700  may also include diodes  742 ,  744 ,  746 , and  748 , which may be coupled to a source and drain terminal of corresponding transistors  732 ,  734 ,  736 , and  738 . The diodes  742 ,  744 ,  746 , and  748  may be optionally included to provide charge and discharge fly-back protection for the transistors  732 ,  734 ,  736 , and  738 . 
         [0078]      FIG. 8  is a simplified block diagram of a cell controller communication network  800  implementing a leapfrogging protocol according to an embodiment of the present disclosure. The diagram in  FIG. 8  omits the battery cells and switches in  FIGS. 1, 5, and 6 , for simplification purposes, and focuses on a communication network  800  between the cell controllers in a plurality of stages of a battery stack. The communication network  800  may include a plurality of cell monitors  810 . 1 - 810 .N which may be connected in a “leapfrogging” configuration  860 . In a leapfrogging configuration, each cell monitor  810 . 1 ,  810 . 2 ,  810 . 3  . . . - 810 .N may be coupled to the closest two neighboring cell monitors succeeding it in the network  800  and the closest two neighboring cell monitors preceding it in the network  800 . 
         [0079]    Each cell monitor, say monitor  810 . 1 , may include a local controller  820 . 1 , a local transmitter  830 . 1 , a first local receiver  840 . 1 , and a second local receiver  850 . 1 . Each local controller  820 . 1  may be coupled to a respective local transmitter  830 . 1 , a first local receiver  840 . 1 , and a second local receiver  850 . 1 . Each first local receiver  840 . 1  may be coupled to a transmitter of an immediately preceding cell controller in the network  800 . Each second local receiver  850 . 1  may “leapfrog” the immediately preceding cell monitor and may be coupled to a transmitter of a cell controller that is two nodes down the network  800 . 
         [0080]    Take cell monitor  810 . 3  for example. The first local receiver  840 . 3  may be coupled to the transmitter  830 . 2  in cell monitor  810 . 2 . The second local receiver  850 . 3  may be coupled to the transmitter  830 . 1  in cell monitor  810 . 1 . 
         [0081]    The operation of each cell monitor  810 . 1 - 810 .N in the communication network  800  will now be described using cell monitor  810 . 3  as an example. During normal operation, the first local receiver  840 . 3  may receive PUSH/PULL commands from the transmitter  830 . 2  in cell monitor  810 . 2 . The controller  820 . 3  may process the received PUSH/PULL command and determine whether to PUSH/PULL a corresponding battery cell or transmit, using the local transmitter  830 . 3 , the received PUSH/PULL command to the next cell monitor  810 . 4  in the network  800  (this process is described in more detail above with respect to  FIGS. 1-6 ). 
         [0082]    In some cases, however, there may be a fault in the communication network  800 . The cell controller  820 . 3  of cell monitor  810 . 3  may “eavesdrop” on the transmitter  830 . 1  of the cell monitor  810 . 1 . If cell monitor  810 . 1  transmits, via transmitter  830 . 1 , two commands (either PUSH or PULL) to cell monitor  810 . 2  and the transmitter  830 . 2  never passes a command (either PUSH or PULL) to cell monitor  810 . 3 , the cell controller  820 . 3  of cell monitor  810 . 3  may determine that there is a fault in cell monitor  810 . 2 . If there is a fault detected in this manner, the controller  820 . 3  may “leapfrog” (or bypass) the cell monitor  810 . 2  in the network  800  and respond to PUSH/PULL commands from the cell monitor  810 . 1  henceforth. 
         [0083]    Each cell monitor  810 . 1 - 810 .N in the network  800  may follow the leapfrogging protocol described above to prevent a fault in any one of the cell monitor  810 . 1 ,  810 . 2 ,  810 . 3  . . . - 810 .N from disabling the entire communication network  800 . 
         [0084]    According to another embodiment of the present invention, the controller  820 . 3  of cell monitor  810 . 3  may determine that it has not received a PUSH/PULL command from the preceding cell controller  810 . 2  in the network  800  for a predetermined period of time. The absence of PUSH/PULL commands received from the preceding cell monitor  810 . 2  may indicate that cell controller  810 . 2  is faulty. In such cases, the cell controller  820 . 3  may determine whether the second local receiver  850 . 3  has received a PUSH/PULL command from the transmitter  830 . 1  in the cell monitor  810 . 1  that is two nodes down the communication network  800  during the same period of time. 
         [0085]    If the transmitter  830 . 1  in the cell monitor  810 . 1  has not transmitted any PUSH/PULL command during the same period of time, the controller  820 . 3  may determine that there is nothing wrong with cell monitor  810 . 2  and that there are simply no PUSH/PULL commands in the network  800 . If, however, the transmitter  830 . 1  has transmitted PUSH/PULL commands during the same period of time, the controller  820 . 3  may determine that cell monitor  810 . 2  is faulty. If cell the monitor  810 . 2  is faulty, the controller  820 . 3  may “leapfrog” (or bypass) the cell monitor  810 . 2  in the network  800  and respond to PUSH/PULL commands from the cell monitor  810 . 1  henceforth. 
         [0086]    Although the foregoing techniques have been described above with reference to specific embodiments, the invention is not limited to the above embodiments and the specific configurations shown in the drawings. For example, some components shown may be combined with each other as one embodiment, or a component may be divided into several subcomponents, or any other known or available component may be added. Those skilled in the art will appreciate that these techniques may be implemented in other ways without departing from the spirit and substantive features of the invention. The present embodiments are therefore to be considered in all respects as illustrative and not restrictive.