我打算控制一个电机的位置,但反馈补偿部分我不太会,求大神指导
我的要求是:我给电机设定一个值a,但电机运行后,我用传感器检测为b(a不等于b),由于存在偏差,我希望通过程序就行纠正,知道电机运行的值等于设定值a

解决方案 »

  1.   

    ctrl<------->motor
    a0------------>|
    |<----------- b0
    a1 = a0-b0---> |
    |<----------- b1                  
    a2=a1-b1-----> |一般反馈控制,大概就是这个样子。多退少补而已。 
      

  2.   

    谢谢,whales大神,如果能用VB表现出来就更好了
      

  3.   

    楼主想要表达的意思是,给电机10000个脉冲,理论上电机应该运动到A点停止,但是,由于步进电机运动存在脉冲丢失的情况,所以,通常情况下,10000个脉冲,电机只能运行到B点(B点比A点距起始点近)。是否是这个意思?
    如果是这个意思,最好的办法就是在电机的转轴上加一个编码器,用它来检测脉冲数,也就是说,电机转一圈如果必须1000个脉冲的话,编码器就肯定计数为1000,但发出的控制脉冲肯定是大于等于1000的。
    从设计思路上说,你的这个问题应该不是程序的问题,而是电气设计的问题,增加一个检测回馈装置,问题将很容易坚决。
      

  4.   

    @贝隆 :
    1、对于你说到的这个问题,电机的检测一般是用Timer循环扫描的,为了能实时显示(看的清楚),一般时间比较长,如果电机转速高的话,会超过设定值的。
    2、我的其实是想做成类似于数控机床那样的设备,电机这边有500线的编码器,精度可以满足,但是那个负载由于传动齿轮间隙什么的,不一定在电机达到位置时,能够达到想要的位置。所以才需要进行那种反馈的
      

  5.   

    以我的经验来看,楼主的想法是无法实现的。通常控制电机都是用脉冲输出办卡或这PLC模块来控制。至于编码器的读数也是如此。PC想要跟上这个速度,是不现实的。