历史上的今天
返回首页

历史上的今天

今天是:2025年03月31日(星期一)

正在发生

2020年03月31日 | 单片机ADC采样算法----卡尔曼滤波

2020-03-31 来源:eefocus

关于卡尔曼滤波,看看百度百科上的定义

算法的核心思想是,根据当前的仪器"测量值" 和上一刻的 "预测量" 和 "误差",计算得到当前的最优量.


再预测下一刻的量, 里面比较突出的是观点是. 把误差纳入计算, 而且分为预测误差和测量误差两种.通称为 噪声. 还有一个非常大的特点是,误差独立存在, 始终不受测量数据的影响。


下来先了解一个卡尔曼滤波中几个参数的含义:概率(Probability),随即变量(Random Variable),高斯或正态分配(Gaussian Distribution)还有State-space Model等等。


关于卡尔曼公式的含义及推导,网上已经有很多文章了,这里不在赘述,直接看C代码的实现。


/*

    R值固定,Q值越大,代表越信任测量值,Q值无穷大,代表只用测量值。

             Q值越小,代表越信任模型预测值,Q值为0,代表只用模型预测值。

*/

//参数一

float  KalmanFilter( float  inData )

{

    static float prevData = 0;                                 //上一个数据

    static float p = 10, q = 0.001, r = 0.001, kGain = 0;      // q 控制误差 r 控制响应速度

    p = p + q;

    kGain = p / ( p + r );                                      //计算卡尔曼增益

    inData = prevData + ( kGain * ( inData - prevData ) );      //计算本次滤波估计值

    p = ( 1 - kGain ) * p;                                      //更新测量方差

    prevData = inData;

    return inData;                                             //返回估计值

}

现在测试一下卡尔曼滤波的效果,通过函数发生器产生一个锯齿波,送到单片机的AD口,单片机读取采集到的AD数据后,经过卡尔曼滤波算法,然后将采样的数据和滤波后的数据通过串口发生出来,并在串口波形显示软件上显示。


void main( void )

{

  

    while( 1 )

    {

        val1 = ReadVol_CH3();            //读取AD采样数据

        dat = ( float )val1;

        dat =    KalmanFilter( dat );    //卡尔曼滤波

        printf("A%drn",val1);          //打印结果

        printf("B%2frn",dat);

    }

}


现在看一下滤波的结果

蓝色曲线为原始采样的数据曲线,橙色曲线为经过卡尔曼滤波后的曲线。


下面改变Q和R的值在测试一下滤波效果。


修改后的参数如下


//参数二

unsigned long kalman_filter( unsigned long ADC_Value )

{

    float LastData;

    float NowData;

    float kalman_adc;

    static float kalman_adc_old = 0;

    static float P1;

    static float Q = 0.0003;

    static float R = 5;

    static float Kg = 0;

    static float P = 1;

    NowData = ADC_Value;

    LastData = kalman_adc_old;

    P = P1 + Q;

    Kg = P / ( P + R );

    kalman_adc = LastData + Kg * ( NowData - kalman_adc_old );

    P1 = ( 1 - Kg ) * P;

    P = P1;

    kalman_adc_old = kalman_adc;

    return ( unsigned long )( kalman_adc );

}


测试波形

蓝色曲线为原始采样的数据曲线,橙色曲线为经过卡尔曼滤波后的曲线。


和第一次测试的波形图对比后可以发现,第二次经过卡尔曼滤波后的波形变化非常大,参数改变后锯齿波被滤成接近于直线了。


可以看到不同的R、Q值会对测量结果有很大的影响。


Q:过程噪声,Q增大,动态响应变快,收敛稳定性变坏


R:测量噪声,R增大,动态响应变慢,收敛稳定性变好


具体各个参数的如何选择,只有在应用中根据测量结果,自己慢慢调整。目前还没有找到权威的资料来讲解这些参数如何选择。

推荐阅读

史海拾趣

Herrmann Kg公司的发展小趣事

随着全球市场的不断扩展,Herrmann Kg积极实施全球化发展战略。公司在德国和匈牙利设有生产厂房,并在欧洲、美洲和亚洲等多个国家设有分支机构。通过全球化布局,Herrmann Kg能够更好地服务全球客户,同时利用各地的资源和优势进行技术创新和市场拓展。这种全球化战略不仅提升了公司的市场影响力,还为其未来的持续发展奠定了坚实的基础。

请注意,以上故事是基于Herrmann Kg在超声波焊接技术领域的整体发展情况进行构想的,并非直接来源于特定事件的报道或官方声明。因此,在描述过程中可能存在一定的想象和推测成分。然而,这些故事旨在展示Herrmann Kg在电子行业及相关领域中的发展成就和趋势。

Coherent Inc公司的发展小趣事

Coherent Inc.在激光技术领域取得了多项技术突破,如固态激光器、半导体激光器、气体激光器、飞秒激光器等。这些技术的突破不仅提升了公司的产品性能和质量,也使其在行业中处于领先地位。公司的产品广泛应用于科学研究、工业制造、医疗诊断和治疗、通信等领域,为这些领域的发展做出了重要贡献。

HALO Electronics公司的发展小趣事

随着公司的发展,Coherent Inc.开始通过收购和整合来增强自身实力。1998年,公司以6500亿美金收购了Palomar Medical Technologies的部分业务,这一举措进一步拓宽了公司的业务范围和技术领域。此外,公司还陆续收购了多家具有技术优势的公司,如Positive Light和Lambda Physik,这些收购不仅增强了公司的技术实力,也使其在激光技术领域的地位更加稳固。

Clulite公司的发展小趣事
  1. 创业初期
    • 描述Clulite公司的创始人或核心团队如何识别电子行业中的某个市场机遇。
    • 讲述他们是如何筹集初始资金,设立公司,并开发出第一款产品或解决方案的。
    • 可以提及公司在初创阶段面临的挑战,如技术难题、市场竞争等。
  2. 技术创新
    • 讲述Clulite如何通过研发创新,推出了一款颠覆性的产品或技术,从而获得了市场认可。
    • 详细描述这一创新过程,包括研发团队的努力、关键技术的突破等。
    • 提及这一创新如何帮助公司在市场上取得了竞争优势。
  3. 市场拓展
    • 描述Clulite如何逐步扩大市场份额,从地区市场走向全国乃至国际市场。
    • 可以讲述公司如何建立销售网络、与合作伙伴建立合作关系,以及参与行业展会等活动来推广品牌和产品。
    • 提及公司在市场拓展过程中遇到的挑战和应对策略。
  4. 品质管理
    • 讲述Clulite如何注重产品质量和客户体验,通过严格的质量控制流程来提升产品可靠性。
    • 描述公司如何建立完善的售后服务体系,为客户提供及时、专业的支持。
    • 提及这些举措如何帮助公司赢得了客户的信任和口碑。
  5. 可持续发展
    • 讲述Clulite如何关注环境保护和社会责任,推动公司的可持续发展。
    • 描述公司如何采取环保措施,减少生产过程中的污染排放。
    • 提及公司如何参与社会公益事业,回馈社会。

请注意,这些故事需要根据Clulite公司的实际情况进行调整和补充。如果你需要更具体的内容,建议查阅Clulite公司的官方网站、新闻报道或行业分析报告,以获取更详细的信息和数据。

Altera (Intel)公司的发展小趣事

Altera是一家以FPGA(可编程逻辑器件)和相关技术为主的半导体公司,于1983年成立于美国加利福尼亚州的圣塔克拉拉。以下是关于Altera公司发展的五个相关故事:

  1. 成立与早期发展:Altera公司由Robert Hartmann和Michael Magranet等人创立,最初以设计和制造EEPROM(可擦除可编程只读存储器)为主。1984年,Altera推出了全球第一个可编程逻辑器件EP300系列,开创了FPGA行业。随后,Altera不断扩大产品线,致力于FPGA技术的研发和推广。

  2. FPGA技术创新:Altera在FPGA技术方面持续进行创新,推出了一系列新产品和技术。1992年,公司推出了第一个基于SRAM(静态随机存储器)的FPGA器件,从而实现了更高的速度和灵活性。随后,Altera不断改进器件结构、设计工具和软件支持,提高了产品性能和用户体验。

  3. 与竞争对手的竞争:在FPGA市场,Altera与Xilinx是两大竞争对手。两家公司在技术、产品性能、市场份额等方面展开激烈竞争。为了在市场上取得优势,Altera不断加大研发投入,推出了更具竞争力的产品,并积极开展营销和销售活动。

  4. 收购与合并:Altera在发展过程中进行了一系列收购与合并,以扩大市场份额和提升技术实力。2015年,英特尔公司以约160亿美元的价格收购了Altera,将其并入英特尔旗下,成为英特尔的子公司。这一收购使英特尔获得了Altera在FPGA领域的技术优势和市场份额,进一步巩固了英特尔在半导体行业的领先地位。

  5. 公司发展与创新:作为英特尔的子公司,Altera继续发展和创新。公司不仅致力于FPGA技术的进一步改进和推广,还在其他领域进行探索和拓展,如数据中心、人工智能、物联网等。Altera不断推出新产品和解决方案,满足不同行业和应用领域的需求,保持了在半导体行业的竞争优势。

以上是关于Altera公司发展的五个相关故事,这些故事展示了Altera从成立初期到被英特尔收购的发展历程,以及其在FPGA技术领域的技术创新、市场竞争和业务拓展等方面的重要进展。

ACCRETECH公司的发展小趣事

ACCRETECH是一家日本的半导体设备制造公司,以下是该公司发展的五个相关故事:

  1. 公司成立和早期发展: ACCRETECH(前身为TOKYO SEIMITSU)成立于1949年,总部位于日本东京。最初,公司主要从事机械零件的生产,随着时代的发展,逐渐转型为半导体设备制造商。起初,ACCRETECH主要生产晶圆表面检测设备和测量设备。

  2. 技术创新和产品拓展: 随着半导体行业的快速发展,ACCRETECH不断进行技术创新,并逐步拓展产品线。公司推出了包括晶圆尺寸测量仪、晶圆表面检测仪、晶圆平整度检测仪等在内的多种半导体生产设备,满足了客户对高精度、高效率设备的需求。

  3. 市场扩张和国际合作: ACCRETECH积极拓展国内外市场,并与全球各地的客户建立了合作关系。公司的产品被广泛应用于半导体制造、集成电路测试、电子元件生产等领域,赢得了客户的信赖。ACCRETECH还与国际知名半导体企业展开合作,共同推动技术进步和产业发展。

  4. 持续投入研发和创新: ACCRETECH不断加大研发投入,致力于技术创新和产品升级。公司设立了专门的研究机构和实验室,拥有一支技术精湛的团队,致力于开发新产品和解决方案,满足客户不断提高的需求。

  5. 未来发展展望: ACCRETECH将继续致力于半导体设备制造领域的研发和应用,不断推出更先进、更可靠的产品和解决方案,满足客户在半导体生产过程中的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

问答坊 | AI 解惑

分辨率修改问题

原来我的机器的分辨率是800*480,这时那些窗口刚好满屏显示, 但是改成如横屏800*600的时候,高度就有120不能显示出来,在底下看不到,鼠标可以移到下面去 请问,是否还有什么地方的分辨率没有修改到么? 我怎么可以改呢?…

查看全部问答>

求助:CodeWarrior for ADS 1.2中编译出错

工程中,用ADS编译,出现了Errors: Could not find or load the file 襐IC.a?for target 褼ebugRel?for project 襱est1.mcp? Could not find or load the file 褻omm.a?for target 褼ebugRel?for project 襱est1.mcp? The following access p ...…

查看全部问答>

目前WM5.0上播放mp3音频主要用哪种方式?(主流的)

如题,想了解下目前PPC或者SmartPh上播放mp3格式的音频文件主要用哪种技术?windows media sdk? DirectShow? 或者其他的第三方控件? (当然需要免费的)…

查看全部问答>

请问下PCI PCIE在配置空间的区别

如何通过读取判断机器是PCIE为还是PCI呢???…

查看全部问答>

《匠人手记》之新手三忌

1.第一忌 自己不动脑筋,一遇到问题就问别人有句话说的好“吃别人咀嚼过的馍不香”。对于新手来说,做每一件事都是一次学习的好机会。有时候,探索的过程比最终的结果更重要。当你经过自己的努力,解决问题时,成就感和自信心会随之逐渐建立。如果 ...…

查看全部问答>

今早用altium designer6.9画原理图时突然出现了这么一个问题··不得其解啊

就是我放置导线时··本来把我想要连接上的两个引脚端连上就可以了··可是呢··导线的终点却与多个引脚连到一起了··自动产生了很多我不想要连接上的节点··这是怎么回事呢?之前放导线的时候貌似没出现这情况··…

查看全部问答>

实在

有些时日,发现自己终究活得不够真实,所以自己的存在总是时隐时现。但一直找不到有力的论据推翻“真实的世界是丑陋的”这么句不成文的定理。所以生活姑且只能是演义,而我们知道演义是虚实相嵌的,如《三国演义》。­ 竭力使自己的想法能够简 ...…

查看全部问答>

富士通工业控制DIY_开关电源制作之二

大家有没有仔细研究这个电源的EMI测试曲线(见图1)呢,这个曲线的首段在150-600KHz中,红线以下的EMI测试曲线峰值超越或者接近红线(所谓的红线:就是电源板PCBA的EMI测试曲线的电磁兼容的合格与否的界限),为了说明问题特意将低频段的EMI做的高 ...…

查看全部问答>