嵌入式爱好者

查看: 9694|回复: 0

[评测] 飞凌嵌入式OKA40i-C开发板试用体验之 称重系统-硬件环境搭建(2)

[复制链接]

2

主题

2

帖子

8

积分

扫一扫,手机访问本帖
发表于 2020-9-19 14:51:33 | 显示全部楼层 |阅读模式
该系统除飞凌嵌入式OKA40i-C开发板外还需要外接hx711芯片和一个压电传感器
2.1 hx711简介
  HX711是一款专为高精度电子秤而设计的24位A/D转换器芯片。与同类型其它芯片相比,该芯片集成了包括稳压电源、片内时钟振荡器等其它同类型芯片所需要的外围电路,具有集成度高、响应速度快、抗干扰性强等优点。降低了电子秤的整机成本,提高了整机的性能和可靠性。该芯片与后端MCU 芯片的接口和编程非常简单,所有控制信号由管脚驱动,无需对芯片内部的寄存器编程。输入选择开关可任意选取通道A 或通道B,与其内部的低噪声可编程放大器相连。通道A 的可编程增益为128 或64,对应的满额度差分输入信号幅值分别为±20mV或±40mV。通道B 则为固定的32 增益,用于系统参数检测。芯片内提供的稳压电源可以直接向外部传感器和芯片内的A/D 转换器提供电源,系统板上无需另外的模拟电源。芯片内的时钟振荡器不需要任何外接器件。上电自动复位功能简化了开机的初始化过程。
2.2 hx711模块外围电路
1.2.1.png
其中 com4连接压电传感器的A+,A-,B+,B-,H_SDL,H_SCL与开发板的IIC接口相连.
2.3  hx711驱动程序

unsigned long HX711_Buffer = 0;
unsigned long Weight_Maopi = 0;
unsigned long Weight_Maopi_0 = 0;
long Weight_Shiwu = 0;
bool HX711_SCK;
bool HX711_DOUT;

unsigned long HX711_Read(void)        //增益128
{
        unsigned long count;
        unsigned char i;
          HX711_DOUT=1;
  Delay__5us();
          HX711_SCK=0;
          count=0;
          while(HX711_DOUT);
          for(i=0;i<24;i++)                               
        {
                  HX711_SCK=1;
                  count=count<<1;
                        HX711_SCK=0;
                  if(HX711_DOUT)
                        count++;
        }
        HX711_SCK=1;
    count=count^0x800000;//第25个脉冲下降沿来时,转换数据
        Delay__5us();
        HX711_SCK=0;  
        return(count);
}

void Get_Weight()
{
        HX711_Buffer = HX711_Read();
        Weight_Shiwu=HX711_Buffer;
//        Weight_Shiwu = Weight_Shiwu - Weight_Maopi;                //获取净重                                                                                                                       
                if(Weight_Shiwu > 0)                       
        {       
                Weight_Shiwu = (unsigned int)((float)Weight_Shiwu*10/GapValue)-8530;         //计算实物的实际重量
                                                                       
//                                                                                                                                               
//                if(Weight_Shiwu > 3000)                //超重报警
//                {
//                        Flag_ERROR = 1;       
//                }
//                else
//                {
//                        Flag_ERROR = 0;
//                }
//        }
//        else
//        {
//                Weight_Shiwu = 0;
//        //        Flag_ERROR = 1;                                //负重报警
//        }
        }
        delay(5);
                Display_Weight();
       
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-4-25 22:43

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表