查看: 5207|回复: 6

采用I2C和Python的DIY电源记录器

[复制链接]
  • TA的每日心情
    开心
    2022-9-28 11:25
  • 签到天数: 224 天

    连续签到: 1 天

    [LV.7]常住居民III

    发表于 2018-11-15 14:18:06 | 显示全部楼层 |阅读模式
    分享到:
    原文:DIY Power Logger Using I2C & Python
        本文使用INA219芯片,SSD1306 OLED显示器,Raspberry Pi 3和Python,为您在家中使用的电子产品制作自己的电源记录器。
    1.jpg

    项目中用到的东西

    硬件名称
    数量
    Raspberry Pi 3 Model B
    x1
    INA219电流传感器
    x1
    0.96inch SPI 128X64 OLED显示模块
    x1
    10K直插电阻
    x1
    直插LED灯
    x1
    杜邦线、面包板
    若干


        做这个项目的灵感来源于YouTuber上的一个视频,它提供电子电路,项目和电子基础视频(电容器,电感器,MOSFET等)。下面你可以看到视频中项目是使用Arduino板实现的,和本文使用相同的传感器和OLED显示屏,不同之处是视频中将所有模块集成在PCB上。

        伟大的斯科特视频制作自己的DIY功率计/记录器我对该项目的实现使用以下组件:
    •     树莓派3
    •     INA219电流传感器
    •     128x64 SSD1306 OLED显示屏

        我之所以使用Raspberry Pi平台,是因为我更多的时候使用Python进行编码,而且我使用的Raspberry开发板的5V引脚可以为传感器和显示器提供电压。我使用下面的图片来展示哪些引脚连接到面包板。


        使用I2C协议(内部集成电路)的原因很常见,I2C协议也有很多成熟的库,并且许多集成电路都支持I2C协议。我不会解释协议如何工作,这样会延长我们项目时间,我们只对模块连接感兴趣,以便这些模块可以与Raspberry Pi 3进行通信,Raspberry Pi 3将成为I2C通讯方案的主机。


        如果您想了解I2C协议的工作原理,我建议您阅读SparkFun的这篇文章,我发现它非常有用且深入:SparkFun I2C协议教程(https://learn.sparkfun.com/tutorials/i2c)。

    INA219电流传感器
        这块电路板将解决您所有的电源监控问题。在不使用两个万用表的情况下,您可以直接使用INA219B芯片来测量接口端子的电压和直流电流。
    此描述源自Adafruit的INA219高端DC电流传感器BREAKOUT 产品页面,您可以访问该链接以查看使用Arduino板或Circuit Python的完整描述,技术细节和例程。


        简而言之,该电路板的基本工作原理:是将需要测试的电压连接到Vin +引脚,Vin-引脚与负载串联,并连接到地。在电路板上有一个0.1欧姆的采样电阻,电流通过采样电阻,产生电压,传送到可编程增益放大器并传送到ADC电路。在计算电流,电压和功率值之后,将这些值传递到I2C接口以供后端使用。


        我觉得这个描述比较吸引人,传感器可以测量高达正26V直流电压和最大3.2安培电流,精度为0.8毫安,电压降为320毫伏,超过0.1欧姆采样电阻。但是对于电源电压高于26 V电压的负载,或者如果您要更高的精度,应该选其他的传感器。
    2.jpg




    本项目需要关注的引脚有:
    • 引脚2 - 5V电源电压
    • 引脚3 - I2C SDA线
    • 引脚4 - I2C SCL线
    • 引脚9(或原理图上标有GND的任何引脚) - GND电位

        您可以在下面看到我用Frizting制作的原理图中电路连接。我们将使用Raspberry Pi通过I2C发送和读取传感器数据,并可以为传感器模块提供5V电源。
    需要的Python库(下载不了见文末附件)
    Adafruit_SSD1306 GitHub的库(https://github.com/adafruit/Adafruit_Python_SSD1306):
    1. sudo pip install Adafruit-SSD1306 # command for installing the library using pip
    复制代码
    ina219 github存储库(https://github.com/chrisb2/pi_ina219):
    1. sudo pip install pi-ina219
    复制代码
    openpyxl 库用于创建将写入数据的工作簿
    1. sudo pip install openpyxl
    复制代码
    不要忘记在Raspberry Pi上使能I2C总线:


        转到左上角的“开始”按钮 - >首选项 - > Raspberry Pi配置。在打开的窗口中,单击Interfaces选项卡,然后单击I2C标签旁边的Enabled单选按钮。
    3.jpg

    在运行代码前就进行使能操作

    源代码
      代码的第一步是将ina219传感器配置为它使用的特定采样电阻。我们使用的是内置0.1欧姆的采样电阻。

    1. # Configure INA219 sensor
    2. ina = INA219(SHUNT_OHMS)
    3. ina.configure() # this is the default call for the configure function, but it can be called with different parameters, depending on the supply voltage you are using, the precision you want or the shunt resistor used
    复制代码
    SSD1306对象disp = SSD1306_128_64(rst = RST)将用于控制显示的内容。我创建了一个黑色矩形,作为读取数据的刷新帧。


    显示数据的字体在此语句中指定:font = ImageFont.truetype('Minecraftia-Regular.ttf',8)


        我从这个网站(https://www.fontmeme.com/fonts/minecraftia-font/)获得了这个字体文件,如果你想使用别的东西,你可以找到更多的字体。字体文件必须与源代码位于同一文件夹中,否则软件将会出现无法找到该字体文件的异常报错。


    在此之后创建工作簿并编辑哪个列将显示特定数据。
    1. wb = Workbook()
    2. ws = wb.active
    3. ws.title =  'Sensor Output'
    4. ws['A1'] = 'Bus Voltage (V)'
    5. ws['B1'] = 'Bus current (mA)'
    6. ws['C1'] = 'Power (mW)'
    7. ws['D1'] = 'Shunt Voltage (mV)'
    8. ws['E1'] = 'Load Voltage (V)'
    复制代码
        逻辑插入try-except-finally语句中。该语句将在try声明中运行循环,在该声明中将从传感器读取数据并将其添加到工作簿。有两个判断语句:一个是传感器上的电压高于设定,另一个是停止脚本。


        在finnally语句中,通过绘制黑色矩形来关闭显示,生成负载电压,电流和功率的图表并保存在工作簿中。


    运行示例
        在第一次运行时,我测量了10千欧姆电阻器上的功耗,以验证每个电阻都配置正确并且传感器可以正常工作。

    4.jpg


    输出波形和数值
    5.jpg

        因为我们使用Raspberry Pi作为传感器电源输入,我们可以看到它随时间波动。但结果与预期一致,我们看到功耗为2.5 mW,电流消耗为0.5 mA。


    我使用LED和FTDI串口到USB分线板进行了2次设置。

    6.jpg

        我附加了使用这三个设置时创建的所有excel文件。

    结论
        该传感器易于使用,并且有很多成熟库简化了编程。通过相应的配置,它可以提供精确的采样值,可用于大型设备。记录在Excel文件中的数据非常方便您查看设备消耗的当前数量,并可以将这些数据传送到互联网云端,这样就可以实时监测数据源。

    原理图
    7.jpg
    相关资源下载
    游客,如果您要查看本帖隐藏内容请回复


    原文链接:https://www.hackster.io/Sparky/diy-power-logger-using-i2c-python-9a39e0





    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-10 15:56
  • 签到天数: 2675 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2018-11-17 21:56:48 | 显示全部楼层
    这个有意思,学习了。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2018-11-17 22:31:42 | 显示全部楼层
    厉害的                     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2018-11-21 10:06:41 | 显示全部楼层
    看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看看
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2020-3-11 23:45:09 | 显示全部楼层
    顶一下楼主,好东西
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-3-29 17:45 , Processed in 0.182526 second(s), 30 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.