【CW32模块使用】HX711称重传感器
该模块采用24位高精度的A/D转换器芯片hx711,是一款专为高精度电子秤而设计的,具有两路模拟通道输入,内部集成128倍增益可编程放大器。输入电路可配置为提供桥压的电桥式(如压力、称重)传感器模式,是一款理想的高精度、低成本采样前端模块。
一模块来源
模块实物展示:
二 规格参数
工作电压:2.6V-5.5V
工作电流:100~1500uA
ADC精度:24位
输出方式: 串行输出
管脚数量:4 Pin
三 移植过程
我们的目标是将例程移植至CW32F030C8T6开发板上【能够判断测量10Kg以内的称重】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
3.1查看资料
3.2引脚选择
接线表
3.3查移植至工程
移植步骤中的导入.c和.h文件与【CW32模块使用】DHT11温湿度传感器相同,只是将.c和.h文件更改为bsp_hx711.c与bsp_hx711.h。这里不再过多讲述,移植完成后面修改相关代码。bsp_hx711
在文件bsp_hx711.c中,编写如下代码。
/*
* Change Logs:
* Date Author Notes
* 2024-06-20 LCKFB-LP first version
*/
#include "bsp_hx711.h"
#include "stdio.h"
unsigned int HX711_Buffer;
unsigned int Weight_Maopi;
int Weight_Shiwu;
unsigned char Flag_Error = 0;
//校准参数
//因为不同的传感器特性曲线不是很一致,因此,每一个传感器需要矫正这里这个参数才能使测量值很准确。
//当发现测试出来的重量偏大时,增加该数值。
//如果测试出来的重量偏小时,减小改数值。
//该值可以为小数
#define GapValue 207.00
/******************************************************************
* 函 数 名 称:HX711_GPIO_Init
* 函 数 说 明:HX711的引脚初始化
* 函 数 形 参:无
* 函 数 返 回:无
* 作 者:LC
* 备 注:无
******************************************************************/
void HX711_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化结构体
RCC_HX711_ENABLE(); // 使能GPIO时钟
GPIO_InitStruct.Pins = GPIO_SCK|GPIO_DT; // GPIO引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 输出速度高
GPIO_Init(PORT_HX711, &GPIO_InitStruct); // 初始化
}
/******************************************************************
* 函 数 名 称:HX711_Read
* 函 数 说 明:读取HX711
* 函 数 形 参:无
* 函 数 返 回:读取到的值
* 作 者:LC
* 备 注:无
******************************************************************/
unsigned int HX711_Read(void) //增益128
{
unsigned long count;
unsigned char i;
DT_OUT();
delay_us(5);
DT(1);
delay_us(4);
SCK(0);
count=0;
DT_IN();
delay_us(5);
while(DT_GET());
for(i=0;i<24;i++)
{
SCK(1);
count=count<<1;
delay_us(4);
SCK(0);
if(DT_GET())
count++;
delay_us(4);
}
SCK(1);
count=count^0x800000;//第25个脉冲下降沿来时,转换数据
delay_us(4);
SCK(0);
return(count);
}
/******************************************************************
* 函 数 名 称:Get_Maopi
* 函 数 说 明:测量初始重量
* 函 数 形 参:无
* 函 数 返 回:无
* 作 者:LC
* 备 注:后续的重量都是以该初始重量为0值,因此在初始化时,秤上不要放任何东西
******************************************************************/
void Get_Maopi(void)
{
Weight_Maopi = HX711_Read();
}
/******************************************************************
* 函 数 名 称:Get_Weight
* 函 数 说 明:称重
* 函 数 形 参:无
* 函 数 返 回:称重值,单位g
* 作 者:LC
* 备 注:无
******************************************************************/
float Get_Weight(void)
{
float Weight=0;
HX711_Buffer = HX711_Read();
if(HX711_Buffer > Weight_Maopi)
{
Weight_Shiwu = HX711_Buffer - Weight_Maopi; //获取实物的AD采样数值。
Weight = (float)Weight_Shiwu / (float)GapValue;//计算实物的实际重量
//因为不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的GapValue这个除数。
//当发现测试出来的重量偏大时,增加该数值。
//如果测试出来的重量偏小时,减小改数值。
}
return Weight;
}
在文件bsp_hx711.h中,编写如下代码。
/*
* Change Logs:
* Date Author Notes
* 2024-06-20 LCKFB-LP first version
*/
#ifndef _BSP_HX711_H_
#define _BSP_HX711_H_
#include "board.h"
//端口移植
#define RCC_HX711_ENABLE() __RCC_GPIOB_CLK_ENABLE()
#define PORT_HX711 CW_GPIOB
#define GPIO_SCK GPIO_PIN_8
#define GPIO_DT GPIO_PIN_9
//设置DT输出模式
#define DT_OUT() { \
GPIO_InitTypeDef GPIO_InitStruct; \
GPIO_InitStruct.Pins = GPIO_DT; \
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; \
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; \
GPIO_Init(PORT_HX711, &GPIO_InitStruct); \
}
//设置DT输入模式
#define DT_IN() { \
GPIO_InitTypeDef GPIO_InitStruct; \
GPIO_InitStruct.Pins = GPIO_DT; \
GPIO_InitStruct.Mode = GPIO_MODE_INPUT; \
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; \
GPIO_Init(PORT_HX711, &GPIO_InitStruct); \
}
//获取DT引脚的电平变化
#define DT_GET() GPIO_ReadPin(PORT_HX711, GPIO_DT)
//DT与SCK输出
#define DT(x) GPIO_WritePin(PORT_HX711,GPIO_DT, (x?GPIO_Pin_SET:GPIO_Pin_RESET))
#define SCK(x) GPIO_WritePin(PORT_HX711,GPIO_SCK,(x?GPIO_Pin_SET:GPIO_Pin_RESET))
void HX711_GPIO_Init(void);
float Get_Weight(void);
void Get_Maopi(void);
#endif
04移植验证
在自己工程中的main主函数中,编写如下。
/*
* Change Logs:
* Date Author Notes
* 2024-06-20 LCKFB-LP first version
*/
#include "board.h"
#include "stdio.h"
#include "bsp_uart.h"
#include "bsp_hx711.h"
int32_t main(void)
{
board_init(); // 开发板初始化
uart1_init(115200); // 串口1波特率115200
HX711_GPIO_Init();
Get_Maopi(); //称毛皮重量
delay_ms(500);
Get_Maopi(); //重新获取毛皮重量
printf("start\r\n");
while(1)
{
printf("w = %.2fg\r\n",Get_Weight());
delay_ms(500);
}
}
移植现象:往秤上放一个200g的砝码,输出称重后的结果。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由莫子若转载自武汉芯源(CW32生态社区公众号),原文标题为:【CW32模块使用】HX711称重传感器,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】基于CW32的AS608指纹模块的应用
AS608是一款集成了指纹图像采集和指纹比对算法的指纹识别模块。它采用了高质量的光学传感器,能够实时采集人体指纹图像,并通过指纹比对算法进行指纹识别。AS608具有高精度、快速、可靠的特点,广泛应用于各种指纹识别场景,如门禁系统、安防系统、考勤系统等。本实验用到了CW32-48F大学计划板、0.96寸OLED显示屏模块、AS608指纹模块及Keil5开发环境。
【经验】芯源CW32系列单片机低功耗模式介绍及UART深度休眠模式示例
CW32单片机低功耗模式介绍及UART深度休眠模式示例。
使用JLink烧录CW32程序
本篇主要介绍使用JLink烧录CW32程序。
CW32F030C8T6 from Wuhan Core Source is Used in Combustible Gas Detector, Ensures Safe Operation in Harsh Electromagnetic Interference Environments
With the advancement of electronic science and technology, the combustible gas detector has become an essential tool for safety protection. This detector converts the concentration of leaked combustible gases into electrical signals and issues alarm signals to remind staff to take safety measures. The CW32F030C8T6, as the main control chip, provides excellent system protection with its high-precision ADC, fast conversion speed, high reliability, strong ESD protection, and strong anti-interference characteristics, ensuring safe operation in harsh electromagnetic interference environments.
2023年电赛A题——国奖开源分享
根据题目要求,本项目拟设计制作一个单相逆变器并联运行系统,本系统以CW32F030C8T6核心板为控制核心,由直流电源、隔离变压器、全桥逆变电路、采集电路、驱动电路、LC低通滤波电路和辅助电源组成。从机采用DQ锁相环进行相位追踪,通过生成双极性SPWM波对全桥逆变电路调制,产生正弦交流电。利用PID算法进行电流、电压闭环控制,逆变器实现稳流,稳压来实现并联,并网运行。
【CW32模块使用】VL53L0X激光测距传感器
VL53L0X是ST公司推出的新一代 ToF 激光测距传感器,采用了第二代 FlightSenseTM技术,利用飞行时间(ToF)原理,通过光子的飞行来回时间与光速的计算,实现测距应用。本文的目标是在CW32F030C8T6开发板上能够实现测量距离的功能。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
武汉芯源半导体邀您相约CITE2024中国电子信息博览会
CITE2024第十二届中国电子信息博览会将于2024年4月9-11日在深圳福田会展中心隆重开展,武汉芯源半导体将为电子行业参观者展示智能指纹锁、麦克风、燃气表、LED调光板、可燃气体报警器、筋膜枪、角磨机、血氧仪、温控器、BLDC无刷电机、永磁同步电机无感FOC控制方案等多款CW32单片机典型应用方案,诚邀您莅临9B122武汉芯源半导体展位参观交流!
【应用】基于国产32位MCU芯片CW32F030C8T6的智能门锁方案,主频64MHz,具备低功耗多功能优势
智能门锁集成3D识别算法、接近检测、指纹输入模块,低功耗计算芯片等于一体,解锁快、功耗低、续航久,现武汉芯源推出一款MCU芯片CW32F030C8T6助力于智能门锁设计。
【CW32模块使用】红外测距传感器
GP2Y0A02YKOF是夏普的一款距离测量传感器模块。本文的目标是将例程移植至立创·CW32F030C8T6开发板上【能够判断前方障碍物的功能】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
基于CW32的无刷直流空心杯电机有感控制驱动方案
空心杯电机(Hollow-Cup Motor)是一种特殊类型的微型无刷直流电机,具有空心的旋转部分。它通常由外部固定的外壳和内部旋转的空心杯组成。空心杯电机具有较高的功率密度和扭矩输出,适用于一些特定的应用场景,如精密仪器、机器人、医疗设备等。空心杯电机的工作原理是基于无刷直流电机的原理。它采用无刷电机的结构,包括定子(固定部分)和转子(旋转部分)。
【CW32】基于CW32的GY-33颜色识别模块的应用
GY-33是一种基于TCS34725颜色传感器的颜色识别模块。TCS34725是一种高精度光学传感器,能够检测红、绿、蓝三个基本色的光谱信息,从而实现对物体颜色的准确识别,本实验使用到了CW32F030C8小蓝板、GY-33颜色识别模块、0.96寸OLED显示屏,RGB全彩LED模块、轻触开关模块及Keil5开发环境
【CW32模块使用】TTP224触摸传感器
该模块是一个基于触摸检测IC(TTP223B)的电容式点动型触摸开关模块。本文目标是将例程移植至CW32F030C8T6开发板上【实现添加指纹、删除指纹和搜索指纹的功能】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
【应用】基于CW32的无刷水泵控制系统,使水泵更加节能、高效
本课题研究的目的是设计一套基于CW32的无位置传感器无刷直流电机控制系统,既可以改进水泵的工作模式,使水泵工作点最优;又可以使水泵电机结构简单,控制方式更为灵活。以此将整个系统加入各个不同场景中,让CW32低功耗优点,能让水泵共更加节能,高效。
基于CW32的无刷直流空心杯电机无感方波控制驱动方案
本方案采用CW32F030C8T6作为主控芯片,采用无感方波控制算法控制无刷直流空心杯电机。CW32F030C8T6是一款高性能、低功耗的32位微控制器,具有丰富的片上外设资源,可以适合用于电机控制。无感方波控制算法是一种简单有效的电机控制算法,不需要使用霍尔传感器,可以降低硬件成本。
【CW32模块使用】微波多普勒无线雷达传感器
由于微波传感器检测对象存在普遍性,在实际的生活应用中,会搭配另一个传感器来做针对性的检测。如微波传感器+红外热释电传感器,能够有效的判断是否有人经过,不会被阳光,被衣物颜色所干扰,也不会对其他物体产生反应。本次示例的目标是将例程移植至CW32F030C8T6开发板上【能够判断测量一定距离内是否物体运动】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。
电子商城
现货市场
服务
可加工PCB板层数1~40,最小线宽/间距内层: 2.5/3mil (H/H OZ base copper);最小线宽/间距外层: 3/3mil (H/H OZ base copper);成品交货尺寸范围:10 * 10mm~570 * 1200mm。板厚范围:0.4mm-10mm。支持通孔板、HDI板、柔性板、刚柔结合板打样、小批量及批量生产。
最小起订量: 1 提交需求>
可加工线路板层数:1~10层;最小孔径:0.2mm;孔径公差范围:±0.076mm(±3mil),板尺寸:5mm×5mm~600mm×600mm;板厚:0.2mm±0.08mm~2.0±0.1mm。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论