5543|9

50

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

soso给我一个帖子,我想在上面写下我开发伺服电机控制的过程 [复制链接]

soso:你好

我想呢,自己水平一般。所以,想在这里写下我和我的师傅他们组成的团队,开发伺服电机控制的过程。

也借此地,可以让更多的人来帮助我来完成。

希望soso,可以帮我宣传一下,然大家一起来讨论。

也给我的点思路,让我遇到问题的时候,可以得到及时的解决

希望soso,可以出手。

现在我们公司开发的伺服硬件方案已经确定好了。

简单的说就是:2802+CPLD+EEPROM,没有扩展其他的数据存储器了。

原理图方面,现在我还不能公开,我只能说,可以说个框架

等我完成了。我想可以适当的给出。

框架就是:

电机出来的编码器信号

包括很多接口信号都是通过CPLD和外部进行交涉

包括存储器的读写都是通过CPLD来处理的。

我们分析的时候,1,主要是想这些数字信号CPLD处理起来会方便的多

这样DSP的负担就不会重了。

2,DSP这么强大的运算能力,如果不用在点上,而是去处理这些数字量信号而言,

对于DSP来说,也是一种资源的浪费。

3,CPLD的逻辑电路比较好去修改。对于扩展而言也是比较方便的。

 

 

 

DSP完成的功能是:

1.采集模拟量信号,作为运算的基础。

2,和CPLD进行通信

3,电机控制算法(当然这里,我们部分会在CPLD里面进行处理)

4,其他的。

 

具体的内容:需要在之后的过程中详细的进行。

 

当然这里还有功率模块和界面

功率模块:IPM+开关电源

人机界面;考虑成本,选用市面上的常规方案 数码管+锁存器+按键

 

 

最新回复

如果电机需要实时调速、控速,那么测速必须使用T法,并且不准许丢失测速脉冲,这需要合理的编制程序,包括选择定时器分频值,测速的分辨率不是越高越好,够用即可,否则控制器无法承担而丢失脉冲时,精度反而下降了,引入适当的滤波有必要,但不是主要的技术手段,相对MCU的处理能力,电机转速的变化是很慢的,具有明显的滞后特征,保证测速脉冲不会丢失最重要,滤波在计算平均转速时使用即可,6000转和5999、6001转对绝大多数应用而言完全可以认为是相同的。保证不丢脉冲,首先要根据MCU的脉冲捕捉能力、运算处理能力来进行规划,下来就是程序结构的问题了,高实时性系统最好采用汇编或者PL/M之类的语言编程,规范的C代码和程序结构未必是实时性最好的,这里要追求执行效率,高效的代码可以采用更低的分频比率从而得到更高的测速分辨率,测速部份开发时的精力应重点放在程序代码的优化上。  详情 回复 发表于 2011-6-27 11:50
点赞 关注
 

回复
举报

1282

帖子

10

TA的资源

五彩晶圆(初级)

沙发
 
自己开贴就可以了,然后soso根据你写的内容好坏来给你置顶或加精华!

你说下你伺服电机控制做到什么地步了?能在国内领先?或者你的伺服控制有什么特色?
 
 

回复

50

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

回复 fxw451

国内领先是谈不上了。
我们现在的伺服只是专门放在我们专有的市场,
因为我们除了做这个,还在做电机呢。
这个也是刚开始的
我在这里这样只是想记录我的学习过程啊。
并不是什么领先问题。
还有,我们只是刚开始阶段。一直以来,都是利用别人的东西来作为我们公司的产品
进行推销的。现在总经理认为需要自己的东西了。
所以才开始。
我只是希望在我遇到问题的时候,可以在这里有更多人可以帮助我的。
 
 
 

回复

2万

帖子

71

TA的资源

管理员

4
 

回复 板凳 xkdwangcs 的帖子

首先:楼主可以自己开设一个帖子或者开设一个系列的帖子(个人推荐,因为这样大家会有新鲜感),想好主题,一点点记录下这个过程就好了,相信对于楼主、对于坛友都是不可多得的研发笔记,由于是公司产品,所以这个过程中,要做好对公司资料的保密工作。

然后:坛子里有很多热心的朋友,如果遇到问题,可以随时讨论。我也会尽可能帮忙宣传,动员身边的朋友来关注这个帖子的。放心吧。 只是楼主有更新时,需要通过站内短消息提醒我一下,也可以随时站短我,需要我哪方面的协助,我都很乐意帮忙的。
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

196

帖子

0

TA的资源

一粒金砂(高级)

5
 
期待着!
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(高级)

6
 

这个星期天,没有休息。来分析一下关于无刷电机测量速度的问题了。

现在主要的目标是伺服的项目了。
但是无刷也有一些项目在我的手上了。
因为我们公司无刷电机的成分也有占了很大的比例。
今天在这里主要来分析一下无刷电机,如果利用霍尔信号进行速度的测量
个人的看法:
首先我们也是随便拿了一个我们公司的无刷电机
电机参数:2对极  霍尔间隔电角度 120度 最高转速设定为6000r/min  最低转速设置为60r/min
                    其他参数这里不强调(霍尔使用的是U1881)
首先网上确实有很多的关于测速的理论。
包括 M法  T法   M/T法。
先说明一下M法,我的理解是:在规定的时间t内,数电机反馈回来的速度脉冲的个数。
理论上分析如果速度越高,在相同的t内,脉冲的个数,越多,这样速度也会测量的越准确。
所以,大家都认为M法适合高速测量。但是我还觉得这样的约束条件不够,首先要分析一下高速的时候,你的脉冲个数和
速度的比例是多少要加上去约束。
比如这里的无刷电机,考虑到成本,都不会再外加一个编码器就是没有特殊要求,我们公司连100线的编码器都不回去装。
那这样只能通过霍尔信号来进行速度的测量了。
2对极的电机,电机每转过1圈,每个霍尔上只有两个完整的周期信号,三个霍尔才有6个完整的周期信号。
对于霍尔信号,一般都是选用捕获单元或是我选用的MICROCHIP的单片机上面的电平变化中断来进行处理
这样的话,2对极的电机,电机一圈,沿跳变只有12个(包括上升沿和下降沿)。
即使我的电机是6000转/分钟,那么1秒钟也只有100转,相当于速度反馈信号1秒钟也就有1200个沿跳变。
你想想,这个时候如果用M法去数脉冲的个数,电机6000转/每分钟运行,1秒钟才反馈回来1200个脉冲的跳变,
首先可以近似得到,一个脉冲反应了6000/1200=5转的转速,意味着,我丢失一个脉冲就要损失5转的误差了。
然则:这1200个脉冲,我的t(测量持续时间)需要1秒啊。你说这样的闭环响应速度可以好吗?
最后,对于我来说,不说电调,无刷电机6000转/分钟,已经算是高转速了。
咱们平常时候的电瓶车的无刷电机,转速基本不会超过3000,我们公司的规格最高转速也才有八千多转速的。
所以,我自己总结的。最我们公司的控制器,在无外加编码器的情况下,绝对不会去选用M法来测量我电机的速度。

然后分析一下T法了。
我的理解比较简单:就是测量脉冲的宽度,然后根据宽度的时间和极对数来知道,电机转一圈所需要的时间。进而
得到转速的一种方法。
现在我们公司的测速方法都是用T法来进行的。
T法在这里是测量沿跳变的时间间隔
使用传统的测量算法:利用一个基准定时器来作为测量时间间隔的基准。
                                        然后再沿跳变的时候记录这个计数器的值。
                                        然后就可以得出沿跳变间隔的时间
                                       然后进行转速的测量。
首先,你选择一个定时器来作为时间的基准,就涉及到关于定时器时钟的选择。
一般情况下为了达到我PWM的频率和充分利用我选用单片机的资源。我的时钟频率都是16M赫兹。
这样的话,定时器可以有1,4,8,64等几种分频系数。
刚开始的时候,我也认为,分频数越小,这个的话,计数脉冲越多,这样损失一个两个脉冲对转速没有影响。
这样的方法算出来的速度肯定会更准。但是后来发现了。这不是辩证的。还有很多因素要结合考虑
首先就开始讲,分频数低的时候。
如果分频数低的话,现在加入选择1分频,这样的话,我定时器的时基基准为16M的频率,一个计数值代表1/16微妙
大家一看肯定会觉得,定时器的分辨率这么高肯定会速度算的很准的。
但是我出来的结果有两个:a.2对极的电机,转一圈有12个沿跳变(上升沿或下降沿,都会产生电平变化中断)。
                                                这样我在测量沿跳变的间隔的时候发现,利用仿真器仿真可以看到,即使测量的是同一个
                                                沿跳变计时器的值也相差比较大的。不在可以容忍的误差分为之内。
                                                这里我是用一个60的数组进行观察的。比如我把第一个数组的值当做我要测量的间隔
                                               2对极的电机代表第13个个数组的值也是同样是这段间隔。以此类推。最后我得到了一个结论
                                               同一段间隔测量出来的定时器计数值也是不一样的。这里我测量过多段转速,调整过计数器中断
                                              优先级,也调整过电平中断的优先级,都置为最高的优先级也是没有得到很好的效果。
                                               我也不知道为什么会相差这么多,刚开始认为是无刷电机霍尔的问题,但是霍尔有问题,只能是
                                             角度有点偏,但是只能体现出来,每个沿跳变的间隔不一样,但是不能说明,同一样间隔的不一样的。
                                             只能考虑霍尔器件的灵敏度了。但是这个问题不太好去理解。
                                            现在还想到可能的原因是:程序的执行问题?具体没有定论,希望有这方面经验的人可以指导一下。
但是问题出现了。你不解决不行的。误差的原因没有找到。但是咱们可以想到用其他办法来解决的。
比如误差值波动,那么咱们就进行滤波来解决了。
可以采用均值,求出平均值,只要你的参与均值的个数多了。自然得到的也算是一个比较稳定的,可以符合误差容忍的值了。
当然,我现在采用的是滑动滤波了。一个比较典型的滤波方法。
因为采用了这样的滤波,就要涉及到,数据储存器的使用了。你用的是分频数越低,那么意味着你的计数器的值越大,这样你储存定时器的
变量的位宽也要越大。这样的话,使用低分频的情况下,你就要用空间来换取速度的精度。
我自己也用过了。如果是1分频,这样的话,我必须要用long 型的变量来作为数组,这样的话,一般情况下,需要是12,24,48个数组
这个数值的值,我这样认为的。至少要算够完整电机一周,2对极一周至少需要12个数组。当然越多,肯定会得到精度。
这样的话,你就会发现,你的数据储存器在减少。

其他的分频数,同样有上面的的问题,就是测量同一个间隔,都会有不同的值。都需要滤波
但是选用高的分频数,这样存放定时器的变量的位宽可以适当的减少。

在我现在的测量速度模式下面,是选用的64分频,这样的话,基本电机在20转以上,计数器的值不会超过65535,这样的话,我可以采用INT的数据变量来
存储我的计数值。在空间上至少少了一半了。

当然你也不能为了省空间,分频数弄得太大了。
这就涉及到速度精度的问题了。
比如电机的转速为6000转/分钟  那么电机转一圈就需要10毫秒。对于16M的时钟进行64分频,1个定时器的值为4微秒。
这样6000转的时候,电机转一圈定时器的计数值为T=10毫秒/(4微秒*12)12代表12个间隔 一圈。
得到的T=208.
6000/208=30左右。
这个意味着,在6000转的时候,丢失一个脉冲 将损失30转的转速的。
所以,这个进度,就不行的。
也同样说明了。64都达不到要求,只能选用8分频了。这样你的数据位宽就要变大了。

当然这里我选用64分频的原因是,我的调试电机范围6000转,时间应用的时候,我的转速范围不会超过2000.所以,
基本可以使用的。
以上是个人的一些看法,
以及以下问题,
希望有人可以帮我回答以下上面的问题
可以让我对症下药。而不是进行滤波。
谢谢
 
 
 

回复

2万

帖子

71

TA的资源

管理员

7
 

回复 6楼 xkdwangcs 的帖子

建议楼主单独开贴 这样被关注的可能性更大
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

1282

帖子

10

TA的资源

五彩晶圆(初级)

8
 
就像soso姐所说的,比如开贴为“伺服电机控制之无刷电机测量速度”这样开贴
 
 
 

回复

1万

帖子

142

TA的资源

版主

9
 
如果电机需要实时调速、控速,那么测速必须使用T法,并且不准许丢失测速脉冲,这需要合理的编制程序,包括选择定时器分频值,测速的分辨率不是越高越好,够用即可,否则控制器无法承担而丢失脉冲时,精度反而下降了,引入适当的滤波有必要,但不是主要的技术手段,相对MCU的处理能力,电机转速的变化是很慢的,具有明显的滞后特征,保证测速脉冲不会丢失最重要,滤波在计算平均转速时使用即可,6000转和5999、6001转对绝大多数应用而言完全可以认为是相同的。保证不丢脉冲,首先要根据MCU的脉冲捕捉能力、运算处理能力来进行规划,下来就是程序结构的问题了,高实时性系统最好采用汇编或者PL/M之类的语言编程,规范的C代码和程序结构未必是实时性最好的,这里要追求执行效率,高效的代码可以采用更低的分频比率从而得到更高的测速分辨率,测速部份开发时的精力应重点放在程序代码的优化上。
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(高级)

10
 

回复 9楼 chunyang 的帖子

1.保证不丢失脉冲?
这个我想硬件可以改动吗?
霍尔信号的输出阻抗一般都是100欧姆左右。
我现在都是利用一个上拉电阻,然后通过一级
小的RC滤波,基本没有产生相位的延迟。

信号从示波器的观察来看。算是合格的信号。

你的不丢失脉冲,我相信软件也需要已经的配合
比如,用捕获,一旦有沿跳变,则定时器的值被存储到捕获单元。
然后又开始计数,这个可以认为基本没有脉冲丢失。

但是如果我现在用电平变化中断呢?

我进中断,需要关掉定时器。然后读取定时器的值。然后再清零定时器,然后再启动定时器
这个过程,我已经尽量做到,只执行这四个过程了。
但是这些软件的开销,是不可避免的会丢失一些脉冲的宽度。
你想我该怎么去补偿呢?
通过了解这些指令的执行时间,然后去调整吗?
还有呢?如果我的计数值溢出了。我要进入中断。
这样话,我的中断处理的时间是不是也要处理在内。因为在进入中断后,如果定时器还在计数的话,比如DSPIC2010是这种情况的。
但是如果进入中断后,定时器如果不计数呢。在处理中断的这段时间定时器的计数值一直没有记录。又损失了。是不是又要开始估计
这段估计的损失呢?




不知道你是否有有MICROCHIP单片机的应用经验。
我用是DSPIC10F2010
如果可以的话,
我也想了解一下你的程序结构。
你的优化程序

不甚感激

[ 本帖最后由 xkdwangcs 于 2011-6-27 15:11 编辑 ]
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表