INA_TI

Форк
0
/
main.py 
66 строк · 3.3 Кб
1
import time
2
# import sys
3
from machine import I2C
4
from sensor_pack_2.bus_service import I2cAdapter
5
import ina_ti
6

7
def show_header(info: str, width: int = 32):
8
    print(width * "-")
9
    print(info)
10
    print(width * "-")
11

12
if __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-i2c
16
    # 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 !!!
22
    cycles_count = 10
23
    i2c = I2C(id=1, freq=400_000)  # on Arduino Nano RP2040 Connect tested
24
    adaptor = I2cAdapter(i2c)
25

26
    show_header("INA219Simple. Настроек нет. Автоматический режим измерений. Напряжение на шине до 26 В, напряжение на шунте до 0.32 В.")
27
    ina219 = ina_ti.INA219Simple(adaptor)
28
    # print(f"\tshunt voltage: {ina219.get_shunt_voltage()}")
29
    # print(f"\tbus voltage: {ina219.get_voltage()}")
30
    wait_time_us = ina219.get_conversion_cycle_time()
31
    print(f"wait_time_us: {wait_time_us} мкс.")
32
    for _ in range(cycles_count):
33
        shunt_v, t = ina219.get_shunt_voltage(), ina219.get_voltage()
34
        print(f"Shunt: {shunt_v} V;\tBus: {t}")
35
        time.sleep_us(wait_time_us)
36
        # дополнительная задержка, чтобы не зависала IDE
37
        time.sleep_ms(100)
38
    del ina219
39

40
    # класс с настройками
41
    ina219 = ina_ti.INA219(adapter=adaptor, address=0x40, max_expected_curr=1.6, shunt_resistance=0.1)
42
    ina219.bus_voltage_range = False    # 16 V
43
    ina219.shunt_voltage_enabled = True
44
    ina219.bus_adc_resolution = 0x0A
45
    ina219.shunt_adc_resolution = 0x0A
46

47
    show_header("INA219. Настройки! Ручной режим измерений")
48
    ina219.start_measurement(continuous=False, enable_calibration=True)
49
    print(f"configuration: {ina219.get_config()}")
50
    wait_time_us = ina219.get_conversion_cycle_time()
51
    print(f"wait_time_us: {wait_time_us} мкс.")
52
    for _ in range(cycles_count):
53
        time.sleep_ms(100)
54
        time.sleep_us(wait_time_us)
55
        shunt_v, t = ina219.get_shunt_voltage(), ina219.get_voltage()
56
        print(f"Shunt: {shunt_v} V;\tBus: {t}")
57
        # запрещаю калибровку, многократная калибровка не нужна! Команда на каждое измерение выдается вручную!
58
        ina219.start_measurement(continuous=False, enable_calibration=False)
59

60
    show_header("INA219. Настройки! Автоматический(!) режим измерений")
61
    ina219.start_measurement(continuous=True, enable_calibration=True)
62
    print(f"configuration: {ina219.get_config()}")
63
    for data in ina219:
64
        time.sleep_us(wait_time_us)
65
        print(f"data: {data}")
66
        time.sleep_ms(100)
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.