搜索
bottom↓
回复: 32

再发帖,请教AVR PWM---正余波 驱动步进电机问题。附电路简图。

[复制链接]

出0入0汤圆

发表于 2009-7-28 11:35:03 | 显示全部楼层 |阅读模式
搞了多日,问题依然。
请高人出手。
电机为两相,1.8度电机。

主要问题是:.电机低转速时,振动很大。细分不正常,转起来是一格一格的。应该是没有细分到。

无米,无相机,随手手机拍的。

电路驱动简图。A相 与B相  电路相同。

(原文件名:QQ截图未命名.jpg)



附电机波形图。这图是上面电路中的   TEST  点的波形。
问题是图中为什么波形不连续的呢?
上面的是B相,下面的是A相

(原文件名:IMG0192A.jpg)

也附个图:  我是RC滤波 波形是连续的。
这两相波形都有。


(原文件名:IMG0178A.jpg)




附细分表:
//象限                余弦波                正弦波

Step_Quadrant0        ,        200        ,        0         ,                           
Step_Quadrant0        ,        196        ,        39        ,
Step_Quadrant0        ,        185        ,        77        ,
Step_Quadrant0        ,        166        ,        111        ,
Step_Quadrant0        ,        141        ,        141        ,
Step_Quadrant0        ,        111        ,        166        ,
Step_Quadrant0        ,        77        ,        185        ,
Step_Quadrant0        ,        39        ,        196        ,

Step_Quadrant1        ,        0        ,        200        ,
Step_Quadrant1        ,        39        ,        196        ,
Step_Quadrant1        ,        77        ,        185        ,
Step_Quadrant1        ,        111        ,        166        ,
Step_Quadrant1        ,        141        ,        141        ,
Step_Quadrant1        ,        166        ,        111        ,
Step_Quadrant1        ,        185        ,        77        ,
Step_Quadrant1        ,        196        ,        39        ,

Step_Quadrant2        ,        200        ,        0        ,
Step_Quadrant2        ,        196        ,        39        ,
Step_Quadrant2        ,        185        ,        77        ,
Step_Quadrant2        ,        166        ,        111        ,
Step_Quadrant2        ,        141        ,        141        ,
Step_Quadrant2        ,        111        ,        166        ,
Step_Quadrant2        ,        77        ,        185        ,
Step_Quadrant2        ,        39        ,        196        ,

Step_Quadrant3        ,        0        ,        200        ,
Step_Quadrant3        ,        39        ,        196        ,
Step_Quadrant3        ,        77        ,        185        ,
Step_Quadrant3        ,        111        ,        166        ,
Step_Quadrant3        ,        141        ,        141        ,
Step_Quadrant3        ,        166        ,        111        ,
Step_Quadrant3        ,        185        ,        77        ,
Step_Quadrant3        ,        196        ,        39       

};


问题是:

1.电机低转速时,振动很大。细分不正常,转起来是一格一格的。应该是没有细分到。
2.电机波形图中为什么波形不连续的呢?  

有需要可贴程序。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2009-7-28 13:41:15 | 显示全部楼层
楼主的电路是不能正常工作的
没有自举电容
GS间的电阻不用接尤其是上臂更是不能接

出0入0汤圆

 楼主| 发表于 2009-7-28 14:31:58 | 显示全部楼层
TO  【1楼】 shinehjx

我上面的图少了一个二极管。
再上图,这个图是一个商品驱动器的原理图。应该是正确的。
在高速转的时候声音和振动都很小,就是在低速的时候,感觉没有细分。
请指教。


(原文件名:MOTO.jpg)

出0入0汤圆

 楼主| 发表于 2009-7-28 17:54:42 | 显示全部楼层
高人啊,我在呼唤你啊。快出来帮帮忙吧。

看戏的人多!没人帮帮我啊?

出0入0汤圆

发表于 2009-7-29 08:46:59 | 显示全部楼层
你是怎么判断低速时没有细分呢?低速时给1600个脉冲能转一圈吗?

出0入0汤圆

发表于 2009-7-29 08:51:50 | 显示全部楼层
没看到续流二极管.

出0入0汤圆

 楼主| 发表于 2009-7-29 13:40:38 | 显示全部楼层
to【4楼】 wayhe

在低速时,他能转动。但是转起来是一跳一跳的。像我上面的8分细,如果正常的话,应该能感觉到很小的振动。但是我的却很大。

TO 【5楼】
这个管子本身也带有的啊。

(原文件名:QQ截图未命名.jpg)

出0入0汤圆

发表于 2009-7-29 15:08:47 | 显示全部楼层
如果是八细分应该是1600个脉冲步进电机转一圈,LZ先测试一下你的驱动器多少个脉冲能让步进电机转一周再说

出0入0汤圆

发表于 2009-7-29 19:10:40 | 显示全部楼层
我不是看戏的哦!

加大自举电容看看。

出0入0汤圆

 楼主| 发表于 2009-7-29 22:06:20 | 显示全部楼层
我明天上8细分时电机转一周的脉冲数 数据。

谢谢
--------------------------------
TO【8楼】 ellison909   

我不是看戏的哦!

加大自举电容看看。

--------------------------------
谢谢。
这个我还真的没想过,好天也试试。


另外我还有一点不明白的事,以下的两个图,一个是单片机PWM --》RC后的正弦波,另一个是驱动步进机后电流采样电阻的波形,
那图中的圆圈中的不连续波形,不知道是怎么回事?


开始我坏疑是驱动管的死区电压,但后来生成带直流分量,但这样还是出现下图不连续的波形,实在是搞不清楚啦。

高人指教啊!!!!




(原文件名:ourdev_465174.jpg) \\
(原文件名:ourdev_465186.jpg)

出0入0汤圆

发表于 2009-7-30 02:07:37 | 显示全部楼层
冒昧的问一句,楼主用什么电路做的斩波恒流?
图中似乎没有看到,
既然没有斩波恒流部分,
何来电流细分一说?
愿听楼主高见

出0入0汤圆

 楼主| 发表于 2009-7-30 07:24:03 | 显示全部楼层

---------------------------------
【10楼】 lovework
冒昧的问一句,楼主用什么电路做的斩波恒流?
图中似乎没有看到,
既然没有斩波恒流部分,
何来电流细分一说?
愿听楼主高见
---------------------------------
其实我的电路很简单,也就是   上图驱动电路 + M16单片机+电流检测,
用M16的 两个PWM 输出去控制IR2104 使能端实现调压(电压稳定,其实也就是调电流)
由面上的图应该可以看得出来。

但这种方法,电路简单,但电机的上不了很高速的。

出0入0汤圆

发表于 2009-7-30 08:17:21 | 显示全部楼层
单片机产生的波形不正确,第二张图RC滤波出来的波形相位不对,正确应该是相差180度。
既然电路很简单为何不贴完整的上来?瞎子摸象的样子很难解决问题,如果电路保密估计大家都很难帮到你。
如果经验不足建议还是选专用驱动芯片来做成功率会高很多,而且性能也要比你这个好不少。

出0入0汤圆

发表于 2009-7-30 09:07:15 | 显示全部楼层
cyxavr 又一天:我觉得是你的电路没有恒流?你的PWM是可以改变电流大小,是可以得到正弦波。但细分讲究的是恒流,不是恒压。流过电机的相电流与:输入电压、线圈电感、PWM导通时间有关,如果你没有电流取样再调节PWM占空比恒定电流,那你的电路就不能实现细分了。如果没有准确的恒流,在高低速都有步距不均匀的问题,只是在低速的时候问题比较明显,高速的时候你没有擦觉到而已。

出0入0汤圆

 楼主| 发表于 2009-7-30 09:28:51 | 显示全部楼层
TO【13楼】  wayhe
想了一下,13楼讲的也有道理。
不知道【13楼】兄弟,有无简单点电流采方法呢?


上原理图,不过采样电流还没有画。


(原文件名:MOTO_D.jpg)

上面电路电流采样的没有画。
我现在买了HCNR200
想按这个电路采样,不知可否?

(原文件名:MOTO_D_D.jpg)




晶振:16MHZ
CPU:  M16

IAR AVR 4.3版


struct Motor2P_COR
{
   unsigned int mTableId;//细分表ID
   unsigned char mDirect;//马达走动方向
   unsigned int mStepCount;//细分表走动步长。1-2-4-8-16   ~200                其实就是设置细分用的
};

struct Motor2P_PWM
{
   unsigned char mQuadrant;//象限0-3
   unsigned char mB_Pwm;//x输出的PWM
   unsigned char mA_Pwm;//y输出的PWM
};


先发程序

//象限 余弦波 正弦波

Step_Quadrant0 , 200 , 0  ,                             
Step_Quadrant0 , 196 , 39 ,
Step_Quadrant0 , 185 , 77 ,
Step_Quadrant0 , 166 , 111 ,
Step_Quadrant0 , 141 , 141 ,
Step_Quadrant0 , 111 , 166 ,
Step_Quadrant0 , 77 , 185 ,
Step_Quadrant0 , 39 , 196 ,

Step_Quadrant1 , 0 , 200 ,
Step_Quadrant1 , 39 , 196 ,
Step_Quadrant1 , 77 , 185 ,
Step_Quadrant1 , 111 , 166 ,
Step_Quadrant1 , 141 , 141 ,
Step_Quadrant1 , 166 , 111 ,
Step_Quadrant1 , 185 , 77 ,
Step_Quadrant1 , 196 , 39 ,

Step_Quadrant2 , 200 , 0 ,
Step_Quadrant2 , 196 , 39 ,
Step_Quadrant2 , 185 , 77 ,
Step_Quadrant2 , 166 , 111 ,
Step_Quadrant2 , 141 , 141 ,
Step_Quadrant2 , 111 , 166 ,
Step_Quadrant2 , 77 , 185 ,
Step_Quadrant2 , 39 , 196 ,

Step_Quadrant3 , 0 , 200 ,
Step_Quadrant3 , 39 , 196 ,
Step_Quadrant3 , 77 , 185 ,
Step_Quadrant3 , 111 , 166 ,
Step_Quadrant3 , 141 , 141 ,
Step_Quadrant3 , 166 , 111 ,
Step_Quadrant3 , 185 , 77 ,
Step_Quadrant3 , 196 , 39

};


void timer1_init(void)
{
  TCCR1B = 0x00;
  TCCR1A = 0x00;                   
  ICR1=255;//这里比较输出的TOP值  
  OCR1A=0;
  OCR1B=200; //A  B  相位相差90度
  TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);   // OCR1X时清0  TOP 时置位
  TCCR1B = (1<<CS10)|(1<<WGM13)|(1<<WGM12);//    8位的快速PWM  
}


void Motor_Init(void)
{
  sMotor2P.mStepCount=1;   
  //mNum_C= 10;//初始化
  Step_OutMode();
}


void init(void)
{
  CLI();
  port_init();
  timer1_init();
// timer0_init();
  //timer2_init();
// Motor_Init();//马达初始化
  MCUCR = 0x00;
  GICR  = 0x20;//INT2中断
  TIMSK = 0x03; //timer interrupt sources
  SEI();  
}

#pragma vector=INT2_vect  
__interrupt void INT2_vect_ISR(void)

{
  Motor_Step_one( sMotor2P.mDirect );
  InMotor_Energy( sMotor2P.mTableId,  mNum_C);
}



主要函数:

void InMotor_Energy(unsigned int Mid,unsigned char mNum)
{
    const struct Motor2P_PWM __flash  *pc_Motor2P_Table;
    static unsigned char C_DIR;
    unsigned int A,B;
   
   pc_Motor2P_Table=&cMotor2P_Table[Mid];

//  B=(unsigned int)(( pc_Motor2P_Table->mB_Pwm *mNum_C) >>4);// 余弦
//  A=(unsigned int)(( pc_Motor2P_Table->mA_Pwm *mNum_C) >>4);//正弦

    B=(unsigned int)( pc_Motor2P_Table->mB_Pwm ) ;// 余弦
    A=(unsigned int)( pc_Motor2P_Table->mA_Pwm ) ;//正弦
   
   
   CLI();
   C_DIR= pc_Motor2P_Table->mQuadrant;
   OCR1B=B; //B_PWM余弦
   OCR1A=A; //A_PWM正弦
   
  switch (C_DIR)
   {
     case 1:EN_B=0;EN_A=1;break;
     case 2:EN_A=1;EN_B=1;break;
     case 3:EN_B=1;EN_A=0;break;
     case 4:EN_A=0;EN_B=0;break;
     default:       break;
   }
  
   SEI();
   
}


void Motor_Step_one(unsigned char F_DIR)
{
   if(F_DIR)//顺时针
   {
     if(sMotor2P.mTableId==0)  
     sMotor2P.mTableId=sizeof( cMotor2P_Table)/sizeof( struct Motor2P_PWM)-sMotor2P.mStepCount;      
     else
        sMotor2P.mTableId-=sMotor2P.mStepCount;
   }
   else//反转
   {
      sMotor2P.mTableId+=sMotor2P.mStepCount;
      if(sMotor2P.mTableId >= (sizeof(cMotor2P_Table)/sizeof(struct Motor2P_PWM))) sMotor2P.mTableId=0;
   }

}


主函数:
void main(void)
{
  init();
  while(1)
  {}
}

出0入0汤圆

发表于 2009-7-30 10:44:12 | 显示全部楼层
bu dong

出0入0汤圆

发表于 2009-7-30 10:58:07 | 显示全部楼层
TO LZ看你提供的电路图没有电流反馈控制,只是用PWM直接输出类SPWM波,这样不可能控制步进电机电流按正余弦规律变化,细分更是无从谈起了。

出0入0汤圆

发表于 2009-7-30 11:10:07 | 显示全部楼层
都站在同一“地”上,直接采样吧,不用隔离。

出0入0汤圆

 楼主| 发表于 2009-7-30 12:07:14 | 显示全部楼层
先谢谢各位的帮忙。
看了各位的回复,我原来没有电流采样,控制不了细分。
没经验,第一次搞驱动器。

我上面的图如果不隔离直接用AD采样的话,会不会对单片机有影响?
因为电机的驱动电压是30V
电流可以去到5A的,怎么大个电流单片机受得了吗?

出0入0汤圆

发表于 2009-7-30 17:21:49 | 显示全部楼层
可以直接用AD采样,布线合理的前提下,既使是50A对单片机也不会有影响

楼主你这个方案随你怎么弄性能也是好的有限,建议你还是加入硬件恒流斩波,或直接采用专用驱动芯片,5A可以用A3986+MOSFET做,性能绝对要比你这个方案好n倍

出0入0汤圆

 楼主| 发表于 2009-7-30 18:30:53 | 显示全部楼层
TO 【19楼】 shinehjx  
你的硬件恒流斩波,意思是不是 加个TLC7528再加个运放CA084与LM339之类的方案?

可否详细指点下“硬件恒流斩波”?

出0入0汤圆

发表于 2009-8-1 08:51:32 | 显示全部楼层
细分驱动通常是由:逻辑时序->DAC->斩波控制->功率输出 组成。
                                   ↑        |
                                    |________|

斩波控制常用的是L6506,也可以用比较器加触发器搭,在本坛搜索“细分”或“步进电机”结果中会有你想要的。

出0入0汤圆

 楼主| 发表于 2009-8-4 20:50:20 | 显示全部楼层
前面提到的低速振动大的问题,原因已找到,
是一个很低级的错误。

解决方法:将原来的PWM端与EN使能端对调。
再改变正余弦表,
改为:
中值:128(最大8位,255)
正负偏一个数值(小到128)构成正余波。

出0入0汤圆

发表于 2009-8-7 15:35:47 | 显示全部楼层
现在试验结果怎么样了?

出0入0汤圆

 楼主| 发表于 2009-8-7 17:11:57 | 显示全部楼层
现在低速很安静,细分也正常。
现在正在加入电流采样功能。

出0入0汤圆

发表于 2010-1-4 22:42:03 | 显示全部楼层
想知道楼主现在搞的怎么样了?我也想学习这块!楼主给个联系方式吧!

出0入4汤圆

发表于 2010-1-5 00:07:49 | 显示全部楼层
没有暂波 何来恒流

出0入0汤圆

发表于 2010-1-5 10:08:36 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-2-26 23:23:24 | 显示全部楼层
可以使用TMC457实现正弦波电流驱动以保证在低速的时候或者在加减速度的时候也不会出现抖动
点击此处下载 ourdev_535483.pdf(文件大小:5.34M) (原文件名:TMC457-Motion-Controller_02-2009.pdf)

(原文件名:2.gif)

出0入0汤圆

发表于 2012-1-14 11:09:17 | 显示全部楼层
学习了

出0入0汤圆

发表于 2013-10-3 20:48:30 | 显示全部楼层
学习了

出0入0汤圆

发表于 2013-10-22 12:01:08 | 显示全部楼层
mark,学习下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 11:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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