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 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型