新闻  |   论坛  |   博客  |   在线研讨会
如何利用称重传感器和微控制器建立称重秤
电子资料库 | 2022-09-07 14:33:42    阅读:304   发布文章

在这个项目中,使用C8051微控制器开发套件、称重传感器和Simplicity Studio IDE制作一个称重秤。测量的重量将显示在LCD屏幕上。

液晶显示器

该项目中使用的液晶显示器是硅实验室的一部分CP2400丹麦克朗开发工具包

image.png

图1Silicon Labs CP2400DK开发套件(C8051微控制器和LCD控制器)。图片由数字键.

LCD设备本身的制造商零件号(图2)为VIM-878-DP-RC-S-LV. 如果您包括小数点和撇号(每个数字),这个“14段”LCD显示器将变成16段显示。当把8位数的16段相加时,我们看到总共128段。这种128段显示器要求使用128段驱动程序,硅实验室决定使用驱动程序p/nCP2400型(图3)

image.png

图2液晶屏,8位数字各有16段(共128段)。图片由数字键.

image.png

图3128段LCD驱动程序。图片由硅实验室(第1页和第22页)。

称重传感器

我选择使用的称重传感器是由 Uxcell公司,型号# a14071900ux0057 .

image.png

图4称重传感器。图片由亚马逊.

这种特殊的称重传感器通常称为直杆式称重传感器或平行梁式称重传感器。通常情况下,此类负载为额定负载;本项目中使用的最大重量为10公斤(或22磅)。其广告额定输出为1±0.15mV/V。这意味着,当称重传感器施加其最大额定重量(本例中为10kg)时,每1V施加在称重传感器励磁上的输出电压为1mV(±0.15mV)(见下图)。当我说电压是“施加在测压元件上”时,电压实际上是施加在惠斯通电桥应变计的励磁引线上。同样的,这就是惠斯通应变计产生输出电压(见下图)。

image.png

图5称重传感器的惠斯通电桥应变计示意图。

对于这个项目,我将采用5V作为励磁;因此,当向称重传感器施加10kg负载时,其输出将为5.0mV(±0.75mV)。因为5.0mV是一个很小的电压,它需要在被发送到微控制器之前被放大。

旁注:一些微控制器不是在这个项目中使用的有差分ADC输入;单端输入被认为是大多数微控制器的标准输入。当使用带有单端ADC输入的微控制器时,当传感器提供差分输出信号时,一个差分放大器必须利用。这种类型的放大器将差分信号转换为单端信号,可使用标准单端ADC进行测量。

仪表放大器

我选择使用的差分放大器实际上被称为仪表放大器,或安培。我用INA126PA公司输入安培数德州仪器-我买了这个装置从Digi Key3.15美元。但是,当它不能像广告中所说的那样运行时,经过大约一个小时的故障排除,我决定转移到B计划:使用AD627型(来自模拟设备),我也买了。我买了这个零件鈥数量一-从Digi Key以一个惊人的价格 $8.45! 我不知道这些安培表要花这么多钱!幸运的是,这个装置工作正常。因此,我想我将来会使用模拟设备中的in-amp器件,而不是TI部件,尽管一般来说,我是TI部件和价格的粉丝。设置这两个单位的增益很简单:只需要一个外部电阻。此外,TI和模拟设备部分都被宣传为单电源或双电源设备,我更喜欢使用单电源。

image.png


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

项目#

描述/来源

成本(每个)

其他信息

1

C2400DK开发套件

$148.75

用户指南
快速入门指南
C8051F930产品介绍
注:示意图见
用户指南

2

试验板

$8.98

或同等产品

3

跨接导线套件

$6.20

或同等产品

4

10kg称重传感器

$8.14

或同等产品

5

仪表放大器

$8.45

数据表

6

1 kΩ电位计

$2.41

数据表

7

机螺钉(M4-0.7 x 25mm)。
数量2

$0.76

或同等产品

8

机用螺钉(M5-0.8 x 25mm)。
数量2

$0.76

或同等产品

连接/示意图

微控制器使用SPI公司用于与LCD驱动程序通信的接口(SPI通道1)如下图7所示,Simplicity Studio的硬件配置GUI显示了如何配置C8051的SPI。

image.png

图7SPI接口配置

选择仪表放大器的增益

如前所述,施加在称重传感器上的励磁电压为5.0VDC,将产生5mV的输出电压(满载22 lbs)。虽然微控制器的ADC的输入范围是0到3.3V,但我希望3V对应于全负荷(22磅)。这将为称重传感器的过载提供一些净空,即满载的120%,或26磅。在这些条件下,我可以计算出所需的放大器增益,然后选择适当的增益电阻值(RG ).

5mV∗Gain=3000mV

Gain=3000mV/5mV=600

RG公式(perAN627产品介绍第22页):

RG=200kΩ Gain−5

RG=336Ω

image.png

图8连接图。重要的是去耦电容器(Cone)尽可能靠近AD627的电源插脚

配置微控制器开发工具包

在给微控制器开发套件通电之前,在完成所有连接后,请确保按如下方式配置:

跳线:

  • J11:VBAT到GND

  • J12:VDD到VIO

  • J17:VBAT_引脚到VBAT

开关:

  • SW4:设为“2单元”

  • 电源开关(SW5)置于“关闭”位置

电缆:

  • 将带状电缆调试适配器连接到J9

  • 将USB调试适配器连接到电脑。

  • 向接头P2施加5.0 VDC电压。

连接称重传感器底板

令我惊讶的是,测压元件本身有螺纹孔。这使得在将称重传感器连接到底板时非常方便。再一次,令我惊讶的是,一组洞比另一组大。嗯,我不知道制造商为什么这么做,但是,尽管如此,我还是在当地的五金店找到了合适的螺丝。

  • 数量2:机械螺钉,M4-0.7 x 25mm

  • 数量2:机用螺钉,M5-0.8 x 25mm

  • 注:这四个螺钉(25毫米)的长度取决于垫片和底板本身的厚度。

image.png

图9称重传感器安装在底板上。

图10完整的称重传感器系统(sans 5VDC电源)。点击放大.固件

类似于我的另一个项目(在转速表和速度表上增加LCD和键盘),在这个项目中,我充分利用了Silicon Lab的示例LCD项目(CP240x_LCD_example),这使我的固件编写任务更加容易。

输入放大器的输出连接到端口0.6,这是微控制器ADC的输入。下面是我在固件中加入的特性/优点的列表:

  • 固件在将数据发送到LCD屏幕之前,采集并平均200个测量电压的样本。

  • 如果施加的负载大于或等于23磅,LCD将显示“过载”

  • 当系统首次通电时,固件将显示皮重(即启动时的重量变为零重量)。

  • LCD配置为在小数点后显示一位数字。

   //----------------------------------
   // Main Application Loop
   //----------------------------------
   while (1)
   {         //-----------------------------------------------------------------------
         // Measure Analog Value
         //-----------------------------------------------------------------------
         //
         // Take ADC conversion.
         //

         // Initiate a Conversion
         AD0INT = 0;                         // clear ADC0 conv. complete flag
         AD0WINT = 0;                        // clear window detector flag
         AD0BUSY = 1;                        // initiate conversion

         // Wait for conversion to complete
         while(!AD0INT);         //                           Vref (mV)
         //   measurement (mV) =   --------------- * result (bits)
         //                       (2^10)-1 (bits)

         mV =  ADC0;
         mV *= VREF;
         mV /= 1023;
         lbs = (float) (mV * 22.0 / 300.0); // The multiplying factor is actually 22lbs/3000mV, but 300
					    // is used for displaying one digit after the decimal point.
         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);
   }

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

生成并加载代码,并验证刻度的准确性

称重称重秤

在下载、构建和加载代码之后,我使用厨房秤作为测量体重的参考/比较。如视频(下图)所示,我放置了各种重量样本(我大学时的旧课本!)首先是厨房秤,然后是称重传感器系统。正如你所观察到的,两个刻度在显示的测量值上非常接近。

制造真正产品的下一步

如果您或我决定使用定制的PCB设计基于此项目制作一个实际的重量测量系统,请务必遵循中所述的接地和布局建议数据表(第20页)。此外,用金属板代替木制底板将增加物理设计的稳定性和稳健性。

称重快乐!


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客