极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 57763|回复: 30

PID电机调速(已实现,有待改进的地方望不吝赐教)

[复制链接]
发表于 2013-7-8 01:11:19 | 显示全部楼层 |阅读模式
本帖最后由 tanbocandy 于 2013-7-8 01:29 编辑

今天把PID电机调速的弄出来了,看到论坛了好像还没的有关于这个的帖子(也有可能是我没发现,希望有知道的在下面把链接贴出来下,让大家都学习下),代码比较简单,波形还算好,通过电位器调节Setpoint,100线的码盘,PID参数要根据自己的调整,PIN8和PIN11控制电机,速度是每秒多少转,代码如下
注:PID的库在这里
http://playground.arduino.cc/Code/PIDLibrary

#include <PID_v1.h>




double Setpoint, Input, Output;
PID myPID(&Input,&Output,&Setpoint,0.1,0.05,0,DIRECT); //Kp=0.1,Ki=0.05,Kd=0,change depend on your system
int control_v;
float rotation_v;
int time1,time2;
int elapse_time;




void setup()
{
  pinMode(8,OUTPUT);
  pinMode(11,OUTPUT);
  attachInterrupt(0,count,FALLING);
  Serial.begin(9600);
  time1=millis();
  myPID.SetMode(AUTOMATIC);
}




void loop()
{  
  control_v=analogRead(A0);      //read the analog from potentiometer
  Setpoint=map(control_v,0,1023,0,200);  //the range of the speed is 0~200

  time2=millis();      
  elapse_time=time2-time1;
  time1=time2;
  Input=rotation_v*elapse_time/10;    // the speed of the motor
  rotation_v=0;

  myPID.Compute();          //PID algorithem

  Serial.print(Setpoint);         //send to serial chat
  Serial.print(",");
  Serial.print(Input);
  Serial.print("\r\n");
  analogWrite(11,Output);       //PWM out put
}




void count()
{
  rotation_v+=1;         //rotate++
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-7-8 08:57:52 | 显示全部楼层
太好啦,我试试能不能用在我的电机上。请问这个是小车的pid调速是吧?
回复 支持 0 反对 1

使用道具 举报

发表于 2013-7-8 09:31:41 | 显示全部楼层
谢谢楼主分享~~~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-8 11:04:37 | 显示全部楼层
zhangzhe0617 发表于 2013-7-8 08:57
太好啦,我试试能不能用在我的电机上。请问这个是小车的pid调速是吧?

恩  就是用来调速的。。。 肯定没问题的  不过参数你要根据你的改下。
回复 支持 反对

使用道具 举报

发表于 2013-7-12 22:26:50 | 显示全部楼层
曲线好像看不出效果啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-14 22:11:22 | 显示全部楼层
nomady 发表于 2013-7-12 22:26
曲线好像看不出效果啊

我设定的是个恒定的转速   
回复 支持 反对

使用道具 举报

发表于 2013-11-15 11:13:29 | 显示全部楼层
这个是直流电机的吧,有没有步进电机PID控制呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-20 17:04:44 | 显示全部楼层
zhfei55 发表于 2013-11-15 11:13
这个是直流电机的吧,有没有步进电机PID控制呢?

没玩过步进电机哦。。。
回复 支持 反对

使用道具 举报

发表于 2013-12-26 21:44:58 | 显示全部楼层
tanbocandy 发表于 2013-11-20 17:04
没玩过步进电机哦。。。

你好,你做过直流电机的位置PID吗?
回复 支持 反对

使用道具 举报

发表于 2015-3-13 01:03:56 | 显示全部楼层
赞{:soso_e179:}
回复 支持 反对

使用道具 举报

发表于 2015-3-17 01:03:24 | 显示全部楼层
楼主你好,请问参数整定有没有什么心得,能否分享下,谢谢啦
回复 支持 反对

使用道具 举报

发表于 2015-8-8 20:55:47 | 显示全部楼层
楼主能分享硬件电路图吗?{:soso_e163:}
回复 支持 反对

使用道具 举报

发表于 2015-11-2 16:54:23 | 显示全部楼层
大神,串口有没有免费下载的网址呀{:soso_e101:}
回复 支持 反对

使用道具 举报

发表于 2015-12-3 16:30:36 | 显示全部楼层
请问转速时通过什么反馈的啊?
回复 支持 反对

使用道具 举报

发表于 2016-2-17 13:05:04 | 显示全部楼层
楼主,测速是哪个部分啊?我是用20格码盘测速的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 06:37 , Processed in 0.046414 second(s), 30 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表