步进电机加速度程序分析

2020-01-26 12:58发布

程序功能是用定时器0定时,通过修改定时器初值,达到加速的功能。程序试验过程中已经有加速过程,但是最大只能到500HZ ,步知道什么原因。本来想让信号从100HZ一直慢慢加速到16KHZ   .程序如下,请各位大侠帮分析一下,程序问题出在哪里  ?
#include<W78E58B.H>
#define uchar unsigned char  
#define uint unsigned int
sbit dir=P1^0;
sbit en=P1^1;
sbit clk=P1^2;
sbit start=P1^3;   
sbit stop=P1^4;
uint rate;
uchar flag1,flag2;
uint i=50000;

void main()
{  
  
EA=1;
ET0=1;
TR0=1;
TMOD=0X01;
TH0=(65536-i)/256;
TL0=(65536-i)%256;   
  while(1)
       {
    ;
   }
}

void t0(void) interrupt 1 using 0
{
  
  TH0=(65536-i)/256;
  TL0=(65536-i)%256;
  if(i>40)   
  {
    i=i-20;
  }

     
  else  
     {
   i=20;                  
}   

    clk=~clk;
}


 
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
29条回答
cj85
1楼-- · 2020-01-28 20:40
学习
kiracl
2楼-- · 2020-01-28 21:08
 精彩回答 2  元偷偷看……
cocom
3楼-- · 2020-01-28 22:14
现在你的电机最高能跑多少rpm?
yuanjingjie
4楼-- · 2020-01-29 01:42
我C语言不太行,不过从你这个程序看,问题出在你的那个运算上,定时器的值要做成表的形式,用的时候直接读取,这样输出的频率会高很多
zhuyl456
5楼-- · 2020-01-29 05:02
程序问题出在定时器赋值那一块!运用变量改变定时器值,非常耗时间,所以导致频率上不去
PRO
6楼-- · 2020-01-29 05:06
kiracl 发表于 2012-2-26 17:17
首先,得看你选用的步进电机最大能跑多快,有个矩频特性曲线的,快了以后,转矩下降,带不动负载就没意义了 ...

高手正解!

一周热门 更多>