单片机控制步进电机 单片机负载太大 步进电机抖动

我用下面的程序控制步进电机按照图中的时序运动
两个计时器 一个计时1.3ms 一个计时10ms 交替中断
结果单片机负载太大 求教有什么办法能简化
#include "reg51.h"
sbit P13=P1^3;
sbit P12=P1^2;
sbit P20=P2^0;
sbit P17=P1^7;
unsigned char b=0,c,*q,
done3[14]={0x02,0x03,0x01,0x05,0x04,0x06,0x00,0x01,0x03,0x02,0x06,0x04,0x05,0x00};
/*******初始化函数********/
void initTimer(void)
{
q=done3;
TMOD=0x11;
TH0=(65536-1300)/256;
TL0=(65536-1300)%256;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
}
/*******初始化函数********/
/*******中断处理函数********/
void timer0(void) interrupt 1 using 1
{
b++;
if (b==6) b=0;
TH0=(65536-1300)/256;
TL0=(65536-1300)%256;
//add your code here.

TR0=0;
ET0=0;
}
void timer1(void) interrupt 3 using 1
{
b++;
if (b==6) b=0;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
//add your code here.
TR0=1;
ET0=1;
}
/*******中断处理函数********/
/*******延时T us函数********/
void delay(unsigned char t)
{
while(--t);
}
/*******延时T us函数********/
void main(void)
{
initTimer();
P1=0x00;
//while (!P17) {delay(100);}
/**********至0开始运动********/
/*********开始计时*********/
TR0=1;
ET0=1;
TR1=1;
ET1=1;
EA=1;
while(1)
{
c=*(q+b);
P1=c;
}
}

基于模糊PID直流力矩电机的速度控制。基于根据基于该误差信号的二维模糊PID控制算法的设计模糊控制和PID控制结合模式的分析

达到阈值来确定何时模糊控制和PID之间切换控制。使用编码器,80196KC单片机,16位D / A转换器和DC功率和扭矩加上稳定速度模糊PID控制系统构成,通过将测得的数据的标准PID和模糊PID的分析和比较的控制算法的直流扭矩马达表明模糊PID控制可以无过冲的输出来实现,调节时间小于标准的PID控制调节时间,稳态误差小于万分之四。追问

不明白 和步进电机有什么关系

温馨提示:内容为网友见解,仅供参考
无其他回答

单片机仿真实验中步进电机转子抖动什么原因
频率调高点,频率太低了,一步一步走起来,感觉断断续续的,才会抖动...你可以调试不同的频率来确定个合适的,不抖动的频率范围。

关于51单片机驱动l298n控制步进电机。步进电机不转只抖得问题
如果程序无问题,应是步进电机四条输入线接错了。将A+、A-或B+、B-其中一组的两条线对调(如A+、A-对调或B+、B-对调)便行。对调后如果转动正常了,而正反转反过来时,再将两组线的+和-对调。

单片机驱动步进电机问题
1、最大可能是脉冲频率太高,降低频率启动或提高细分数试试。2、电流设置太小,负载太大,动不了,按说明书改大电流。3、输出接错。确认电机的线圈出线端正确的接在驱动器输出端上

步进电机用单片机控制转动
很简单,看你的意思,你应该已经有了与之配套的【步进电机驱动器】,那就可以用单片机I\/O口控制了,一路输出CP脉冲信号,一路输出DIR方向信号,电源接好后,连通电路,就OK了。简单的C51调试程序:一个大的FOR循环里包含:【C P脉冲信号】:可以用一个有限的FOR循环(循环时间可控制在几秒钟左右)...

单片机怎么控制步进电机
由于是四相电机,步进电机之所以可以转动就需要给相绕组提供连续的脉冲,所以需要4个端口来控制四相绕组的工作状态(P15应该是不需要的),具体的编码要看电机的拍数;一旦明白这些,你就可以很容易编写代码来控制电机的转动了,还有在脉冲间你可以设置不同的延时时间来调节电机的转速。

步进电机驱动器的频率降低了,为什么步进电机会剧烈抖动?
跳变频率是指步进电机在基础频率上逐渐提高的频率,此频率不能太大,否则会产生堵转和丢步。加减速曲线一般为指数曲线或经过修调的指数曲线,当然也可采用直线或正弦曲线等。使用单片机或者PLC,都能够实现加减速控制。对于不同负载、不同转速,需要选择合适的基础频率与跳变频率,才能够达到最佳控制效果。...

如何用单片机控制步进电机?
1、该电路图的工作原理:该电路是一个步进电机驱动电路,通过控制脉冲Ui,可以实现步进电机的转动。步进电机的一个线圈被表示为图中的W,通过光耦OT和脉冲变压器T与控制脉冲Ui相连。当控制脉冲Ui为高电平时,光耦OT导通,使得线圈W接收到脉冲信号,产生磁场,推动步进电机转动一个步进角度。当控制脉冲Ui为...

步进电机在通电后会颤动一下 要怎么解决?
在运行中就会没有了抖动,当出现上面的情况时候有几种可能:1.驱动器的细分设置不好,如果是带细分的可以把细分调小或者增大发射脉冲频率。2.驱动器电流不够,查看驱动器电流情况是否在工作电流区 3.电机负载过大。4.提供电压是否够。通过以上的检查后一般如果设备没有问题就可以解决。

用单片机对步进电机进行控制
1 单片机控制步进电机的一般原理1.1 步进电机1.1.1 步进电机介绍 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有...

怎样用单片机控制步进电机转速
那我们让电机正转一圈,反转半圈,在正传1\/4圈,反转一圈,试试。include <reg51.h> typedef unsigned char uint8;typedef unsigned int uint16;typedef unsigned long uint32;define P_DIR0 define N_DIR1 code uint8 FFW[8]={0xF1,0xF3,0xF2,0xF6,0xF4,0xFc,0xF8,0xF9};void delay...

相似回答