zhuisuoji 发表于 2011-11-9 20:08:33

花了一个晚上,第一次玩转步进电机的感觉真好!感谢阿莫论坛,特别感谢ada1983所提供的

如题~~~感谢阿莫论坛,特别感谢ada1983所提供的步进电机加速曲线!

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693569OI1XK0.jpg
(1个方向转10圈,然后反向逐步每转一圈停顿一下,转够10圈) (原文件名:步进电机运转中.jpg)

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693570XQ2XCG.jpg
(原文件名:运转前后位置保持一致.jpg)

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693602ZENQJ4.jpg
(原文件名:运转一.jpg)

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693603XYHBRW.jpg
(原文件名:运转二.jpg)

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693604UG7X98.jpg
(原文件名:停止.jpg)

编辑原因,相片全部更新楼主位.

也拍了视屏,格式不对可能传不上来,是MPG格式的

21006091 发表于 2011-11-9 20:14:32

沙发坐了,楼主佛山那里啊?上门膜拜去!

Jigsaw 发表于 2011-11-9 20:23:20

晕,还得有加速曲线的啊

zhuisuoji 发表于 2011-11-9 20:23:50

编辑原因,相片更新到楼主位

zhuisuoji 发表于 2011-11-9 20:24:40

呵呵~~这么快就到了3楼了

zhuisuoji 发表于 2011-11-9 20:25:31

回复【1楼】21006091 無奈
沙发坐了,楼主佛山那里啊?上门膜拜去!
-----------------------------------------------------------------------

我在平洲这边

zhuisuoji 发表于 2011-11-9 20:27:33

回复【2楼】Jigsaw
晕,还得有加速曲线的啊
-----------------------------------------------------------------------

没有的话,直接上高速好像不会转的.等一下再试试

armok 发表于 2011-11-9 20:28:17

zhuisuoji 发表于 2011-11-9 20:32:06

/*---说明---
此程序是用来控制步进马达加减速的测试程序
感谢阿莫论坛,坛友 ada1983 提供的步进电机加速度曲线表
程序设计思路:利用定时器产生脉冲来控制步进电机的运转
本想用24M的,结果下载板上的是18.432M的,以下是按18.432M的晶振算的...
阿莫论坛:zhuisuoji 点?潇洒.
*/
#include "stc12c2052AD.H"

#define PulNumb 200
#define Isp_Addr_H 0x10

unsigned intPulseload; //--脉冲频率初值
unsigned char loadaddr;//--脉冲频率初值地址
unsigned char T0CountOV; //--T0溢出数,每2次溢出计壹个脉冲
unsigned intPulCount;//--脉冲数1(PulCount)=2(T0CountOV);
unsigned char StepCount; //--步数    1(StepCount)=8(PulCount);
unsigned intCycleCount;//--转数    1(CycleCount)=200(StepCount);
//unsigned intPulNumb;   //--转数低于

bit AddSub_Speed_f,Direction_f;//--加减速标志,方向标志

sbit key_Input   = P1^0;//--启动键
sbit Direction_Out = P3^5;//--方向输出
sbit Pulse_Out   = P3^7;//--脉冲输出







/*--原值表说明:8M晶振,2相4线(1.8度)步进电机,2细分,250~3500Hz的加速频率表.
//--(360/1.8)*2=200*2=400个脉冲/转.
//--180脉冲转角度=180*(1.8/2)=180*0.9=162度(达到3500HZ)
//--下表的每个脉冲只走半步,即每半步跳变一次频率,
//--比如:到达250Hz时, 走完一步的频率是 250Hz/2=125Hz
----   到达3500Hz时,走完一步的频率是 3500Hz/2=1750Hz
unsigned int   xdata Pulse180[]={
                                                                        32000,27352,21959,17755,14987,13241,12003,11065,10321, 9711,
                                                                        9200, 8762, 8383, 8049, 7753, 7488, 7248, 7031, 6832, 6649,
                                                                        6480, 6324, 6179, 6043, 5917, 5798, 5686, 5580, 5480, 5386,
                                                                        5296, 5211, 5129, 5052, 4978, 4907, 4840, 4775, 4712, 4653,
                                                                        4595, 4540, 4486, 4435, 4385, 4337, 4291, 4246, 4203, 4161,
                                                                        4120, 4080, 4042, 4005, 3969, 3933, 3899, 3866, 3834, 3802,
                                                                        3771, 3741, 3712, 3684, 3656, 3629, 3602, 3576, 3551, 3526,
                                                                        3502, 3478, 3455, 3432, 3410, 3388, 3367, 3346, 3326, 3306,
                                                                        3286, 3267, 3248, 3229, 3211, 3193, 3176, 3159, 3142, 3125,
                                                                        3109, 3093, 3077, 3061, 3046, 3031, 3016, 3002, 2988, 2974,
                                                                        2960, 2946, 2933, 2919, 2906, 2894, 2881, 2869, 2856, 2844,
                                                                        2832, 2821, 2809, 2798, 2786, 2775, 2764, 2754, 2743, 2733,
                                                                        2722, 2712, 2702, 2692, 2682, 2672, 2663, 2653, 2644, 2635,
                                                                        2626, 2617, 2608, 2599, 2591, 2582, 2574, 2565, 2557, 2549,
                                                                        2541, 2533, 2525, 2517, 2509, 2502, 2494, 2487, 2479, 2472,
                                                                        2465, 2458, 2451, 2444, 2437, 2430, 2423, 2417, 2410, 2403,
                                                                        2397, 2391, 2384, 2378, 2372, 2366, 2360, 2354, 2348, 2342,
                                                                        2336, 2330, 2324, 2319, 2313, 2307, 2302, 2296, 2291, 2286,
                                                                };

*/
/*根据上表算出24M,8细分的比较值
计算公式:2细分脉冲频率=8000000/32000=250Hz(半步的频率);
         整步频率=250/2=125Hz;
               8细分脉冲频率=125*8=1000Hz;
               8细分定时器比较值=24000000/1000=24000;
               也可以这样算:8细分定时器比较值=((32000*3)*2)/8=24000;
*/
//--24M 8细分的脉冲定时值
//--8细分时每个脉冲走的角度=1.8/8=0.225,走到162度要达到3500Hz,需发脉冲总数为162/0.225=720个8细分脉冲,
//--每个定时值需发脉冲数=720/180=4个8细分脉冲
//--此表每一次中断取反引脚来产生脉冲,二次为一个脉冲周期,
//--每2次中断记录一个脉冲,每4个脉冲换一个定时初值,直到最后一个达到3500Hz的速度,完成启动-->加速-->恒速
//--反之则进行:恒速-->减速-->停止

//--此表是18.432M晶振算的8细分参数,此表加到200个脉冲
unsigned int code PulseTab[]={
56320 ,        57659 ,        59212 ,        60423 ,        61220 ,        61723 ,        62079 ,        62349 ,        62564 ,        62739 ,
62886 ,        63013 ,        63122 ,        63218 ,        63303 ,        63379 ,        63449 ,        63511 ,        63568 ,        63621 ,
63670 ,        63715 ,        63756 ,        63796 ,        63832 ,        63866 ,        63898 ,        63929 ,        63958 ,        63985 ,
64011 ,        64035 ,        64059 ,        64081 ,        64102 ,        64123 ,        64142 ,        64161 ,        64179 ,        64196 ,
64213 ,        64228 ,        64244 ,        64259 ,        64273 ,        64287 ,        64300 ,        64313 ,        64326 ,        64338 ,
64349 ,        64361 ,        64372 ,        64383 ,        64393 ,        64403 ,        64413 ,        64423 ,        64432 ,        64441 ,
64450 ,        64459 ,        64467 ,        64475 ,        64483 ,        64491 ,        64499 ,        64506 ,        64513 ,        64521 ,
64527 ,        64534 ,        64541 ,        64548 ,        64554 ,        64560 ,        64566 ,        64572 ,        64578 ,        64584 ,
64590 ,        64595 ,        64601 ,        64606 ,        64611 ,        64616 ,        64621 ,        64626 ,        64631 ,        64636 ,
64641 ,        64645 ,        64650 ,        64654 ,        64659 ,        64663 ,        64667 ,        64671 ,        64675 ,        64679 ,
64684 ,        64688 ,        64691 ,        64695 ,        64699 ,        64703 ,        64706 ,        64710 ,        64713 ,        64717 ,
64720 ,        64724 ,        64727 ,        64730 ,        64734 ,        64737 ,        64740 ,        64743 ,        64746 ,        64749 ,
64752 ,        64755 ,        64758 ,        64761 ,        64764 ,        64766 ,        64769 ,        64772 ,        64775 ,        64777 ,
64780 ,        64782 ,        64785 ,        64787 ,        64790 ,        64792 ,        64795 ,        64797 ,        64800 ,        64802 ,
64804 ,        64806 ,        64809 ,        64811 ,        64813 ,        64815 ,        64818 ,        64820 ,        64822 ,        64824 ,
64826 ,        64828 ,        64830 ,        64832 ,        64834 ,        64836 ,        64838 ,        64840 ,        64842 ,        64844 ,
64846 ,        64847 ,        64849 ,        64851 ,        64853 ,        64855 ,        64856 ,        64858 ,        64860 ,        64862 ,
64863 ,        64865 ,        64867 ,        64868 ,        64870 ,        64872 ,        64873 ,        64875 ,        64876 ,        64878 ,
64882 ,        64884 ,        64886 ,        64887 ,        64889 ,        64890 ,        64892 ,        64893 ,        64895 ,        64896 ,
64900 ,        64902 ,        64903 ,        64905 ,        64906 ,        64908 ,        64909 ,        64911 ,        64912 ,        64913 ,
};//--此表每个参数T0溢出8次(即8/2个脉冲走半步)更新一次参数.

//---系统初始化
void sys_Initial(void)
{
        AUXR= 0xc0;//--1T方式
    P1    = 0Xff;
        P1M1= 0x00;//
        P1M0= 0x00;//
   
    P3    = 0Xff;
        P3M1= 0xe0;//1110 0000
        P3M0= 0x00;//0000 0000
   
}
//---------------------------------------------------------------------
//---定时器0初始化
void TMRx_Initial(unsigned int Cycle)
{
    Pulseload= 0;      //--脉冲频率初值
        loadaddr   = 0;      //--脉冲频率初值地址
        T0CountOV= 0;      //--T0溢出数,每2次溢出计壹个脉冲
        PulCount   = 0;      //--脉冲数1(PulCount)=2(T0CountOV);
        StepCount= 0;      //--步数    1(StepCount)=8(PulCount);
        CycleCount = Cycle;//--转数    1(CycleCount)=200(StepCount);
        AddSub_Speed_f= 1; //--启动加速
// TMOD Bit;   7   6      5   4      3      2   1   0
//         GATE1C/T1#M1_1M1_0GATE0C/T0#M0_1M0_0
        TMOD = 0x01;
        TL0= 0;
        TH0= 0;

// TCON Bit;   7   6      5   4      3      2   1   0
//            TF1   TR1    TF0   TR0    IE1    IT1   IE0   IT0
//    TCON = 0x10;//TR0= 1;
// IE Bit;   7       6          5      4      3      2   1   0
//         EA   EPCA_LVD   EADC_SPI    ES    ET1    EX1   ET0   EX0
    IE   = 0x82;
        TR0=1;
        while(CycleCount!=0);
}
//---------------------------------------------------------------------
//---延时程序
/*
void dalay_us(unsigned int mid)
{
unsigned int i;
   for ( i=0;i<mid;i++)
      ;
}
*/

void dalay_1ms(void)
{
unsigned inti;
   for ( i=0;i<1000;i++)
      ;
}
void dalay_ms(unsigned intmid)
{
unsigned inti;
   for ( i=0;i<mid;i++)
      dalay_1ms();
}



//---主程序---
void main(void)
{
    unsigned int time_ms,looptime;

    sys_Initial();
       
        CycleCount = 0;//--转数    1(CycleCount)=200(StepCount);
        while(1)
        {
      time_ms=50;
      loopus:
      if(key_Input==0)//--每按一次键,方向取反
                {
                  dalay_1ms();
                        if(--time_ms!=0)
                        {
                          goto loopus;//--消抖查询
                        }
                        if(CycleCount==0)
                        {
                                TMRx_Initial(10);//--一个方向转10圈
                                Direction_Out = ~Direction_Out;//--方向
                                dalay_ms(100);
                                looptime=10;
                                do{
                                     TMRx_Initial(1);//--反向每转1圈停顿10ms,转够10圈返回原点
                                       dalay_ms(10);
                                }while(--looptime!=0);
                        }
                }
        }
}//--main_end;
//--------------------------------------------------------------------
void Timer0_Routine(void)interrupt 1
{
    static unsigned int th0_buf;
       
        if((CycleCount==1)&&(StepCount==100))//--转到最后半圈时转入减速程式
        {
          AddSub_Speed_f = 0;//--启动减速
        }
        if(++T0CountOV>=2)//每2次溢出计一个脉冲输出
        {
      if(++PulCount>=8)//每8个脉冲计一步,即走了1.8度
                {
                  if(++StepCount>=200)//每200步为一转
                        {
                          if(--CycleCount==0)//总转数减1
                                {
                                  TR0=0;
                                }
                          StepCount=0;
                        }
                  PulCount=0;
                }
                T0CountOV=0;//计完一次脉冲后溢出计数清零
        }

        if(AddSub_Speed_f)
        {
                if(PulCount==4)
                {
                  if(loadaddr<PulNumb)
                        {
                          Pulseload=PulseTab;//--启动时加速
                        }
                }
        }
        else
        {
                if(PulCount==4)
                {
                  if(loadaddr>0)
                        {
                          Pulseload=PulseTab[--loadaddr];//--停止时减速
                  }
                }
        }
        loopth0:
          th0_buf=TH0;
                if(th0_buf!=TH0)
                {
                  goto loopth0;
                }
                th0_buf = Pulseload +((th0_buf<<8)|TL0);//64878
                TH0= th0_buf>>8;
                TL0= th0_buf;
                Pulse_Out=~Pulse_Out;//--输出脉冲
}

zhuisuoji 发表于 2011-11-9 20:33:31

回复【7楼】armok 阿莫
恭喜。
-----------------------------------------------------------------------

老大也来恭喜呵呵~~~

luzj05 发表于 2011-11-9 20:40:59

MARK

ccdavid 发表于 2011-11-9 23:16:13

不错,学习!

wxws 发表于 2011-11-9 23:52:15

一个晚上就能玩转呀,LZ真厉害。
我用M168都搞了一周了

odazhou 发表于 2011-11-10 00:01:09

学习了

qfxian 发表于 2011-11-10 01:33:46

mark 步进电机驱动

samkkk 发表于 2011-11-10 02:36:37

mark!!!!!!!!!

redbat_228 发表于 2011-11-10 08:05:44

支持下…

yhzzp 发表于 2011-11-10 08:29:17

不错,单片机在这里不知道起到什么作用?

zhuisuoji 发表于 2011-11-10 12:58:02

回复【13楼】wxws 我行我素
一个晚上就能玩转呀,lz真厉害。
我用m168都搞了一周了
-----------------------------------------------------------------------

主要是ada1983所提供的步进电机加速曲线的功劳,三年前定JJ时就想玩步进电机了,由于从来没接触过,所以也买了些此类书籍看过.原理

大概是懂了,但是就是没有着手去玩过,去过广州新赛格电子市场,那次差点就买了电机与驱动器,由于那个MM不会的,我又一知半解的,让

她通电试转了一下,结果电机转得很慢,没几下就发烫的厉害,结果以为是她的质量不好没买成,其实应该是电流没调对,太大了.这样一晃

就是三年多.这不JJ回来了,对这个步进电机的兴趣一下子又上来了,之前也看过ada1983贴子,也是没看懂,后来看到他们的一问一答精彩

讲解后才明白的,然后决定一试...

xrwf_2009 发表于 2011-11-10 14:16:33

支持楼主

zhuisuoji 发表于 2011-11-11 06:42:30

第一次上传的视屏...
http://v.youku.com/v_show/id_XMzIxMzgzMDky.html

ada1983 发表于 2011-11-12 10:54:04

嘿嘿,能帮到别人就好啊:)

题外话,如果电机是小电阻,大电流的高速型的,可以将速度加倍试试的,我提供的那个曲线表其实是整步的速度,即启动的时候就是以第一整个脉冲250Hz启动的,你刚好把它减半处理了。电机及驱动允许的话可以不减半试试,跑的更快,更HIGH,当然实际运用时的效率也就更高了:)

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

呃,看了下你的视频,感觉速度没减半么,呵呵:)

zhuisuoji 发表于 2011-11-12 17:21:37

回复【22楼】ada1983
-----------------------------------------------------------------------

这个视屏是因为太激动了拍的,其实后来运转时我发现它没有按照我的意思来减速处理,还没有减到最低速就已停止了,今天我又花了心思

去改过来了,开始运转一定是由低转起的-->每半步更新参数加速-->到最高速-->根据运转即将结束时剩下200个脉冲时开始进入减速处理

-->根据启动时倒过来更新参数-->直到停止.现在这个程序如果开始到结束不到200个脉冲的,也可实现对半分,一半加速一半减速.正在上

传视屏,请高手鉴定~~~呵呵~~

zhuisuoji 发表于 2011-11-12 17:45:38

以下是C文件,请帮手看看,也不知道对不对,改来改去的,注释部分有点对不上的

点击此处下载 ourdev_694542IK517F.zip(文件大小:4K) (原文件名:12c2052_Test.zip)

zhuisuoji 发表于 2011-11-12 19:45:12

回复【22楼】ada1983
嘿嘿,能帮到别人就好啊:)
题外话,如果电机是小电阻,大电流的高速型的,可以将速度加倍试试的,我提供的那个曲线表其实是整步的速度,即启动的时候就是以第一整个脉冲250hz启动的,你刚好把它减半处理了。电机及驱动允许的话可以不减半试试,跑的更快,更high,当然实际运用时的效率也就更高了:)
-------------------------------------------------------------------------------------------------------------------
呃,看了下你的视频,感觉速度没减半么,呵呵:)
-----------------------------------------------------------------------

我的换算法是:[ 32000*2.304(换成18.432M的值)*2 ]/8 = 8细分的(18.432M)频率定时值;由于我采用T0定时溢出产生方波,所以正脉冲只能是频率周期的1/2才是,应该没有减半处理,而且初值还得用65536来减,因T0定时器是向上计时的.

改过后的这个视屏

http://v.youku.com/v_show/id_XMzIxOTI0MDA4.html

jyjmaster 发表于 2011-11-12 19:45:50

mark..

yzuwdf 发表于 2011-11-12 20:28:41

支持下…

szciy 发表于 2011-11-12 21:41:59

曲线这样做,我晕

qd118118 发表于 2011-11-13 08:48:36

步进详解,顶

xml2028 发表于 2011-11-13 09:36:40

mark 步进电机驱动

zhuisuoji 发表于 2011-11-13 09:45:22

回复【22楼】ada1983
-----------------------------------------------------------------------
请高手鉴定~~~
http://v.youku.com/v_show/id_XMzIxOTI0MDA4.html

刚刚测了下这个信浓电机电阻是 2.8 欧姆 ,我手上还有在传真机上拆下来的42电机,电阻是 6.5 欧姆,经测试过也是1.8度的电机,高度大小跟阿莫的信浓电机都一样,只是电阻不一样.
在实际运转过程中,二种电机比较是,电流不变的情况下,信浓电机发热量小,噪音小,而传真机上拆下来的发热大很多,噪音也大点,而且在带动带有阻尼齿轮的情况下有时会出现高速卡死现象.应该是力矩小的原因.下面是传真机的电机图片

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_694685OPYXCN.jpg
(原文件名:岩奇传真机上的2相42步进电机型号.jpg)

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_694686HWB848.jpg
(原文件名:岩奇传真机上的步进电机共2个.jpg)

li20030505 发表于 2011-11-13 10:46:37

mark

zhuisuoji 发表于 2011-11-13 10:47:38

原来传真拆下来的步进电机型号是:17PM-M012-G4 的可以上高速

而另一个型号是:17PM-M012-G3上不了高速,会出现高速卡住现象.

二电机应该只是出轴长短不一样而已.


修改原因,其实二个电机都一样上不了高速,刚刚又反复测试了一下,也是一样有时会在高速时卡住现象...

zhuisuoji 发表于 2011-11-13 12:38:27

晕,步进电机还麻烦哟,原来17PM-M012-G3;17PM-M012-G4 这二个电机一样可以上高速的呀.

在这里说明一下,免得误导人家.刚刚把电流调小试了一下,反复测试高速没有问题的,声音也好听很多.原来步进电机不仅频率要合适,电流也一样要调对

wpnx 发表于 2011-11-13 16:50:54

mark

kyokyo 发表于 2011-11-13 20:58:33

不错,学习!

ada1983 发表于 2011-11-14 08:08:15

回复【31楼】zhuisuoji 点?潇洒
-----------------------------------------------------------------------

只要步数正确,加减速可以实现就OK了,正常使用也没问题。

信浓电机是2.8欧的,假设驱动电压大约是6V(一般42恒流电机也差不多就这么大电压),电流应该有2A,电机上高速没什么问题。如果电机内阻很大,算出电流很小,那么可能电机是个恒压型的电机(大致估算,不是绝对的,但是大多数情况下如此)。

至于拆下的那个电机,电阻比较大,估计实际使用时电流在1A左右,太大了肯定发热严重。由于参数的因素,这个电机跑的应该不会比信浓那个快。这个电机适用于低速(或者中速吧)。

notebook 发表于 2011-11-14 08:40:58

mark

zhuisuoji 发表于 2011-11-14 09:01:12

回复【37楼】ada1983
回复【31楼】zhuisuoji 点?潇洒
-----------------------------------------------------------------------
只要步数正确,加减速可以实现就ok了,正常使用也没问题。
信浓电机是2.8欧的,假设驱动电压大约是6v(一般42恒流电机也差不多就这么大电压),电流应该有2a,电机上高速没什么问题。如果电机内阻很大,算出电流很小,那么可能电机是个恒压型的电机(大致估算,不是绝对的,但是大多数情况下如此)。
至于拆下的那个电机,电阻比较大,估计实际使用时电流在1a左右,太大了肯定发热严重。由于参数的因素,这个电机跑的应该不会比信浓那个快。这个电机适用于低速(或者中速吧)。
-----------------------------------------------------------------------
是的,那二个拆下来的电机,比信浓电机电流小,如果让它能跑8细分21.28KHz的话,电流还得调小,但半流时就没力了,随便用手都能把它转动,.相比之下信浓电机电流大很多,半流时力矩也很大.这个信浓电机真的很超值!
现就按这曲线表来算的话,速度是 V=21.28KHz/1600=13.3(圈/秒),再化成RPM的话也有798/rpm转了,在实际应该中也不一定能用到这么高,因为力矩是个关键,再高没力也没什么意义了,就现在这个速度能用上已经甚好了.再次感谢你的分享!

pcwinner 发表于 2011-11-14 09:20:41

MARK!!

ITOP 发表于 2011-11-14 09:23:30

楼主是空载测试的吧,你如果加负载可能上不去

zhuisuoji 发表于 2011-11-14 09:43:23

回复【41楼】ITOP
楼主是空载测试的吧,你如果加负载可能上不去
-----------------------------------------------------------------------

是的,加负载那是肯定要做的,等测了以后再说.

xsmjc98 发表于 2011-11-14 09:43:49

步进电机 细分 启动

tsewon 发表于 2011-11-14 20:27:05

太有趣了,有空也玩玩!~

lingligang 发表于 2011-12-3 10:50:21

回复【44楼】tsewon
-----------------------------------------------------------------------
楼主带载测试下,视频放上分享下!有兴趣呀!这贴看了好几次,就是没看明白, 这加速表怎么生成的!还得请教呀!

wcm_e 发表于 2011-12-3 11:00:18

MARK

zclcom79 发表于 2011-12-3 11:56:17

mark

yu_studio 发表于 2011-12-3 12:26:44

恭喜,我也买了几个,前几个弄了一下,可以转了。因为最近比较忙,等过几天再弄。

hncjs 发表于 2011-12-3 12:57:35

不错的步进电机驱动

kinsno 发表于 2011-12-3 14:42:00

恭喜同志的功力。

rifjft 发表于 2011-12-3 15:02:26

如果要调小电流才能上高速,只能说明这个曲线并不适合那个电机

gameboy22 发表于 2011-12-3 15:09:20

恭喜哈

CHENXIAOTIAN 发表于 2011-12-3 17:56:24

mark

damoplus 发表于 2011-12-4 23:12:00

跑得还挺欢挺准的,恭喜了

bingshuihuo888 发表于 2011-12-5 09:17:28

mark!!!

laoerge 发表于 2011-12-10 23:38:36

楼主的电机用的是什么驱动芯片?我整了几个二手电机打算照着玩。

zhuisuoji 发表于 2011-12-11 01:57:53

回复【56楼】laoerge 劳尔戈
楼主的电机用的是什么驱动芯片?我整了几个二手电机打算照着玩。
-----------------------------------------------------------------------

是A3977,今天在淘宝上刚买了二块TB6560驱动板还没回来

zhangfei 发表于 2011-12-11 02:38:26

信浓步进电机还是相当不错的。上传一个信浓步进电机的选型手册
当然,需要新的信浓电机可以联系我哦。010-62168098

点击此处下载 ourdev_703581ICCGB4.pdf(文件大小:1.57M) (原文件名:信浓公司产品目录.pdf)

zl_123 发表于 2011-12-11 17:53:12

mark

omega_wu 发表于 2011-12-11 19:44:33

MARK

xslff 发表于 2011-12-11 19:51:08

楼主,你的电路板太强了!我这样的电路板一般都扔了,看来以后也得看看情况了!

zhuisuoji 发表于 2011-12-12 02:24:18

回复【61楼】xslff
楼主,你的电路板太强了!我这样的电路板一般都扔了,看来以后也得看看情况了!
-----------------------------------------------------------------------

能用的干嘛扔呀,我这个还是很新的,只不过上面有很多灰尘而已.以后你不要的集中起来给我好了.哈哈...
对了!还有一个更好的提议,捐入互助会,让有需要的朋友得到帮助.

li0713 发表于 2011-12-13 17:20:51

做个记号!!改天看看

bingshuihuo888 发表于 2011-12-14 14:20:42

MARK!!!

CK_CN 发表于 2011-12-14 14:31:56

mark

leo121 发表于 2011-12-15 06:45:04

mark,学习了

shinehjx 发表于 2011-12-15 09:15:31

回复【57楼】zhuisuoji点?潇洒
回复【56楼】laoerge 劳尔戈
楼主的电机用的是什么驱动芯片?我整了几个二手电机打算照着玩。
-----------------------------------------------------------------------
是a3977,今天在淘宝上刚买了二块tb6560驱动板还没回来
-----------------------------------------------------------------------

估么要杯具了,TB的驱动没A3977好

zhuisuoji 发表于 2011-12-15 17:30:47

回复【67楼】shinehjx
...
估么要杯具了,tb的驱动没a3977好
-----------------------------------------------------------------------

不会吧?能说说为什么呢?

我买TB6560时只考虑到有3A,8细分与16细分倒是没什么关系,现在已经回来测试过空载没有什么问题,

只是现在有个现象是,如果我先开驱动器电源,再开单片机控制器电源,马达会不规则的转动,而A3977那块板不会.

估计是光藕的速度问题引起的.在开控制器电源瞬间给了一些脉冲,这个倒是好解决的.
TB6560(用的是6N137),
A3977 (用的是4N25 ),

lllyanllll 发表于 2011-12-15 18:54:01

哎。。。步进电机。。。我头大了

laujc 发表于 2011-12-15 19:07:08

楼主佛山哪里?

zhuisuoji 发表于 2011-12-15 20:11:03

回复【70楼】laujc 大海
楼主佛山哪里?
-----------------------------------------------------------------------

在平洲这边,大海你呢?

ljj977 发表于 2011-12-20 15:06:46

回复【31楼】zhuisuoji 点?潇洒
-----------------------------------------------------------------------
这样的步进电机我这里还有,学习你也来玩玩。

qingfengpark 发表于 2011-12-20 21:42:16

好的教程要MARK一下。自己网下试验~!

472283272 发表于 2011-12-21 16:35:06

你好,最近我在做一个迷你的激光雕刻机。小行程的,我想的是用12单片机来处理串口传来的G代码,来控制步进电机,您觉得行的通吗??QQ472283272

WinLiu 发表于 2011-12-22 10:37:31

mark!

zl_123 发表于 2011-12-24 18:44:28

楼主好强大,最近我也在弄步进电机,我的目的是做车速里程表检验仪器,以及车速传感器检测仪 要3000转以上的(对没打错,就是3000转),请问你那个加速曲线是怎么弄的,据我所知,加速好像就是两个转速之间的延时时间吧,如果我要到3000转,那么我是不是要分3000档加速呢,每一档之间的加速时间是怎么确定呢,(肯定不能都按一个速度吧)你提到的ada1983 他的文章给个地址,谢谢!

Tomas_Yung 发表于 2011-12-24 21:15:09

有空试验下

LSZD 发表于 2011-12-24 23:04:36

回复【75楼】WinLiu
mark!
-----------------------------------------------------------------------

zhuisuoji 发表于 2011-12-25 02:49:02

回复【76楼】zl_123
楼主好强大,最近我也在弄步进电机,我的目的是做车速里程表检验仪器,以及车速传感器检测仪 要3000转以上的(对没打错,就是3000转),请问你那个加速曲线是怎么弄的,据我所知,加速好像就是两个转速之间的延时时间吧,如果我要到3000转,那么我是不是要分3000档加速呢,每一档之间的加速时间是怎么确定呢,(肯定不能都按一个速度吧)你提到的ada1983 他的文章给个地址,谢谢!

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


我一点也不强大~~~具体怎么算那要问他了ada1983

http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4719105&bbs_page_no=1&search_mode=1&search_text=一直&bbs_id=1027

zhuisuoji 发表于 2011-12-25 02:58:38

回复【74楼】472283272
你好,最近我在做一个迷你的激光雕刻机。小行程的,我想的是用12单片机来处理串口传来的g代码,来控制步进电机,您觉得行的通吗??qq472283272
-----------------------------------------------------------------------

其实不管你用什么方法都可以一试,我觉得应该行的,就是速度可能会有点慢,因为我现在就是用串口来处理的,反正也是初学阶段嘛,能够联动就已经很大进步了,以后有更好的方式那就是突破了

iamseer 发表于 2011-12-26 00:57:18

mark

shzxy9865 发表于 2011-12-28 10:31:47

mark下

lcmdw 发表于 2011-12-28 10:59:11

mark

nyq123ok1 发表于 2012-1-2 11:04:57

新手我想请问一下 那个消抖 是怎么弄得
if(--time_ms!=0)
{
    goto loopus;//--消抖查询
}

xhzz 发表于 2012-1-2 14:25:28

mark步进电机

hxly 发表于 2012-1-6 16:49:52

刚注_册,要回5贴第5贴

lixingling 发表于 2012-2-13 23:10:30

有没有电路图
回复【86楼】hxly
-----------------------------------------------------------------------

CXDSEW 发表于 2012-2-23 19:25:30

LZ 不错,学习了!

lixingling 发表于 2012-2-29 14:00:06

【8楼】 zhuisuoji

--8细分时每个脉冲走的角度=1.8/8=0.225,走到162度要达到3500Hz,需发脉冲总数为162/0.225=720个8细分脉冲,

怎么走到162度还是3500HZ 了,你是不是指半步的频率,还有你那个表好象不是   启动频率是250*4=1000HZ,我算了下是2000HZ

lixingling 发表于 2012-2-29 14:29:35

th0_buf = Pulseload +((th0_buf<<8)|TL0);//64878
这是什么意思为什么不直接th0_buf = Pulseload;是减少误差吗

gongnn 发表于 2012-3-5 22:11:49

这个帖子不错,应该给裤子啊。

armku 发表于 2012-3-5 22:18:23

mark

pcwinner 发表于 2012-3-5 22:30:49

MARK一下!

yu_wen 发表于 2012-4-2 11:34:13

楼主,你的电机驱动板是什么芯片?

gyz1990 发表于 2012-4-3 10:10:08

好贴留名,以备后用

aton 发表于 2012-4-3 11:00:57

好帖 mark

zhuisuoji 发表于 2012-5-1 20:34:17

lixingling 发表于 2012-2-29 14:00 static/image/common/back.gif
【8楼】 zhuisuoji

--8细分时每个脉冲走的角度=1.8/8=0.225,走到162度要达到3500Hz,需发脉冲总数为162/0 ...

ada1983 网友的原表是针对2细分使用的,我的理解是表中的每一个值代表一个脉冲,那么32000对应的频率就是250Hz.

(2细分)走完一步需要二个脉冲,那么步频率就是125Hz了.其实 ada1983 网友的原表,按<步频率>来说也就是由125Hz~1750Hz而已,

我跟他的表主要区别是在于:

我是用定时器溢出来产生方波的,由于要产生正负半波,溢出频率得加一倍,(8细分)溢出8次即输出4个脉冲,只走半步,所以溢出频率就是2000Hz了,注意是溢出频率,实际方波频率是1000Hz

他的是用比较器B与A来产生正负半波的,MEGA16,8M晶振下,比较器B的值是16000,A的是32000,控制IO口一高一低,刚好完成一个方波.

gongnn 发表于 2012-5-1 21:05:45

yu_wen 发表于 2012-4-2 11:34 static/image/common/back.gif
楼主,你的电机驱动板是什么芯片?

这个的芯片是3977的,8细分。

ym7205 发表于 2012-5-30 09:56:41

这就是单片机的魅力。。。

cyhyx 发表于 2012-5-30 12:53:08

步进用了很多,程序还没试过,学习一下
页: [1] 2
查看完整版本: 花了一个晚上,第一次玩转步进电机的感觉真好!感谢阿莫论坛,特别感谢ada1983所提供的