完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
假如现在输入 3mv的信号 经hx711(24位)转换为一个二进制数,存到aa中 现在如何将这个值转换为电压值??然后将这几个数分离出来 显示在1602上,该怎么做??
unsigned long ReadCount(void) { |
|
相关推荐
11个回答
|
|
基本原理讲解
1. 5kg 传感器 满量程输出电压=激励电压*灵敏度1.0mv/v 例如:供电电压是5v 乘以灵敏度1.0mv/v=满量程5mv。 相当于有5Kg 重力产生时候产生5mV 的电压。 2. 711模块对产生的5mV 电压进行采样。 概述:711模块 A 通道带有128倍信号增益,可以将5mV 的电压放大128倍,然 后采样输出24bit AD 转换的值,单片机通过指定时序将24bit 数据读出。 详细讲解程序计算原理: 小强电子设计 步骤1 :如何计算传感器供电电压 HX711可以在产生 VAVDD 和 AGND 电压,即711模块上的 E+和 E-电压。 该电压通过 VAVDD=VBG(R1 +R2 )/R2计算。 VBG 为模块儿基准电压1.25v R1 = 20K,R2 = 8.2K 因此得出 VAVDD = 4.3V (为了降低功耗,该电压只在采样时刻才有输出, 因此用万用表读取的值可能低 于4.3v,因为万用表测量的是有效值。 ) 步骤2 :如何计算 AD 输出最大值 在4.3V 的供电电压下5Kg 的传感器最大输出电压是4.3v*1mv/V = 4.3mV 经过128倍放大后,最大电压为4.3mV*128 = 550.4mV 经过 AD 转换后输出的24bit 数字值最大为: 550.4mV*2 24 /4.3V ≈ 2147483 步骤3 :程序中数据如何转换 小强电子设计 程序中通过 HX711_Buffer = HX711_Read(); 获取当前采样的 AD 值,最大2147483,存放在 long 型变量 HX711_Buffer 中, 因 long 型变量计算速率和存放空间占用资源太多,固除以100,缩放为 int 型, 便于后续计算。 Weight_Shiwu = HX711_Buffer/100; Weight_Shiwu 最大为21474。 步骤4 :如何将 AD 值反向转换为重力值 。 假设重力为 A Kg, (x<5Kg),测量出来的 AD 值为 y 5Kg 传感器输出,发送给 AD 模块儿的电压为 A Kg * 4.3mV / 5Kg = 0.86A mV 经过128倍增益后为 128 * 0.86A = 110.08AmV 转换为24bit 数字信号为 110.08A mV * 2 24 / 4.3V = 429496.7296A 所以 y = 429496.7296A /100 = 4294.967296 A 因此得出 A = y / 4294.967296 Kg ≈ y / 4.30 g 所以得出程序中计算公式 Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.30+0.05); //+0.05是为了四舍五入百分位 特别注意: 因为不同的传感器斜率特性曲线不一样,因此,每一个传感器需要矫正这里 的4.30这个除数。 当发现测试出来的重量偏大时,增加该数值。 如果测试出来的重量偏小时,减小改数值。 该数值一般在4.0-5.0之间。因传感器线性斜率不同而定。 每个传感器都要校准。
最佳答案
|
|
|
|
void main(void)
{ unsigned long aa; unsigned long tt; uchar ge,shi,bai,qian,temp; LCD_init(); while(1) { LCD_disp_string(0,1,"TEST FOR HX711"); aa=ReadCount(); tt=aa*2.5/1677216; temp=tt*1000-2; qian=temp/1000; bai=temp/100%10; shi=temp/10%10; ge=temp%10; LCD_disp_char(0,2,qian+0x30); LCD_disp_char(1,2,bai+0x30); LCD_disp_char(2,2,shi+0x30); LCD_disp_char(3,2,ge+0x30); } } |
|
|
|
unsigned long ReadCount(void)
{ unsigned long Count; unsigned char i; //使能AD(PD_SCK 置低) ADSK=0; Count=0; //AD转换未结束则等待,否则开始读取 while(ADDO); for (i=0;i<25;i++) { //PD_SCK 置高(发送脉冲) ADSK=1; Count=Count<<1; //下降沿来时变量Count左移一位,右侧补零 ADSK=0; //PD_SCK 置低 if(ADDO) Count++; } ADSK=1; Count=Count^0x800000;//第25个脉冲下降沿来时,转换数据 ADSK=0; return(Count); } |
|
|
|
|
|
|
|
大概一看好有道理,仔细一看这什么玩意儿,狗屁不通!!!!
|
|
|
|
如果VCC接的是3.3V,那么AVDD会不会也是4.3V?
|
|
|
|
你们真的有检查过自己的程序能不能用?
|
|
|
|
你好 电子秤的误差原因,能告诉我一下吗 谢谢了
|
|
|
|
你好,电子秤误差产生的原因能告诉我一下吗,与传感器和AD转换都有关吗,谢谢啦
|
|
|
|
这样写 基本不能用
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
479 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
229 浏览 0 评论
334 浏览 0 评论
165 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》 第十六章 WATCH_DOG实验
496 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11972 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 09:44 , Processed in 1.066583 second(s), Total 60, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号