示例#1
0
文件: ina260.py 项目: SiChiTong/ros-1
def main(argv):

    try:

        print(Fore.GREEN + 'start.' + Style.RESET_ALL)

        i2c = busio.I2C(board.SCL, board.SDA)
        #       i2c = board.I2C()
        #       ina260 = adafruit_ina260.INA260(i2c)
        ina260 = adafruit_ina260.INA260(i2c, address=0x44)

        while True:
            print(Fore.MAGENTA    + 'current: {:>5.2f}mA'.format(ina260.current) \
                    + Fore.CYAN   + '\tvoltage: {:>5.2f}V'.format(ina260.voltage) \
                    + Fore.YELLOW + '\tpower: {:>5.2f}mW'.format(ina260.power) \
                    + Style.RESET_ALL)
            time.sleep(1.0)

        print(Fore.GREEN + 'end.' + Style.RESET_ALL)

    except KeyboardInterrupt:
        print(Fore.CYAN + Style.BRIGHT + 'caught Ctrl-C; exiting...')
    except Exception:
        print(Fore.RED + Style.BRIGHT +
              'error starting ina260: {}'.format(traceback.format_exc()) +
              Style.RESET_ALL)
示例#2
0
    def __init__(self):
        self.i2c = board.I2C()
        self.ina260 = adafruit_ina260.INA260(
            self.i2c, 0x41)  # important! to change to 0x41
        self.si7021 = adafruit_si7021.SI7021(self.i2c)
        self.ds3502 = adafruit_ds3502.DS3502(self.i2c)

        print("Device initialized")
示例#3
0
    def __init__(self):
        try:
            # i2c = board.I2C()
            # self.ina260 = adafruit_ina260.INA260(i2c)
            i2c = busio.I2C(board.SCL, board.SDA)
            ina260 = adafruit_ina260.INA260(i2c)

        except ValueError:
            print("INA260 not found")
示例#4
0
class Battery():

    i2c = board.I2C()
    INA260_SENSOR = adafruit_ina260.INA260(i2c)

    def convert_voltage_to_percent(self, voltage):
        if voltage > 12.6:
            return 100
        elif voltage >= 12.5:
            return 90
        elif voltage >= 12.42:
            return 80
        elif voltage >= 12.32:
            return 70
        elif voltage >= 12.2:
            return 60
        elif voltage >= 12.06:
            return 50
        elif voltage >= 11.9:
            return 40
        elif voltage >= 11.75:
            return 30
        elif voltage >= 11.58:
            return 20
        elif voltage >= 11.31:
            return 10
        elif voltage <= 10.5:
            return 0

    def read(self):
        try:
            voltage = self.INA260_SENSOR.voltage
            return {
                'battery_voltage': voltage,
                'power_consumption': self.INA260_SENSOR.power,
                'battery_capacity': self.convert_voltage_to_percent(voltage)
            }
        except RuntimeError as error:
            return None
示例#5
0
    def __init__(self, name="battery", config={}):
        self.current = -999
        self.voltage = -999
        self.currentReadings = []
        self.voltageReadings = []
        self.averageCurrent = -999
        self.averageVoltage = -999

        try:
            self.monitorCadence = config['cadence']
        except KeyError:
            self.monitorCadence = 5
        try:
            self.numReadings = config['average']
        except KeyError:
            self.numReadings = 20

        self.name = name
        self.exit = False
        self.logData = {}
        import adafruit_ina260
        import busio
        self.i2c = busio.I2C(board.SCL, board.SDA)
        self.ina260 = adafruit_ina260.INA260(self.i2c)
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

import time
import board
import adafruit_ina260

i2c = board.I2C()
ina260 = adafruit_ina260.INA260(i2c)
while True:
    print("Current: %.2f mA Voltage: %.2f V Power:%.2f mW" %
          (ina260.current, ina260.voltage, ina260.power))
    time.sleep(1)
import csv
import time
import board
import adafruit_ina260

# Set up csv file
csvfile = open(r'/var/lib/cloud9/SeniorProject/testing.csv', 'w')
writer = csv.writer(csvfile, dialect='excel')
writer.writerow(["Iout (mA)","Vout (V)","Pout (mW)", "Iin (mA)","Vin (V)","Pin (mW)"]);

# Set up I2C communication
i2c = board.I2C()
ina260_out = adafruit_ina260.INA260(i2c, address=64) # Default address=64
ina260_in = adafruit_ina260.INA260(i2c, address=65) # A0 tied to vs

# Function for taking the average of the values in a list
def npSum(x):
    y = 0
    for i in range(len(x)):
        y = y + x[i]
    return y

# Define some things
m = 30
n = 5*60 # Number of hours times 60 minutes

i_in = []
v_in = []
p_in = []
i_out = []
v_out = []
 def __init__(self):
     i2c = board.I2C()
     self.ina260 = adafruit_ina260.INA260(i2c)
示例#9
0
import time
import board
import adafruit_ina260

i2c = board.I2C()
ina260 = adafruit_ina260.INA260(i2c, 0x41)
while True:
    print("Current: %.2f mA Voltage: %.2f V Power:%.2f mW" %
          (ina260.current, ina260.voltage, ina260.power))
    time.sleep(1)
示例#10
0
    def __init__(self,
                 i2c_addr,
                 g_range,
                 sample_rate,
                 verbose=False,
                 accel_ms=1,
                 temp_ms=1,
                 include_ina=False):
        '''
        Initialization
        args:
        - i2c_addr       : i2c address of device (default: 0x68)
        - g_range        : specify measurement range as listed in RANGE_VAL
        - sample_rate    : specify sample rate as listed in SMPLRT_VAL
        - verbose        : verbose output
        - accel_ms (0/1) : acceleration measurement
        - temp_ms (0/1)  : temperature measurement
        '''
        self.x_offset = 0
        self.y_offset = 0
        self.z_offset = 0

        # Open I2C bus
        try:
            self.bus = smbus.SMBus(1)
        except:
            print('Error occured when opening bus')

        # Store class attributes
        self.MPU6050_I2C_ADDR = i2c_addr
        self.verbose = verbose

        # Power management (ensure chip not in sleep mode, activate temperature measurement)
        self.bus.write_byte_data(self.MPU6050_I2C_ADDR, self.__REG_PWR_MGMT_1,
                                 0x01)

        # Accelerometer range configuration
        self.bus.write_byte_data(self.MPU6050_I2C_ADDR,
                                 self.__REG_ACCEL_CONFIG,
                                 RANGE_VAL[g_range][0])
        self.ACCEL_DIV = float(RANGE_VAL[g_range][1])

        # Internal private register config
        self.bus.write_byte_data(self.MPU6050_I2C_ADDR, self.__REG_CONFIG,
                                 0x00)

        # Sample rate divisor
        if sample_rate in SMPLRT_VAL:
            self.bus.write_byte_data(self.MPU6050_I2C_ADDR,
                                     self.__REG_SMPLRT_DIV,
                                     SMPLRT_VAL[sample_rate])
        else:
            # Custom range divisor in form 8kHz / (1 + SMPRT_DIV)
            if 0x00 < sample_rate < 0xFF:
                self.bus.write_byte_data(self.MPU6050_I2C_ADDR,
                                         self.__REG_SMPLRT_DIV, sample_rate)
            else:
                raise ValueError('Sample rate input out of range')

        # Internal FIFO configuration
        self.bus.write_byte_data(self.MPU6050_I2C_ADDR, self.__REG_USER_CTRL,
                                 0x44)

        # Data to be inserted to FIFO
        # Accelerometer or temperature data, or both
        self.bus.write_byte_data(self.MPU6050_I2C_ADDR, self.__REG_FIFO_EN,
                                 0x08)

        # Set data ready interrupt register
        self.bus.write_byte_data(self.MPU6050_I2C_ADDR, self.__REG_INT_ENABLE,
                                 0x01)

        if include_ina:
            # INA260 object declaration
            i2c = board.I2C()
            ina260 = adafruit_ina260.INA260(i2c)
            ina260.averaging_count = adafruit_ina260.AveragingCount.COUNT_1
            ina260.current_conversion_time = adafruit_ina260.ConversionTime.TIME_140_us
            ina260.voltage_conversion_time = adafruit_ina260.ConversionTime.TIME_140_us