OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 13445|回复: 10

STM32 控制直流电机PID调速(请教原子老师)

[复制链接]

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-5-24
在线时间
0 小时
发表于 2013-7-9 14:05:15 | 显示全部楼层 |阅读模式

最近在做一个STM32控制直流电机的实验,要求“加装测速装置(霍尔元件)”,并用PID控制实现控速。
想问一下各位:霍尔元器件该怎样配置?
电机是普通直流电机,霍尔元件已经焊接好了。
————————————————————我是分割线——————————————————————
————————————————————
我是分割线—————————————————————— 
电机使用了L298N驱动模块,现在要新加上一个PID控制调速的功能,看了一些PID的资料,但还是不太懂。
求各位给一个PID调速的基本思路。是要用到AD或者DA转换吗?










    


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-7-9 16:50:32 | 显示全部楼层
回复【楼主位】zhangsaisai0814:
---------------------------------
我只用过开关量的霍尔传感器,有磁铁接近,就电平取反一下,磁铁离开,又恢复原来的电平.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

47

主题

255

帖子

1

精华

高级会员

Rank: 4

积分
641
金钱
641
注册时间
2012-11-3
在线时间
6 小时
发表于 2013-7-10 18:53:00 | 显示全部楼层
你的电机是直流无刷无霍尔电机,还有直流无刷有霍尔电机,如果电机本身有霍尔的话,你就直接用就行,用stm32捕获就可以,如果电机本身没有霍尔,你就整个神马光电开光等等  ,测转速  



回复 支持 反对

使用道具 举报

7

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
82
金钱
82
注册时间
2013-5-24
在线时间
0 小时
 楼主| 发表于 2013-7-11 10:23:12 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
电机使用了L298N驱动模块,现在要新加上一个PID控制调速的功能,看了一些PID的资料,但还是不太懂。
求各位给一个PID调速的基本思路。是要用到AD或者DA转换吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-7-11 10:50:11 | 显示全部楼层
回复【4楼】zhangsaisai0814:
---------------------------------
PID我也没用过.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

63

主题

305

帖子

1

精华

高级会员

Rank: 4

积分
853
金钱
853
注册时间
2012-8-3
在线时间
79 小时
发表于 2014-2-19 14:09:15 | 显示全部楼层
回复【4楼】zhangsaisai0814:
---------------------------------
不用AD转换,你这里没有模拟量输入输出。 可以用PWM调速,用码盘测速,码盘测速误差是比较小的,用霍尔太不稳定了,电机转速太快就不适合用霍尔了。 你的PID的输入输出是转速和PWM占空比
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-9-27
在线时间
0 小时
发表于 2015-10-1 16:15:39 | 显示全部楼层
回复【6楼】EDA3rd:
---------------------------------
那请问用码盘测的话PID怎么写呢?
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2016-5-11
在线时间
12 小时
发表于 2016-5-28 22:54:33 | 显示全部楼层
同问大神们,在STM32控制的直流电机中加入pid算法,该如何实现啊
回复 支持 反对

使用道具 举报

66

主题

364

帖子

0

精华

初级会员

Rank: 2

积分
132
金钱
132
注册时间
2015-6-18
在线时间
129 小时
发表于 2016-5-30 22:51:52 | 显示全部楼层
#include "pid.h"

float PP=0.5,II=0.5,DD=0;

double SumError=0,PrevError=0,LastError=0;
int dError=0,Error=0;

void PID_init(void)
{
        Error=0;SumError=0;LastError=0;
}

void PIDcompute(unsigned int Target,unsigned int Real)
{
  /*--------------------------------------------------------------------
根据设定及采集值进行计算PID调节,计算pwm输出值
--------------------------------------------------------------------*/
float j=0.0,i;
      
                Error =(Target-Real);                    
                SumError +=Error;                  
    dError=Error-LastError;
    LastError=Error;
            
                i=PP;
                j=Error*i;
                i=II;
                j=j+SumError*i;
                i=DD;
                j=j+dError*i;

                j=j/100;

         if(j>=hArrPwmVal)OutPwmValue=hArrPwmVal;
         else if(j<1)OutPwmValue=1;
         else OutPwmValue=j;
}
回复 支持 反对

使用道具 举报

hexuanzhu 该用户已被删除
发表于 2016-7-25 09:32:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

2

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2016-6-18
在线时间
40 小时
发表于 2016-8-15 11:16:50 | 显示全部楼层
请问楼主,在?我遇到和你差不多问题,可以向你请教??
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 18:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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