风洞稳定小球系统----- 基于MATLAB实现的Kalman filter距离检测
Posted Mnster_Lu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了风洞稳定小球系统----- 基于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里。
以上是关于风洞稳定小球系统----- 基于MATLAB实现的Kalman filter距离检测的主要内容,如果未能解决你的问题,请参考以下文章
运动学基于matlab GUI模拟小球自由落体含Matlab源码 1630期
64QAM同步基于FPGA/MATLAB的64QAM同步系统的实现