🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    M5 POWER BANK with IP5108

    PROJECTS
    4
    6
    22.5k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      JiKuch
      last edited by

      Under this link IP3506 AUTOMATIC STANDBY was discussed the M5 Power Bank module.
      Here is the inspiration from the realization of this module:

      1. Schema
        0_1531661662908_M5Stack_Power_Bank_V24.png

      2. BOM
        0_1531661684833_M5_Power_Bank_BOM.png

      3. PCB for hand soldering
        0_1531661724055_M5_Power_Bank_PCB.png

      4. Case - 3D printed
        0_1531661759214_M5_Power_Bank_Case.png

      5. Final functional module
        0_1531661809513_M5_Power_Bank_Module.png

      M5 Power Bank with IP5108 fully replaces M5 BOTTOM:

      • The module also contains a magnet (big one)
      • External M-bus (fully) is on the right side (female 2x15)
      • LED indicator and On/Off button is on the left side
      • LED functionality can be selected (5V, On/Off=IRQ, GPIO00 or GPIO01 software control)
      • On/Off button functionality can also be programmed thru IP5108 registers

      WARNING:
      The module is designed to be connected directly to the M5 CORE because the components enter the space of M5 CORE!

      1 Reply Last reply Reply Quote 1
      • J
        jfmateos
        last edited by

        Nice desing jikuch.... I am trying to adapt it for a solar powered system, but am unable to find information in english about the ip5108 i2c register.
        Could you help me?
        Thanks

        J 1 Reply Last reply Reply Quote 0
        • J
          JiKuch @jfmateos
          last edited by JiKuch

          IP5108 I2C description:

          7-bit slave address IP5108 is 0x75 (byte with write bit = 0xEA; byte with read bit = 0xEB)
          400 Kbps speed of I2C supported
          1 byte data = 8-bit data (bits from 7 to 0)

          WRITE Arduino example:
          Wire.beginTransmission(0x75);
          Wire.write(register_address_byte);
          Wire.write(data_byte);
          Wire.endTransmission();

          READ Arduino example:
          Wire.beginTransmission(0x75);
          Wire.write(register_address_byte);
          Wire.endTransmission();
          Wire.requestFrom(0x75,1);
          data_byte = Wire.read();

          REGISTERS:

          1. Enable / disable functions:
          SYS_CTL0 = 0x01:

          • bit 4 (read/write): 0 = disbale / 1 = enable (1 = after reset) detection ??? (I do not understand.)
          • bit 3 (read/write): 0 = disbale / 1 = enable (1 = after reset) light
          • bit 2 (read/write): 0 = disbale / 1 = enable (1 = after reset) booster
          • bit 1 (read/write): 0 = disable / 1 = enable (1 = after reset) charger

          SYS_CTL1 = 0x02:

          • bit 1 (read/write): 0 = disable / 1 = enable (1 = after reset) auto-standby
          • bit 0 (read/write): 0 = disable / 1 = enable (1 = after reset) auto ??? (I do not understand.)

          SYS_CTL3 = 0x03:

          • bit 5 (read/write): 0 = disable / 1 = enable (1 = after reset) off by button

          2. General setup features:
          SYS_CTL2 = 0x0C:

          • bits 7-3 (read/write): (01010 = after reset) auto-standby current limit as multiple 12 mA

          SYS_CTL4 = 0x04:

          • bits 7-6 (read/write): (10 = after reset) time for auto-standby: 00=8s, 01=16s, 10=32s, 11=64s

          SYS_CTL3 = 0x03:

          • bits 7-6 (read/write): (01 = after reset) time for recognition button press: 00=1s, 01=2s, 10=3s, 11=4s

          SYS_CTL5 = 0x07:

          • bit 1 (read/write): (0 = after reset) control of light by button: 0=press, 1=double click
          • bit 0 (read/write): (0 = after reset) off by button: 0=double click, 1=press

          3. Charging setup features:
          CHARGER_CTL1 = 0x22:

          • bits 3-2 (read/write): (01 = after reset) VOUT undervoltage limit during chargig: 00=4.53V, 01=4.63V, 10=4.73V, 11=4.83V

          CHARGER_CTL2 = 0x24:

          • bits 6-5 (read/write): (00 = after reset) battery type = charging voltage: 00=4.2V, 01=4.3V, 10=4.35V
          • bits 2-1 (read/write): (10 = after reset) overcharging of charging: 00=0mV, 01=14mV, 10=28mV, 11=42mV

          CHG_DIG_CTL4 = 0x25:

          • bits 4-0 (read/write): (10110 = after reset) charging current setting [A]:
            b0 x 0.1 + b1 x 0.2 + b2 x 0.4 + b3 x 0.6 + b4 x 1.4

          4. Charging information:
          Reg_READ0a = 0x70:

          • bit 3 (read only): charging status: 0 = not charging, 1 = charging

          Ref_READ0b = 0x71:

          • bits 7-5 (read only): detailed charging status:
            000 = inactivity
            001 = charging
            010 = constant current charging
            011 = charging with constant voltage
            100 = ??? (missing description in original document)
            101 = end of charging (maintenance current)
          • bit 3 (read only): signal of end of charging (=1)

          5. PIN assignment & control:
          MFP_CTL0 = 0x51:

          • bits 5-4 (read/write): (00 = after reset) pin LIGHT assignement: 00=WLED, 01=GPIO2, 10=VREF
          • bits 3-2 (read/write): (00 = after reset) pin L4 assignement: 00=L4, 01=GPIO1
          • bits 1-0 (read/write): (00 = after reset) pin L3 assignement: 00=L3, 01=GPIO0

          GPIO_CTL2a = 0x53:

          • bits 2-0 (read/write): (000 = after reset) GPIO[2:0] input enable

          GPIO_CTL2b = 0x54:

          • bits 2-0 (read/write): (000 = after reset) GPIO[2:0] output enable

          GPIO_CTL3 = 0x55:

          • bits 2-0 (read/write): (000 = after reset) GPIO[2:0] data

          6. Measurement:
          BATVADC_DAT0 = 0xA2:

          • pins 7-0 (read only): LOW 8 bits (byte) of BATVADC

          BATVADC_DAT1 = 0xA3:

          • pins 5-0 (read only): HIGH 6 bits of BATVADC

          Calculation according to the original document:
          0_1535826835366_BATVADC.png

          BATIADC_DAT0 = 0xA4:

          • pins 7-0 (read only): LOW 8 bits (byte) of BATIADC

          BATIADC_DAT1 = 0xA5:

          • pins 5-0 (read only): HIGH 6 bits of BATIADC

          Calculation according to the original document:
          0_1535825484785_BATIADC.png

          BATOCV_DAT0 = 0xA8:

          • pins 7-0 (read only): LOW 8 bits (byte) of BATOCV

          BATOCV_DAT1 = 0xA9:

          • pins 5-0 (read only): HIGH 6 bits of BATOCV

          Calculation according to the original document:
          0_1535825504468_BATOCVADC.png

          This is true: BATOCV = BATVACD + BATIADC * battery_internal_resistnace

          7. WLED status:
          Reg_READ1 = 0x72:

          • bit 7 (read only): 0 = WLED is off, 1 = WLED is on

          8. Light / heavy load:
          Reg_READ1 = 0x72:

          • bit 6 (read only): 0 = heavy load over 75 mA, 1 = light load less 75 mA

          9. Button control:
          Reg_READ2 = 0x77:

          • bit 3 (read; write 1 = reset) flag button double clicked (=1)
          • bit 1 (read; write 1 = reset) flag button pressed (=1)
          • bit 0 (read; write 1 = reset) flag button clicked (=1)

          That is all.

          J E 2 Replies Last reply Reply Quote 0
          • J
            joyqat @JiKuch
            last edited by

            @jikuch Nice design.
            Do you have the I2C register document of IP5108? Could you share it? Thanks!

            1 Reply Last reply Reply Quote 0
            • E
              elecvoice
              last edited by

              Hi, can somebody tell me: if I change something in ip5108 through i2c, will it be saved, or i must make this changes each time when i start device?

              1 Reply Last reply Reply Quote 0
              • E
                elecvoice @JiKuch
                last edited by

                @jikuch

                Hi, can you tell me: if I change something in ip5108 through i2c (for example disable auto-standby), will this changers be saved, or i must make this changes (with software) each time when i start device?

                1 Reply Last reply Reply Quote 1
                • First post
                  Last post