OpenEdv-开源电子网

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

基于STC12C5A60S2单片机的PID电机调速控制器

[复制链接]

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2014-5-31 20:50:40 | 显示全部楼层 |阅读模式

去年比赛培训的时候做的一个小东西,现在整理了出来和大家分享。

本设计采用STC12C5A60S2单片机作为主控芯片实现了PID电机调速控制器。传感器采用欧姆龙的200线编码器。电机驱动模块采用L298N,使用LM2596来对电机供电。设计中的重点是电机转速的获取和基于PID的电机控制算法的实现。
    

[mw_shl_code=c,true]//******************频率测量函数***************** void hight_frequency() { h_count=0; //脉冲计数初值为0 EX0=1; //INT0中断允许,开始计数 TR1=1; //启动定时器1 while(EX0); //等待外部中断0关闭 TR1=0; //关T1中断 h_count=(h_count-1)*50; //得到实际频率,因为定时器计数的是20ms的个数所以此处乘50,即为1s Speed=h_count/200; //获取电机转速,此处采用200线编码器 if((Speed>300)||(Speed<0)) Speed=0; SpeedTable[0]=0x30+(Speed/100); SpeedTable[1]=0x30+(Speed%100/10); SpeedTable[2]=0x30+(Speed%10); SpeedTable[3]=0x20; } [/mw_shl_code]
[mw_shl_code=c,true]/*****INT0中断函数***/ void Int0_Routine(void) interrupt 0 { h_count++; //高频计数脉冲加1 } [/mw_shl_code]

[mw_shl_code=c,true]//**************内部定时器T1中断****** void Timer1_Routine() interrupt 3 { TH1=0xb1; TL1=0xe0; //重装初值 EX0=0; //20ms定时结束,停止计数 }[/mw_shl_code]
[mw_shl_code=c,true]//**********PID算法****** long int PID(int setpoint,int achieved) { long int result,TempResult; en=setpoint-achieved; ErrorNum=p*en-i*(en-en1)+d*(en1-en2); TempResult=(long int)(ErrorNum/20); result=TempResult; en2=en1; en1=en; return result; } [/mw_shl_code]



                                                                          STC12C5A60S2主控板


                                                                             焊接完成后的主控板


                                     传感器和电机连接部分,直接上胶枪,简单粗暴!


                                                    运行中的12864显示结果


PID测速.zip

113.09 KB, 下载次数: 7111

开往春天的手扶拖拉机
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2014-5-31 21:22:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-5-31 22:22:13 | 显示全部楼层
cool....
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-5-31 22:49:00 | 显示全部楼层
回复【2楼】2449164582:
---------------------------------
谢谢帮顶
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-5-31 22:49:45 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
以后争取做出更好的作品回报论坛的网友们
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
发表于 2014-5-31 23:21:56 | 显示全部楼层
PID算法:
 ErrorNum=p*en-i*(en-en1)+d*(en1-en2);

这个公式是可以很灵活的使用是吗 和之前在网上看到的公式不一样啊 既不是增量也不是位置式 
自己没有用过PID 希望楼主解释一下
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-5-31 23:25:45 | 显示全部楼层
好东西,最近一直想做这么个玩意。
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-5-31 23:42:42 | 显示全部楼层
回复【6楼】_tank_:
---------------------------------
这个是最简单的增量式PID。
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-5-31 23:43:39 | 显示全部楼层
回复【7楼】wangyan915205:
---------------------------------
这个最多也就验证一下PID的原理,过几天可能会研究研究模糊控制。
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

50

主题

243

帖子

1

精华

高级会员

Rank: 4

积分
616
金钱
616
注册时间
2014-2-26
在线时间
1 小时
发表于 2014-6-1 01:17:43 | 显示全部楼层
回复【6楼】_tank_:
--------------------------------- 
不要说我较针儿哈 增量式不应该是ErrorNum=p*(en-en1)+i*en+d*(en-2*en1+en2)吗
我是一只摔不死的蚂蚁!
回复 支持 反对

使用道具 举报

170

主题

917

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1824
金钱
1824
注册时间
2013-4-13
在线时间
63 小时
发表于 2014-6-1 09:54:46 | 显示全部楼层
回复【9楼】zuozhongkai:
---------------------------------
手艺人要内外兼修。
回复 支持 反对

使用道具 举报

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
发表于 2014-6-3 09:20:28 | 显示全部楼层
围观ing
回复 支持 反对

使用道具 举报

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2013-11-27
在线时间
12 小时
发表于 2014-6-4 08:57:04 | 显示全部楼层
unsigned char ID(signed char x)
 {
 float y;
  y=kp*(x-x1)+ki*x+kd*(x-2.0*x1+x2)+22;

这个比较简单的。
回复 支持 反对

使用道具 举报

47

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2013-8-8
在线时间
0 小时
发表于 2014-6-27 22:06:17 | 显示全部楼层
请教下这位哥哈  你这P I D 这三个参数是怎么整定的呢
___诺现在就觉得失望无力,未来那么远该怎么扛。
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-6-28 00:24:51 | 显示全部楼层
一点一点试出来的。
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

20

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2012-7-26
在线时间
0 小时
发表于 2014-7-9 16:32:58 | 显示全部楼层
设计这么酷,整理后来参加我们的经验设计分享活动吧 
投稿文章将会在爱板网首页展示哦,还有机会获得智能奖品 
http://www.eeboard.com/zhengwen
开发板商城 www.eeboard.com/shop
回复 支持 反对

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2014-7-10 15:56:47 | 显示全部楼层

楼主你好,TempResult=(longint)(ErrorNum/20);  这里为什么要除以20  有点不太理解

回复 支持 反对

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2014-7-10 15:57:20 | 显示全部楼层
回复【5楼】zuozhongkai:
---------------------------------
楼主你好,TempResult=(longint)(ErrorNum/20);  这里为什么要除以20  有点不太理解
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-7-10 16:19:22 | 显示全部楼层
回复【18楼】一般BDN:
---------------------------------
 为了缩小计算出来的误差而已,你可以试着把这个值改打或改小
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

56

主题

289

帖子

0

精华

高级会员

Rank: 4

积分
865
金钱
865
注册时间
2012-11-16
在线时间
65 小时
发表于 2014-7-10 16:27:58 | 显示全部楼层
回复【19楼】zuozhongkai:
---------------------------------
好的 谢谢你
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-7-14
在线时间
0 小时
发表于 2014-7-14 22:15:21 | 显示全部楼层
学习学习。。。。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-8
在线时间
0 小时
发表于 2014-12-8 17:48:26 | 显示全部楼层
那个测速的传感器是接单片机的那个端口?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-8 21:48:05 | 显示全部楼层
回复【22楼】zzm3797:
---------------------------------
外部中断引脚
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-8
在线时间
0 小时
发表于 2014-12-8 22:54:11 | 显示全部楼层
回复【23楼】zuozhongkai:
---------------------------------
是p3.0和p3.1么?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-9 10:52:14 | 显示全部楼层
回复【24楼】zzm3797:
---------------------------------
应该是的吧,51好久不玩了
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-8
在线时间
0 小时
发表于 2014-12-9 13:49:48 | 显示全部楼层
回复【25楼】zuozhongkai:
---------------------------------
这个欧姆龙的200线编码器是几相的?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-9 14:39:10 | 显示全部楼层
回复【26楼】zzm3797:
---------------------------------
2相的
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2014-12-11
在线时间
2 小时
发表于 2014-12-11 16:30:36 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

17

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2014-4-12
在线时间
0 小时
发表于 2014-12-11 19:43:12 | 显示全部楼层
12864是串行驱动?
规格严格,功夫到家
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-11 20:36:06 | 显示全部楼层
回复【29楼】FMX_2011:
---------------------------------
嗯,是的
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

17

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2014-4-12
在线时间
0 小时
发表于 2014-12-11 21:00:57 | 显示全部楼层
回复【30楼】zuozhongkai:
---------------------------------
不然IO口可能不够用。
规格严格,功夫到家
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-11 21:03:05 | 显示全部楼层
回复【31楼】FMX_2011:
---------------------------------
对头,再说STC12的速度够快,串口毫无任何问题的
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-8
在线时间
0 小时
发表于 2014-12-13 16:26:22 | 显示全部楼层
为什么我的电机都不能转,求解答啊
回复 支持 反对

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-9-10
在线时间
0 小时
发表于 2014-12-13 19:01:44 | 显示全部楼层
没有啊,楼主
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-13 20:09:54 | 显示全部楼层
回复【33楼】zzm3797:
---------------------------------
这个电机应该还是会转的吧,L298N驱动写好了么
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-9-10
在线时间
0 小时
发表于 2014-12-13 20:13:45 | 显示全部楼层
回复【35楼】zuozhongkai:
---------------------------------
楼主有米有主控板的电路,原理图给下
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-13 20:14:15 | 显示全部楼层
这个找不到了,sorry。。
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-9-10
在线时间
0 小时
发表于 2014-12-13 20:57:57 | 显示全部楼层
回复【37楼】zuozhongkai:
---------------------------------
E6A2-CS3C是这个型号的吗?
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-8
在线时间
0 小时
发表于 2014-12-13 22:07:47 | 显示全部楼层
感谢楼主,我的可以了,故障排除了,我加入了按键声音,另外我修改了在进行设置的时候电机不转,设置完了又可以转,再次感谢楼主,好人一生平安
回复 支持 反对

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2014-9-10
在线时间
0 小时
发表于 2014-12-13 22:09:42 | 显示全部楼层
回复【39楼】zzm3797:
---------------------------------
大神,能不能分享下你的原理图,是根据楼主的吗?程序是楼主的吗?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-13 22:38:30 | 显示全部楼层
回复【39楼】zzm3797:
---------------------------------
恭喜,准备找个时间移植到STM32上
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-8
在线时间
0 小时
发表于 2014-12-14 10:08:20 | 显示全部楼层
回复【41楼】zuozhongkai:
---------------------------------
恩恩   加油 ,你真是太厉害了
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-12-8
在线时间
0 小时
发表于 2014-12-14 22:45:58 | 显示全部楼层
问下 比如你设定的值为100,测出的值为100,那么这一百代表什么,是什么意思?
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
发表于 2014-12-30 19:01:41 | 显示全部楼层
回复【6楼】_tank_:
---------------------------------
额。。我感觉他是不是写错了啊。。。你说的那个才是增量式PID啊。。
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
发表于 2014-12-30 19:02:39 | 显示全部楼层
楼主能发一下你的PID整定的参数么。。怎么你的速度反馈前面系数是i啊
回复 支持 反对

使用道具 举报

14

主题

225

帖子

3

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2014-7-8
在线时间
26 小时
发表于 2014-12-30 19:03:35 | 显示全部楼层
回复【10楼】_tank_:
---------------------------------
i对应的en的积分,是累加
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
 楼主| 发表于 2014-12-30 20:22:23 | 显示全部楼层
回复【46楼】2013的弹子球:
---------------------------------
这个好早的程序了,都忘了怎么写的了,老师给的算法,自己直接用的
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2013-5-31
在线时间
0 小时
发表于 2015-1-31 10:17:46 | 显示全部楼层
差一点来吐槽,哎,以为缺文件,哪知道是KEIL4的,心里吐槽一下自己,顺便回复,,哎,,,
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2015-2-2
在线时间
0 小时
发表于 2015-2-2 12:09:37 | 显示全部楼层
谢谢楼主的好的分享
回复 支持 反对

使用道具 举报

0

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
391
金钱
391
注册时间
2013-8-20
在线时间
49 小时
发表于 2015-2-2 20:47:11 | 显示全部楼层
正在搞PID玩玩儿,资料参考一下。谢谢楼主。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 10:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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