0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述采用蒙特卡洛分析可靠性

电子工程师笔记 来源:电子工程师笔记 2023-05-29 11:56 次阅读

ADC检测多个组合按键的方法

一般情况下,一个GPIO口只能连接一个按键,通过检测外部输入的高、低电平判断按键的开闭状态。

使用按键切换串联或并联的电阻网络电压的通路,可能得到该网络与不同的按键状态相对应的分压值,处理器检测该分压值之后再映射到按键状态,从而实现按键检测。

接如果按键同一时刻只有一个闭合,可以用下图分压电阻相互串联的方式检测。

25bf1d3a-fdcc-11ed-90ce-dac502259ad0.jpg

电阻串联分压的按键检测电路,适用于没有组合键的情况

如果按键存在多个同时闭合的情况,则应该用下图电阻并联的方式实现检测;

25c6302a-fdcc-11ed-90ce-dac502259ad0.jpg

存在多个按键同时被按下时的ADC检测电路

当需要检测n个可能同时闭合的按键时,存在种按键状态的组合。

比如,2个按键存在以下4种按键状态的组合:

25cd38a2-fdcc-11ed-90ce-dac502259ad0.jpg

2个按键的4种组合状态

以下电路可用于2个组合按键的检测,

25d230b4-fdcc-11ed-90ce-dac502259ad0.jpg

2个组合按键的检测电路

2种按键的4种不同状态,可以得到4个不同的分压值,经过12位ADC转换得到不同的ADC值,以此为中心划分为4个区间。

25d994f8-fdcc-11ed-90ce-dac502259ad0.jpg

4种组合状态的ADC区间划分

处理器通过判断转换得到的ADC值所在区间,以判断输入按键的状态。

如果ADC区间范围太小,当按键处于该区间对应的状态时,转换的ADC值有可能因为误差而落在其它区间,造成按键状态的误检测,为了避免这一情况,应该选择合适的电阻值,使得每一组按键状态对应的ADC区间的范围尽量大。

电阻阻值的选取

对于3个组合按键的ADC检测,根据上面的分析,电阻阻值的选择转换为以下约束条件,最大值的求解:

选择一组电阻R2,R3,R4,R1的阻值,计算3个按键的8个组合状态下的并联电阻与R1的ADC值,以此为中心划分8个区间,与相邻值的平均值为边界,划分8个区间;

每一个区间的边界之差为区间范围,求得8个区间中的最小范围值;

在所有可选阻值中,求解使得8个区间的最小范围值最大的一组阻值。

我们可以通过编写octave程序,将R2,R3,R4,R1遍历所有可选阻值,求出其中使最小范围值最大的一组阻值,程序如下:

re = linspace(1, 20, 30);%1kΩ-20kΩ之间等间隔取30个阻值
rl=length(re);
rk = [0 0 0;0 0 1;0 1 0; 0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1];%3个按键的8种状态列成3*8的矩阵
maxdiff = 0;
r2o = 0;
r3o = 0;
r4o = 0;
r1o = 0;
for i=1:rl
  for j=1:rl
    for m=1:rl
      for n=1:rl
         r2=re(i);
         r3=re(j);
         r4=re(m);
         r1 = re(n);
         gn = rk * [1/r2; 1/r3; 1/r4] + 0.00001;%矩阵乘法计算R2,R3,R4并联的导纳
         rn = 1./gn;%计算3个电阻的并联阻抗
         ad = 4096 * r1 ./ (rn + r1);
         ads = sort(ad);
         mind = 65535;
         for p = 1:7
            nd = ads(p + 1) - ads(p);
            if(nd < mind)
              mind = nd;%计算8个区间的最小范围值
            endif
         end
         if(mind > maxdiff)
          r2o = r2;
          r3o = r3;
          r4o = r4;
          r1o = r1;
          maxdiff = mind;//求解最小范围值的最大值
         endif
      end
    end
  end
end
maxdiff
r2o
r3o
r4o
r1o

遍历得到,R2=8.2kΩ,R3=10.8kΩ,R4=18.0kΩ,R1=6.3kΩ,此时8个ADC区间的最小范围值为186。‘

25e02c14-fdcc-11ed-90ce-dac502259ad0.jpg

3个按键8组状态的ADC区间划分

汽车电子设计规范对按键检测的要求

根据某百年车企某特的软硬件设计规范要求,对按键检测有以下要求:

1) 按键断开时,最小的绝缘电阻为100KΩ,对于涉水的开关(比如门状态开关,最小的绝缘电阻为10KΩ)

2) 接键闭合时,最大的接触电阻为50Ω

25e8ebba-fdcc-11ed-90ce-dac502259ad0.jpg

考虑了绝缘电阻和接触电阻的按键模式

3)对于有机械触点的按键,在闭合瞬间,需要提供不小于10mA的润湿电流(wetting current)

润湿电流是指能够通过维持一定的小电弧清理触头表面的尘垢和腐蚀以保持触头状态良好的最小电流值。

采用蒙特卡洛分析可靠性

R2、R3、R4、R1选择1%精度的电阻,考虑初始误差,老化和温度的影响,其阻值在95%至105%之间均匀分布;

按键断开时的绝缘电阻在100KΩ-1MΩ之间均匀分布;

按键闭合时的绝缘电阻在0-50Ω之间均匀分布;

ADC转换误差在-10LSB于+10LSB之间均匀分布;

用Octave编写蒙特卡洛仿真程序,

format long;
adc = 04095;
adcc = zeros(1, 4096);
r2=8.2;
r3=10.8;
r4=18;
r1=6.3;
n=1000000;
for i=1:n
  r2d = ((rand - 0.5)*10/100 + 1) * r2;
  r3d = ((rand - 0.5)*10/100 + 1) * r3;
  r4d = ((rand - 0.5)*10/100 + 1) * r4;
  r1n = ((rand - 0.5)*10/100 + 1) * r1;
  r2on =r2d + (rand -0.5) * 0.05 + 0.025;
  r3on =r3d + (rand -0.5) * 0.05 + 0.025;
  r4on =r4d + (rand -0.5) * 0.05 + 0.025;
  r2off =(rand - 0.5)*900 + 550;
  r3off =(rand - 0.5)*900 + 550;
  r4off =(rand - 0.5)*900 + 550;
  rk = [0 0 0;0 0 1;0 1 0; 0 1 1; 1 0 0; 1 0 1; 1 1 0; 1 1 1];
  rki = floor(rand*8);
  rkn = rk(rki + 1,:);
  r2n = r2on;
  r3n = r3on;
  r4n = r4on;
  if(rkn(1) == 0)
    r2n = r2off;
  end
  if(rkn(2) == 0)
    r3n = r3off;
  end
  if(rkn(3) == 0)
    r4n = r4off;
  end
  rs = 1/ (1 / r2n + 1 / r3n + 1 /r4n);
  adv = r1n * 4096 / (r1n + rs);
  adn = floor(adv +(rand - 0.5) *20);
  if(adn < 0)
    adn = 0;
  end
  if(adn >= 4096)
    adn = 4095;
  end
  adn=adn+1;
  adcc(adn)=adcc(adn)+1;
end
 plot(adc, adcc);

取1000000个样本,统计仿真得到的ADC值,绘制分布图,如下:

25ee2684-fdcc-11ed-90ce-dac502259ad0.jpg

ADC值分布图

可见,8个按键组合的ADC值没有限定在区间范围内,而是发生了重叠。

也就是发生了按键状态误检测的现象。

结束:

将一个ADC口用于检测3个可能同时按下的按键时,会发生误检测的情况。

同时使用ADC口检测按键还存在没办法提供润湿电流的情况,在工作环境比较恶劣时,按键的机械触点易沾染灰尘等杂质,易被氧化,大大降低按键的使用寿命。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电阻
    +关注

    关注

    85

    文章

    5328

    浏览量

    170793
  • adc
    adc
    +关注

    关注

    97

    文章

    6288

    浏览量

    542363
  • GPIO
    +关注

    关注

    16

    文章

    1169

    浏览量

    51503

原文标题:采用蒙特卡洛分析可靠性

文章出处:【微信号:电子工程师笔记,微信公众号:电子工程师笔记】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    蒙特卡洛法求解估计值

    蒙特卡洛
    YS YYDS
    发布于 :2022年10月28日 23:05:40

    MATLAB蒙特卡洛算法汇集篇

    蒙特卡洛算法,大家可以看看
    发表于 03-30 17:55

    模拟电路故障:用PSPICE做电路故障蒙特卡洛分析遇到问题

    本人新手,研究生论文为模拟电路故障仿真,在用PSPICE做电路故障蒙特卡洛分析,现在遇到问题,如何将仿真结果导入Matlab进行画图或者分析。还请高手给予指点。万分感谢!
    发表于 07-29 15:38

    multisim 对电路进行蒙特卡洛分析 在相同的时间内多次分析后导出的数据点怎么不一样多呢?

    multisim 对电路进行蒙特卡洛分析在相同的时间内多次分析后导出的数据点怎么不一样多呢?
    发表于 11-05 22:05

    求助关于multisim中蒙特卡洛分析不能添加输出节点的问题

    请问各位大神有没有什么好的方法能让我一次观测好多变量。举个例子如图。我只能选择一个变量,如V(probe1)进行***仿真。我能不能选择V(probe1)~V(probe5)之后再进行蒙特卡洛仿真呢?或者有没有什么方法能让我每进行一次蒙特卡洛仿真的时候能同时观测5个变量值
    发表于 03-05 16:53

    蒙特卡洛分析方法示例

    在仿真中,可以对整体特性的波动进行评估。这在电路整体的特性受多个电路元素影响时是非常有效的分析方法。其实方法有很多,一般采用的方法是围绕对整体特性有较大影响的电路元素来模拟波动。蒙特卡洛分析
    发表于 07-12 04:20

    用ADE XL做蒙特卡洛仿真分析,要怎样设置呢?

    用ADE XL做蒙特卡洛仿真分析,在弹出的对话框里面,要怎样设置呢?只知道有一个是设置仿真点数的,其他的各项设置都是什么含义呢?
    发表于 06-22 06:36

    蒙特卡洛分析时出现错误是什么原因导致的?

    蒙特卡洛分析时出现这个错误是什么原因蒙特卡洛仿真有用吗?
    发表于 06-25 07:59

    求助!!!!蒙特卡洛仿真时出现错误如何解决???

    求助!!!! 在蒙特卡洛仿真时出现下面的错误如何解决呢?? 不知道是不是model配置的有问题,不清楚model file里的文件是什么意思以及如何选取??
    发表于 11-17 10:45

    热辐射传输中的蒙特卡洛方法

    热辐射传输中的蒙特卡洛方法蒙特卡洛方法概述:蒙特卡洛方法是一种随机模拟方法。将其用于辐射传热计算时,其基本思想:将辐射能量看成由大量独立的光束(光子)组成
    发表于 07-06 07:24 54次下载

    基于蒙特卡洛方法的碰撞预警系统仿真

    本文提出了一种基于蒙特卡洛方法的汽车碰撞预警系统。本系统可以自动连续测量行驶车辆前方障碍物的速度和方位等数据,经过估计产生车体和目标的姿态,利用蒙特卡洛方法计
    发表于 12-16 13:52 25次下载

    蒙特卡洛模拟优缺点

    本文以蒙特卡洛法为中心,对蒙特卡洛的优缺点、缺点的改进方法、蒙特卡洛的基本原理思想与应用领域进行了详细的概述。
    发表于 12-15 14:31 5.5w次阅读
    <b class='flag-5'>蒙特卡洛</b>模拟优缺点

    蒙特卡洛模拟方法

    蒙特卡洛是摩纳哥大公国的一座知名赌城,里面遍布轮盘赌、掷骰子和老虎机等游戏,类似的,蒙特卡洛方法的建模机制也基于随机数和统计概率。
    的头像 发表于 06-05 11:13 9504次阅读

    基于蒙特卡洛相似度遗传算法的运输求解算法

    收敛速度;最后,采用蒙特卡洛相似度接收的方式,避免算法陷入局部最优解闷题。通过收敛速度、最优解偏差率、相对标准差等参数对基本遗传算法GΔ和改进遗传算法IGA进行比较,验证了所提算法的有效。针对杭州地理数据,设计开
    发表于 05-10 11:27 3次下载

    PSpice仿真教程之蒙特卡洛分析

    前面我们已经讲了PSpice提供的三种最基本的分析方法:直流分析、交流扫描分析和瞬态分析,也讲了一种进阶分析:参数扫描
    的头像 发表于 11-10 09:57 1.4w次阅读