风洞稳定小球系统(一)----- 基于MATLAB实现的Kalman filter距离检测

手上在做一个风洞

让个乒乓球悬浮在固定位置

大家好我就是那个灵魂画师

总的来说里面要用到测距,Kalman filter,

然后是PID,输出用PWM驱动,

还得加一块驱动板,听起来是蛮简单的

希望不要烂尾。

对了这次用arduino,毕竟第一次用。

好我们开始制作

一、传感器

这里是第一步

我挑好了传感器SRF05超声波

连接就是

VCC ------------5V

GND  ------------GND

PIN  ECHO -----D4
 PIN  TRIG ----- D5

    int inputPin=4;  // define ultrasonic signal receiver pin  ECHO to D4
      int outputPin=5; // define ultrasonic signal transmitter pin  TRIG to D5
      void setup()
      {
        Serial.begin(9600);
        pinMode(inputPin, INPUT);
        pinMode(outputPin, OUTPUT);
       }
     void loop()
    {
        digitalWrite(outputPin, LOW);
        delayMicroseconds(2);
        digitalWrite(outputPin, HIGH); // Pulse for 10μs to trigger ultrasonic detection
        delayMicroseconds(10);
        digitalWrite(outputPin, LOW);
        int distance = pulseIn(inputPin, HIGH);  // Read receiver pulse time
        distance= distance/58;   // Transform pulse time to distance
        Serial.println(distance);   //Ourput distance
        delay(50);
     }

然后串口传给我了数据,我得测试一下

看起来效果还是有的

存到ss.txt里

二、kalman filter

ex=importdata(‘ss.txt‘)
plot(ex)

prevData=0.0;
p=10;
q=0.0001;
r=0.05;
kGain=0;
outData=[];

for i=1:length(ex)
p=p+q;
kGain=p/(p+r);
temp=ex(i);
temp=prevData+(kGain*(temp-prevData));
p=(1-kGain)*p;
prevData=temp;
outData(i)=temp;
end

plot(outData);

  

plot(ex);

plot(outData);

感觉参数调整好了,使图像状态曲线平滑了

写到arduino里。

时间: 2024-08-27 08:23:14

风洞稳定小球系统(一)----- 基于MATLAB实现的Kalman filter距离检测的相关文章

风洞稳定小球系统(二)----- 基于Arduino实现的PID距离PWM控制

Arduino真的是好用, 已经上瘾. 这次做的是风洞稳定小球系统 一.元件模块 Arduino正面 Arduino引脚接线 驱动板,反正是freescale小破车上用的那款 电源. 风洞 风扇型号 二.Arduino代码 一言不合就上代码 #include <PID_v1.h> int inputPin=4; // define ultrasonic signal receiver pin ECHO to D4 int outputPin=5; // define ultrasonic si

基于MATLAB的IIR滤波器设计与实现

基于MATLAB的IIR滤波器设计与实现 IIR滤波器的设计主要有经典设计法.直接设计法和最大平滑滤波器设计法三种方法. 1.经典设计法是基于模拟滤波器的变换原理,首先根据滤波器的技术指标设计出相应的模拟滤波器,然后再离散化为满足给定技术指标的数字滤波器.对应的工具函数由完全设计函数——butter.cheby1.cheby2.ellip.besself:阶数估计函数——buttord.cheb1ord.cheb2ord.ellipord:低通模拟原型滤波器函数——buttap.cheb1ap.

基于MATLAB的多项式数据拟合方法研究-毕业论文

摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式曲线拟合的基本理论,对多项式数据拟合原理进行了全方面的理论阐述,同时也阐述了曲线拟合的基本原理及多项式曲线拟合模型的建立.具体记录了多项式曲线拟合的具体步骤,在建立理论的基础上具体实现多项式曲线的MATLAB实现方法的研究,采用MATLAB R2016a的平台对测量的数据进行多项式数据拟合,介绍了M

基于matlab的音频波形实时采集显示 v0.1

robj = audiorecorder(44100,16,1); %设置采样频率.采样位数.通道数 recordblocking(robj,1); %采集初步数据(1s长度) rdata = getaudiodata(robj); %获取音频数据 plot(rdata); %绘制波形 axis([1,44100,-0.1,0.1]); %设置固定坐标轴 drawnow %刷新显示 n = 100; %设定后续的采样更新次数,n与m可联合计算后续更新时间长度 m = 0.1; %设定更新间隔,m

基于matlab mex的平面点集按重心逆时针排序算法

基于matlab mex的平面点集按重心逆时针排序算法,可用于求凸集,代码如下: #include <mex.h> #include <mat.h> #include <stdlib.h> #include <vector> #include <algorithm> using namespace std; typedef struct PointF { int id; double x, y; PointF() { id = -1; } Poi

基于MATLAB的GUI(Graphical User Interface)音频实时显示设计

摘要:本文章的设计主要讲基于matlab的gui音频实时显示设计,此次设计的gui相当于一个简洁的音乐播放器,界面只有”录音“和”播放“两个控件,哈哈,够简洁吧.通过”录音“按钮可以实现声音从电脑的声卡录入,并且实时显示录入声音的时域图形和频域图形:待录音结束,通过”播放“按钮可以播放刚录入的声音,并且一边播放一遍实时显示时域和频域图形.本设计的编码在matlab2013a上亲测,可以实现... 一.首先matlab的gui界面设计 打开matlab—>在命令行执行guide—>出现gui编辑

基于MATLAB的离散小波变换

申明,本文非笔者原创,原文转载自:  基于Matlab的离散小波变换         http://blog.sina.com.cn/s/blog_725866260100ryh3.html 简介 在数字图像处理中,需要将连续的小波及其小波变换离散化.一般计算机实现中使用二进制离散处理,将经过这种离散化的小波及其相应的小波变换成为离散小波变换(简称DWT).实际上,离散小波变换是对连续小波变换的尺度.位移按照2的幂次进行离散化得到的,所以也称之为二进制小波变换. 虽然经典的傅里叶变换可以反映出信

【原】基于matlab的蓝色车牌定位与识别---绪论

本着对车牌比较感兴趣,自己在课余时间摸索关于车牌的定位与识别,现将自己所做的一些内容整理下,也方便和大家交流. 考虑到车牌的定位涉及到许多外界的因素,因此有必要对车牌照的获取条件进行一些限定: 一.大部分车牌照都是用自己的手机照的,大小在1M左右,距离车牌照距离3m左右.这样保证所获取的车牌照有一定的规律,否则随便一张是无法进行定位的. 二.本次仅针对蓝色车牌,至于其他像黄色,黑色车牌的没有做研究.感兴趣的可以自己找些资料,毕竟要做到全面,工作量还是很大的. 三. 相关的参考资料网上也挺多的,这

linux系统下基于mono部署asp.net,使用ef6与mysql出现的问题【索引】

git clone github.com/mono的源码,日期:2014-06-19,百度网盘链接:http://pan.baidu.com/s/1kTG9EUb 使用EntityFramework6连接MySql数据库(db first方式) 使用EntityFramework6连接MySql数据库(code first方式) 关于Linux和Windows下部署mysql.data.dll的注册问题 linux系统下基于mono部署asp.net,使用ef6与mysql出现的问题[索引]