tm7711 hx711
时间: 2023-06-06 07:01:59 浏览: 363
tm7711和hx711都是压力传感器芯片,都具有高精度、低噪声等优点,但它们在技术上还是有一些区别的。
tm7711是一款高精度电桥传感器信号调理芯片,它可以使用在千分之一到几十公斤的精度范围内,具有高精度、低温漂、低噪声、免校准等优势,在称重、力矩测量等领域有广泛应用。
hx711则是一款高精度模拟转换器(ADC),适合于单个或多个负载传感器的称重应用。它采用24位Σ-ΔADC,带有程序可编程增益放大器,可以快速、精确地测量传感器输出信号,并通过串行接口将数据传输到微控制器。
总之,两者都是高精度的传感器信号调理芯片,但tm7711更多地应用于电桥传感器,如力矩传感器、压力传感器等;而hx711则主要应用于称重领域。
相关问题
#include "HX711.h" #include "TM1637.h" #define CLK 3//pins definitions for TM1637 and can be changed to other ports #define DIO 2 TM1637 tm1637(CLK, DIO); HX711 hx711(4, 5, 64); void setup() { int8_t led[4] = {17, 17, 17, 17}; //start; //led tm1637.init();// tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7; tm1637.display(led); //hx711 scale; hx711.set_scale(-250.5813851f); hx711.tare(5); Serial.begin(115200); } bool isWeightRemove(float weight) { static float fWightOld = 0; if ((weight + 10) < fWightOld) { fWightOld = weight; return true; } fWightOld = weight; return false; } void loop() { float fWight, fWeightOld; int8_t i = 0; while (1) { fWight = hx711.get_units(3); Serial.print("\r\n"); Serial.print(fWight); fWight = fWight >= 0 ? fWight : (-fWight); if ((isWeightRemove(fWight)) == true) { for(i=0;i<5 ;i++) { tm1637.showNum((uint16_t)fWeightOld); delay(400); tm1637.clearDisplay(); delay(40); } continue; } tm1637.showNum((uint16_t)fWight); fWeightOld = fWight; } }
这段代码是使用Arduino和HX711模块以及TM1637数码管进行电子秤测量和显示的程序。
第1行和第2行分别是包含HX711和TM1637库的头文件。
第4行和第5行定义了CLK和DIO两个引脚用于连接TM1637数码管。
第6行通过CLK和DIO两个引脚创建了一个TM1637对象tm1637。
第7行通过HX711的DT、SCK和GAIN参数创建了一个HX711对象hx711。
setup()函数中,首先初始化了4个LED灯,然后初始化了TM1637数码管,设置了亮度,将数码管显示为"0000"。接下来设置了HX711模块的比例因子和进行了秤皮重校准,最后初始化串口通信。
isWeightRemove(float weight)函数用于判断是否有物品被取走,如果当前重量比上一次重量减少了10g以上,则认为有物品被取走了。该函数返回布尔值,表示是否有物品被取走。
在loop()函数中,首先定义了fWight和fWeightOld两个变量用于存储当前重量和上一次重量。接下来,使用while(1)循环进行重量的读取和显示。调用hx711.get_units(3)函数获取重量值,然后将重量值传递给isWeightRemove(float weight)函数判断是否有物品被取走。如果有物品被取走,则进行数码管的闪烁显示,否则直接将重量值显示在数码管上。最后将fWight的值赋给fWeightOld,用于下一次判断是否有物品被取走。
阅读全文