首页 新闻 赞助 找找看

C# 电子秤开发,如何获取一个电子称重的稳定值

0
悬赏园豆:5 [已解决问题] 解决于 2017-06-15 15:53

现在在做一个电子秤称重的一个功能?现在可以不断获取到电子秤的数据,但是怎么获取一个稳定值并返回呢?比如我把一件物品放在电子秤上,如何等物品重量停下来之后获取一个稳定值?怎么去比较呢?

居~的主页 居~ | 初学一级 | 园豆:28
提问于:2017-03-23 19:20
< >
分享
最佳答案
0

称重量这种设备精度应该比显示的精度高很多。先确认一下你要输出的精度是多少?其次确认你需要的数据的有效范围,再然后确认一下稳定后,需要显示数值的延迟时间。就如同体重计,你去称买回来的一斤苹果是没什么意义的。体重计一般是10多公斤到200公斤有个范围,然后精度大约到0.1公斤。

要取稳定值一定是要取一段时间的,时间为横轴,重量为纵轴,是一个函数。根据你的描述,我大概能想象到你现在遇到的一个函数:数值从0,快速的变化到一个极大值,例如58,再下降到30,然后在58和30间震荡变稳定,趋向于40,然后东西被取走,从40开始又有一个震荡,再一下子趋向0

这样一个函数主要有3个稳定期,开始0,结束0,和称重40。排除不合理项0,似乎很容易获取40,其实工程上却不那么容易,因为无法准确定位剧烈震荡和稳定期。

设定一定的规则,排除杂项:例如如果超出合理范围直接丢弃;后一个值变化幅度很大,进行一定的数值变换;去除一定的精度。目标就是让一个变化很大的曲线,变动幅度小。甚至如果写的复杂,可以用上求导,然后导数小于某一个门限,例如0.1才取输出这个读数。

我可以想到的比较简单的方法就是前后两个取值相减超出一定幅度认为是震荡期,排除这个干扰项。连续多个取值小于一定幅度,认为是稳定期,可以用任何一个值来表示稳定期的数值。从数学上说,其实就是求变化率,就是用了导数的方法。变化率大就是震荡期,变化率小就是稳定期。

收获园豆:5
rinson | 菜鸟二级 |园豆:293 | 2017-04-05 02:25
其他回答(6)
0

取一段然后滤波求稳定时间最长的值

吴瑞祥 | 园豆:29449 (高人七级) | 2017-03-23 19:54

?具体怎么做呢,大神

支持(0) 反对(0) 居~ | 园豆:28 (初学一级) | 2017-03-23 19:58
0

你取时间段的值,过滤掉不合适的值,然后用算法(比如平均)计算得到新值返回

花飘水流兮 | 园豆:13560 (专家六级) | 2017-03-24 10:09

具体怎么做呢?

支持(0) 反对(0) 居~ | 园豆:28 (初学一级) | 2017-03-24 10:20

@久久小垠:

1.自己打开电脑。

2.自己写代码

支持(1) 反对(0) 花飘水流兮 | 园豆:13560 (专家六级) | 2017-03-24 10:57
0

耀华的秤在表头上可以设置稳定后发送

chanchaw | 园豆:65 (初学一级) | 2017-03-26 07:07

你是要我换电子秤吗?  T_T 

 

 

支持(0) 反对(0) 居~ | 园豆:28 (初学一级) | 2017-03-26 11:10
0

延时5秒钟

男人要爽 | 园豆:6 (初学一级) | 2017-03-27 13:56

怎么延时?

支持(0) 反对(0) 居~ | 园豆:28 (初学一级) | 2017-03-27 17:28

@久久小垠: 

线程阻塞

支持(0) 反对(0) 男人要爽 | 园豆:6 (初学一级) | 2017-03-29 22:31
0

Thread.Sleep(5000);

取值

固定

闪屏

黄昏MMM | 园豆:320 (菜鸟二级) | 2017-03-30 09:02

那你怎么知道是稳定的值呢?物件放的过程中重量是不断变化的

 

支持(0) 反对(0) 居~ | 园豆:28 (初学一级) | 2017-03-30 17:59

还有一点,物件放上去就马上取下来的,要在短短的0.5秒内获取稳定的值

支持(0) 反对(0) 居~ | 园豆:28 (初学一级) | 2017-03-30 18:01
0

很简单,两个参数,一个波动范围,一个波动时间

只要符合这这两个就行

猝不及防 | 园豆:2731 (老鸟四级) | 2017-06-14 14:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册