历史上的今天
返回首页

历史上的今天

今天是:2024年10月13日(星期日)

正在发生

2020年10月13日 | hx711压力传感器的单片机源码

2020-10-13 来源:51hei

压力传感器资料
本传感器所附带的hx711程序,仅供参考。
纯属赠送,不提供指导!


用途与特点:适合学生实验,DIY电子设计,广泛用于小型电子计价秤、计重秤等。


传感器量程:10kg,20kg,40kg可选择,其外观、尺寸、参数都一样,只是量程不一样。


参考接线方法:

红线(传感器电源输入)  接E+

白线(传感器电源地)  接E-

绿线(差分信号输出-)  接A-

黑线(差分信号输出+)  接A+

特别注意:传感器属于精密部件,剧烈振动、自由落体、碰撞、过载、过压等等,都非常容易造成传感器永久损坏或者影响精度和线性,您如果对该部件没有一定的了解,请慎重购买。毕竟该部件比起电阻 电容 三极管等其它电子部件要脆弱的多。


参数说明:   
参数表中,灵敏度:2.0mv/v 的含义是:假如供电电压是5.0v,当传感器满量程的时候,绿色、黑色线之间有2.0mv/v * 5.0v=10mv的差分电压输出。例如:传感器的量程是10kg,供电电压是5v,那么这个传感器在受力10kg的时候,绿色、黑色之间输出有2.0mv/v * 5.0v=10mv的压差。

工作原理:
电阻应变式压力传感器主要由弹性体、电阻应变片电缆线等组成,内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,电阻应变片(转换元件)受到拉伸或压缩应变片变形后,它的阻值将发生变化(增大或减小),从而使电桥失去平衡,产生相应的差动信号,供后续电路测量和处理。
当垂直正压力P作用于梁上时,梁产生形变,电阻应变片R1、R3受压弯拉伸,阻值增加。R2、R4受压缩,阻值减小。电桥失去平衡,产生不平衡电压U,电压U与作用在传感器上的正压力P成正比,从而将非电量转化为电量输出。

示意图如下:



hx711压力传感器的电路原理图:
 


单片机源程序如下:

/**************************************************************

                                                         

实现功能:电子称称重测试程序

**************************************************************/


#include

#include

#include

#include "lcd.h"

#include "hx711.h"



//定义量程系数

#define RATIO     1349/1000     //1574/1000  //2114/1623




//定义标识

volatile bit FlagTest = 0;                //定时测试标志,每0.25秒置位,测完清0


//管脚定义

sbit LedA = P2^2;

sbit beep = P1^0;

sbit alert = P1^1;



//显示用变量

int Counter;

uchar idata str1[6] = "000000";

int i, iTemp;

//称重用变量

unsigned long idata FullScale; //满量程AD值/1000

unsigned long AdVal;     //AD采样值

unsigned long weight;    //重量值,单位g


uchar DotPos;                                   //小数点标志及位置


int bak_num=1;

char code tb3[]="重量:         kg";




//整型转字符串的函数,转换范围0--65536

void int2str(int x, char* str)

{

    int i=1;

    int tmp=10;

    while(x/tmp!=0)

    {

        i++;

        tmp*=10;

    }

    tmp=x;

    str[i]='';

    while(i>1)

    {

        str[--i]='0'+(tmp%10);

        tmp/=10;

    }

    str[0]=tmp+'0';

}


//重新找回零点,每次测量前调用

void To_Zero()

{

   FullScale=ReadCount()/1000;

}



//显示重量,单位kg,两位整数,三位小数

void Display_Weight()

{

   unsigned int i,j;

   

   display_GB2312_string(3,60,"      ");

   //weight单位是g

   i = weight/1000;    //得到整数部分

   j = weight - i*1000;//得到小数部分

   int2str(i,str1);

   if (i>=10)

   {

      display_GB2312_string(3,60,str1);

   }

   else

   {

      display_GB2312_string(3,68,str1);

   }

   display_GB2312_string(3,76,".");   

   int2str(j,str1);

   if (j<10)

   {

      display_GB2312_string(3,84,"00");

          display_GB2312_string(3,100,str1);

   }

   else if (j<100)

   {

      display_GB2312_string(3,84,"0");

          display_GB2312_string(3,92,str1);


   }

   else

   {

      display_GB2312_string(3,84,str1);

   }

}



//数据初始化

void Data_Init()

{


   DotPos = 0;

   beep = 1;

   alert = 1;

}




//定时器0初始化

void Timer0_Init()

{

        ET0 = 1;        //允许定时器0中断

        TMOD = 1;       //定时器工作方式选择

        TL0 = 0x06;     

        TH0 = 0xf8;     //定时器赋予初值

        TR0 = 1;        //启动定时器

}


//定时器0中断

void Timer0_ISR (void) interrupt 1 using 0

{

        TL0 = 0x06;

        TH0 = 0xf8;     //定时器赋予初值



        //每0.25秒钟刷新重量

    Counter ++;

    if (Counter >=100)

    {

       FlagTest = 1;

           Counter = 0;

    }

}






//===============main program===================//

void main(void)

{

   Rom_CS=1;

   initial_lcd();

   EA = 0;

   Data_Init();

   

   Timer0_Init();

   //初始化完成,开中断

   EA = 1;

   //背光

   LedA = 1;

   clear_screen();    //clear all dots

   To_Zero();

   To_Zero();

   display_GB2312_string(3,1,tb3);




   while(1)

   {

      //每0.5秒称重一次

         

             //称重,得到重量值weight,单位为g

                 AdVal=ReadCount();

                 weight=FullScale-AdVal/1000;

                 if (weight>0x8000) weight=0;

                 weight=15000*weight/FullScale;//校准值

                 weight=weight*RATIO;

                 Display_Weight();

                 //如果超量程,则报警

                 if (weight >= 10000)

                 {

                    beep = 0;

                        alert = 0;

                 }

                 //如果不超量程

                 else

                 {

                    beep = 1;

                        alert = 1;

                        //显示重量值

                Display_Weight();                 

                    FlagTest = 0;

             }

                delay(80);// 重量的亮度

         

   }

}




推荐阅读

史海拾趣

ebm-papst公司的发展小趣事

在巩固欧洲市场的基础上,ebm-papst不断拓展全球市场,特别是亚洲市场。近年来,公司在亚洲市场的营收增长率一直保持在较高水平。为了进一步拓展亚洲市场,ebm-papst加大了在中国的产能建设,陆续在上海、西安等地进行扩建和新建产能。这些措施使得ebm-papst能够更好地满足亚洲市场的需求,并为其在全球市场的进一步发展奠定了坚实基础。

Centellax Inc公司的发展小趣事

为了确保产品质量和客户满意度,Centellax建立了完善的质量管理体系。公司从原材料采购、生产制造到产品销售等各个环节都严格把控质量,确保产品性能稳定可靠。

同时,Centellax还引入了国际先进的质量管理理念和方法,不断提升员工的质量意识和技能水平。通过持续改进和优化生产流程,降低生产成本,提高产品竞争力。此外,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。

Easy Magnet Corp公司的发展小趣事

为了拓宽市场渠道,Easy Magnet Corp公司积极寻求与国际知名企业的合作。通过与国外企业的技术交流和合作研发,公司不仅获得了先进的生产技术和管理经验,还成功地将产品推向了国际市场。这一过程中,公司不仅提升了品牌影响力,还增强了自身的研发实力和市场竞争力。

Broyce Control公司的发展小趣事

进入70年代,Broyce Control开始将目光投向更广阔的市场。公司投入大量资源进行技术研发,成功开发出了一系列具有创新性的电气和电子产品,如继电器、漏电继电器和接地故障检测器等。这些产品不仅提高了工业生产的效率和安全性,也使得Broyce Control在行业内逐渐崭露头角。同时,公司还积极拓展产品线,将业务范围延伸到监控和保护设备领域,为大型工业应用提供了更全面的解决方案。

ABL Aluminum Components公司的发展小趣事

ABL Aluminum Components公司自成立以来,一直注重技术创新。早期,公司研发出了一种新型铝合金材料,这种材料具有优异的导电性和轻量化特点,迅速在电子行业引起关注。随着技术的不断迭代,ABL公司逐步将这种材料应用于手机、电脑等消费电子产品的内部组件,大大提高了产品的性能和用户体验。凭借这一技术优势,ABL公司逐渐在电子行业中占据了一席之地。

Electronic Sensor + Resistor GmbH公司的发展小趣事

随着产品技术的不断成熟和市场份额的逐步扩大,ESR公司开始将目光投向国际市场。公司积极参加国际电子展会和技术交流活动,与全球各地的客户和合作伙伴建立了广泛的联系。

同时,ESR公司还根据不同国家和地区的市场需求和法规要求,对产品线进行了针对性的调整和优化。通过本地化的营销策略和服务体系,公司成功打开了多个海外市场的大门,并赢得了当地客户的信任和支持。

问答坊 | AI 解惑

PCB热干扰及抵制

元器件在工作中都有一定程度的发热,尤其是功率较大的器件所发出的热量会对周边温度比较敏感的器件产生干扰,若热干扰得不到很好的抑制,那么整个电路的电性能就会发生变化。 为了对热干扰进行抑制,可采取以下措施:   (1)发热元件的放置   ...…

查看全部问答>

交流电压测量

交流电压的测量实例…

查看全部问答>

请问如何在带有TCP/IP的CDMA模块上实现MMS的收发呢?谢谢。

假如模块带有TCP/IP,那如何在它之上实现MMS的收发呢?调用打开TCP/IP连接的AT命令时,需要提供一个服务器IP,请问这个IP怎么获取呢?还有,这个IP是指WAP网关还是mms-relay服务器?请大概说明一下,谢谢。 …

查看全部问答>

USB无线网卡驱动在ARM上的移植问题

无线网卡:wl-167g ARM板:S3C2410 内核版本:2.4.18 gcc版本:2.95.3 驱动版本RT73_Linux_STA_Drv1.0.4.0 编译驱动通过,并生成rt73.o,使用insmod rt73.o可以将模块加载到系统中,显示: rtusb init ====> usb.c: registered new driver rt73 但 ...…

查看全部问答>

请大家帮我看看这是什么原因,关于属性页对话框的。不胜感激!

我在程序中做了一些属性页对话框,编译运行都可以通过。但是每次通过菜单或是按钮调用的时候,会弹出一个警告对话框:该对话框的标题栏是“Assertion failed!”,下面的内容是“工程名:File propdlg.cpp Line602”,然后就是三个按钮:“放弃”“重 ...…

查看全部问答>

首次跑通Keil自带STM32的OS例程,发贴自贺并交作业(已修改)

由于俺用的是英培特的EMSTM32V1开发板,内带的例程没RTX的例程. 只好用keil自带的例程BLINKY.C,但是LED的管脚不太兼容. 刚好也学学GPIO~~~哈哈~~~OS和裸奔的BLINKY都算是跑通了~~~ 郁闷的是串口和ADC没跑通~~~不过串口座(公头)有些小,估计是新的 ...…

查看全部问答>

收闲置的49元8962套件 ... 有的扔过来啊 ....

一套或者光主板也行 自带价格 ... tt383@qq.com   [ 本帖最后由 tt383 于 2011-3-18 18:03 编辑 ]…

查看全部问答>

中祥LED租赁显示屏为精彩汽车博览会锦上添花

 作者:中祥科技王经理   QQ:1044478274   2011中国西南(昆明)国际汽车博览会,英文简称(IAS Kun Ming)11月11日-15日(星期五-星期二)在昆明国际会展中心隆重开幕。本届车展以“展开,生活之翼”为主题,由中国国际 ...…

查看全部问答>

dsp2812 spi 通讯问题

spi外接了flash,想完成对flash的读写,用官方自带的例程spi_loopback 调试通过,仔细看了下代码,这个历程前面是对spi的初始化,然后是下面几句代码: for(;;)   {         SpiaRegs.SPI ...…

查看全部问答>

【聊聊DSP】我眼中的DSP

我接触DSP较8051系列和arm系列晚,原因无它,资源少(相对8051和arm铺天盖地的资料和例程来说),价格贵,一般应用也用不上。再加上DSP的一般应用项目都是高端的数字处理和数码设备,久而久之,在我脑海里DSP就好像微处理器里面的贵族一样,带着神 ...…

查看全部问答>