搜索
bottom↓
回复: 12

步进电机转动步数和脉冲信号频率的关系(附程序)

[复制链接]

出0入0汤圆

发表于 2006-6-29 10:44:39 | 显示全部楼层 |阅读模式
最近在做步进电机的实验,调试的已经差不多了,但碰到了一个问题,即步进电机转动的步数会随着脉冲信号的频率而成比例变化,程序的原意是通过T/C0的CTC模式产生的脉冲信号,Step值设置电机转动的步数,但是运行时发现当Step不变,调整CTC输出的脉冲频率,转的步数也会发生变化,比如脉冲频率为10kHz,Step=100000(10圈),电机转动了7.5圈(应该是误差造成的吧?),而当频率改为20kHz,Step值不变时,电机转动了15圈,当频率为5Hz时为3.75圈,所以这里就有个问题,Step是在中断中执行减1的操作,应该和频率无关的吧,但结果确是和频率成正比,难道Step定义的是时间而不是步数?百思不得其解,望大家指教,谢谢~~程序主要部分如下:



//管脚定义,fosc=1MHZ,内部RC振荡

#define ENA                        0         //PB0

#define DIR                        1         //PB1

#define PUL                        3         //OC0   PB3

//宏定义

#define ENA_OFF()                PORTB|= (1<<ENA)  //电机朝扩充方向转

#define ENA_ON()                PORTB&=~(1<<ENA)        //电机朝压缩方向转

#define DIR_EXP()                PORTB&=~(1<<DIR)  //电机反转

#define DIR_COM()                PORTB|= (1<<DIR)        //电机正转



//全局变量

volatile unsigned long Step;                //步进电机待走的步数

volatile signed long Pos_Count;                //记录步进电机的绝对位置



SIGNAL(SIG_OUTPUT_COMPARE0)//T0输出比较A匹配中断

{

    if(Step == 0)

    {   

       ENA_OFF();//步数已减至0,即电机已转至目标位置

              

    }

    else

       Step--;//步数减一               

}



void timer0_init(void) //CTC模式输出10KHz方波

{

    OCR0  = 0x31;  //设定TOP值

    //TOP=1000000/(2*1*10000)-1=49  (0.1mS)

    TCCR0 = (1<<WGM01)|(0<<WGM00)|(0<<COM01)|(1<<COM00)|(1<<CS00);

    //无分频,CTC模式,OC0取反输出方波

    TIMSK|=(1<<OCIE0);//T/C0输出比较匹配使能

}



int main(void)

{



    //上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻

    PORTA = 0xFF;                                                                        //不用的管脚使能内部上拉电阻。

    PORTC = 0xFF;

    PORTD = 0xFF;

    PORTB |=~((1<<ENA)|(1<<DIR)|(1<<PUL));                                                                //初始低电平,三根线,使能,方向和脉冲,接驱动器

    DDRB  |= ((1<<ENA)|(1<<DIR)|(1<<PUL));                                                                //输出

   

    DIR_COM();//电机正转

    Step = 100000;//10000步/圈,转10圈,步进电机设置的是10000步/圈

    ENA_ON();//使能电机

    timer0_init();

    sei();                                                                                        //使能全局中断

    while(Flag == 0)

    {

           ;//等待中断

    }

}




-----此内容被linky于2006-06-29,11:01:02编辑过

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2006-6-29 15:47:19 | 显示全部楼层
你使用的是几相步进电机?用的是几拍的环行分配?步进电机是每走完一个环行分配走2微步。脉冲频率一般是不会影响圈数的,除非你的频率太高超出了电机的频响,出现了失步,那就有可能了。但不会出现一定的规律,一般是随机的。

100000步才10圈,我不太明白。一般的电机都是200微步的。

出0入0汤圆

 楼主| 发表于 2006-6-30 09:31:10 | 显示全部楼层
我用的是4相电机,驱动器是买的,直接接线就可以了。电机也是200步的,但是用了50细分,所以就成10000微步/圈了,我用的Step是在中断里减一,应该和频率无关啊,可实际情况又是如上说的,想了很久也想不明白,所以麻烦大家一起看看:)

出0入0汤圆

发表于 2009-9-10 14:37:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-11 09:54:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-9-11 17:39:35 | 显示全部楼层
Step == 0时要关定时器的吧,

出0入0汤圆

发表于 2009-11-16 10:31:28 | 显示全部楼层
linky 大虾:

   关注ing,最后结果怎么样?把定时器关掉以后?

出0入0汤圆

发表于 2009-11-23 21:50:17 | 显示全部楼层
使用TMC428

(原文件名:2.gif)

型号        性能
                           控制芯片
TMC211        1个步进控制+驱动芯片 LIN通讯
TMC222        1个步进控制+驱动芯片 IIC通讯
TMC223        1个步进控制+驱动芯片 IIC通讯 StallGuard功能
TMC428        3个电机控制芯片;SPI或step/dir控制信号
TMC454        位置闭环芯片,PID功能,ABN编码器输入,微步406,classic/SPI/SD
TMC457        位置闭环芯片,PID功能,ABN编码器输入,微步2048;classic/SPI/SD
TMC401        信号转化芯片 SPI---STEP/DIR;42细分
                   编码器信号处理芯片
TMC423        3路ABN编码器处理芯片
                        步进驱动芯片
TMC236        2相步进驱动芯片;1.5A;64细分;齐全的保护和诊断功能
TMC239        2相步进驱动芯片;MOSFETS外置;64细分;齐全的保护和诊断功能
TMC246        2相步进驱动芯片;1.5A;64细分;齐全的保护和诊断功能; 具有专利技术StallGuard技术
TMC249        2相步进驱动芯片;MOSFETS外置;64细分;齐全的保护和诊断功能;具有专利技术StallGuard技术
                                      3相步进驱动芯片
TMC332        适用2相或3相步进电机;自动高速;运动平稳;细分数2相256细分,3相171细分;S/D接口;ABN编码器输入
                     无传感器直流无刷驱动芯片
TMC603        3相BLDC;20A;12-50V;无需Hall换向
       
       
详细资料及参考电路        详细资料及参考电路
       
TMC211        http://www.trinamic.com/tmc/render.php?sess_pid=209
TMC222        http://www.trinamic.com/tmc/render.php?sess_pid=222
TMC223        http://www.trinamic.com/tmc/render.php?sess_pid=223
TMC428        http://www.trinamic.com/tmc/render.php?sess_pid=428
TMC454        http://www.trinamic.com/tmc/render.php?sess_pid=454
TMC457        http://www.trinamic.com/tmc/render.php?sess_pid=457
TMC401        http://www.trinamic.com/tmc/render.php?sess_pid=401
       
TMC423        http://www.trinamic.com/tmc/render.php?sess_pid=423
       
TMC236        http://www.trinamic.com/tmc/render.php?sess_pid=236
TMC239        http://www.trinamic.com/tmc/render.php?sess_pid=239
TMC246        http://www.trinamic.com/tmc/render.php?sess_pid=246
TMC249        http://www.trinamic.com/tmc/render.php?sess_pid=249
       
TMC332        http://www.trinamic.com/tmc/render.php?sess_pid=332
       
TMC603        http://www.trinamic.com/tmc/render.php?sess_pid=603

出0入8汤圆

发表于 2011-8-14 00:04:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-5-11 14:16:43 | 显示全部楼层
这个很有用。。。。MARK

出0入0汤圆

发表于 2013-6-17 17:45:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2013-9-8 05:07:59 | 显示全部楼层
学习学习!

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-23 17:31

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

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