diff --git a/include/darwin_registers.h b/include/darwin_registers.h
index 3899d162c9ec3376c3cd66d2f73679239fc1b11a..e8808233769725336f052d9a785ceb155faddf7e 100644
--- a/include/darwin_registers.h
+++ b/include/darwin_registers.h
@@ -81,6 +81,8 @@ extern "C" {
 #define GRIPPER_RIGHT_MAX_ANGLE         ((unsigned short int)0x005A)
 #define GRIPPER_RIGHT_MIN_ANGLE         ((unsigned short int)0x005C)
 #define GRIPPER_RIGHT_MAX_FORCE         ((unsigned short int)0x005E)
+#define SMART_CHARGER_PERIOD            ((unsigned short int)0x0060)
+
 
 #define LAST_EEPROM_OFFSET              ((unsigned short int)0x00FF)
 
@@ -183,6 +185,9 @@ typedef enum {
   DARWIN_GRIPPER_RIGHT_MIN_ANGLE_H = GRIPPER_RIGHT_MIN_ANGLE+1,
   DARWIN_GRIPPER_RIGHT_MAX_FORCE_L = GRIPPER_RIGHT_MAX_FORCE,
   DARWIN_GRIPPER_RIGHT_MAX_FORCE_H = GRIPPER_RIGHT_MAX_FORCE+1,
+  DARWIN_SMART_CHARGER_PERIOD_L    = SMART_CHARGER_PERIOD, //en ms
+  DARWIN_SMART_CHARGER_PERIOD_H    = SMART_CHARGER_PERIOD+1,
+//RAM  
   DARWIN_TX_LED_CNTRL              = 0x0100, // bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2  | bit 1 |      bit 0
                                              //       |       |       |       | blink | toggle | value | internally used
   DARWIN_TX_LED_PERIOD_L           = 0x0101,
@@ -562,6 +567,7 @@ typedef enum {
   DARWIN_HEAD_MIN_TILT_H           = 0x0244,
   DARWIN_HEAD_TILT_TARGET_L        = 0x0245, // angle in fixed point format 9|7
   DARWIN_HEAD_TILT_TARGET_H        = 0x0246,
+   
   DARWIN_BATT_CHARGER_STATUS       = 0x0247,
   DARWIN_BATT_INPUT_CURRENT_L      = 0x0248,
   DARWIN_BATT_INPUT_CURRENT_H      = 0x0249,
@@ -570,7 +576,7 @@ typedef enum {
   DARWIN_BATT_CHARGE_VOLTAGE_L     = 0x024C,
   DARWIN_BATT_CHARGE_VOLTAGE_H     = 0x024D,
   DARWIN_BATT_LIMIT_CURRENT_L      = 0x024E,
-  DARWIN_BATT_LIMIT_CURRENT_H      = 0x024F,
+  DARWIN_BATT_LIMIT_CURRENT_H      = 0x024F, //
   DARWIN_BATT_TEMPERATURE_L        = 0x0250,
   DARWIN_BATT_TEMPERATURE_H        = 0x0251,
   DARWIN_BATT_VOLTAGE_L            = 0x0252,
@@ -579,13 +585,13 @@ typedef enum {
   DARWIN_BATT_CURRENT_H            = 0x0255,
   DARWIN_BATT_AVG_CURRENT_L        = 0x0256,
   DARWIN_BATT_AVG_CURRENT_H        = 0x0257,
-  DARWIN_BATT_RELATIVE_SOC         = 0x0258,
+  DARWIN_BATT_RELATIVE_SOC         = 0x0258,//
   DARWIN_BATT_ABSOLUTE_SOC         = 0x0259,
   DARWIN_BATT_REMAINING_CAP_L      = 0x025A,
   DARWIN_BATT_REMAINING_CAP_H      = 0x025B,
   DARWIN_BATT_FULL_CHARGE_CAP_L    = 0x025C,
   DARWIN_BATT_FULL_CHARGE_CAP_H    = 0x025D,
-  DARWIN_BATT_RUN_TIME_EMPTY_L     = 0x025E,
+  DARWIN_BATT_RUN_TIME_EMPTY_L     = 0x025E, //
   DARWIN_BATT_RUN_TIME_EMPTY_H     = 0x025F,
   DARWIN_BATT_AVG_TIME_EMPTY_L     = 0x0260,
   DARWIN_BATT_AVG_TIME_EMPTY_H     = 0x0261,
@@ -605,7 +611,14 @@ typedef enum {
   DARWIN_BATT_CELL3_VOLTAGE_H      = 0x026F,
   DARWIN_BATT_CELL4_VOLTAGE_L      = 0x0270,
   DARWIN_BATT_CELL4_VOLTAGE_H      = 0x0271,
-  DARWIN_GRIPPER_CNTRL             = 0x0272, //    bit 7    |     bit 6    | bit 5 | bit 4 |    bit 3   |    bit 2   |    bit 1    |   bit 0
+  
+//añadidos  
+  DARWIN_SMART_CHARGER_CNTRL       = 0x0272,  // bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 |    bit 1   |   bit 0
+                                              //                                               |  detected  |  enable                                           
+  DARWIN_SMART_CHARGER_ID          = 0x0273,
+
+//Cambio registro
+  DARWIN_GRIPPER_CNTRL             = 0x0276, //    bit 7    |     bit 6    | bit 5 | bit 4 |    bit 3   |    bit 2   |    bit 1    |   bit 0
                                              // left opened | right opened |       |       | close left | open left  | close right | open right 
 } darwin_registers;
 
@@ -688,7 +701,7 @@ typedef enum {
 #define      HEAD_STOP               0x02
 #define      HEAD_STATUS             0x10
 
-#define      GRIPPER_BASE_ADDRESS    0x0272
+#define      GRIPPER_BASE_ADDRESS    0x0276 //Modificado
 #define      GRIPPER_MEM_LENGTH      1
 #define      GRIPPER_EEPROM_ADDRESS  0x0054
 #define      GRIPPER_EEPROM_LENGTH   14
@@ -697,6 +710,15 @@ typedef enum {
 #define      GRIPPER_OPEN_LEFT       0x04
 #define      GRIPPER_CLOSE_LEFT      0x08
 
+#define      SMART_CHARGER_BASE_ADDRESS    0x0247 //DARWIN_BATT_CHARGER_STATUS
+#define      SMART_CHARGER_MEM_LENGTH      45
+#define      SMART_CHARGER_EEPROM_BASE     0x0060
+#define      SMART_CHARGER_EEPROM_LENGTH   2
+#define      SMART_CHARGER_DET             0x01
+#define      SMART_CHARGER_EN              0x02
+
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/include/eeprom_init.h b/include/eeprom_init.h
index b636703311e13ee36d73b97ef44bbfa484f75d23..7ba89ed6261ee183c407170d0a0fff7e1a2587ab 100644
--- a/include/eeprom_init.h
+++ b/include/eeprom_init.h
@@ -10,7 +10,7 @@ extern "C" {
 #define    DEFAULT_DEVICE_ID                0x0002
 #define    DEFAULT_BAUDRATE                 0x0001
 #define    DEFAULT_RETURN_DELAY             0x0000
-#define    DEFAULT_MM_PERIOD                0x1E78
+#define    DEFAULT_MM_PERIOD                0x1E78 //7800us
 #define    DEFAULT_BAL_KNEE_GAIN            0x4CCD // 0.3 in fixed point format 0|16
 #define    DEFAULT_BAL_ANKLE_ROLL_GAIN      0xFFFF // 0.99999
 #define    DEFAULT_BAL_ANKLE_PITCH_GAIN     0xE666 // 0.9
@@ -81,6 +81,10 @@ extern "C" {
 #define    DEFAULT_GRIPPER_RIGHT_MAX_ANGLE  0x0F00 // 30 in fixed point format 9|7
 #define    DEFAULT_GRIPPER_RIGHT_MIN_ANGLE  0xF100 // -30 in fixed point format 9|7
 #define    DEFAULT_GRIPPER_RIGHT_MAX_FORCE  0x03FF // 1023 max force in binary format
+ 
+#define    DEFAULT_SMART_CHARGER_PERIOD     0x05DC //1500 ms   (7,8ms*200) 
+
+  
 
 #ifdef __cplusplus
 }
diff --git a/src/eeprom.c b/src/eeprom.c
index c5caef423ff350cc15ad1eeb015987de27471d87..d511af23b9cf8ebb04bf8cd314b10cfea15fc435 100755
--- a/src/eeprom.c
+++ b/src/eeprom.c
@@ -152,7 +152,9 @@ uint16_t eeprom_data[] __attribute__ ((section (".eeprom")))={VALID_PAGE,
                                                               DEFAULT_GRIPPER_RIGHT_MIN_ANGLE&0xFF,  GRIPPER_RIGHT_MIN_ANGLE,
                                                               DEFAULT_GRIPPER_RIGHT_MIN_ANGLE>>8,    GRIPPER_RIGHT_MIN_ANGLE+1,
                                                               DEFAULT_GRIPPER_RIGHT_MAX_FORCE&0xFF,  GRIPPER_RIGHT_MAX_FORCE,
-                                                              DEFAULT_GRIPPER_RIGHT_MAX_FORCE>>8,    GRIPPER_RIGHT_MAX_FORCE+1};
+                                                              DEFAULT_GRIPPER_RIGHT_MAX_FORCE>>8,    GRIPPER_RIGHT_MAX_FORCE+1,        
+                                                              DEFAULT_SMART_CHARGER_PERIOD&0xFF,     SMART_CHARGER_PERIOD,
+                                                              DEFAULT_SMART_CHARGER_PERIOD>>8,       SMART_CHARGER_PERIOD+1};
 
 /* Private function prototypes -----------------------------------------------*/
 /* Private functions ---------------------------------------------------------*/
diff --git a/src/ram.c b/src/ram.c
index 3d77ee0e898d5c198d2a21c0bcf014127af8f21c..f2c505dfb8b5e82c15e1311d9a27dad51bd60416 100755
--- a/src/ram.c
+++ b/src/ram.c
@@ -147,6 +147,10 @@ void ram_init(void)
     ram_data[GRIPPER_RIGHT_MAX_FORCE]=(uint8_t)(eeprom_data&0x00FF);
   if(EE_ReadVariable(GRIPPER_RIGHT_MAX_FORCE+1,&eeprom_data)==0)
     ram_data[GRIPPER_RIGHT_MAX_FORCE+1]=(uint8_t)(eeprom_data&0x00FF);
+  if(EE_ReadVariable(SMART_CHARGER_PERIOD,&eeprom_data)==0)
+    ram_data[SMART_CHARGER_PERIOD]=(uint8_t)(eeprom_data&0x00FF);
+  if(EE_ReadVariable(SMART_CHARGER_PERIOD+1,&eeprom_data)==0)
+    ram_data[SMART_CHARGER_PERIOD+1]=(uint8_t)(eeprom_data&0x00FF);
 }
 
 inline void ram_read_byte(uint16_t address,uint8_t *data)