所有关于电路
项目

如何构建一个磅秤使用称重传感器和单片机

2017年10月10日通过尼克。戴维斯

在这个项目中,我们使用C8051单片机开发工具包磅秤,测压元件,简单Studio IDE。测量的重量将会显示在液晶屏幕上。

在这个项目中,我们将构建一个使用C8051单片机开发工具包磅秤,测压元件,简单Studio IDE。测量的重量将会显示在液晶屏幕上。

液晶显示器

项目中使用的液晶硅实验室的一部分CP2400DK开发工具包。

图1所示。硅实验室CP2400DK开发工具包(C8051单片机和液晶控制器)。图片由Digi-Key

制造商的零件号LCD设备本身(图2)vim - 878 - dp - rc - lv。如果你包括小数点和撇号(每个数字),这个“14-segment”液晶显示器变成16段显示。当加法的所有16-segments八位数,我们看到128段。这样一个128年段显示授权使用128 -段司机,和硅实验室已经决定使用驱动程序p / nCP2400(图3)。

图2。液晶屏有16段为每个八位数(128段)。图片由Digi-Key

图3。128 -段LCD驱动程序。图片来源:硅实验室(页1和22)。

负载细胞

我选择使用的负载细胞是由Uxcell、模型#a14071900ux0057

图4。负载细胞。图片由亚马逊

这个特殊的负载细胞通常称为直条负载细胞或平行光束负载细胞。这种负载细胞在许多额定负载(即通常可用。、最大负荷);在这个项目中使用的是额定的最大重量10公斤(22磅)。它的广告额定输出是1±0.15 mv / V。这意味着当负载细胞有其最大额定重量应用(在这种情况下10公斤),然后输出电压将1 mv (±0.15 mv)每1 v应用于负载细胞的激发(见下图)。当我说的电压是“应用于负载细胞”,实际上是被应用到惠斯登电桥的电压应变仪的激发。同样,Wheatstone项目应变仪生成的输出电压(见下图)。

图5。负载细胞的惠斯通电桥应变仪示意图。

对于这个项目我将申请5.0伏直流励磁;因此,当一个10公斤负荷应用于负荷细胞,其V将5.0 mv (±0.75 mv)。因为5.0 mv是这么小的电压,它需要被放大之前被发送到单片机。

注:一些microcontrollers-not本项目中使用一个微分ADC输入;单端输入被认为标准对于大多数微控制器。当使用一个单端单片机ADC输入当传感器问题提供了一个微分输出信号,差分放大器必须利用。这种类型的放大器将微分信号转换为单端信号,可以使用一个标准的单端ADC测量。

仪表放大器

差分放大器,我选择使用实际上是所谓的仪表放大器或in-amp。我开始这个项目使用INA126PAin-amp从德州仪器公司我购买这个设备从Digi-Key为3.15美元。然而,当它未能执行广告和故障排除了大约一个小时后,我决定搬到B计划:使用AD627(从模拟设备),我也买了。我买了——这一部分数量一个从Digi-Key惊人的价格8.45美元!我不知道这些in-amps花这么多钱!幸运的是,这个设备运行良好。因此,我认为我将使用in-amp设备从模拟设备在未来与TI部分,虽然一般来说,我是一个部分的粉丝,和价格,从TI。为这两个设置增益in-amps很简单:只需要一个外部电阻。同时,TI和模拟设备部分广告单或双电源设备,我更喜欢使用单电源。

图6。模拟设备仪表放大器(AD627)简化的示意图。图片由模拟装置(14页)

项目# 描述/来源 成本(每个) 其他信息
1 C2400DK开发工具包 148.75美元

用户指南
快速启动指南
C8051F930数据表
注:图表25-31页
用户指南。

2 电路试验板 8.98美元 或同等
3 跳线设备 6.20美元 或同等
4 10千克负载细胞 8.14美元 或同等
5 仪表放大器 8.45美元 数据表
6 1 kΩ电位计 2.41美元 数据表
7 机螺丝(m4 - 0.7 x 25毫米)。
数量2
0.76美元 或同等
8 机螺丝(m5 - 0.8 x 25毫米)。
数量2
0.76美元 或同等

连接/示意图

单片机使用SPI接口(SPI通道1)LCD driver-figure 7显示简单交流工作室的硬件配置GUI C8051的SPI是如何配置的。

图7。SPI接口配置

选择测量放大器的增益

如前所述,励磁电压应用于负载细胞5.0 vdc,这将产生一个输出电压5 mv 22磅(满载)。虽然单片机的ADC输入范围从0到3.30 vdc,我想3.00 vdc对应满载(22磅)。这将提供一些空间测压元件的过载,满载的120%,或26磅。鉴于这些条件,我可以计算所需的增益in-amp,然后选择适当的价值获得电阻器(RG)。

$ $ 5 mv *增益= 3000 mv $ $

$ $ =获得\压裂{3000 mv} {5 mv} = 600 $ $

RG方程(每AN627数据表22页):

$ $ R_G = \压裂{200 kω\}{长高5}$ $

$ $ R_G = 336ω\ $ $

图8。连接图。重要的是解耦电容(C1)被放置尽可能接近AD627的权力销。点击放大

配置单片机开发工具包

前驱动单片机开发工具包,毕竟连接,确保配置如下:

跳投:

  • J11: VBAT WALL_PWR
  • 纺纱,:VDD VIO
  • J17: VBAT_PIN VBAT

开关:

  • SW4:设置为“2单元”
  • 电源开关(SW5)到“关”的位置

电缆:

  • 带状电缆调试适配器连接到J9
  • USB调试适配器连接到你的电脑。
  • 5.0 vdc适用于连接器P2。

附加负载细胞基板

负载细胞本身有漏洞,令我惊奇的是,螺纹。这使它很方便当附加负载细胞基板。再一次,让我惊讶的是,一组孔大于另一个。嗯,我不确定制造商为什么这么做,但尽管如此,我能找到合适的螺丝在当地五金店。

  • 量二:机螺丝、m4 - 0.7 x 25毫米
  • 量二:机螺丝、m5 - 0.8 x 25毫米
  • 注意:这四个螺丝(25毫米)的长度取决于垫片的厚度和基板本身。

图9。负载细胞基础板安装。点击放大

图10。完成负荷细胞系统(无5 vdc电源)。点击放大

固件

类似于我的另一个项目(添加一个LCD和键盘一个转速表和速度表高杠杆率),对于这个项目我硅实验室的例子液晶项目(CP240x_LCD_Example),这使我的固件写入任务更加容易。

in-amp的输出连接到端口0.6,输入到单片机的ADC。下面是一个列表的功能/糖果,我整合到固件:

  • 固件和平均200的样品测量电压之前将数据发送到液晶屏幕。
  • 如果应用的负载大于或等于23磅,液晶显示器将显示“超载”。
  • 当系统第一个精力充沛,固件将显示皮重(即。在启动时,体重变成了零重量)。
  • 配置液晶显示小数点后一位。
/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / /主程序循环/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -而(1){/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / /测量模拟值/ / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - / / / / ADC转换。/ / / /启动转换AD0INT = 0;/ /清楚ADC0 conv.完成国旗AD0WINT = 0;/ /清除窗口探测器国旗AD0BUSY = 1;/ /启动转换/ /等待转换完成时(! AD0INT);/ / Vref (mV) / /测量(mV) = - - - - - - - - - - - - - - - - - *(比特)/ /结果(2 ^ 10)1(比特)mV = ADC0;mV * = VREF;mV / = 1023;磅=(浮动)(mV * 22.0/300.0);/ /放大系数实际上是22磅/ 3000 mv,但300年/ /用来显示小数点后一位。 if(zero_scale == 0) // Used for zeroing the scale during power-up. { zero_offset = lbs; zero_scale = 1; } lbs = (lbs - zero_offset); AverageAccumulator += lbs; // Add the current lbs measurement to the accumulator. AverageMeasurements--; // Decrement the measurement counter. if(AverageMeasurements == 0) { // Calculate the average value: divide the summed AverageAccumulator by the // number of measurements. lbsAverage = (AverageAccumulator / 200.0); AverageAccumulator = 0; // Reset AverageMeasurements = 200; // Reset if(lbsAverage >= 230) // If the measured weight is greater than equal to // 23.0 lbs, then display "OVERLOAD" on the LCD screen. // The load cell is rated at 10kg (or 22 lbs), with // safe overload of 120%, or 12kg (26 lbs). { sprintf(display_string, "OVERLOAD"); } else sprintf(display_string, "d lbs ", (unsigned int) lbsAverage); } //----------------------------------------------------------------------- // Update LCD //----------------------------------------------------------------------- // // Update the LCD Display // LCD_OutString(display_string); }

这个项目的所有代码可以从下面的链接下载。

建设和加载代码,验证的准确性

Load_Cell-Weight_Scale_AAC.zip

在下载、构建和加载代码,我用我的厨房秤作为参考/体重测量的比较。(下图)的视频中可以看到,我把各种重量的样品(我老从大学教科书!)在厨房秤和负载细胞系统。你可以观察,显示测量尺度都是极其密切的。

下一步让一个真正的产品

如果你或我,决定做一个实际计重系统使用一个定制的PCB设计这个项目,一定要遵循所描述的接地和布局的建议数据表(20页)。同时,用金属板代替木基板将增加的稳定性和鲁棒性的物理设计。

重的快乐!

自己尝试这个项目!BOM。

8的评论
  • C
    catalin_cluj 2017年10月13日

    我认为这是不对的你说TI的部分有问题没有明确说明它是什么,或者它可能是你使用它的方式。
    我没有与TI但这样含糊不清的语句和结论是非常错误的。

    喜欢的。 回复
    • RK37 2017年10月16日
      你是对的,我们需要小心说明零件有缺陷。我们修改后的部分,并将修改后的版本直到作者明确证明是有缺陷的。
      喜欢的。 回复
  • 凯文·沃尔夫 2017年10月27日

    How can you write an article about load cells and not mention the HX711? They can be had on eBay soldered onto breakout boards for about $0.75 each - shipped! NodeMCU even has an HX711 library that can read out the values from an ESP8266 via LUA script. Check outhttps://nodemcu-build.com

    喜欢的。 回复