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

沧海笑1122 发表于 2020-3-5 22:00

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

本帖最后由 沧海笑1122 于 2020-3-6 13:03 编辑

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

[*]第一版是2014年的,基于arduino nano+LCD 5110+hx711,这一版也是一个实用器,我用了将近五六年,主要是用作厨房秤,这些年烘培出无数美味面包,这一版电子秤功不可没。
[*]第二版是基于m5stack basic+hx711,因此还写过一个帖子《129行代码的M5Stack(core Esp32)电子秤(micropython)》
[*]第三版就是今天介绍的,M5StickC+Unit(HX711)电子秤。


【硬件】
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 增益,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程.


【软件】
UIFLOW 1.4.5


【连线】
Unit(HX711) 的标记非常清晰,将形变传感器的四根引线一一对应即可。

【制作过程】
第一步:固定形变传感器
    将小盒作为电子秤盘,选择一块乐高大颗粒作为形变传感器的固定底盘,用热熔胶枪固定在小盒底部

第二步:将形变传感器的另一端固定一片乐高积木,然后用热熔胶将小盒的顶盖(秤盘)固定在形变传感器的远端。


第三步:将形变传感器的四根线对应连接在UNIT HX711上,此处使用m5stack.com的官方图

第四步:调试
      (1)使用100g砝码一只,观察称重数据为-829;200g砝码一只,观察称重数据为-1660,
因此得到称重折算系数为:-1660/200=-829/100=8.3
      每个形变传感器的参数略有不同,所以用砝码校正折算系数是必要的。
   (2)联调后,顺利得到正确称重数据。


注意:

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


【代码】
    本电子秤一共只有25行代码,就实现了清零和称重等基本功能,同时还将C的电池电压进行了屏显。
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)



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

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


    沧海合十。


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


注意:
weigh0 = unit.get(unit.WEIGHT, unit.PORTA)


genvex 发表于 2020-3-5 23:13

100 收了,表示敬意

laai 发表于 2020-3-6 00:29

不错
!~
页: [1]
查看完整版本: 【教程】M5StickC+Unit(HX711)电子秤制作