-
2021-01-26 22:11:49
前言
参考C语言代码写的,链接https://blog.csdn.net/weixin_43242242/article/details/103334639
一、HX711压力传感器+树莓派python驱动程序
本次HX711模块与树莓派的接线为:VCC接1号针脚,GND接6号针脚,SCK接11号针脚,DT接13号针脚
具体代码如下:
# -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time class Hx711(): def setup(self): self.SCK = 11 # 物理引脚第11号,时钟 self.DT = 13 #物理引脚第13号,数据 self.flag=1 #用于首次读数校准 self.initweight=0 #毛皮 self.weight=0 #测重 self.delay=0.09 #延迟时间 GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) # Numbers GPIOs by physical location GPIO.setup(self.SCK, GPIO.OUT) # Set pin's mode is output GPIO.setup(self.DT, GPIO.IN) GPIO.setup(self.DT, GPIO.IN, pull_up_down=GPIO.PUD_UP) def start(self): GPIO.output(self.SCK,0) if GPIO.input(self.SCK): time.sleep(self.delay) value=0 while GPIO.input(self.DT): time.sleep(self.delay) #循环24次读取数据 for i in range(24): GPIO.output(self.SCK,1) if(0==GPIO.input(self.SCK)): time.sleep(self.delay) value=value<<1 #左移一位,相当于乘2,二进制转十进制 GPIO.output(self.SCK,0) if GPIO.input(self.SCK): time.sleep(self.delay) if GPIO.input(self.DT)==1: value+=1 GPIO.output(self.SCK,1) GPIO.output(self.SCK,0) value=int(value/1905) #1905为我传感器的特性值,不同传感器值不同。可先注释此步骤,再去测一物体A得到一个值X,而后用X除以A的真实值即可确定特性值 if self.flag==1: #第一次读数为毛皮 self.flag=0 self.initweight=value #初始值 else: self.weight=abs(value-self.initweight) #当前值减毛皮得测量到的重量 print(self.weight) if __name__=='__main__': send=Hx711() send.setup() while True: send.start()
好像用的是A通道,具体不清楚了,反正是可以用。
更多相关内容 -
HX711压力传感器51单片机源程序.rar
2020-05-26 23:58:4951单片机对于压力传感器的学习,压缩包里面包含有两个程序,一个是数码管显示,一个是LCD1602显示。 -
hx711压力传感器51单片机代码
2019-04-04 09:17:27hx711压力传感器模块,51单片机的代码,可用于称重计等小项目。 -
压力传感器hx711详细资料
2020-10-09 15:17:38压力传感器hx711详细资料,电路图 51的源程序 原理图 驱动代码 包括仿真(protel) 设计开发原理图 -
9-0 HX711压力传感器.rar
2020-06-06 17:48:59HX71 1 这也是在一个医疗项目中使用的一个压力传感器 , 一个行走 一个步态, 如果是搞医疗临床的应该理解 ,以前是51写的多些,这个我是STM32 来写的寄存器版本 -
hx711压力传感器程序
2016-05-22 19:30:04hx711,调试 -
压力传感器+HX711资料
2018-09-10 13:38:28压力传感器的原理图+程序,51单片机和Arduino的都有, -
stm32的5kghx711压力传感器
2018-03-16 21:50:51基于stm32的hx711压力传感器。电子秤主要以单片机STC90C52RC控制核心,实现电子秤的基本控制功能。系统扩展了电子日历时钟,系统可以分为最小系统、数据采集、人机交互界面和系统电源、时钟和语音报数六大部分。最小... -
hx711压力传感器软硬件资料包括电路图、设计开发说明、C51 hx711程序源码.zip
2022-02-22 08:46:44hx711压力传感器软硬件资料包括电路图、设计开发说明、C51 hx711程序源码,可做为你的学习设计参考。 -
电子秤称重系统设计,HX711压力传感器,51单片机(Proteus仿真、C程序、原理图、论文等全套资料)
2020-05-15 12:19:27} 分享的资源有 (1)基于51单片机和HX711压力传感器的电子秤系统设计毕设论文完整版; (2)Proteus仿真文件; (3)Keil C程序文件; (4)HX711模块资料; (5)Visio流程图; (6)电子秤原理图; (7)电子元...设计要求
1.系统可实现电子秤基本的称重功能(称重范围为0~10Kg,重量误差不大于±0.005Kg);
2.系统应具备键盘输入单价,显示重量,计算总价的功能;
3.单价和总价金额的单位为元,最大金额数值为999.99元,金额误差不大于0.01元;
4.系统超出最大测量范围10Kg时,具有报警指示功能(蜂鸣器、LED灯报警提示);
5.该电子秤设计同时具备去皮功能和重量校准功能;设计概述
电子秤系统主要由单片机最小系统、数据采集系统、人机交互界面系统、报警系统五大部分组成。单片机最小系统主要包括AT89C51和经典复位电路;数据采集部分由称重传感器、信号放大和A/D转换部分组成,信号放大和A/D转换部分主要由专用型高精度24位AD转换芯片HX711实现。
人机交互界面为键盘输入和点阵式液晶显示,主要使用4*4矩阵键盘和1602液晶显示器,可以方便的输入数据和直观的显示数据;报警系统由蜂鸣器和LED灯组成。
仿真电路图
电子秤原理图
仿真结果分析
打开Proteus仿真文件,其后缀名为DSN。双击单片机,加载main.hex文件(位置在:单片机加载文件);然后,双击HX711芯片,加载HX711.hex文件(位置在:HX711模块加载文件)。
点击Proteus软件左下角运行按钮,运行仿真。LCD1602液晶显示:Welcom to Use Electronic Scale.
紧接着,一声提示音过后,红色LED灯点亮,LCD显示重量、单价和总价,数值均为0。此时,系统处于等待货物称重的状态。LCD显示的3个参数分别是:WE(Weight,重量的缩写)、PR(Price, 单价的缩写)和MONEY(表示总价)。
按下‘重量+’或‘重量-’键,模拟货物称重,称重范围为:0~10Kg。重量若大于10Kg,超重报警,蜂鸣器鸣叫,红色LED闪烁,LCD中WE显示:-.–。
通过矩阵键盘输入单价(PR),最大输入单价为99.9,可以输入小数点,单价设置精确到角。比如输入5.4元,输入数字键5、圆点键和数字键4即可。单价输入完成,自动显示总价(MONEY),总价精确到小数点后1位;总价最大为999元,大于该值,LCD显示‘-.–’表示超出显示量程。
本仿真设计有校准功能,通过‘校准+’和‘校准-’两个键,可以小范围(按下1次,重量显示改变0.001Kg)校准电子秤显示的货物重量。例如,将重量由3.576Kg校准为3.574Kg。
货物称重完成后,点击‘清除’键,清除单价和总价,点击‘去皮’键清除重量显示,注意去皮键兼具清除重量显示的功能;然后就可进行下次称重了。
模拟去皮功能
首先通过按下‘重量+’/‘重量-’键,模拟篮子或者箱子的重量,该重量设置好后,按下‘去皮’键,此时重量显示清零。例如,按下‘重量+’键,设置篮子重量1.083Kg,然后点击‘去皮’键,WE显示清零。
去皮后,再次按下‘重量+’模拟货物的净重4.880Kg,然后,输入单价3.0元,总价14.06元。
再次按下‘去皮’键,此时WE显示货物净重加篮子的重量,总价也计算了篮子的部分,再次按下‘去皮’键,重量清零。
部分C代码void main() { init_eeprom(); //开始初始化保存的数据 Init_LCD1602(); //初始化LCD1602 EA = 0; Data_Init(); Timer0_Init(); //初中始化完成,开断 EA = 1; // Get_Maopi(); LCD1602_write_com(0x80); //指针设置 LCD1602_write_word(" Welcome To Use "); // LCD1602_write_com(0x80+0x40); //指针设置 LCD1602_write_word("Electronic Scale"); // Delay_ms(2000); Get_Maopi(); LCD1602_write_com(0x80); //指针设置 LCD1602_write_word("WE:0.000 PR:00.0"); LCD1602_write_com(0x80+0x40); //指针设置 LCD1602_write_word("MONEY: 0.00 "); Display_Price(); // Get_Maopi(); //称毛皮重量 while(1) { //每0.5秒称重一次 if (FlagTest==1) { Get_Weight(); FlagTest = 0; } keycode = Getkeyboard(); //有效键值0-15 if (keycode<16) { KeyPress(keycode); Buzzer=0; Delay_ms(100); Buzzer=1; while(keycode<16) { if(keycode==12||keycode==13) { Buzzer=0; Delay_ms(10); Buzzer=1; KeyPress(keycode); Get_Weight(); flag_key=1; } keycode = Getkeyboard(); } write_eeprom(); //保存数据 } } } //**************************************************** //称重 //**************************************************** void Get_Weight() { Weight_Shiwu = HX711_Read(); Weight_Shiwu = Weight_Shiwu - Weight_Maopi; //获取净重 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu*10/GapValue)-qupi; //计算实物的实际重量 if(Weight_Shiwu > 10000) //超重报警 { Buzzer = !Buzzer; LED=!LED; LCD1602_write_com(0x83); LCD1602_write_word("-.---"); } else { if(Weight_Shiwu==0) LED=1; else if(Weight_Shiwu>0) LED=0; Buzzer = 1; Display_Weight(); money = Weight_Shiwu*price/1000; //money单位为分 //显示总金额 Display_Money(); } } //**************************************************** //获取毛皮重量 //**************************************************** void Get_Maopi() { unsigned char clear; mm: Weight_Maopi_0 = HX711_Read(); for(clear=0;clear<10;clear++) { Buzzer=1; LED=1; Delay_ms(100); LED=0; Delay_ms(100); } Weight_Maopi = HX711_Read(); if(Weight_Maopi/GapValue!=Weight_Maopi_0/GapValue) goto mm; Buzzer=0; Delay_ms(500); Buzzer=1; }
分享的资源有
(1)基于51单片机和HX711压力传感器的电子秤系统设计毕设论文完整版;
(2)Proteus仿真文件;
(3)Keil C程序文件;
(4)HX711模块资料;
(5)Visio流程图;
(6)电子秤原理图;
(7)电子元器件清单;
(8)评优文献翻译;全套资源如下
重要的事情说三遍!重要的事情说三遍!
重要的事情说三遍!
获取电子秤设计毕业论文、Proteus仿真、C程序、原理图、Visio流程图、元器件清单、HX711模块等全套资料。
请微信搜索关注公众号:交院小智
-
涂鸦模组开发(压力传感器HX711)——2. 压力传感器HX711
2022-02-27 23:54:06压力传感器HX711概述硬件准备选择芯片型号配置时钟源配置时钟树串口配置生成工程设置代码生成设置生成代码串口接线配置配置keil打印代码打印演示效果压力传感器HX711接线说明STM32CUBEMX配置数据管脚压力传感器HX...涂鸦模组开发_压力传感器HX711——2. 压力传感器HX711
概述
涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物的云平台,打造互联互通的开发标准,连接品牌、OEM 厂商、开发者、零售商和各行业的智能化需求,涂鸦的解决方案赋能并提升合作伙伴和客户的产品价值,同时通过技术应用使消费者的生活更加便利,涂鸦智能的智慧商业 SaaS 为丰富的垂直行业提供智能解决方案。涂鸦智能领先业界的技术,符合严格的数据保护标准和安全性。
压力传感器是工业实践中最为常用的一种传感器,其广泛应用于各种工业自控环境,涉及水利水电、铁路交通、智能建筑、生产自控、航空航天、军工、石化、油井、电力、船舶、机床、管道等众多行业。
同时压力传感器可以应用于电子称重系统或者久坐系统,实现了称重显示、超限报警、校准、适应各种工作环境、远程实时监控等多种功能,可以广泛应用于各种称重场景。
本章主要是配置开发板对压力传感器HX711进行数据读取以及通过串口打印数据。视频教学
听不到声音的请点击跳转进行观看。
https://www.bilibili.com/video/BV1Tr4y167gj/涂鸦模组开发(压力传感器HX711)——2. 压力传感器HX711
资料下载
https://download.csdn.net/download/qq_24312945/84796130
涂鸦智能
想更多了解涂鸦智能化开发方案,获取相关技术资料或开发物料,可点击下方报名参加,同时有30元优惠券。。
https://t.tuya.com/AY1D3R9jGr硬件准备
首先需要准备一个开发板,这里我准备的是NUCLEO-F103RB的开发板:
对于该主控的原理图,可以在官方种进行下载,下载地址如下:
https://www.st.com/zh/evaluation-tools/nucleo-f103rb.html#cad-resources选择芯片型号
使用STM32CUBEMX选择芯片stm32f103rb,如下所示:
配置时钟源
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示:
配置时钟树
STM32F1的最高主频到72M,但是使用内部时钟最快只能达到64M,所以配置64即可:
串口配置
本次实验使用的串口1进行串口通信,波特率配置为115200。
开启中断。
生成工程设置
代码生成设置
最后设置生成独立的初始化文件:
生成代码
串口接线配置
由于只用做发送数据,故不需要接开发板的rx。
开发板 串口模块 PA9(TX) RX GND GND 配置keil
打印代码
在main.c中,添加头文件,若不添加会出现 identifier “FILE” is undefined报错。
/* USER CODE BEGIN Includes */ #include "stdio.h" /* USER CODE END Includes */
变量定义:
/* USER CODE BEGIN PV */ #define BUFFERSIZE 255 //可以接收的最大字符个数 uint8_t ReceiveBuff[BUFFERSIZE]; //接收缓冲区 uint8_t recv_end_flag = 0,Rx_len;//接收完成中断标志,接收到字符长度 /* USER CODE END PV */
函数声明和串口重定向:
/* USER CODE BEGIN PFP */ #ifdef __GNUC__ //串口重定向 #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF); return ch; } /* USER CODE END PFP */
打印数据进行测试。
/* USER CODE BEGIN 2 */ printf("压力传感器HX711\r\n"); /* USER CODE END 2 */
打印演示效果
压力传感器HX711接线说明
桥式传感器于HX711原理如下所示。
模块接线方式如下所示。
压力传感器与HX711模块接线。压力传感器 串口模块 红线 E+ 黑线 E- 白线 A- 绿线 A+ 开发板HX711模块接线。
开发板 串口模块 VCC VCC DT PC10 SCK PC11 GND GND STM32CUBEMX配置数据管脚
配置PC10为DT数据脚,配置PC11为SCK时钟脚。
压力传感器HX711通讯
串口通讯线由管脚 PD_SCK 和 DOUT 组成,用来输出数据,选择输入通道和增益。
当数据输出管脚 DOUT 为高电平时,表明A/D 转换器还未准备好输出数据,此时串口时钟输入信号 PD_SCK 应为低电平。当 DOUT 从高电平变低电平后,PD_SCK 应输入 25 至 27 个不等的时钟脉冲。其中第一个时钟脉冲的上升沿 将读出输出 24 位数据的最高位(MSB),直至第 24 个时钟脉冲完成,24 位输出数据从最高位至最低位逐位输出完成。第 25至 27 个时钟脉冲用来选择下一次 A/D 转换的输入通道和增益。
PD_SCK 的输入时钟脉冲数不应少于 25 或多于 27,否则会造成串口通讯错误。
当 A/D 转换器的输入通道或增益改变时,A/D 转换器需要 4 个数据输出周期才能稳定。
DOUT 在 4 个数据输出周期后才会从高电平变低电平,输出有效数据。
压力传感器HX711驱动程序
通过参考的驱动程序,修改成自己的代码。
主程序代码
/* USER CODE BEGIN 2 */ printf("压力传感器HX711\r\n"); weight_qupi=ReadCount();//首次读取重量进行去皮操作 printf("首次去皮weight_qupi=%d\n",weight_qupi); HAL_Delay(100); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ weight_shiji=ReadCount(); if(weight_qupi>=weight_shiji) { weight_shiji=weight_qupi-weight_shiji; weight_shiji=weight_shiji/100; printf("重量为:%dg",weight_shiji); } else { weight_shiji=weight_shiji-weight_qupi; weight_shiji=weight_shiji/100; printf("重量为:-%dg",weight_shiji); } HAL_Delay(1000); } /* USER CODE END 3 */
实际演示
实际测试重量为1115g。
模块测试如下所示1157g。
最后
以上的代码会在Q群里分享。QQ群:615061293。
或者关注微信公众号『记帖』,持续更新文章和学习资料,可加作者的微信交流学习!
-
基于stm32和hx711的压力传感器代码
2015-07-09 20:27:41单片机是STM32F103ZET6,结合HX711读取压力传感器传输进来的压力值,利用串口送到PC显示 -
HX711称重传感器资料
2014-05-12 11:47:49介绍了hx711的管脚连接,作用,还有驱动程序 -
基于Arduino的hx711压力传感器压力实现(使用42步进电机)
2018-05-03 14:09:15功能:利用HX711模块读取压力值,之后通过步进电机实现压力的反馈。HX711接线图如图所示。HX711模块的代码详解部分:参见以下两个博客HX711:...功能:利用HX711模块读取压力值,之后通过步进电机实现压力的反馈。
HX711接线图如图所示。HX711模块的代码详解部分:参见以下两个博客
HX711:https://zhidao.baidu.com/question/264369483509377325.html
https://blog.csdn.net/github_27587443/article/details/71864003
hx711读数为0.000(最大量程5Kg,小数点厚=后三位有效数字),步进电机按照煤千分位走2步(步进电机1.8°,无细分)的设计进行(百分位20步,十分位200步,个位2000步),附上代码:代码临时改写还有很多问题,应该增加一个中断判断每次的压力量,不应每次使x进行复位,以后有时间会继续修改:
#include <motor.h>
#include <HX711.h>
float Weight = 0;
void setup()
{
Serial.begin(9600);
Init_motor();
Init_Hx711();
Serial.print("Welcome to use!\n");
Get_Maopi();
delay(3000);
}
void loop()
{
delay(100);
int x = 0;
Weight = Get_Weight(); //计算放在传感器上的重物重量
Serial.print(float(Weight/1000),3); //串口显示重量
Serial.print(" kg\n"); //显示单位
Serial.print("\n"); //显示单位
delay(200); //延时1s
x = abs(Weight);
int x_1 = x/100;//x/100 *1 circle
PUT_N_ForwardCircle(x_1);
int x_2 = (x%100)/100; //x%100/10 1/10;
PUT_N_ForwardCircle(x_2);
int x_3 = (((x%100)/10)%10)*2;
PUT_N_Up_Step(x_3);
delay(1000);
PUT_N_BackCircle((x_1)+(x_2));
PUT_N_Down_Step(x_3);
}最后附上两个库文件:链接:https://pan.baidu.com/s/1633oNp55u8pZXTYYzjswxQ 密码:ivit
-
hx711+称重传感器+stc89c52
2018-01-24 16:44:58电子称,stc89c52读取hx711,串口调节助手显示实际重量 -
使用STM32F407读取HX711压力传感器模块
2018-09-12 10:11:35hx711是一个很常见的压力传感器模块,精度很高,在平时做嵌入式开发的时候也常常遇到。但是在网上找到的代码往往都很老了,用现在常用的stm32板子都或多或少有一些问题,尤其是在一些购买该模块地方那里要的资料就更... -
涂鸦模组开发(压力传感器HX711)
2022-03-15 19:10:18人口老龄化给社会和经济带来巨大压力,老年人群体是所有人群中患慢性病最多的群体。健康的饮水习惯则可以对多种慢性病起到良好的预防和改善作用,反之,不健康的饮水习惯甚至有可能引发各种慢性疾病。一款按时提醒... -
HX711称重传感器
2018-08-30 16:33:53HX711是一款专为高精度称重传感器而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。... -
涂鸦模组开发(压力传感器HX711)——1. 模块准备
2022-02-25 16:53:13涂鸦模组开发_压力传感器HX711——1. 模块准备概述采集模块涂鸦产品创建涂鸦产品信息查询STM32F103主控最后 概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物的云平台,... -
压力传感器四个无法避免的误差
2020-07-21 00:26:24下面我们注意说四个无法避免的误差,这是传感器的初始误差。 -
Arduino实现压力传感器(使用HX711模块)
2021-11-14 21:21:32extern unsigned long HX711Read(void); extern long getWeight(); ///变量定义 float weight = 0; int HX711_SCK = 2; /// 作为输出口 int HX711_DT= 3; /// 作为输入口 long HX711Buffer = 0; long grossWeight = ... -
HX711 An Arduino library to interface the Avia Semiconductor HX711 24-Bit Analog-to-Digital Converter (ADC) for reading load cells / weight scales. It supports the architectures atmelavr, espressif...
-
【Arduino和高中通用技术】——十一、BF1K-3AA系列电阻式压力应变片、HX711压力传感器和另一种按键去抖动...
2019-03-27 08:20:53一、压力应变片 电阻式压力应变片比一些体重秤上使用的电压式压力应变片精度要高,但是成品的压力模块往往动辄几百元而且形态不能满足我们的各种“奇葩”应用。而这种裸片价格便宜,所以在最近一个小制作中使用了... -
压力传感器HX711的C函数
2021-05-20 01:25:25内容所有权属于:http://www.xinduofen.com/#define ADDO P1_2#define ADSK P1_3#define AdCnt 10//...2)//读HX711的AD转换数据函数unsigned long ReadAdValue(void){unsigned long Count = 0;unsigned char i;AD... -
压力传感器、称重传感器、电子秤模块-HX711人体称重模块应用及原理
2020-12-30 20:27:00实验七十二:人体秤50kg称重传感器模块(电阻应变半桥式)应变片是由敏感栅等构成用于测量应变的元件。电阻应变片的工作原理是基于应变效应制作的,即导体或半导体材料在外界力的作用下产... -
STM32F103称重模块HX711调试
2018-04-17 15:38:54STM32F103称重模块HX711调试 #include "sys_init.h" unsigned long HX711_Buffer = 0; unsigned long Weight_Maopi = 0,Weight_Shiwu = 0; void Get_Maopi() { HX711_Buffer = HX711_Read(); Weight_Maopi = ... -
基于ESP8266 HX711 克级单位称重式压力传感器
2022-03-20 22:26:49基于ESP8266 HX711 克级单位称重式压力传感器 -
涂鸦模组开发(压力传感器HX711)——4. 上报传感器数据给涂鸦模块
2022-03-06 03:06:11涂鸦模组开发_压力传感器HX711——4. 涂鸦模组数据通信概述涂鸦功能修改压力值上报压力状态上报增值服务最后 概述 涂鸦智能 (NYSE:TUYA) 是一家致力于让生活更智能的领先技术公司,涂鸦提供能够智连万物的云平台,... -
涂鸦模组开发(压力传感器HX711) 使用涂鸦模组,mcu是stm32,压力传感器HX711
2022-03-14 11:40:17涂鸦模组开发(压力传感器HX711)——1. 模块准备 https://blog.csdn.net/qq_24312945/article/details/123136749 涂鸦模组开发(压力传感器HX711)——2. 压力传感器HX711 ...涂鸦模组开发(压力传感器HX711)——3.... -
HX711 压力调试 51程序
2020-05-18 18:43:36HX711压力检测装置,要实现的功能:实时监测当前压力并通过蓝牙串口将数据传输至手机,采用独立按键... 蜂鸣器 HC-05蓝牙模块 洞洞板 四个HX711芯片 四个HX711压力传感器接下来要动动我们的小手来准备搭建电路啦; ...