|
本帖最后由 沧海笑1122 于 2020-3-6 13:03 编辑
【故事】
电子秤我一共做过三个版本:
【硬件】
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的电池电压进行了屏显。
[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]
【小结】
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]
|
|