INA_TI
/
main.py
66 строк · 3.3 Кб
1import time2# import sys
3from machine import I2C4from sensor_pack_2.bus_service import I2cAdapter5import ina_ti6
7def show_header(info: str, width: int = 32):8print(width * "-")9print(info)10print(width * "-")11
12if __name__ == '__main__':13# пожалуйста установите выводы scl и sda в конструкторе для вашей платы, иначе ничего не заработает!14# please set scl and sda pins for your board, otherwise nothing will work!15# https://docs.micropython.org/en/latest/library/machine.I2C.html#machine-i2c16# i2c = I2C(0, scl=Pin(13), sda=Pin(12), freq=400_000) # для примера17# bus = I2C(scl=Pin(4), sda=Pin(5), freq=100000) # на esp8266 !18# Внимание!!!19# Замените id=1 на id=0, если пользуетесь первым портом I2C !!!20# Warning!!!21# Replace id=1 with id=0 if you are using the first I2C port !!!22cycles_count = 1023i2c = I2C(id=1, freq=400_000) # on Arduino Nano RP2040 Connect tested24adaptor = I2cAdapter(i2c)25
26show_header("INA219Simple. Настроек нет. Автоматический режим измерений. Напряжение на шине до 26 В, напряжение на шунте до 0.32 В.")27ina219 = ina_ti.INA219Simple(adaptor)28# print(f"\tshunt voltage: {ina219.get_shunt_voltage()}")29# print(f"\tbus voltage: {ina219.get_voltage()}")30wait_time_us = ina219.get_conversion_cycle_time()31print(f"wait_time_us: {wait_time_us} мкс.")32for _ in range(cycles_count):33shunt_v, t = ina219.get_shunt_voltage(), ina219.get_voltage()34print(f"Shunt: {shunt_v} V;\tBus: {t}")35time.sleep_us(wait_time_us)36# дополнительная задержка, чтобы не зависала IDE37time.sleep_ms(100)38del ina21939
40# класс с настройками41ina219 = ina_ti.INA219(adapter=adaptor, address=0x40, max_expected_curr=1.6, shunt_resistance=0.1)42ina219.bus_voltage_range = False # 16 V43ina219.shunt_voltage_enabled = True44ina219.bus_adc_resolution = 0x0A45ina219.shunt_adc_resolution = 0x0A46
47show_header("INA219. Настройки! Ручной режим измерений")48ina219.start_measurement(continuous=False, enable_calibration=True)49print(f"configuration: {ina219.get_config()}")50wait_time_us = ina219.get_conversion_cycle_time()51print(f"wait_time_us: {wait_time_us} мкс.")52for _ in range(cycles_count):53time.sleep_ms(100)54time.sleep_us(wait_time_us)55shunt_v, t = ina219.get_shunt_voltage(), ina219.get_voltage()56print(f"Shunt: {shunt_v} V;\tBus: {t}")57# запрещаю калибровку, многократная калибровка не нужна! Команда на каждое измерение выдается вручную!58ina219.start_measurement(continuous=False, enable_calibration=False)59
60show_header("INA219. Настройки! Автоматический(!) режим измерений")61ina219.start_measurement(continuous=True, enable_calibration=True)62print(f"configuration: {ina219.get_config()}")63for data in ina219:64time.sleep_us(wait_time_us)65print(f"data: {data}")66time.sleep_ms(100)67