与中国芯片ADC Hx711一起使用

写这篇文章的原因是希望处理基于Hx711芯片的模块24位delta sigma ADC转换器。转换器本身根据制造商推荐的开关电路以现成模块的形式组装。在Andrey Gerasimenko的博客“ 3.3V的ADC NX711 –不相信中文文档,而不仅仅是……”中,对此模块的操作有评论

为了测试该模块,组装了一个基于ATmega16微控制器的电路,ADC模块,基于HD44780控制器的BC1602两行LCD,四个按钮。 Vision AVR代码1.25.9 Professional版本,AVR Studio 4版本4.09.0.338(AVR JTAG USB编程器)不仅可以用于对晶体进行编程,还可以逐步跟踪(如果需要的话)程序在微控制器中的执行,被用作开发环境,几乎是实时的。



ADC的信号源选择了最大重量限制为40 kg的中国制称重传感器。和标准传感器插入单元。应该注意的是,使用“本机”积分单元可以使您从单点应变仪CZL A6型获得所有假定的输出数据。因此,在使用平台技术规格中指定的尺寸来称重货物的位置时,应使用单点型应变仪进行设计,以使拉伸桥的不平衡信号不取决于平台上负载的位置。这是传感器主体的机械特性:几何尺寸,粘合的应变片薄膜的位置,尤其是传感器主体中间的“骨头”切口,影响施加到传感器主体的扭矩的平台大小决定了这种独立性。



好吧,最后一个来源是“ GOST 29329-92。静态秤。一般技术要求。”该GOST定义了重量测量仪器的属性。使用EXCEL办公程序也很重要。我正在使用EXCEL 2003 XP3。这使您可以使用现成的方法快速处理结果。

我希望重复实验的所有必要信息都已充分提供。

现在,我用来与该模块一起使用的程序本身。该程序专注于CHECK,几乎不直接,即无需更改,即可将其应用于某些应用需求。虽然,正如他们所说,“取决于申请地点”。

程序本身是一个块结构。它由4个例程和第五个主要main组成。第一个子例程:ReadCount,从ADC模块读取数据并将其生成到Count变量中。

CreatInput从32个值生成转换数据的输入数组。

CreatOutput通过组织窗口大小为16的数据的移动平均值来生成ADC转换数据的输出数组。

按键,一个用于响应按键的简单程序。

这就是全部。这些变量基本上都是全局变量,特别是因为允许使用大量资源。



主程序从创建CreatInput输入数组开始,然后使用移动平均法过滤输入数据。该过滤器的选择基于以下内容。程序运行时,显示屏上的数据会在相当大的范围内更改其值。我在平台上以零努力获取了ADC的值并将其制成表格。这些值是通过在AVR Studio环境中使用JATAG USB调试器获得的。



在Excel文件“数据采集”中的“移动平均值”选项卡上,显示了以3.12.16间隔的平均窗口对波动的输入数据InputBuff(振荡范围436个单位)进行过滤的结果。结果显示在A37-A40单元格中。从中可以看出,在这种情况下,最有效的是带有16个样本窗口的移动平均值。

内置图表清楚地显示了这一点。数据从工作的控制器中获取,并在过渡到数据显示过程时停止。图片中显示了此类数据捕获的说明性示例。



通过使用各种数字滤波器,没有任何数据过滤方法可以“抑制”输入波动。如果您查看输入数据的图形,那么这里的高斯分布甚至不会“闻到”。正如用户Nikopol_86在博客“ ...不相信中文文档”中所确认的那样

Nikopol_86 2019年2月5日在09:27 0


老实说,他在所有方面都有足够的声音。我对输入电路短路发出的ADC代码的密度分布进行了一些研究,因此有高达1000 1_5V的扩展,并且nifiga不是正态分布定律,这表明电路板布线有问题,ADC或全部合在一起。我还注意到,他也没有温度稳定性,并且声称的工作温度范围与实际不符。仅仅是因为将5 kg应变计连接到ADC时,将房间温度改变1度即可使读数增加2克,如果用手指加热微电路,则读数会飞到5-7克。总的来说,我为自己得出的结论是,该设备只能制造猫食分配器,一个电车站的准确度将绰绰有余。而且,普通的解决方案并不便宜,因为您必须使用AO或T1的高质量ADC。

如您所见,结论得到了证实。的确如此:
jushabrauser于2019年2月4日下午12:52。
信噪比<1,这将无济于事。
即使有桥接电路。

因此,在正常情况下(没有特殊的数学和/或电路),至少有8个低阶位会产生废话(很可能)。

24个诚实的中国小伙子需要350卢布?不要告诉我的拖鞋。
如果熨斗本身在“说谎”,您该怎么办?
在这里,即使三阶非线性滤波器也无济于事,因为源数据不是蛋糕。

正是从这个地方开始,我想看看这个模块在秤的组成方面的功能。在网络上搜索ADC的最后几位的抖动问题,导致论坛kazus.ru/forums/showthread.php?t=105320&page=4。这是有关稳定读数的整个讨论。但是,没有一种提议的数学方法“校正”我收到的输入数据。为了稳定读数,从“硬件”本身进行了介绍:数字和模拟地的连接以及输入B到地的短路。我们使用了完全屏蔽并通过6v电池(后接稳定器7805)和控制器电路分开为模块供电。没有结果,输入数据在摆动...

因此,无法获得“干净的”第24类,在我看来,这里的原因似乎是质量差的电路。因此,您需要调整最终的转换范围。为此,在ReadCount程序中,引入了将数据除以100的行。100小于2至8度。至。 AD转换有16位。但是,即使这样的限制也不能使证词可靠。这是因为应变仪的特性。

因此,在应用校准过程(将ADC的值和平台上的重量链接在一起)后,重量以克显示。他显示500克为数字500,一千克为1000。分割价格为1克。那些。我们得到40公斤传感器40,000格。根据称重传感器的技术数据,我们只能从传感器获得3,000格(传感器名称中的符号C3)。因此,分割的价格应为(40000/3000)= 13.3克。但是,根据GOST 29329,重量计量不能用数字3进行操作。应使用数字:

2.1.3校准分度值(e),秤分度价格(d)和读数分辨率(dd)的质量单位应选自以下值:1X10a; 2X10a; 5X10a,其中a为正,负整数或零。

至。该传感器的分割价格,由制造商保证10克。也就是说,输出格式应为0.0x kg。其中x = 1,2,3,... .0。让我们尝试将分割价格定为5克。列出了相关的编程操作。经过这样的限制后,我们从传感器中“提取40,000 / 5 = 8,000格”,这是允许值的2.6倍。经过这些假设,得出的量表相当稳定。

上面关于所应用的称重传感器及其“分辨率”的说明不允许我们明确地声明该模块无法产生24位转换。但是,我已经在另一台设备上使用不同的AD转换器测试了此传感器在1克分辨率下的运行情况。在该设备上,由于重量波动不超过3克,因此可以认为传感器的操作和转换令人满意。

什么不允许在贸易中使用此ADC?好吧,首要也是最重要的是测量值对温度的依赖性。其次,使用内置于ATMEGA的除法和乘法运算,尤其是对于8位,很难在这些条件下在整个重量范围内校准秤。应当记住,程序不会对传感器过载做出任何反应。

如何克服这些不便。首先,进入温度传感器并根据温度值调整重量读数。这非常复杂。 “更便宜”是引入校准选项,针对不同的负载,并根据温度引起的误差,校准工作中使用的重量。

第二个更难。用表格和剪切操作代替乘法和除法过程。我认为这是在练习举重时使用此模块的最佳方法。

要完成要求的描述用于创建秤的程序,就必须使用连接到每个平衡“秤的计量(认证)的校准的计划”了。

结论:可以根据m / s Hx711创建秤,但要符合秤的所有计量要求。必须在单独的过程中提供对转换的温度依赖性的校正。使用分辨率超过16位的模块需要单独的方法和控制。

Source: https://habr.com/ru/post/undefined/


All Articles