搜索
bottom↓
回复: 101

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

[复制链接]

出0入0汤圆

发表于 2011-11-9 20:08:33 | 显示全部楼层 |阅读模式
如题~~~感谢阿莫论坛,特别感谢ada1983所提供的步进电机加速曲线!


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


(原文件名:运转前后位置保持一致.jpg)


(原文件名:运转一.jpg)


(原文件名:运转二.jpg)


(原文件名:停止.jpg)

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

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

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

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

出0入0汤圆

发表于 2011-11-9 20:14:32 | 显示全部楼层
沙发坐了,楼主佛山那里啊?上门膜拜去!

出0入0汤圆

发表于 2011-11-9 20:23:20 | 显示全部楼层
晕,还得有加速曲线的啊

出0入0汤圆

 楼主| 发表于 2011-11-9 20:23:50 | 显示全部楼层
编辑原因,相片更新到楼主位

出0入0汤圆

 楼主| 发表于 2011-11-9 20:24:40 | 显示全部楼层
呵呵~~这么快就到了3楼了

出0入0汤圆

 楼主| 发表于 2011-11-9 20:25:31 | 显示全部楼层
回复【1楼】21006091 無奈
沙发坐了,楼主佛山那里啊?上门膜拜去!
-----------------------------------------------------------------------

我在平洲这边

出0入0汤圆

 楼主| 发表于 2011-11-9 20:27:33 | 显示全部楼层
回复【2楼】Jigsaw
晕,还得有加速曲线的啊
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-11-9 20:28:17 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

 楼主| 发表于 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 int  Pulseload; //--脉冲频率初值
unsigned char loadaddr;  //--脉冲频率初值地址
unsigned char T0CountOV; //--T0溢出数,每2次溢出计壹个脉冲
unsigned int  PulCount;  //--脉冲数  1(PulCount)=2(T0CountOV);
unsigned char StepCount; //--步数    1(StepCount)=8(PulCount);
unsigned int  CycleCount;//--转数    1(CycleCount)=200(StepCount);
//unsigned int  PulNumb;   //--转数低于

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
//           GATE1  C/T1#  M1_1  M1_0  GATE0  C/T0#  M0_1  M0_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 int  i;
   for ( i=0;i<1000;i++)
      ;
}
void dalay_ms(unsigned int  mid)
{
  unsigned int  i;
   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[loadaddr++];//--启动时加速
                        }
                }
        }
        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;//--输出脉冲
}

出0入0汤圆

 楼主| 发表于 2011-11-9 20:33:31 | 显示全部楼层
回复【7楼】armok 阿莫
恭喜。
-----------------------------------------------------------------------

老大也来恭喜呵呵~~~

出0入0汤圆

发表于 2011-11-9 20:40:59 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-11-9 23:16:13 | 显示全部楼层
不错,学习!

出0入228汤圆

发表于 2011-11-9 23:52:15 | 显示全部楼层
一个晚上就能玩转呀,LZ真厉害。
我用M168都搞了一周了

出0入0汤圆

发表于 2011-11-10 00:01:09 | 显示全部楼层
学习了

出0入0汤圆

发表于 2011-11-10 01:33:46 | 显示全部楼层
mark 步进电机驱动

出0入0汤圆

发表于 2011-11-10 02:36:37 | 显示全部楼层
mark!!!!!!!!!

出0入0汤圆

发表于 2011-11-10 08:05:44 | 显示全部楼层
支持下…

出0入0汤圆

发表于 2011-11-10 08:29:17 | 显示全部楼层
不错,单片机在这里不知道起到什么作用?

出0入0汤圆

 楼主| 发表于 2011-11-10 12:58:02 | 显示全部楼层
回复【13楼】wxws 我行我素
一个晚上就能玩转呀,lz真厉害。
我用m168都搞了一周了
-----------------------------------------------------------------------

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

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

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

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

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

出0入0汤圆

发表于 2011-11-10 14:16:33 | 显示全部楼层
支持楼主

出0入0汤圆

 楼主| 发表于 2011-11-11 06:42:30 | 显示全部楼层
第一次上传的视屏...
http://v.youku.com/v_show/id_XMzIxMzgzMDky.html

出0入0汤圆

发表于 2011-11-12 10:54:04 | 显示全部楼层
嘿嘿,能帮到别人就好啊:)

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

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

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

出0入0汤圆

 楼主| 发表于 2011-11-12 17:21:37 | 显示全部楼层
回复【22楼】ada1983
-----------------------------------------------------------------------

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

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

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

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

出0入0汤圆

 楼主| 发表于 2011-11-12 17:45:38 | 显示全部楼层
以下是C文件,请帮手看看,也不知道对不对,改来改去的,注释部分有点对不上的

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

出0入0汤圆

 楼主| 发表于 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

出0入0汤圆

发表于 2011-11-12 19:45:50 | 显示全部楼层
mark..

出0入0汤圆

发表于 2011-11-12 20:28:41 | 显示全部楼层
支持下…

出0入0汤圆

发表于 2011-11-12 21:41:59 | 显示全部楼层
曲线这样做,我晕

出0入21汤圆

发表于 2011-11-13 08:48:36 | 显示全部楼层
步进详解,顶

出675入8汤圆

发表于 2011-11-13 09:36:40 | 显示全部楼层
mark 步进电机驱动

出0入0汤圆

 楼主| 发表于 2011-11-13 09:45:22 | 显示全部楼层
回复【22楼】ada1983
-----------------------------------------------------------------------
请高手鉴定~~~
http://v.youku.com/v_show/id_XMzIxOTI0MDA4.html

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


(原文件名:岩奇传真机上的2相42步进电机型号.jpg)


(原文件名:岩奇传真机上的步进电机共2个.jpg)

出0入0汤圆

发表于 2011-11-13 10:46:37 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 2011-11-13 10:47:38 | 显示全部楼层
原来传真拆下来的步进电机型号是:17PM-M012-G4 的可以上高速

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

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


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

出0入0汤圆

 楼主| 发表于 2011-11-13 12:38:27 | 显示全部楼层
晕,步进电机还麻烦哟,原来17PM-M012-G3;17PM-M012-G4 这二个电机一样可以上高速的呀.

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

出0入0汤圆

发表于 2011-11-13 16:50:54 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-13 20:58:33 | 显示全部楼层
不错,学习!

出0入0汤圆

发表于 2011-11-14 08:08:15 | 显示全部楼层
回复【31楼】zhuisuoji 点?潇洒
-----------------------------------------------------------------------

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

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

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

出0入0汤圆

发表于 2011-11-14 08:40:58 | 显示全部楼层
mark

出0入0汤圆

 楼主| 发表于 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转了,在实际应该中也不一定能用到这么高,因为力矩是个关键,再高没力也没什么意义了,就现在这个速度能用上已经甚好了.再次感谢你的分享!

出0入0汤圆

发表于 2011-11-14 09:20:41 | 显示全部楼层
MARK!!

出0入0汤圆

发表于 2011-11-14 09:23:30 | 显示全部楼层
楼主是空载测试的吧,你如果加负载可能上不去

出0入0汤圆

 楼主| 发表于 2011-11-14 09:43:23 | 显示全部楼层
回复【41楼】ITOP
楼主是空载测试的吧,你如果加负载可能上不去
-----------------------------------------------------------------------

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

出140入0汤圆

发表于 2011-11-14 09:43:49 | 显示全部楼层
步进电机 细分 启动

出0入0汤圆

发表于 2011-11-14 20:27:05 | 显示全部楼层
太有趣了,有空也玩玩!~

出0入0汤圆

发表于 2011-12-3 10:50:21 | 显示全部楼层
回复【44楼】tsewon
-----------------------------------------------------------------------
楼主带载测试下,视频放上分享下!有兴趣呀!这贴看了好几次,就是没看明白, 这加速表怎么生成的!还得请教呀!

出0入0汤圆

发表于 2011-12-3 11:00:18 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-12-3 11:56:17 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-3 12:26:44 | 显示全部楼层
恭喜,我也买了几个,前几个弄了一下,可以转了。因为最近比较忙,等过几天再弄。

出0入0汤圆

发表于 2011-12-3 12:57:35 | 显示全部楼层
不错的步进电机驱动

出0入0汤圆

发表于 2011-12-3 14:42:00 | 显示全部楼层
恭喜同志的功力。

出0入0汤圆

发表于 2011-12-3 15:02:26 | 显示全部楼层
如果要调小电流才能上高速,只能说明这个曲线并不适合那个电机

出0入0汤圆

发表于 2011-12-3 15:09:20 | 显示全部楼层
恭喜哈

出0入0汤圆

发表于 2011-12-3 17:56:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-4 23:12:00 | 显示全部楼层
跑得还挺欢挺准的,恭喜了

出0入0汤圆

发表于 2011-12-5 09:17:28 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2011-12-10 23:38:36 | 显示全部楼层
楼主的电机用的是什么驱动芯片?我整了几个二手电机打算照着玩。

出0入0汤圆

 楼主| 发表于 2011-12-11 01:57:53 | 显示全部楼层
回复【56楼】laoerge 劳尔戈
楼主的电机用的是什么驱动芯片?我整了几个二手电机打算照着玩。
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-12-11 02:38:26 | 显示全部楼层
信浓步进电机还是相当不错的。上传一个信浓步进电机的选型手册
当然,需要新的信浓电机可以联系我哦。010-62168098

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

出0入0汤圆

发表于 2011-12-11 17:53:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-11 19:44:33 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-12-11 19:51:08 | 显示全部楼层
楼主,你的电路板太强了!我这样的电路板一般都扔了,看来以后也得看看情况了!

出0入0汤圆

 楼主| 发表于 2011-12-12 02:24:18 | 显示全部楼层
回复【61楼】xslff
楼主,你的电路板太强了!我这样的电路板一般都扔了,看来以后也得看看情况了!
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-12-13 17:20:51 | 显示全部楼层
做个记号!!改天看看

出0入0汤圆

发表于 2011-12-14 14:20:42 | 显示全部楼层
MARK!!!

出0入0汤圆

发表于 2011-12-14 14:31:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-15 06:45:04 | 显示全部楼层
mark,学习了

出0入0汤圆

发表于 2011-12-15 09:15:31 | 显示全部楼层
回复【57楼】zhuisuoji  点?潇洒
回复【56楼】laoerge 劳尔戈
楼主的电机用的是什么驱动芯片?我整了几个二手电机打算照着玩。
-----------------------------------------------------------------------
是a3977,今天在淘宝上刚买了二块tb6560驱动板还没回来
-----------------------------------------------------------------------

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

出0入0汤圆

 楼主| 发表于 2011-12-15 17:30:47 | 显示全部楼层
回复【67楼】shinehjx
...
估么要杯具了,tb的驱动没a3977好
-----------------------------------------------------------------------

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

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

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

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

出0入0汤圆

发表于 2011-12-15 18:54:01 | 显示全部楼层
哎。。。步进电机。。。我头大了

出0入4汤圆

发表于 2011-12-15 19:07:08 | 显示全部楼层
楼主佛山哪里?

出0入0汤圆

 楼主| 发表于 2011-12-15 20:11:03 | 显示全部楼层
回复【70楼】laujc 大海
楼主佛山哪里?
-----------------------------------------------------------------------

在平洲这边,大海你呢?

出0入0汤圆

发表于 2011-12-20 15:06:46 | 显示全部楼层
回复【31楼】zhuisuoji 点?潇洒
-----------------------------------------------------------------------
这样的步进电机我这里还有,学习你也来玩玩。

出0入0汤圆

发表于 2011-12-20 21:42:16 | 显示全部楼层
好的教程要MARK一下。自己网下试验~!

出0入0汤圆

发表于 2011-12-21 16:35:06 | 显示全部楼层
你好,最近我在做一个迷你的激光雕刻机。小行程的,我想的是用12单片机来处理串口传来的G代码,来控制步进电机,您觉得行的通吗??QQ472283272

出0入0汤圆

发表于 2011-12-22 10:37:31 | 显示全部楼层
mark!

出0入0汤圆

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

出0入0汤圆

发表于 2011-12-24 21:15:09 | 显示全部楼层
有空试验下

出0入0汤圆

发表于 2011-12-24 23:04:36 | 显示全部楼层
回复【75楼】WinLiu
mark!
-----------------------------------------------------------------------

出0入0汤圆

 楼主| 发表于 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

出0入0汤圆

 楼主| 发表于 2011-12-25 02:58:38 | 显示全部楼层
回复【74楼】472283272
你好,最近我在做一个迷你的激光雕刻机。小行程的,我想的是用12单片机来处理串口传来的g代码,来控制步进电机,您觉得行的通吗??qq472283272
-----------------------------------------------------------------------

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

出0入309汤圆

发表于 2011-12-26 00:57:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-12-28 10:31:47 | 显示全部楼层
mark下

出0入0汤圆

发表于 2011-12-28 10:59:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-2 11:04:57 | 显示全部楼层
新手  我想请问一下 那个消抖 是怎么弄得
if(--time_ms!=0)
{
    goto loopus;//--消抖查询
}

出0入0汤圆

发表于 2012-1-2 14:25:28 | 显示全部楼层
mark  步进电机

出0入0汤圆

发表于 2012-1-6 16:49:52 | 显示全部楼层
刚注_册,要回5贴第5贴

出0入0汤圆

发表于 2012-2-13 23:10:30 | 显示全部楼层
有没有电路图
回复【86楼】hxly
-----------------------------------------------------------------------

出0入0汤圆

发表于 2012-2-23 19:25:30 | 显示全部楼层
LZ 不错,学习了!

出0入0汤圆

发表于 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

出0入0汤圆

发表于 2012-2-29 14:29:35 | 显示全部楼层
th0_buf = Pulseload +((th0_buf<<8)|TL0);//64878
这是什么意思  为什么不直接  th0_buf = Pulseload;  是减少误差吗

出0入0汤圆

发表于 2012-3-5 22:11:49 | 显示全部楼层
这个帖子不错,应该给裤子啊。

出0入0汤圆

发表于 2012-3-5 22:18:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-3-5 22:30:49 | 显示全部楼层
MARK一下!

出100入0汤圆

发表于 2012-4-2 11:34:13 | 显示全部楼层
楼主,你的电机驱动板是什么芯片?

出0入0汤圆

发表于 2012-4-3 10:10:08 | 显示全部楼层
好贴留名,以备后用

出0入0汤圆

发表于 2012-4-3 11:00:57 | 显示全部楼层
好帖 mark

出0入0汤圆

 楼主| 发表于 2012-5-1 20:34:17 | 显示全部楼层
lixingling 发表于 2012-2-29 14:00
【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口一高一低,刚好完成一个方波.

出0入0汤圆

发表于 2012-5-1 21:05:45 | 显示全部楼层
yu_wen 发表于 2012-4-2 11:34
楼主,你的电机驱动板是什么芯片?

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

出0入0汤圆

发表于 2012-5-30 09:56:41 | 显示全部楼层
这就是单片机的魅力。。。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-7-4 04:24

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

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