风洞稳定小球系统(二)----- 基于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 signal transmitter pin  TRIG to D5
      int pwm = 6;  //pwm输出D6
      int dis=0;
      double  Setpoint, Input, Output;
      PID myPID(&Input, &Output, &Setpoint,0.7,5.3,0.8, DIRECT);
      void setup()
      {
        Serial.begin(9600);
        pinMode(inputPin, INPUT);
        pinMode(outputPin, OUTPUT);
        pinMode(pwm, OUTPUT);
        Setpoint=160;
        Input=150;
        myPID.SetMode(AUTOMATIC);
       }

     void loop()
       {
        dis=distanceM();
        Input=255-map(dis,0,45,20,200);
        myPID.Compute();
        analogWrite(pwm, Output);
        Serial.print("  ");
        Serial.print(Input);
        Serial.print("  ");
        Serial.println(Output);
      }

     int distanceM()
     {
        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.print(distance);   //Ourput distance
        delay(50);
        return distance;
      }

之前已经说过连接了

再发一遍

传感器SRF05超声波

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

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

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

代码里使用了一个自带库PID_v1.h

myPID(&Input, &Output, &Setpoint,0.7,5.3,0.8, DIRECT);

输入,输出,稳定收敛位置点,Kp,Ki,Kd,直接方式。

Input=255-map(dis,0,45,20,200);

这里是一个映射,因为我的传感器放在了风洞的上端

这样距离顶端越近数值就越小,所以需要改个符号。

让它的数值和高度成正比。

而PWM正好是0-255的数值,所以这样改。

PWM的输出脚是D6,

频率是1kHz,虽然频率低了但是还够用。

三、参数调试

接下来用串口数据来看

分别是距离,input,output。

我把数据拿下来用matlab来plot

红色代表高度,还是比较稳定的

黄色就是PWM的值。

因为之前测试传感器非常稳定,

所以数据输入我并没有用Kalman filter来处理。

被风扇砍了一刀,

综上,没有烂尾,万岁!

时间: 2024-10-13 07:38:14

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

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

手上在做一个风洞 让个乒乓球悬浮在固定位置 大家好我就是那个灵魂画师 总的来说里面要用到测距,Kalman filter, 然后是PID,输出用PWM驱动, 还得加一块驱动板,听起来是蛮简单的 希望不要烂尾. 对了这次用arduino,毕竟第一次用. 好我们开始制作 一.传感器 这里是第一步 我挑好了传感器SRF05超声波 连接就是 VCC ------------5V GND  ------------GND PIN  ECHO -----D4 PIN  TRIG ----- D5 int i

混合了RBAC和ACL的权限系统(二) -- 基于RBAC的系统权限

http://fightplane.iteye.com/blog/1278464 1. 概念说明 A 系统级权限:从角色的角度出发,不特定于任何实际的资源的权限.比如“用户是否可以修改标题”这个权限,不针对于任何特定的标题.权限赋予给某个特定的角色.采用RBAC模型实现 B 对象级权限:从对象实例的角度出发.比如针对于某个特定的标题,编辑在这个标题上的权限.采用ACL模型实现. 那么判断用户是否可以修改某条的标题的判断顺序如下:    1) 用户所属的角色是否拥有“修改标题”的权限    2)

基于arduino的红外传感系统

一.作品背景 在这个科技飞速发展的时代,物联网已经成为了我们身边必不可少的技术模块,我这次课程设计做的是一个基于arduino+树莓派+OneNet的红外报警系统,它主要通过识别人或者动物的运动来判断是否有人在附近再通过蜂鸣器的响叫来实现报警功能. 红外报警系统在生活中的应用也很广泛,例如博物馆的展品,家里的安防系统,公司的安防系统等,但是如何准确的报警,保证红外线的正确识别是这个系统的主要问题,本次的实践综合这些因素提出了比较靠谱的解决方案,用智能网关解决这一系列的问题. 二.元件原理 热释电

Ecshop系统二次开发教程及流程演示

来源:互联网 作者:佚名 时间:03-01 16:05:31 [大 中 小] Ecshop想必大家不会觉得陌生吧,大部分的B2C独立网店系统都用的是Ecshop系统,很受用户的喜爱,但是由于Ecshop模板自带有很多Ecshop的Logo和版权信息,和一些其他需要修改的地方,所以我们需要对Ecshop系统做二次开发,下面就来看看具体操作步骤吧 一.Ecshop简介: ECShop是Comsenz公司推出的一款B2C独立网店系统,适合企业及个人快速构建个性化网上商店.系统是基于PHP语言及MYSQ

Android系统中基于Binder的IPC流程框架分析

前言: Activity.Service.BroadcastReceiver.Content Provider是Android的四大应用程序组件,构成一个完整的应用程序的这些组件可以在同一个进程,也可以不在同一个进程,而当这些组件不在同一个进程,需要进行数据交互时就需要一种IPC(Inter-Process Communication)进程间通信机制来完成,而Binder就是提供了IPC功能的一个框架.实现IPC的整个Binder框架包含几个重要组成部分,它们分别是Binder Driver.C

Zabbix监控系统二:配置邮件报警

在zabbix的使用中,最重要的一点就是完善的报警机制,作为监控平台,需要时刻关注机器和服务的运行状态,更重要的是发现故障之后需要及时的报警给相关人员,早点发现问题,将隐患消除在未然阶段.这样才能保证服务的稳定运行.报警的方式是多种多样的,微信.短信和邮件报警是我们比较常见的方式. 邮件报警的配置主要划分为一下几个步骤: 1.在zabbix服务端配置邮件发送脚本和修改zabbix服务端配置文件; 2.在zabbix前端控制台进行相关设置: 实验环境 Zabbix监控服务器.客户端都已经部署完成,

百度地图3.1.0(二)基于MapFragment的基本地图

基于Fragment的百度Map也很简单 直接看例子吧: AndroidManifest.xml的配置: 1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.testbaidu_v_3_1" 4

基于arduino+web的物联网demo,web和微信控制

视频效果: 基于arduino+web的物联网demo,web和微信控制 基于arduino + web的物联网demo,实现了web和微信的多方式控制,折腾了好几周,终于完美解决了. 配件清单: Arduino uno3(主板) HLK-RM04(Uart串口转Wifi) 主板程序源码: String strs = ""; int led = 6; void setup() {    pinMode(led, OUTPUT);   Serial.begin(115200);//设置串

CRL快速开发框架系列教程二(基于Lambda表达式查询)

本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框架系列教程四(删除数据) CRL快速开发框架系列教程五(使用缓存) CRL快速开发框架系列教程六(分布式缓存解决方案) CRL快速开发框架系列教程七(使用事务) CRL快速开发框架系列教程八(使用CRL.Package) CRL快速开发框架系列教程九(导入/导出数据) CRL快速开发框架系列教程十(