如何构建一个磅秤使用称重传感器和单片机
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美元 | 用户指南 |
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。
我认为这是不对的你说TI的部分有问题没有明确说明它是什么,或者它可能是你使用它的方式。
我没有与TI但这样含糊不清的语句和结论是非常错误的。
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