【教程】M5StickC+Unit(HX711)电子秤制作-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3079|回复: 2

【教程】M5StickC+Unit(HX711)电子秤制作

[复制链接]
发表于 2020-3-5 22:00 | 显示全部楼层 |阅读模式
本帖最后由 沧海笑1122 于 2020-3-6 13:03 编辑

【故事】
    电子秤我一共做过三个版本:

c.jpg
【硬件】
1、M5StickC  ----    1
2、Unit(HX711)----  1
3、形变传感器 ----    1
4、小盒一只,乐高积木两片,热熔胶枪
      简要搬运一下,https://docs.m5stack.com/#/zh_CN/unit/weight
WEIGHT 是一款计重 Unit.集成专为高精度电子秤而设计的24位A/D转换器芯片HX711.输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器(PGA)相连.通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV.通道B 则为固定的32 增益,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程.
unit_weight_01.png

【软件】

UIFLOW 1.4.5


【连线】
Unit(HX711) 的标记非常清晰,将形变传感器的四根引线一一对应即可。
snipaste_20200305_213801.png
【制作过程】
第一步:固定形变传感器
    将小盒作为电子秤盘,选择一块乐高大颗粒作为形变传感器的固定底盘,用热熔胶枪固定在小盒底部
a.jpg
第二步:将形变传感器的另一端固定一片乐高积木,然后用热熔胶将小盒的顶盖(秤盘)固定在形变传感器的远端。

b.jpg
第三步:将形变传感器的四根线对应连接在UNIT HX711上,此处使用m5stack.com的官方图
unit_weight_03.png
第四步:调试
      (1)使用100g砝码一只,观察称重数据为-829;200g砝码一只,观察称重数据为-1660,
因此得到称重折算系数为:-1660/200=-829/100=8.3
      每个形变传感器的参数略有不同,所以用砝码校正折算系数是必要的。
     (2)联调后,顺利得到正确称重数据。


注意:
  • 关于LCD的电压建议设置为2.7V,这样可以一定程度上降低功耗,也满足基本的显示需要。
  • 关于电池电压,我还是选择将其屏显,便于玩家观察并及时充电。
  • 形变传感器接unit时,需要把引线重新焊一下,并且热缩处理。


【代码】
    本电子秤一共只有25行代码,就实现了清零和称重等基本功能,同时还将C的电池电压进行了屏显。
[mw_shl_code=python,true]from m5stack import *
from m5ui import *
from uiflow import *
import unit
setScreenColor(0x111111)
weigh0 = unit.get(unit.WEIGHT, unit.PORTA)
label0 = M5TextBox(76, 10, "HX711   LcdV=", lcd.FONT_Default,0xFFFFFF, rotate=90)
label1 = M5TextBox(76, 125, "0.0", lcd.FONT_Default,0xFFFFFF, rotate=90)
label3 = M5TextBox(57, 10, "0", lcd.FONT_DejaVu40,0xfad308, rotate=90)
label2 = M5TextBox(25, 143, "g", lcd.FONT_Default,0xFFFFFF, rotate=90)
Px = None
def buttonA_wasPressed():
  global Px
  wait(0.1)
  weigh0.zero()
  pass
btnA.wasPressed(buttonA_wasPressed)
axp.setLDO2Volt(2.7)
Px = -8.3
while True:
  label1.setText(str("%.1f"%((axp.getBatVoltage()))))
  label3.setText(str("%.1f"%(((weigh0.weight) / Px))))
  label2.setText('g')
  wait(0.1)
  wait_ms(2)[/mw_shl_code]
snipaste_20200305_212532_副本.png
snipaste_20200305_212647_副本.png

【小结】
     UIFLOW将Unit(HX711)库进行了非常好的封装,一共提供了三个API:(1)提供原始数据,(2)提供称重数据;(3)清零函数。搭建一个简单实用的厨房秤,只需要25行代码。
     UIFLOW设计UI以及搭建程序框架非常便捷。生成Python源码也非常有利于玩家学习。

【感谢】
    感谢m5stack.com提供有趣、封装良好的模块,感谢arduino.cn提供交流沟通平台。
    惊蛰已到,春天真的到了。不惊、不畏。


    沧海合十。


【附件分享】:我们分享了UIFLOW的设计文件。

hx711_0304.rar (1.59 KB, 下载次数: 12)
注意:
[mw_shl_code=python,true]weigh0 = unit.get(unit.WEIGHT, unit.PORTA)[/mw_shl_code]


发表于 2020-3-5 23:13 | 显示全部楼层
100 收了,表示敬意
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-30 23:57 , Processed in 0.169326 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表