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)
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")
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")
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
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)
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)
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