qq_44895316 2019-12-25 11:27 采纳率: 0%
浏览 263

怎么控制步进机的角度的转动大小 求大牛

#include "reg51.h"
#define uint unsigned int
#define uchar unsigned char
//电机IO
#define GPIO_MOTOR P1
unsigned char code FFW[8]={0xf4,0xf5,0xf1,0xf9,0xf8,0xfa,0xf2,0xf6}; //管脚
unsigned char Direction=0,Speed=0;

unsigned char receiveData='0';
void UsartConfiguration();
void Delay(unsigned int t);
void Motor();

/*******************************************************************************

  • 函 数 名 : main
  • 函数功能 : 主函数
  • 输 入 : 无
  • 输 出 : 无 *******************************************************************************/

void main(void)
{
//unsigned char i;
UsartConfiguration();
Speed=180; //默认初始速度 数字越小 延时时间越短 速度越快
while(1)
{
if(receiveData=='1') //转动
{
//消除抖动

Direction=1;
receiveData='0';

}

Motor();

Direction=0;

    }

}
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
//TMOD=0X20; //设置计数器工作方式2
TMOD=0X21; //设置计数器工作方式2 和定时器0
PCON=0X80; //波特率加倍
//TH1=0XF4; //计数器初始值设置,注意波特率是4800的
//TL1=0XF4;
TH1=0XFA; //计数器初始值设置,注意波特率是9600的
TL1=0XFA;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1;
//打开计数器
}

void Usart() interrupt 4
{
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位

}
/*******************************************************************************

  • 函 数 名 : Motor
  • 函数功能 : 电机旋转函数
  • 输 入 : 无
  • 输 出 : 无 *******************************************************************************/

void Motor()
{
unsigned char i;
for(i=0;i<8;i++)
{
if(Direction==1)
{
GPIO_MOTOR = FFW[i];
}
Delay(Speed); //调节转速

}

}
/*******************************************************************************

  • 函 数 名 : Delay
  • 函数功能 : 延时
  • 输 入 : t
  • 输 出 : 无 *******************************************************************************/ void Delay(unsigned int t) {
    while(t--) { ; } }
  • 写回答

1条回答 默认 最新

  • 狂奔De鸵鸟 2019-12-26 18:55
    关注

    步进电机是通过脉冲信号来控制转动的
    一般有一个脉冲信号来控制步进电机的方向
    一个脉冲信号来控制步进电机的转多少步
    一般步进电机会配一个配置器来设置步进电机转一圈需要多少个波
    假设 步进电机转一圈需要6400个波
    转1度就是6400/360 个波转一度

    一般步进电机配置的控制器会有很多个档通过开关来配置。
    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制