[讨论] 如何让电机转快些

键佳蕾   2010-8-19 08:58 楼主

一程序同时控制电机和流水灯,可是电机的转速不够快,调整延时和初值电机都不够快,希望大家指教,谢谢!

程序如下
#include <iom16v.h>
#include <macros.h>
#define uint unsigned int
#define uchar unsigned char
#pragma interrupt_handler dianji:9
//#pragma interrupt_handler fgg:10
uchar a[]={0x01,0x02,0x04,0x08};

void delay(uint ms)
{
   uint m,n;
   for (m=0;m<ms;m++)
      for(n=0;n<300;n++);
}
void dianji()
{
   uchar j;
   for (j=0;j<4;j++) 
{
  PORTB=a[j];
  delay(10);
    }
   TCNT1H=0XFF;
   TCNT1L=0XFE;
}
void main()
{
DDRB=0XFF;
DDRA=0XFF;
PORTB=0X00;
PORTA=0X00;
TCCR1B=0X04;
TCNT1H=0XFF;
TCNT1L=0XFE;
TIMSK|=BIT(2);
SREG|=BIT(7);//sei
  while(1)
{
  uchar i,j,m;
  i=0X01;
for (j=0;j<8;j++) 
   {
  PORTA=~i; 
  delay(1);
  i=i<<1;
       }
}
}

[ 本帖最后由 键佳蕾 于 2010-8-19 09:02 编辑 ]

回复评论 (8)

不会,帮顶吧
点赞  2010-8-20 16:51

回复 沙发 twlkyao 的帖子

呵呵,谢了
点赞  2010-8-21 09:04
uchar a[]={0x01,0x02,0x04,0x08};
哥们,你这一句为何这么写?
点赞  2010-8-21 16:31

回复 4楼 GLINT 的帖子

是步进电机,所以那么写的,你认为呢?
点赞  2010-8-22 09:55
步进电机速度跟频率有关,也就是跟程序里的延时有关。
但频率不能太快了,具体看什么类型的步进电机,一般不超过1KHZ。速度越快扭矩就越小,超过一定频率就不转了。
你说速度不够快,是不是你用的是减速电机吧。
点赞  2010-8-22 16:35

回复 6楼 LoHasMan 的帖子

是,后来我发现确实是个减速电机,换成直流的了,步进电机在运行过程中是不是需要慢慢升频呢?还是第一次给个启动频率它会自己慢慢加速
点赞  2010-8-23 09:42
貌似减速步进电机就是很慢,把延时调小了反而不转了
点赞  2010-8-25 11:31

引用: 原帖由 键佳蕾 于 2010-8-23 09:42 发表 步进电机在运行过程中是不是需要慢慢升频呢?还是第一次给个启动频率它会自己慢慢加速

 驱动步进电鸡确实需要变频——启动时先置个初值然后逐渐加快,到达指定速度时固定频率,停止时则相反,先减速后才真正停止。

 如启动/停止过程中的驱动频率都是均匀递增/递减的话,就是所谓的“梯形驱动”方式,这种方式控制最简单所以很常用,更好一点的还有“S曲线驱动”方式。不过实际在很多情况下,变速方式并不需要很严格,甚至中间有几步变速就行。

 当然,上面讨论的前提是速度控制在电机指标内,如果超标,那么再咋滴变频控制也不管用了。

点赞  2010-8-25 17:17
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复