x11223y 发表于 2011-5-24 22:23:24

步进电机的驱动问题,请高手指点一下

现在在做一个步进电机的驱动,有问题请教各位:
用的是57BYGH302,资料如下,http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642623F2PSDP.jpg
(原文件名:100007802323079.jpg)
驱动电路如图所示,http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642624H2PPD0.jpg
(原文件名:12121212.jpg)

用的是别的板子的,本来BSP452是用来驱动继电器的,现在改为驱动步进电机不知道行不行。接线方式是四相六线的,黑白接地,其他四根线接二极管的另一段。
驱动程序如下:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#include "TY_jiancetai.h"

void SysInit(void);
void Time_Init(void);
void IO_Init(void);

interrupt 11 void ISR_Time(void)
{
time_ms++;
if(time_ms%2==0)
        {
                num1++;
        if(num1==8) num1=0;
               
        if(num1==0) {red1=1;yellow1=0;green1=0;blue1=0;}
        if(num1==1) {red1=1;yellow1=1;green1=0;blue1=0;}
        if(num1==2) {red1=0;yellow1=1;green1=0;blue1=0;}
        if(num1==3) {red1=0;yellow1=1;green1=1;blue1=0;}
        if(num1==4) {red1=0;yellow1=0;green1=1;blue1=0;}
        if(num1==5) {red1=0;yellow1=0;green1=1;blue1=1;}
        if(num1==6) {red1=0;yellow1=0;green1=0;blue1=1;}
        if(num1==7) {red1=1;yellow1=0;green1=0;blue1=1;}
               
//        if(num1==0) {yellow1=0;green1=0;blue1=0;red1=1;}
//        if(num1==1) {red1=0;yellow1=1;green1=0;blue1=0;}
//        if(num1==2) {red1=0;yellow1=0;green1=1;blue1=0;}
//        if(num1==3) {red1=0;yellow1=0;green1=0;blue1=1;}

        }
/********** 1s *************/
if(time_ms==1000)
{
        time_ms=0;
        if(time_init)time_init--;
}   
j= TPM1SC_TOF ;
TPM1SC_TOF=0;
}
void SysInit(void)
{
SOPT= 1<<7|         //看门狗定时器(1):0,禁止;1,使能
          1<<6|         //看门狗溢出周期(1):1,2^18;0,2^13
          0<<5;         //STOP模式(0):1,使能;0,禁止
ICGC1 = 0<<7|         //晶振选择:1,高增益;0,低电压
          0<<6|         //频率范围选择:1,高频P=1;0,低频P=64
          0<<5|         //0:外部时钟输入;1,振荡器或
          0<<4|         /*******bit4,bit3-时钟模式选择*************/
          0<<3|         /*00:self clock,01:内部时钟,10:外部,11外部*/
          0<<2|         //OFF MODE振荡器:1,使能;0,禁止
          0<<1|         //时钟丢失检测:0:使能;1,禁止
          0<<0;         //保留
ICGC2 = 0<<7|         //ICG频率降低时:1,产生中断;0,产生复位
          0<<6|         /********bit6-bit4:倍频因子N****************/
          0<<5|         /*   000-> 4;001-> 6;010-> 8;011->10       */
          0<<4|         /*   100->12;101->14;110->16;111->18       */
          0<<3|         //系统频率降低时:1,产生中断;0,产生复位         
          0<<2|         /********bit6-bit4:分频因子R****************/
          0<<1|         /*   000-> 1;001-> 2;010-> 4;011->8      */
          1<<0;         /*   100->16;101->32;110->64;111->132      */
         
Time_Init();          //定时器初始化
IO_Init();
time_init=1;
}
void Time_Init(void)
{
TPM1SC = 0<<7|    //定时器1溢出标志
         1<<6|    //溢出中断使能
         0<<5|    //PWM中心选择:0,由MSnB:MSnA决定;1,所有的TPMx
         0<<4|    /********bit4,bit3-时钟源选择***********/
         1<<3|    /*00:禁止,01:BUSCLK,10:XCLK,11:外部时钟*/
         0<<2|    /******bit2,bit1,bit0-分频系数**********/
         0<<1|    /* 000-> 1,001-> 2,010-> 4,011->8    */
         0<<0;    /* 100->16,101->32,110->64,111->128    */
TPM1MODH=0x03;   //0x03E8==1000
TPM1MODL=0xE8;
}
void IO_Init(void)
{
        /********步进电机引脚驱动********/
        DDR_red1=1;
red1=0;
DDR_yellow1=1;
yellow1=0;
DDR_green1=1;
green1=0;
DDR_blue1=1;
blue1=0;

PTDDD_PTDDD7=1; //LED测试
}
void main(void)
{
SysInit();
EnableInterrupts; /* enable interrupts */
while(time_init)__RESET_WATCHDOG();
for(;;)
{
    __RESET_WATCHDOG(); /* feeds the dog */
}
}

现在测试的是只有在8拍的时候驱动能力最大,在四拍的时候用手都可以轻易握住,可是在在8拍的时候会有嗡嗡叫的声音,而且只能够2ms驱动一次,在1ms时出现电机转子不转动,只有嗡嗡叫的现象,而大于2ms时会出现卡的感觉,而且振动很大,我想请问各位能有什么办法消除这个声音吗?不确定是声音还是振动,因为那在手上的时候声音不大,固定在桌子上时声音很响。有什么好的解决方案?

上传一下波形图:http://cache.amobbs.com/bbs_upload782111/files_39/ourdev_642675BWR188.JPG
(原文件名:TEK0000.JPG)

x11223y 发表于 2011-5-25 08:24:47

自己顶一下

chenyuqiu 发表于 2011-5-25 09:34:51

楼主,之所以会有振动和噪音是因为你没有做细分,而且驱动电路不是用专用的驱动IC,我推荐你用L6205试试,用功率管搭建起来的驱动电路你觉得在性能方面会很好吗?看了你的电机参数觉得用L6205最合适,不过价格可能比较贵,40块一片。但是可以做到电机运行起来很平滑,力矩会很大的效果。我用过L6205已经有做过产品了,你可以搜一下我发表的一个帖子,里面有电路图和产品图。希望能帮得到你!!!

chenyuqiu 发表于 2011-5-25 09:36:42

还有一点就是:你给的电机电压12V过低了,电压是直接影响电机高速运行时的性能来的,所以建议你用24V。

monkhooder 发表于 2011-5-25 10:08:05

回复【3楼】chenyuqiu 小陈
-----------------------------------------------------------------------

应该用什么样的电压是怎么确定的,最近也在做步进电机的驱动的项目,但是驱动电压怎么确定的方法一直找不到,能否给点儿建议,就是电压的确定要考虑什么因素

x11223y 发表于 2011-5-25 10:12:01

回复【3楼】chenyuqiu 小陈
-----------------------------------------------------------------------

还有一点就是:你给的电机电压12V过低了,电压是直接影响电机高速运行时的性能来的,所以建议你用24V。
--------------------------------------------------
我试过24V的可是振动更大,在这个电路上没法控制,细分的话目前的条件上不知道好不好实现,我看资料上细分是靠计算电流值来实现的,可是目前电路板上不好做AD,怕影响精度

x11223y 发表于 2011-5-25 10:41:01

回复【2楼】chenyuqiu 小陈
楼主,之所以会有振动和噪音是因为你没有做细分,而且驱动电路不是用专用的驱动ic,我推荐你用l6205试试,用功率管搭建起来的驱动电路你觉得在性能方面会很好吗?看了你的电机参数觉得用l6205最合适,不过价格可能比较贵,40块一片。但是可以做到电机运行起来很平滑,力矩会很大的效果。我用过l6205已经有做过产品了,你可以搜一下我发表的一个帖子,里面有电路图和产品图。希望能帮得到你!!!
-----------------------------------------------------------------------

没找到帖子,只有一两个相关的,没资料

chenyuqiu 发表于 2011-5-25 13:51:33

回复【4楼】monkhooder
回复【3楼】chenyuqiu 小陈
-----------------------------------------------------------------------
应该用什么样的电压是怎么确定的,最近也在做步进电机的驱动的项目,但是驱动电压怎么确定的方法一直找不到,能否给点儿建议,就是电压的确定要考虑什么因素
-----------------------------------------------------------------------
我的一般用法是:如果是四线的步进电机就是用24V的电压,如果是用六线的就用12V

chenyuqiu 发表于 2011-5-25 13:57:23

回复【5楼】x11223y
回复【3楼】chenyuqiu 小陈
-----------------------------------------------------------------------
还有一点就是:你给的电机电压12v过低了,电压是直接影响电机高速运行时的性能来的,所以建议你用24v。
--------------------------------------------------
我试过24v的可是振动更大,在这个电路上没法控制,细分的话目前的条件上不知道好不好实现,我看资料上细分是靠计算电流值来实现的,可是目前电路板上不好做ad,怕影响精度

-----------------------------------------------------------------------

你现在这个驱动电路我想做出来的效果最大程度也只能算是很一般的,想要做得好就不要想着成本,一分钱一分货。好的产品是需要好的硬件支持来的,还要依靠程序的有效控制处理才能发挥好的性能出来。你现在的电路我是不赞成做产品上的,你看本论坛的雕刻机驱动电路就知道了,设计上考虑很周全。也是用专用IC驱动的,真正做产品哪里敢像你那样搭建那种简单的电路来驱动的?不过如果你要考虑成本的话我也就不敢多说了,呵呵

x11223y 发表于 2011-5-25 14:31:04

回复【8楼】chenyuqiu 小陈
回复【5楼】x11223y
回复【3楼】chenyuqiu 小陈
-----------------------------------------------------------------------
还有一点就是:你给的电机电压12v过低了,电压是直接影响电机高速运行时的性能来的,所以建议你用24v。   
--------------------------------------------------
我试过24v的可是振动更大,在这个电路上没法控制,细分的话目前的条件上不知道好不好实现,我看资料上细分是靠计算电流值来实现的,可是目前电路板上不好做ad,怕影响精度
-----------------------------------------------------------------------
你现在这个驱动电路我想做出来的效果最大程度也只......
-----------------------------------------------------------------------

现在只是公司要做一个实验设备而已,主要是用到步进电机的行程好控制,精度不要太高,0.9/1.8的角度能够满足实验的,现在只是有一个振动问题,想要解决,L6205的话不知道好不好采购,...加上现在这公司成本控制厉害....现在只能自己先手动看能不能搭一个出来的....而且要是用L6205一个就要几十块钱加上步进电机。。。驱动一路就要100多。。。这样我一块板子一般要3路驱动的.....

要减少噪声和振动的话是不是只有细分?按照标准的0.9/1.8度的话不可以?

rifjft 发表于 2011-5-25 15:45:26

驱动电路有问题吧,步进驱动不像直流有刷,随便搭上就行

反正也就用三路,买全集成的步进电机驱动芯片,自己搭出来,这样成本很低,反正外围电路也不复杂。有点耐性就行

http://cache.amobbs.com/bbs_upload782111/files_40/ourdev_642805EZX42G.jpg
(原文件名:20.jpg)

反正是公司实验设备用的,再省,钱也不是你的。如果做出来的效果不好,则是你的责任

x11223y 发表于 2011-5-25 16:23:59

回复【10楼】rifjft 吝啬
驱动电路有问题吧,步进驱动不像直流有刷,随便搭上就行
反正也就用三路,买全集成的步进电机驱动芯片,自己搭出来,这样成本很低,反正外围电路也不复杂。有点耐性就行

反正是公司实验设备用的,再省,钱也不是你的。如果做出来的效果不好,则是你的责任

-----------------------------------------------------------------------

原来的实验设备是用直流有刷做的,便宜,可是速度很慢,而且碳膜很容易损坏,,现在已经坏了一两个,很要求耐久性的,做一次实验以十万计,用芯片做有什么推荐芯片吗?用7708、9997这些驱动直流电机的芯片行不行?

huang_wei 发表于 2011-5-25 17:29:33

mark

rifjft 发表于 2011-5-25 18:47:30

直流电机驱动芯片,是驱动直流电机的

步进电机驱动芯片,是驱动步进电机的

就像把你的工资发给我,也是不行的

x11223y 发表于 2011-5-25 19:31:35

回复【13楼】rifjft 吝啬
直流电机驱动芯片,是驱动直流电机的
步进电机驱动芯片,是驱动步进电机的
就像把你的工资发给我,也是不行的
-----------------------------------------------------------------------

说的很直白,不过不了解步进电机和直流电机的驱动区别,感觉还是不好理解

chenyuqiu 发表于 2011-5-25 19:47:44

回复【14楼】x11223y
回复【13楼】rifjft 吝啬
直流电机驱动芯片,是驱动直流电机的
步进电机驱动芯片,是驱动步进电机的
就像把你的工资发给我,也是不行的
-----------------------------------------------------------------------
说的很直白,不过不了解步进电机和直流电机的驱动区别,感觉还是不好理解
-----------------------------------------------------------------------

那就没办法了,看来楼主是半路出家的,在自己对步进电机还没有一个大概的了解情况下我们是很难跟楼主说得明的,所以建议楼主还是有针对性的先去了解一下步进电机有关的知识比较好。

x11223y 发表于 2011-5-25 20:22:08

回复【15楼】chenyuqiu 小陈
回复【14楼】x11223y
回复【13楼】rifjft 吝啬
直流电机驱动芯片,是驱动直流电机的   
步进电机驱动芯片,是驱动步进电机的   
就像把你的工资发给我,也是不行的
-----------------------------------------------------------------------
说的很直白,不过不了解步进电机和直流电机的驱动区别,感觉还是不好理解
-----------------------------------------------------------------------
那就没办法了,看来楼主是半路出家的,在自己对步进电机还没有一个大概的了解情况下我们是很难跟楼主说得明的,所以建议楼主还是有针对性的先去了解一下步进电机有关的知识比较好。
-----------------------------------------------------------------------

确实是的,幸好现在时间不急,主要是自己想弄懂一点

x11223y 发表于 2011-7-18 09:14:24

回复【10楼】rifjft 吝啬
-----------------------------------------------------------------------

可不可以推荐一个步进电机的驱动芯片???

xivisi 发表于 2011-7-18 09:19:01

回复【17楼】x11223y
回复【10楼】rifjft 吝啬
-----------------------------------------------------------------------
可不可以推荐一个步进电机的驱动芯片???
-----------------------------------------------------------------------

chenyuqiu 搭的那块芯片就不错 不过是两相四线的

x11223y 发表于 2011-7-18 20:01:55

回复【18楼】xivisi LiYong
回复【17楼】x11223y   
回复【10楼】rifjft 吝啬
-----------------------------------------------------------------------
可不可以推荐一个步进电机的驱动芯片???
-----------------------------------------------------------------------
chenyuqiu 搭的那块芯片就不错 不过是两相四线的
-----------------------------------------------------------------------

THB6064?
页: [1]
查看完整版本: 步进电机的驱动问题,请高手指点一下